org.eclipse.ecf.osgi.services.remoteserviceadmin

## Interface IHostContainerSelector

All Known Implementing Classes:
  HostContainerSelector

    public interface IHostContainerSelector

Host container selector service contract. When an ECF RemoteServiceAdmin instance is asked to import a service (i.e. via `RemoteServiceAdmin.exportService(ServiceReference, java.util.Map)` ), the RSA first gets an instance of this service via the service registry, and then uses it to select an array of ECF host container instances by calling selectHostContainers.

The `IRemoteServiceContainer` array returned is then used to actually export the remote service (typically via `IRemoteServiceContainerAdapter.registerRemoteService(String[], Object, java.util.Dictionary)`

If no other instances of this service have been registered, a default instance of `HostContainerSelector` will be used. Note that this default instance is registered with the lowest possible priority, so that if other `IHostContainerSelector` instances are registered, they will be preferred/used over the default.

### Method Summary

All Methods Instance Methods Abstract Methods
`IRemoteServiceContainer[]` `selectHostContainers(ServiceReference serviceReference, Map<String,Object> overridingProperties, String[] exportedInterfaces, String[] exportedConfigs, String[] serviceIntents)` Select host containers to use to export a remote service.

### Method Detail

#### selectHostContainers

    IRemoteServiceContainer[] selectHostContainers(ServiceReference serviceReference,
                                                   Map<String,Object> overridingProperties,
                                                   String[] exportedInterfaces,
                                                   String[] exportedConfigs,
                                                   String[] serviceIntents)
                                            throws SelectContainerException

Select host containers to use to export a remote service.

Parameters:
  `serviceReference` - the service reference given by the `RemoteServiceAdmin.exportService(ServiceReference, java.util.Map)`
  `overridingProperties` - the map portion given by the `RemoteServiceAdmin.exportService(ServiceReference, java.util.Map)`
  `exportedInterfaces` - the exportedInterfaces (typically associated with `RemoteConstants.SERVICE_EXPORTED_INTERFACES` ). Will not be `null`.
  `exportedConfigs` - the exportedConfigs (typically associated with `RemoteConstants.SERVICE_EXPORTED_CONFIGS` ). May be `null`.
  `serviceIntents` - the service intents (typically associated with `RemoteConstants.SERVICE_EXPORTED_INTENTS` and `RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA` ). May be `null`.
Returns:
  IRemoteServiceContainer[] of remote service containers that should be used to export the given remote service (typically via `IRemoteServiceContainerAdapter.registerRemoteService(String[], Object, java.util.Dictionary)` ). Will not be `null`, but may be empty array.
Throws:
  `SelectContainerException` - thrown if the host container selection or creation/configuration fails.
Since:
  2.0