Package org.eclipse.ecf.discovery

## Class AbstractDiscoveryContainerAdapter

- java.lang.Object
- - org.eclipse.ecf.core.AbstractContainer
  - - org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter

All Implemented Interfaces:
  `org.eclipse.core.runtime.IAdaptable`, `IContainer`, `IIdentifiable`, `IDiscoveryAdvertiser`, `IDiscoveryLocator`

Direct Known Subclasses:
  `DnsSdDiscoveryContainerAdapter`, `JSLPDiscoveryContainer`, `ZooDiscoveryContainer`

    public abstract class AbstractDiscoveryContainerAdapter
    extends AbstractContainer
    implements IDiscoveryLocator, IDiscoveryAdvertiser

### Field Summary

Fields
`protected Set` `allServiceListeners` Collection of service listeners.
`protected Map` `serviceListeners` Map of service type to collection of service listeners.
`protected String` `servicesNamespaceName`
`protected Collection` `serviceTypeListeners` Collection of service type listeners.

### Fields inherited from interface org.eclipse.ecf.discovery.IDiscoveryAdvertiser

`CONTAINER_NAME`

### Fields inherited from interface org.eclipse.ecf.discovery.IDiscoveryLocator

`CONTAINER_NAME`

### Constructor Summary

Constructors
`AbstractDiscoveryContainerAdapter​(String aNamespaceName, DiscoveryContainerConfig aConfig)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `addServiceListener​(IServiceTypeID aType, IServiceListener aListener)` Add a service listener.
`void` `addServiceListener​(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 String` `getContainerName()`
`ID` `getID()` Return the ID for this 'identifiable' object.
`protected Collection` `getListeners​(IServiceTypeID aServiceType)` Joins the `Collection` of `IServiceListener`s interested in any `IServiceTypeID` with the `Collection` of the `IServiceListener` registered for the given `IServiceTypeID`
`protected IServiceEvent` `getServiceEvent​(IServiceInfo iServiceInfo, ID id)`
`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​(IServiceTypeID aType, IServiceListener aListener)` Remove a service listener.
`void` `removeServiceListener​(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.core.IContainer

`connect, disconnect, getConnectedID`

### Methods inherited from interface org.eclipse.ecf.discovery.IDiscoveryAdvertiser

`registerService, unregisterService`

### Methods inherited from interface org.eclipse.ecf.discovery.IDiscoveryLocator

`getServiceInfo, getServices, getServices, getServiceTypes`

### Field Detail

#### allServiceListeners

    protected final Set allServiceListeners

Collection of service listeners. NOTE: Access to this collection is synchronized, so subclasses should take this into account.

#### serviceListeners

    protected final Map serviceListeners

Map of service type to collection of service listeners. NOTE: Access to this map is synchronized, so subclasses should take this into account.

#### servicesNamespaceName

    protected final String servicesNamespaceName

#### serviceTypeListeners

    protected final Collection serviceTypeListeners

Collection of service type listeners. NOTE: Access to this collection is synchronized, so subclasses should take this into account.

### Constructor Detail

#### AbstractDiscoveryContainerAdapter

    public AbstractDiscoveryContainerAdapter​(String aNamespaceName,
                                             DiscoveryContainerConfig aConfig)

Parameters:
  `aNamespaceName` - namespace name
  `aConfig` - discovery container config

### 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` .

#### getServiceEvent

    protected IServiceEvent getServiceEvent​(IServiceInfo iServiceInfo,
                                            ID id)

Parameters:
  `iServiceInfo` - service info
  `id` - id
Returns:
  IServiceEvent created service event
Since:
  5.0

#### 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 String getContainerName()

Returns:
  The name of this discovery container
Since:
  4.0

#### getListeners

    protected Collection getListeners​(IServiceTypeID aServiceType)

Joins the `Collection` of `IServiceListener`s interested in any `IServiceTypeID` with the `Collection` of the `IServiceListener` registered for the given `IServiceTypeID`

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

#### getServicesNamespace

    public Namespace getServicesNamespace()

Description copied from interface: `IDiscoveryLocator`
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`
Parameters:
  `service` - IServiceID of the service to get info about. Must not be `null`.
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`
Parameters:
  `type` - IServiceTypeID defining the type of service we are interested in getting service info about. Must not be `null`
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)`