Package org.eclipse.ecf.remoteservice.provider

# Interface IRemoteServiceDistributionProvider

All Known Implementing Classes:
  `RemoteServiceDistributionProvider`

public interface IRemoteServiceDistributionProvider
Service interface for registering distribution providers. When IRemoteServiceDistributionProvider implementations are registered, they result in the two methods below being called by the org.eclipse.ecf.remoteservice bundle, with the BundleContext from the org.eclipse.ecf.remoteservice bundle. Intended to be implemented by remote service distribution provider implementations. When instance of this service interface is registered, the methods below will be called in order to register the ContainerTypeDescription, Namespace, and AdapterConfig for this distribution provider.

Please NOTE: IRemoteServiceDistributionProviders should be registered (and therefore the bundles containing implementations started) before any remote services using these distribution providers are exported. In other words, if you create and register a IRemoteServiceDistributionProvider with name 'com.myproject.myprovider' the provider implementation bundle should be started and the IRemoteServiceDistributionProvider service must be registered prior to registering the service that is to be exported using that provider. For example

     #Must first register the com.myproject.myprovider distribution provider, so it's available
     providerBuilder.setName('com.myproject.myprovider')...
     bundleContext.registerService(IRemoteServiceDistributionProvider.class,providerBuilder.build(),null);

     ...

     #Then may register a remote service that uses com.myproject.myprovider distribution provider
     props.put("service.exported.interfaces","*");

     #This specifies that com.myproject.myprovider is to be used to export the service, but the above registration
     #must take place before MyService registration so it can be active for exporting this service
     props.put("service.exported.configs","com.myproject.myprovider");

     #With usual topology manager the following will export MyService using com.myproject.myprovider
     #distribution provider
     bundleContext.registerService(MyService.class,new MyServiceImpl(),props);

Since:
  8.7

## Method Summary

Modifier and Type
Method
Description
`AdapterConfig[]`
`getAdapterConfigs()`
Return any AdapterConfigs to register with the IAdapterManager
`ContainerTypeDescription`
`getContainerTypeDescription()`
Return the ContainerTypeDescription to register for this distribution provider.
`Dictionary<String,?>`
`getContainerTypeDescriptionProperties()`
Return any properties that are to be used when registering the ContainerTypeDescription returned by above method.
`Namespace`
`getNamespace()`
Return the Namespace (or subclass) to register for this distribution provider.
`Dictionary<String,?>`
`getNamespaceProperties()`
Return any properties that are to be used when registering the Namespace returned by above method.

## Method Details

### getContainerTypeDescription

ContainerTypeDescription getContainerTypeDescription()
Return the ContainerTypeDescription to register for this distribution provider. The returned ContainerTypeDescription must not be `null` and should be unique identified via it's name (obtained via `ContainerTypeDescription.getName()`.

Returns:
  ContainerTypeDescription. Must not be `null`.

### getContainerTypeDescriptionProperties

Dictionary<String,?> getContainerTypeDescriptionProperties()
Return any properties that are to be used when registering the ContainerTypeDescription returned by above method. `Null` may be returned.

Returns:
  Dictionary to use when registering the ContainerTypeDescription May be `null`.

### getNamespace

Namespace getNamespace()
Return the Namespace (or subclass) to register for this distribution provider. The returned Namespace may be `null`. In that case, no new Namespace will be registered. If the returned Namespace is non-null, It should be uniquely identified via it's name (obtained via `Namespace.getName()`.

Returns:
  ContainerTypeDescription. May be `null`.

### getNamespaceProperties

Dictionary<String,?> getNamespaceProperties()
Return any properties that are to be used when registering the Namespace returned by above method. `Null` may be returned.

Returns:
  Dictionary to use when registering this provider's Namespace. May be `null`.

### getAdapterConfigs

AdapterConfig[] getAdapterConfigs()
Return any AdapterConfigs to register with the IAdapterManager

Returns:
  AdapterConfig[] holding any AdapterConfigs to be registered with the system-wide adaptermanager.