com.sun.jini.fiddler
Class FiddlerAdminProxy.ConstrainableFiddlerAdminProxy

java.lang.Object
  extended by com.sun.jini.fiddler.FiddlerAdminProxy
      extended by com.sun.jini.fiddler.FiddlerAdminProxy.ConstrainableFiddlerAdminProxy
All Implemented Interfaces:
DestroyAdmin, FiddlerAdmin, Serializable, JoinAdmin, RemoteMethodControl, ReferentUuid
Enclosing class:
FiddlerAdminProxy

static final class FiddlerAdminProxy.ConstrainableFiddlerAdminProxy
extends FiddlerAdminProxy
implements RemoteMethodControl

The constrainable version of the class FiddlerAdminProxy.

When a client obtains an instance of this proxy class, the client should not attempt to use the proxy until the client is assured that the proxy can be trusted. In addition to implementing the methods and mechanisms required by RemoteMethodControl, this class - in conjunction with the service's ProxyVerifier class, helps provide a mechanism for verifying trust in the proxy on behalf of a client.

In order to verify that an instance of this class is trusted, trust must be verified in all subsidiary objects (contained in that instance) through which the client ultimately makes calls (local or remote). With respect to this class, the server field is a proxy object through which the client makes remote calls to the service's backend. Therefore, trust in that object must be verified. Additionally, this class also contains a field of type Uuid (proxyID which should be tested for trust. Consider the following diagram:

    FiddlerAdminProxy {
        Fiddler server
        Uuid proxyID
    }//end FiddlerAdminProxy
  

Thus, in order to verify that an instance of this class is trusted, trust must be verified in the following objects from the diagram above:

When a client obtains an instance of this proxy class, the deserialization process which delivers the proxy to the client invokes the readObject method of this class. Part of trust verification is performed in the readObject method, and part is performed when the client prepares the proxy. Thus, this class' participation in the trust verification process can be summarized as follows:

Since:
2.0

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.jini.fiddler.FiddlerAdminProxy
FiddlerAdminProxy.ConstrainableFiddlerAdminProxy
 
Field Summary
private  MethodConstraints methodConstraints
          Client constraints placed on this proxy (may be null).
private static Method[] methodMapArray
           
(package private) static long serialVersionUID
           
 
Fields inherited from class com.sun.jini.fiddler.FiddlerAdminProxy
proxyID, server
 
Constructor Summary
private FiddlerAdminProxy.ConstrainableFiddlerAdminProxy(Fiddler server, Uuid proxyID, MethodConstraints methodConstraints)
          Constructs a new ConstrainableFiddlerAdminProxy instance.
 
Method Summary
private static Fiddler constrainServer(Fiddler server, MethodConstraints constraints)
          Returns a copy of the given server proxy having the client method constraints that result after the specified method mapping is applied to the given client method constraints.
 MethodConstraints getConstraints()
          Returns the client constraints placed on the current instance of this proxy class (ConstrainableFiddlerAdminProxy).
private  ProxyTrustIterator getProxyTrustIterator()
          Returns a proxy trust iterator that is used in ProxyTrustVerifier to retrieve this object's trust verifier.
private  void readObject(ObjectInputStream s)
          Performs various functions related to the trust verification process for the current instance of this proxy class, as detailed in the description for this class.
 RemoteMethodControl setConstraints(MethodConstraints constraints)
          Returns a new copy of this proxy class (ConstrainableFiddlerAdminProxy) with its client constraints set to the specified constraints.
 
Methods inherited from class com.sun.jini.fiddler.FiddlerAdminProxy
addLookupAttributes, addLookupGroups, addLookupLocators, createAdminProxy, destroy, equals, getLeaseBound, getLookupAttributes, getLookupGroups, getLookupLocators, getPersistenceSnapshotThreshold, getPersistenceSnapshotWeight, getReferentUuid, hashCode, modifyLookupAttributes, removeLookupGroups, removeLookupLocators, setLeaseBound, setLookupGroups, setLookupLocators, setPersistenceSnapshotThreshold, setPersistenceSnapshotWeight
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

methodMapArray

private static final Method[] methodMapArray

methodConstraints

private MethodConstraints methodConstraints
Client constraints placed on this proxy (may be null).

Constructor Detail

FiddlerAdminProxy.ConstrainableFiddlerAdminProxy

private FiddlerAdminProxy.ConstrainableFiddlerAdminProxy(Fiddler server,
                                                         Uuid proxyID,
                                                         MethodConstraints methodConstraints)
Constructs a new ConstrainableFiddlerAdminProxy instance.

For a description of all but the methodConstraints argument (provided below), refer to the description for the constructor of this class' super class.

Parameters:
methodConstraints - the client method constraints to place on this proxy (may be null).
Method Detail

constrainServer

private static Fiddler constrainServer(Fiddler server,
                                       MethodConstraints constraints)
Returns a copy of the given server proxy having the client method constraints that result after the specified method mapping is applied to the given client method constraints.


setConstraints

public RemoteMethodControl setConstraints(MethodConstraints constraints)
Returns a new copy of this proxy class (ConstrainableFiddlerAdminProxy) with its client constraints set to the specified constraints. A null value is interpreted as mapping all methods to empty constraints.

Specified by:
setConstraints in interface RemoteMethodControl
Parameters:
constraints - client constraints, or null
Returns:
a new copy of this proxy with the client constraints set to the specified constraints
See Also:
RemoteMethodControl.getConstraints()

getConstraints

public MethodConstraints getConstraints()
Returns the client constraints placed on the current instance of this proxy class (ConstrainableFiddlerAdminProxy). The value returned by this method can be null, which is interpreted as mapping all methods to empty constraints.

Specified by:
getConstraints in interface RemoteMethodControl
Returns:
the client constraints, or null
See Also:
RemoteMethodControl.setConstraints(net.jini.core.constraint.MethodConstraints)

getProxyTrustIterator

private ProxyTrustIterator getProxyTrustIterator()
Returns a proxy trust iterator that is used in ProxyTrustVerifier to retrieve this object's trust verifier.


readObject

private void readObject(ObjectInputStream s)
                 throws IOException,
                        ClassNotFoundException
Performs various functions related to the trust verification process for the current instance of this proxy class, as detailed in the description for this class.

Throws:
InvalidObjectException - if any of the requirements for trust verification (as detailed in the class description) are not satisfied.
IOException
ClassNotFoundException


Copyright 2007-2010, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.