org.eclipse.ecf.discovery
Class AbstractDiscoveryContainerAdapter

java.lang.Object
  extended by org.eclipse.ecf.core.AbstractContainer
      extended by org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter
All Implemented Interfaces:
org.eclipse.core.runtime.IAdaptable, IContainer, IIdentifiable, IDiscoveryAdvertiser, IDiscoveryLocator
Direct Known Subclasses:
CompositeDiscoveryContainer, DnsSdDiscoveryContainerAdapter, JSLPDiscoveryContainer, ZooDiscoveryContainer

public abstract class AbstractDiscoveryContainerAdapter
extends AbstractContainer
implements IDiscoveryLocator, IDiscoveryAdvertiser


Field Summary
protected  java.util.Set allServiceListeners
          Collection of service listeners i.e.
protected  java.util.Map serviceListeners
          Map of service type to collection of service listeners i.e.
protected  java.lang.String servicesNamespaceName
           
protected  java.util.Collection serviceTypeListeners
          Collection of service type listeners i.e.
 
Fields inherited from interface org.eclipse.ecf.discovery.IDiscoveryLocator
CONTAINER_NAME
 
Fields inherited from interface org.eclipse.ecf.discovery.IDiscoveryAdvertiser
CONTAINER_NAME
 
Constructor Summary
AbstractDiscoveryContainerAdapter(java.lang.String aNamespaceName, DiscoveryContainerConfig aConfig)
           
 
Method Summary
 void addServiceListener(IServiceListener aListener)
          Add a service listener.
 void addServiceListener(IServiceTypeID aType, IServiceListener aListener)
          Add a service listener.
 void addServiceTypeListener(IServiceTypeListener aListener)
          Add a service type listener.
protected  void clearListeners()
           
 void dispose()
          Dispose this IContainer instance.
protected  void fireServiceDiscovered(IServiceEvent aServiceEvent)
          Calls IServiceListener.serviceDiscovered(IServiceEvent) for all registered IServiceListener
protected  void fireServiceTypeDiscovered(IServiceTypeEvent aServiceTypeEvent)
          Calls IServiceTypeListener.serviceTypeDiscovered(IServiceTypeEvent) for all registered IServiceTypeListener
protected  void fireServiceUndiscovered(IServiceEvent aServiceEvent)
          Calls IServiceListener.serviceUndiscovered(IServiceEvent) for all registered IServiceListener
 org.eclipse.equinox.concurrent.future.IFuture getAsyncServiceInfo(IServiceID service)
          Asynchronously retrieve info about the service
 org.eclipse.equinox.concurrent.future.IFuture getAsyncServices()
          Asynchronously get service info about all known services
 org.eclipse.equinox.concurrent.future.IFuture getAsyncServices(IServiceTypeID type)
          Asynchronously get service info about all known services of given service type
 org.eclipse.equinox.concurrent.future.IFuture getAsyncServiceTypes()
          Asynchronously get service info about all known services of given service type
protected  DiscoveryContainerConfig getConfig()
           
 Namespace getConnectNamespace()
          Get the Namespace for creating a targetID suitable for use as the first parameter in subsequent calls to IContainer.connect(ID, IConnectContext).
abstract  java.lang.String getContainerName()
           
 ID getID()
          Return the ID for this 'identifiable' object.
protected  java.util.Collection getListeners(IServiceTypeID aServiceType)
          Joins the Collection of IServiceListeners interested in any IServiceTypeID with the Collection of the IServiceListener registered for the given IServiceTypeID
 Namespace getServicesNamespace()
          Get a Namespace for services associated with this discovery container adapter.
 IServiceInfo[] purgeCache()
          Purges the underlying IServiceInfo cache if available in the current provider
 void removeServiceListener(IServiceListener aListener)
          Remove a service listener.
 void removeServiceListener(IServiceTypeID aType, IServiceListener aListener)
          Remove a service listener.
 void removeServiceTypeListener(IServiceTypeListener aListener)
          Remove a service type listener.
 void unregisterAllServices()
          Unregister all previously registered service.
 
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.ecf.discovery.IDiscoveryLocator
getServiceInfo, getServices, getServices, getServiceTypes
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 
Methods inherited from interface org.eclipse.ecf.discovery.IDiscoveryAdvertiser
registerService, unregisterService
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 
Methods inherited from interface org.eclipse.ecf.core.IContainer
connect, disconnect, getConnectedID
 

Field Detail

allServiceListeners

protected final java.util.Set allServiceListeners
Collection of service listeners i.e. Collection. NOTE: Access to this collection is synchronized, so subclasses should take this into account.


serviceListeners

protected final java.util.Map serviceListeners
Map of service type to collection of service listeners i.e. >. NOTE: Access to this map is synchronized, so subclasses should take this into account.


servicesNamespaceName

protected final java.lang.String servicesNamespaceName

serviceTypeListeners

protected final java.util.Collection serviceTypeListeners
Collection of service type listeners i.e. Collection. NOTE: Access to this collection is synchronized, so subclasses should take this into account.

Constructor Detail

AbstractDiscoveryContainerAdapter

public AbstractDiscoveryContainerAdapter(java.lang.String aNamespaceName,
                                         DiscoveryContainerConfig aConfig)
Parameters:
aNamespaceName -
aConfig -
Method Detail

addServiceListener

public void addServiceListener(IServiceListener aListener)
Description copied from interface: IDiscoveryLocator
Add a service listener. The given listener will have its method called when a service is discovered.

Specified by:
addServiceListener in interface IDiscoveryLocator
Parameters:
aListener - IServiceListener to be notified. Must not be null .

addServiceListener

public void addServiceListener(IServiceTypeID aType,
                               IServiceListener aListener)
Description copied from interface: IDiscoveryLocator
Add a service listener. The given listener will have its method called when a service with a type matching that specified by the first parameter is discovered.

Specified by:
addServiceListener in interface IDiscoveryLocator
Parameters:
aType - String type to listen for. Must not be null. Must be formatted according to this specific IDiscoveryContainer
aListener - IServiceListener to be notified. Must not be null .

addServiceTypeListener

public void addServiceTypeListener(IServiceTypeListener aListener)
Description copied from interface: IDiscoveryLocator
Add a service type listener. The given listener will have its method called when a service type is discovered.

Specified by:
addServiceTypeListener in interface IDiscoveryLocator
Parameters:
aListener - the listener to be notified. Must not be null.

clearListeners

protected void clearListeners()

dispose

public void dispose()
Description copied from interface: IContainer
Dispose this IContainer instance. The container instance will be made inactive after the completion of this method and will be unavailable for subsequent usage.

Specified by:
dispose in interface IContainer
Overrides:
dispose in class AbstractContainer

fireServiceDiscovered

protected void fireServiceDiscovered(IServiceEvent aServiceEvent)
Calls IServiceListener.serviceDiscovered(IServiceEvent) for all registered IServiceListener

Parameters:
aServiceEvent - The IServiceEvent to send along the call

fireServiceTypeDiscovered

protected void fireServiceTypeDiscovered(IServiceTypeEvent aServiceTypeEvent)
Calls IServiceTypeListener.serviceTypeDiscovered(IServiceTypeEvent) for all registered IServiceTypeListener

Parameters:
aServiceTypeEvent - The IServiceTypeEvent to send along the call

fireServiceUndiscovered

protected void fireServiceUndiscovered(IServiceEvent aServiceEvent)
Calls IServiceListener.serviceUndiscovered(IServiceEvent) for all registered IServiceListener

Parameters:
aServiceEvent - The IServiceEvent to send along the call

getConfig

protected DiscoveryContainerConfig getConfig()
Returns:
The DiscoveryContainerConfig of this IDiscoveryContainerAdapter

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.

Specified by:
getConnectNamespace in interface IContainer
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.

getID

public ID getID()
Description copied from interface: IIdentifiable
Return the ID for this 'identifiable' object. The returned ID should be unique within its namespace. May return null.

Specified by:
getID in interface IIdentifiable
Returns:
the ID for this identifiable object. May return null.

getContainerName

public abstract java.lang.String getContainerName()
Returns:
The name of this discovery container
Since:
4.0

getListeners

protected java.util.Collection getListeners(IServiceTypeID aServiceType)
Joins the Collection of IServiceListeners interested in any IServiceTypeID with the Collection of the IServiceListener registered for the given IServiceTypeID

Parameters:
aServiceType - The IServiceTypeID for which the IServiceListeners are returned
Returns:
All IServiceListeners interested in the given IServiceTypeID

getServicesNamespace

public Namespace getServicesNamespace()
Description copied from interface: IDiscoveryAdvertiser
Get a Namespace for services associated with this discovery container adapter. The given Namespace may be used via IServiceIDFactory to create IServiceIDs rather than simple IDs. For example:
 IServiceID serviceID = ServiceIDFactory.getDefault().createServiceID(
                container.getServicesNamespace(), serviceType, serviceName);
 

Specified by:
getServicesNamespace in interface IDiscoveryAdvertiser
Specified by:
getServicesNamespace in interface IDiscoveryLocator
Returns:
Namespace for creating service IDs. Will not be null .

removeServiceListener

public void removeServiceListener(IServiceListener aListener)
Description copied from interface: IDiscoveryLocator
Remove a service listener. Remove the listener from this container

Specified by:
removeServiceListener in interface IDiscoveryLocator
Parameters:
aListener - IServiceListener listener to be removed. Must not be null.

removeServiceListener

public void removeServiceListener(IServiceTypeID aType,
                                  IServiceListener aListener)
Description copied from interface: IDiscoveryLocator
Remove a service listener. Remove the listener associated with the type specified by the first parameter.

Specified by:
removeServiceListener in interface IDiscoveryLocator
Parameters:
aType - String of the desired type to remove the listener. Must not be null. Must be formatted according to this specific IDiscoveryContainer
aListener - IServiceListener listener to be removed. Must not be null.

removeServiceTypeListener

public void removeServiceTypeListener(IServiceTypeListener aListener)
Description copied from interface: IDiscoveryLocator
Remove a service type listener. Remove the type listener.

Specified by:
removeServiceTypeListener in interface IDiscoveryLocator
Parameters:
aListener - IServiceTypeListener to be removed. Must not be null.

unregisterAllServices

public void unregisterAllServices()
Description copied from interface: IDiscoveryAdvertiser
Unregister all previously registered service.

Specified by:
unregisterAllServices in interface IDiscoveryAdvertiser
Since:
3.0
See Also:
IDiscoveryAdvertiser.unregisterAllServices()

purgeCache

public IServiceInfo[] purgeCache()
Description copied from interface: IDiscoveryLocator
Purges the underlying IServiceInfo cache if available in the current provider

Specified by:
purgeCache in interface IDiscoveryLocator
Returns:
The previous cache content
Since:
3.0
See Also:
IDiscoveryLocator.purgeCache()

getAsyncServiceInfo

public org.eclipse.equinox.concurrent.future.IFuture getAsyncServiceInfo(IServiceID service)
Description copied from interface: IDiscoveryLocator
Asynchronously retrieve info about the service

Specified by:
getAsyncServiceInfo in interface IDiscoveryLocator
Returns:
IFuture a future status wrapping an IServiceInfo or null if no information retrievable.
Since:
3.0
See Also:
IDiscoveryLocator.getAsyncServiceInfo(org.eclipse.ecf.discovery.identity.IServiceID)

getAsyncServiceTypes

public org.eclipse.equinox.concurrent.future.IFuture getAsyncServiceTypes()
Description copied from interface: IDiscoveryLocator
Asynchronously get service info about all known services of given service type

Specified by:
getAsyncServiceTypes in interface IDiscoveryLocator
Returns:
IFuture wrapping an IServiceTypeID[]. The resulting array of service type IDs will not be null. May be of length 0.
Since:
3.0
See Also:
IDiscoveryLocator.getAsyncServiceTypes()

getAsyncServices

public org.eclipse.equinox.concurrent.future.IFuture getAsyncServices()
Description copied from interface: IDiscoveryLocator
Asynchronously get service info about all known services

Specified by:
getAsyncServices in interface IDiscoveryLocator
Returns:
IFuture wrapping an IServiceTypeID[]. The resulting array of service type IDs will not be null. May be of length 0.
Since:
3.0
See Also:
IDiscoveryLocator.getAsyncServices()

getAsyncServices

public org.eclipse.equinox.concurrent.future.IFuture getAsyncServices(IServiceTypeID type)
Description copied from interface: IDiscoveryLocator
Asynchronously get service info about all known services of given service type

Specified by:
getAsyncServices in interface IDiscoveryLocator
Returns:
IFuture wrapping an IServiceTypeID[]. The resulting array of service type IDs will not be null. May be of length 0.
Since:
3.0
See Also:
IDiscoveryLocator.getAsyncServices(org.eclipse.ecf.discovery.identity.IServiceTypeID)