Package org.eclipse.ecf.osgi.services.remoteserviceadmin

# Interface IDiscoveredEndpointDescriptionFactory

All Known Implementing Classes:
  `DiscoveredEndpointDescriptionFactory`

public interface IDiscoveredEndpointDescriptionFactory
Factory for creating `DiscoveredEndpointDescription`s. A discovered endpoint description factory is used by a `EndpointDescriptionLocator` to convert a service info (discovered by the locator) into a discovered endpoint description (instance of DiscoveredEndpointDescription). This discovered endpoint description is then used by the `EndpointDescriptionLocator` to notify endpoint description listeners as per section 122.6 of the OSGi Enterprise Specification OSGi enterprise specification.

If no other instances of this service have been registered, a default instance of `DiscoveredEndpointDescriptionFactory` will be used by the `EndpointDescriptionLocator`. Note that this default instance is registered with the lowest possible priority, so that if other `IDiscoveredEndpointDescriptionFactory` instances are registered, they will be preferred/used over the default. This means that those wishing to customize/control this process of converting `IServiceInfo`s to `DiscoveredEndpointDescription` must create their own implementation of `IDiscoveredEndpointDescriptionFactory` and register it with the OSGi service registry with a priority ({org.osgi.framework.Constants#SERVICE_RANKING}) higher than `Integer.MIN_VALUE`

Then at runtime, when needed by the `EndpointDescriptionLocator`, the new discovered endpoint description factory will be used.

See Also:
  - `IServiceInfoFactory`

## Method Summary

Modifier and Type
Method
Description
`DiscoveredEndpointDescription`
`createDiscoveredEndpointDescription(IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo)`
Create an EndpointDescription for a discovered remote service.
`void`
`removeAllDiscoveredEndpointDescriptions()`
Remove all DiscoveredEndpointDescription from this factory.
`DiscoveredEndpointDescription`
`removeDiscoveredEndpointDescription(IDiscoveryLocator locator, IServiceID serviceID)`
Remove an EndpointDescription for a previously discovered remote service.
`boolean`
`removeDiscoveredEndpointDescription(EndpointDescription endpointDescription)`
Remove the DiscoveredEndpointDescription associated with the given endpointDescription.

## Method Details

### createDiscoveredEndpointDescription

DiscoveredEndpointDescription createDiscoveredEndpointDescription(IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo)
Create an EndpointDescription for a discovered remote service. Implementers of this factory service may return the type of EndpointDescription appropriate for the associated distribution system (e.g. ECFEndpointDescription). Implementers should return `null` if no notification should occur.

Parameters:
  `locator` - the locator responsible for the discoveredServiceInfo. Must not be `null`.
  `discoveredServiceInfo` - the discovered service info. Must not be `null`.
Returns:
  DiscoveredEndpointDescription that will be used to notify EndpointListeners about a new EndpointDescription. If `null` is returned, no notification should be performed by the calling code.

### removeDiscoveredEndpointDescription

DiscoveredEndpointDescription removeDiscoveredEndpointDescription(IDiscoveryLocator locator, IServiceID serviceID)
Remove an EndpointDescription for a previously discovered remote service. Implementers of this factory service may return the type of EndpointDescription appropriate for the associated distribution system (e.g. ECFEndpointDescription). Implementers should return `null` if no notification should occur.

Parameters:
  `locator` - the locator responsible for the discoveredServiceInfo. Must not be `null`.
  `serviceID` - the discovered service ID. Must not be `null`.
Returns:
  EndpointDescription that will be used to notify EndpointListeners about an undiscovered EndpointDescription. If `null` is returned, no notification should be performed by the calling code.

### removeDiscoveredEndpointDescription

boolean removeDiscoveredEndpointDescription(EndpointDescription endpointDescription)
Remove the DiscoveredEndpointDescription associated with the given endpointDescription.

Parameters:
  `endpointDescription` - that was previously associated with a DiscoveredEndpointDescription (via `createDiscoveredEndpointDescription(IDiscoveryLocator, IServiceInfo)` to be removed. Must not be `null`.
Returns:
  `true` if actually removed, `false` if nothing was removed.

### removeAllDiscoveredEndpointDescriptions

void removeAllDiscoveredEndpointDescriptions()
Remove all DiscoveredEndpointDescription from this factory.