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`

public abstract class AbstractDiscoveryContainerAdapter extends AbstractContainer implements IDiscoveryLocator, IDiscoveryAdvertiser

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final Set`
`allServiceListeners`
Collection of service listeners.
`protected final Map`
`serviceListeners`
Map of service type to collection of service listeners.
`protected final String`
`servicesNamespaceName`
`protected final 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
Constructor
Description
`AbstractDiscoveryContainerAdapter(String aNamespaceName, DiscoveryContainerConfig aConfig)`

## Method Summary

Modifier and Type
Method
Description
`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 Details

### 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 Details

### AbstractDiscoveryContainerAdapter

public AbstractDiscoveryContainerAdapter(String aNamespaceName, DiscoveryContainerConfig aConfig)

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

## Method Details

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