org.eclipse.ecf.remoteservice.rest.client
Class AbstractRestClientContainer

java.lang.Object
  extended by org.eclipse.ecf.core.AbstractContainer
      extended by org.eclipse.ecf.remoteservice.client.AbstractClientContainer
          extended by org.eclipse.ecf.remoteservice.rest.client.AbstractRestClientContainer
All Implemented Interfaces:
org.eclipse.core.runtime.IAdaptable, IContainer, IIdentifiable, IRemoteServiceClientContainerAdapter, IRemoteServiceConsumer, IRemoteServiceContainerAdapter, IRemoteServiceHost
Direct Known Subclasses:
RestClientContainer

public abstract class AbstractRestClientContainer
extends AbstractClientContainer


Nested Class Summary
protected  class AbstractRestClientContainer.RestRemoteServiceClientRegistration
           
 
Field Summary
static java.lang.String SLASH
           
 
Fields inherited from class org.eclipse.ecf.remoteservice.client.AbstractClientContainer
alwaysSendDefaultParameters, connectContext, connectedID, connectLock, containerID, parameterSerializer, parameterSerializerLock, registry, remoteResponseDeserializer, remoteResponseDeserializerLock, remoteServiceListeners
 
Constructor Summary
AbstractRestClientContainer(RestID containerID)
           
 
Method Summary
protected abstract  IRemoteService createRemoteService(RemoteServiceClientRegistration registration)
          Create an implementer of IRemoteService for the given registration.
protected  RemoteServiceClientRegistration createRestServiceRegistration(IRemoteCallable[] callables, java.util.Dictionary properties)
           
protected  RemoteServiceClientRegistration createRestServiceRegistration(java.lang.String[] clazzes, IRemoteCallable[][] callables, java.util.Dictionary properties)
           
 Namespace getConnectNamespace()
          Get the Namespace for creating a targetID suitable for use as the first parameter in subsequent calls to IContainer.connect(ID, IConnectContext).
 IRemoteServiceReference[] getRemoteServiceReferences(ID target, ID[] idFilter, java.lang.String clazz, java.lang.String filter)
          Returns an array of IRemoteServiceReference objects.
 IRemoteServiceReference[] getRemoteServiceReferences(ID target, java.lang.String clazz, java.lang.String filter)
           Returns an array of IRemoteServiceReference objects.
protected  java.lang.String prepareBaseUri(IRemoteCall call, IRemoteCallable callable)
           
 java.lang.String prepareEndpointAddress(IRemoteCall call, IRemoteCallable callable)
          Prepare an endpoint address for the given call and callable.
protected  java.lang.String prepareResourcePath(IRemoteCall call, IRemoteCallable callable)
           
 boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy)
          Set the remote service call policy to enable authorization on remote service method calls
protected  java.lang.String substituteParameters(java.lang.String path, java.lang.Object[] parameters)
           
protected  ID transformTarget(ID originalTarget, java.lang.String filter)
           
 
Methods inherited from class org.eclipse.ecf.remoteservice.client.AbstractClientContainer
addRemoteServiceListener, asyncGetRemoteServiceReferences, asyncGetRemoteServiceReferences, asyncGetRemoteServiceReferences, connect, createRemoteFilter, createUriRequest, disconnect, dispose, getAllRemoteServiceReferences, getConnectContextForAuthentication, getConnectedID, getID, getParameterSerializer, getParameterSerializer, getRemoteCallTargetID, getRemoteService, getRemoteServiceID, getRemoteServiceNamespace, getRemoteServiceReference, getRemoteServiceReferences, getResponseDeserializer, getResponseDeserializer, logException, prepareCallParameters, prepareExtraParameters, prepareParameters, processResponse, registerCallables, registerCallables, registerCallables, registerRemoteService, removeRemoteServiceListener, serializeParameter, serializeParameter, setAlwaysSendDefaultParameters, setConnectContextForAuthentication, setParameterSerializer, setResponseDeserializer, ungetRemoteService
 
Methods inherited from class org.eclipse.ecf.core.AbstractContainer
addListener, fireContainerEvent, getAdapter, getPasswordFromConnectContext, removeListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 

Field Detail

SLASH

public static final java.lang.String SLASH
See Also:
Constant Field Values
Constructor Detail

AbstractRestClientContainer

public AbstractRestClientContainer(RestID containerID)
Method Detail

setRemoteServiceCallPolicy

public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy)
Description copied from interface: IRemoteServiceContainerAdapter
Set the remote service call policy to enable authorization on remote service method calls

Parameters:
policy - Implementation of IRemoteServiceCallPolicy containing authorization specific code
Returns:
true if the underlying provider supports using the policy, false if it does not support using the policy.

getConnectNamespace

public Namespace getConnectNamespace()
Description copied from interface: IContainer
Get the Namespace for creating a targetID suitable for use as the first parameter in subsequent calls to IContainer.connect(ID, IConnectContext). If this method returns null, then it means that null is expected as a valid parameter in subsequent calls to IContainer.connect(ID, IConnectContext). If this method returns a non-null Namespace, then the targetID parameter in IContainer.connect(ID, IConnectContext) must be non-null instance created of the returned Namespace.

Returns:
Namespace the namespace associated with subsequent calls to IContainer.connect(ID, IConnectContext). If null, then the targetID instances passed to IContainer.connect(ID, IConnectContext) may be null. If not null, then targetID instances passed to IContainer.connect(ID, IConnectContext) must be instances of the returned Namespace.

createRemoteService

protected abstract IRemoteService createRemoteService(RemoteServiceClientRegistration registration)
Description copied from class: AbstractClientContainer
Create an implementer of IRemoteService for the given registration.

Specified by:
createRemoteService in class AbstractClientContainer
Parameters:
registration - registration from which to create the associated IRemoteService. Will not be null.
Returns:
IRemoteService the remote service associated with this client container. Should not return null.

getRemoteServiceReferences

public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
                                                            ID[] idFilter,
                                                            java.lang.String clazz,
                                                            java.lang.String filter)
                                                     throws org.osgi.framework.InvalidSyntaxException,
                                                            ContainerConnectException
Description copied from interface: IRemoteServiceContainerAdapter
Returns an array of IRemoteServiceReference objects. The returned array of IRemoteServiceReference objects contains services that were registered under the specified class and match the specified idFilter, and filter criteria.

Note this method assumes that the enclosing container has previously been connected, and uses the idFilter to filter among targets within the previously connected set of container IDs. To request connection as part of reference lookup, see IRemoteServiceContainerAdapter.getRemoteServiceReferences(ID, String, String).

The list is valid at the time of the call to this method, however since the Framework is a very dynamic environment, services can be modified or unregistered at anytime.

target is a remote container to connect to. If null, no connection attempt is made.

idFilter is used to select a registered services that were registered by a given set of containers with id in idFilter. Only services exposed by a container with id in idFilter will be returned. If idFilter is null, all containers are considered to match the filter.

filter is used to select the registered service whose properties objects contain keys and values which satisfy the filter. See Filter for a description of the filter string syntax. If filter is null, all registered services are considered to match the filter. If filter cannot be parsed, an InvalidSyntaxException will be thrown with a human readable message where the filter became unparsable.

Specified by:
getRemoteServiceReferences in interface IRemoteServiceConsumer
Specified by:
getRemoteServiceReferences in interface IRemoteServiceContainerAdapter
Overrides:
getRemoteServiceReferences in class AbstractClientContainer
Parameters:
target - a target container to connect to if enclosing container is not already connected. May be null.
idFilter - an array of ID instances that will restrict the search for matching container ids If null, all remote containers will be considered in search for matching IRemoteServiceReference instances. May be null.
clazz - the fully qualified name of the interface class that describes the desired service. Must not be null.
filter - The filter criteria. May be null.
Returns:
Array of IRemoteServiceReferences matching given search criteria or null if no services are found that match the search.
Throws:
org.osgi.framework.InvalidSyntaxException - If filter contains an invalid filter string that cannot be parsed.
ContainerConnectException

getRemoteServiceReferences

public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
                                                            java.lang.String clazz,
                                                            java.lang.String filter)
                                                     throws org.osgi.framework.InvalidSyntaxException,
                                                            ContainerConnectException
Description copied from interface: IRemoteServiceContainerAdapter

Returns an array of IRemoteServiceReference objects. The returned array of IRemoteServiceReference objects contains services that were registered under the specified class and match the specified idFilter, and filter criteria.

The list is valid at the time of the call to this method, however since the Framework is a very dynamic environment, services can be modified or unregistered at anytime.

target is a remote container to connect to.

filter is used to select the registered service whose properties objects contain keys and values which satisfy the filter. See Filter for a description of the filter string syntax.

If filter is null, all registered services are considered to match the filter. If filter cannot be parsed, an InvalidSyntaxException will be thrown with a human readable message where the filter became unparsable.

Specified by:
getRemoteServiceReferences in interface IRemoteServiceConsumer
Specified by:
getRemoteServiceReferences in interface IRemoteServiceContainerAdapter
Overrides:
getRemoteServiceReferences in class AbstractClientContainer
Parameters:
target - an target to connect to if enclosing container is not already connected. May be null.
clazz - the fully qualified name of the interface class that describes the desired service. Must not be null.
filter - The filter criteria. May be null.
Returns:
Array of IRemoteServiceReferences matching given search criteria or null if no services are found that match the search.
Throws:
org.osgi.framework.InvalidSyntaxException - If filter contains an invalid filter string that cannot be parsed.
ContainerConnectException

transformTarget

protected ID transformTarget(ID originalTarget,
                             java.lang.String filter)
                      throws org.osgi.framework.InvalidSyntaxException
Throws:
org.osgi.framework.InvalidSyntaxException

prepareBaseUri

protected java.lang.String prepareBaseUri(IRemoteCall call,
                                          IRemoteCallable callable)

prepareResourcePath

protected java.lang.String prepareResourcePath(IRemoteCall call,
                                               IRemoteCallable callable)

substituteParameters

protected java.lang.String substituteParameters(java.lang.String path,
                                                java.lang.Object[] parameters)

prepareEndpointAddress

public java.lang.String prepareEndpointAddress(IRemoteCall call,
                                               IRemoteCallable callable)
Description copied from class: AbstractClientContainer
Prepare an endpoint address for the given call and callable.

Specified by:
prepareEndpointAddress in class AbstractClientContainer
Parameters:
call - to create an endpoint for. Will not be null.
callable - to create an endpoing for. Will not be null.
Returns:
String that represents the endpoing for the given call and callable. May only return null if the given call should not be completed (i.e. there is no endpoint associated with the given call).

createRestServiceRegistration

protected RemoteServiceClientRegistration createRestServiceRegistration(java.lang.String[] clazzes,
                                                                        IRemoteCallable[][] callables,
                                                                        java.util.Dictionary properties)
Overrides:
createRestServiceRegistration in class AbstractClientContainer

createRestServiceRegistration

protected RemoteServiceClientRegistration createRestServiceRegistration(IRemoteCallable[] callables,
                                                                        java.util.Dictionary properties)
Overrides:
createRestServiceRegistration in class AbstractClientContainer