public class DependencyManager
extends java.lang.Object
DependencyActivatorBase
subclass you use as your
BundleActivator
, but it is also possible to create your
own instance.Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ASPECT |
static java.lang.String |
METHOD_CACHE_SIZE |
static java.lang.String |
PARALLEL
The DependencyManager Activator will wait for a threadpool before creating any DM components if the following
OSGi system property is set to true.
|
static java.lang.String |
SERVICEREGISTRY_CACHE_INDICES |
Constructor and Description |
---|
DependencyManager(BundleContext context)
Creates a new dependency manager.
|
Modifier and Type | Method and Description |
---|---|
void |
add(Component c)
Adds a new component to the dependency manager.
|
void |
clear()
Removes all components and their dependencies.
|
Component |
createAdapterFactoryConfigurationService(java.lang.String factoryPid,
java.lang.String update,
boolean propagate,
java.lang.String heading,
java.lang.String desc,
java.lang.String localization,
PropertyMetaData[] propertiesMetaData)
Creates a new Managed Service Factory Configuration Adapter with meta type support.
|
Component |
createAdapterService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter)
Creates a new adapter.
|
Component |
createAdapterService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
java.lang.String autoConfig)
Creates a new adapter.
|
Component |
createAdapterService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
java.lang.String autoConfig,
java.lang.Object callbackInstance,
java.lang.String add,
java.lang.String change,
java.lang.String remove,
java.lang.String swap,
boolean propagate)
Creates a new adapter.
|
Component |
createAdapterService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
java.lang.String add,
java.lang.String change,
java.lang.String remove)
Creates a new adapter.
|
Component |
createAdapterService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
java.lang.String add,
java.lang.String change,
java.lang.String remove,
java.lang.String swap)
Creates a new adapter.
|
Component |
createAspectService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
int ranking)
Creates a new aspect.
|
Component |
createAspectService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
int ranking,
java.lang.String autoConfig)
Creates a new aspect.
|
Component |
createAspectService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
int ranking,
java.lang.String add,
java.lang.String change,
java.lang.String remove)
Creates a new aspect.
|
Component |
createAspectService(java.lang.Class<?> serviceInterface,
java.lang.String serviceFilter,
int ranking,
java.lang.String add,
java.lang.String change,
java.lang.String remove,
java.lang.String swap)
Creates a new aspect.
|
Component |
createBundleAdapterService(int bundleStateMask,
java.lang.String bundleFilter,
boolean propagate)
Creates a new bundle adapter.
|
Component |
createBundleAdapterService(int bundleStateMask,
java.lang.String bundleFilter,
boolean propagate,
java.lang.Object callbackInstance,
java.lang.String add,
java.lang.String change,
java.lang.String remove)
Creates a new bundle adapter using specific callback instance.
|
BundleDependency |
createBundleDependency()
Creates a new bundle dependency.
|
Component |
createComponent()
Creates a new component.
|
ConfigurationDependency |
createConfigurationDependency()
Creates a new configuration dependency.
|
Component |
createFactoryConfigurationAdapterService(java.lang.String factoryPid,
java.lang.String update,
boolean propagate)
Creates a new Managed Service Factory Configuration Adapter.
|
Component |
createFactoryConfigurationAdapterService(java.lang.String factoryPid,
java.lang.String update,
boolean propagate,
java.lang.Object callbackInstance)
Creates a new Managed Service Factory Configuration Adapter using a specific update callback instance.
|
PropertyMetaData |
createPropertyMetaData()
Creates a new configuration property metadata.
|
Component |
createResourceAdapterService(java.lang.String resourceFilter,
boolean propagate,
java.lang.Object callbackInstance,
java.lang.String callbackChanged)
Creates a new resource adapter.
|
Component |
createResourceAdapterService(java.lang.String resourceFilter,
boolean propagate,
java.lang.Object callbackInstance,
java.lang.String callbackSet,
java.lang.String callbackChanged) |
Component |
createResourceAdapterService(java.lang.String resourceFilter,
java.lang.Object propagateCallbackInstance,
java.lang.String propagateCallbackMethod,
java.lang.Object callbackInstance,
java.lang.String callbackChanged) |
Component |
createResourceAdapterService(java.lang.String resourceFilter,
java.lang.Object propagateCallbackInstance,
java.lang.String propagateCallbackMethod,
java.lang.Object callbackInstance,
java.lang.String callbackSet,
java.lang.String callbackChanged) |
ResourceDependency |
createResourceDependency()
Creates a new resource dependency.
|
ServiceDependency |
createServiceDependency()
Creates a new service dependency.
|
ServiceDependency |
createTemporalServiceDependency(long timeout)
Creates a new timed required service dependency.
|
BundleContext |
getBundleContext()
Returns the bundle context associated with this dependency manager.
|
java.util.List<Component> |
getComponents()
Returns a list of components.
|
static java.util.List<DependencyManager> |
getDependencyManagers()
Returns the list of currently created dependency managers.
|
void |
remove(Component c)
Removes a service from the dependency manager.
|
public static final java.lang.String PARALLEL
public static final java.lang.String ASPECT
public static final java.lang.String SERVICEREGISTRY_CACHE_INDICES
public static final java.lang.String METHOD_CACHE_SIZE
public DependencyManager(BundleContext context)
BundleContext
to be used by the dependency
manager to register services and communicate with the
framework.context
- the bundle contextpublic static java.util.List<DependencyManager> getDependencyManagers()
public BundleContext getBundleContext()
public void add(Component c)
c
- the service to addpublic void remove(Component c)
c
- the component to removepublic Component createComponent()
public ServiceDependency createServiceDependency()
public ConfigurationDependency createConfigurationDependency()
public BundleDependency createBundleDependency()
public ResourceDependency createResourceDependency()
public ServiceDependency createTemporalServiceDependency(long timeout)
public Component createAdapterService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter)
manager.createAdapterService(AdapteeService.class, "(foo=bar)") .setInterface(AdapterService.class, new Hashtable() {{ put("extra", "property"); }}) .setImplementation(AdapterImpl.class);
serviceInterface
- the service interface to apply the adapter toserviceFilter
- the filter condition to use with the service interfacepublic Component createAdapterService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, java.lang.String autoConfig)
manager.createAdapterService(AdapteeService.class, "(foo=bar)", "m_service") .setInterface(AdapterService.class, new Hashtable() {{ put("extra", "property"); }}) .setImplementation(AdapterImpl.class);
serviceInterface
- the service interface to apply the adapter toserviceFilter
- the filter condition to use with the service interfaceautoConfig
- the name of the member to inject the service intopublic Component createAdapterService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, java.lang.String add, java.lang.String change, java.lang.String remove)
manager.createAdapterService(AdapteeService.class, "(foo=bar)", "add", "change", "remove") .setInterface(AdapterService.class, new Hashtable() {{ put("extra", "property"); }}) .setImplementation(AdapterImpl.class);
serviceInterface
- the service interface to apply the adapter toserviceFilter
- the filter condition to use with the service interfaceadd
- name of the callback method to invoke on addchange
- name of the callback method to invoke on changeremove
- name of the callback method to invoke on removepublic Component createAdapterService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, java.lang.String add, java.lang.String change, java.lang.String remove, java.lang.String swap)
manager.createAdapterService(AdapteeService.class, "(foo=bar)", "add", "change", "remove", "swap") .setInterface(AdapterService.class, new Hashtable() {{ put("extra", "property"); }}) .setImplementation(AdapterImpl.class);
serviceInterface
- the service interface to apply the adapter toserviceFilter
- the filter condition to use with the service interfaceadd
- name of the callback method to invoke on addchange
- name of the callback method to invoke on changeremove
- name of the callback method to invoke on removeswap
- name of the callback method to invoke on swappublic Component createAdapterService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, java.lang.String autoConfig, java.lang.Object callbackInstance, java.lang.String add, java.lang.String change, java.lang.String remove, java.lang.String swap, boolean propagate)
manager.createAdapterService(AdapteeService.class, "(foo=bar)", "add", "change", "remove", "swap") .setInterface(AdapterService.class, new Hashtable() {{ put("extra", "property"); }}) .setImplementation(AdapterImpl.class);
serviceInterface
- the service interface to apply the adapter toserviceFilter
- the filter condition to use with the service interfaceautoConfig
- the name of the member to inject the service into, or null.callbackInstance
- the instance to invoke the callbacks on, or null if the callbacks have to be invoked on the adapter itselfadd
- name of the callback method to invoke on addchange
- name of the callback method to invoke on changeremove
- name of the callback method to invoke on removeswap
- name of the callback method to invoke on swappropagate
- true if the adaptee service properties should be propagated to the adapter service consumerspublic Component createFactoryConfigurationAdapterService(java.lang.String factoryPid, java.lang.String update, boolean propagate)
propagate
parameter, every public factory configuration properties
(which don't start with ".") will be propagated along with the adapter service properties.
It will also inherit all dependencies.
manager.createFactoryConfigurationAdapterService("MyFactoryPid", "update", true) // The interface to use when registering adapter .setInterface(AdapterService.class.getName(), new Hashtable() {{ put("foo", "bar"); }}) // the implementation of the adapter .setImplementation(AdapterServiceImpl.class);
factoryPid
- the pid matching the factory configurationupdate
- the adapter method name that will be notified when the factory configuration is created/updated.The following signatures are supported:
propagate
- true if public factory configuration should be propagated to the adapter service propertiespublic Component createFactoryConfigurationAdapterService(java.lang.String factoryPid, java.lang.String update, boolean propagate, java.lang.Object callbackInstance)
propagate
parameter, every public factory configuration properties
(which don't start with ".") will be propagated along with the adapter service properties.
It will also inherit all dependencies.factoryPid
- the pid matching the factory configurationupdate
- the adapter method name that will be notified when the factory configuration is created/updated.The following signatures are supported:
propagate
- true if public factory configuration should be propagated to the adapter service propertiescallbackInstance
- the object on which the updated callback will be invoked.public Component createAdapterFactoryConfigurationService(java.lang.String factoryPid, java.lang.String update, boolean propagate, java.lang.String heading, java.lang.String desc, java.lang.String localization, PropertyMetaData[] propertiesMetaData)
propagate
parameter, every public factory configuration properties
(which don't start with ".") will be propagated along with the adapter service properties.
It will also inherit all dependencies.
PropertyMetaData[] propertiesMetaData = new PropertyMetaData[] { manager.createPropertyMetaData() .setCardinality(Integer.MAX_VALUE) .setType(String.class) .setHeading("English words") .setDescription("Declare here some valid english words") .setDefaults(new String[] {"hello", "world"}) .setId("words") }; manager.add(createFactoryConfigurationAdapterService("FactoryPid", "updated", true, // propagate CM settings "EnglishDictionary", "English dictionary configuration properties", null, propertiesMetaData) .setImplementation(Adapter.class));
factoryPid
- the pid matching the factory configurationupdate
- the adapter method name that will be notified when the factory configuration is created/updated.The following signatures are supported:
propagate
- true if public factory configuration should be propagated to the adapter service propertiesheading
- The label used to display the tab name (or section) where the properties are displayed.
Example: "Printer Service"desc
- A human readable description of the factory PID this configuration is associated with.
Example: "Configuration for the PrinterService bundle"localization
- Points to the basename of the Properties file that can localize the Meta Type informations.
The default localization base name for the properties is OSGI-INF/l10n/bundle, but can
be overridden by the manifest Bundle-Localization header (see core specification, in section Localization
on page 68). You can specify a specific localization basename file using this parameter
(e.g. "person"
will match person_du_NL.properties in the root bundle directory).propertiesMetaData
- Array of MetaData regarding configuration propertiespublic Component createBundleAdapterService(int bundleStateMask, java.lang.String bundleFilter, boolean propagate)
manager.createBundleAdapterService(Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE, "(Bundle-SymbolicName=org.apache.felix.dependencymanager)", true) // The interface to use when registering adapter .setInterface(AdapterService.class.getName(), new Hashtable() {{ put("foo", "bar"); }}) // the implementation of the adapter .setImplementation(AdapterServiceImpl.class);
bundleStateMask
- the bundle state mask to applybundleFilter
- the filter to apply to the bundle manifestpropagate
- true
if properties from the bundle should be propagated to the servicepublic Component createBundleAdapterService(int bundleStateMask, java.lang.String bundleFilter, boolean propagate, java.lang.Object callbackInstance, java.lang.String add, java.lang.String change, java.lang.String remove)
bundleStateMask
- the bundle state mask to applybundleFilter
- the filter to apply to the bundle manifestpropagate
- true
if properties from the bundle should be propagated to the servicecallbackInstance
- the instance to invoke the callbacks on, or null if the callbacks have to be invoked on the adapter itselfadd
- name of the callback method to invoke on addchange
- name of the callback method to invoke on changeremove
- name of the callback method to invoke on removepublic Component createResourceAdapterService(java.lang.String resourceFilter, boolean propagate, java.lang.Object callbackInstance, java.lang.String callbackChanged)
manager.createResourceAdapterService("(&(path=/test)(repository=TestRepository))", true) // The interface to use when registering adapter .setInterface(AdapterService.class.getName(), new Hashtable() {{ put("foo", "bar"); }}) // the implementation of the adapter .setImplementation(AdapterServiceImpl.class);
resourceFilter
- the filter condition to use with the resourcepropagate
- true
if properties from the resource should be propagated to the servicecallbackInstance
- instance to invoke the callback oncallbackChanged
- the name of the callback methodpublic Component createResourceAdapterService(java.lang.String resourceFilter, boolean propagate, java.lang.Object callbackInstance, java.lang.String callbackSet, java.lang.String callbackChanged)
public Component createResourceAdapterService(java.lang.String resourceFilter, java.lang.Object propagateCallbackInstance, java.lang.String propagateCallbackMethod, java.lang.Object callbackInstance, java.lang.String callbackChanged)
public Component createResourceAdapterService(java.lang.String resourceFilter, java.lang.Object propagateCallbackInstance, java.lang.String propagateCallbackMethod, java.lang.Object callbackInstance, java.lang.String callbackSet, java.lang.String callbackChanged)
public java.util.List<Component> getComponents()
public Component createAspectService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, int ranking, java.lang.String autoConfig)
manager.createAspectService(ExistingService.class, "(foo=bar)", 10, "m_service") .setImplementation(ExistingServiceAspect.class) );
serviceInterface
- the service interface to apply the aspect toserviceFilter
- the filter condition to use with the service interfaceranking
- the level used to organize the aspect chain orderingautoConfig
- the aspect implementation field name where to inject original service.
If null, any field matching the original service will be injected.public Component createAspectService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, int ranking)
manager.createAspectService(ExistingService.class, "(foo=bar)", 10) .setImplementation(ExistingServiceAspect.class) );
serviceInterface
- the service interface to apply the aspect toserviceFilter
- the filter condition to use with the service interfaceranking
- the level used to organize the aspect chain orderingpublic Component createAspectService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, int ranking, java.lang.String add, java.lang.String change, java.lang.String remove)
manager.createAspectService(ExistingService.class, "(foo=bar)", 10, "add", "change", "remove") .setImplementation(ExistingServiceAspect.class) );
serviceInterface
- the service interface to apply the aspect toserviceFilter
- the filter condition to use with the service interfaceranking
- the level used to organize the aspect chain orderingadd
- name of the callback method to invoke on addchange
- name of the callback method to invoke on changeremove
- name of the callback method to invoke on removepublic Component createAspectService(java.lang.Class<?> serviceInterface, java.lang.String serviceFilter, int ranking, java.lang.String add, java.lang.String change, java.lang.String remove, java.lang.String swap)
manager.createAspectService(ExistingService.class, "(foo=bar)", 10, "add", "change", "remove") .setImplementation(ExistingServiceAspect.class) );
serviceInterface
- the service interface to apply the aspect toserviceFilter
- the filter condition to use with the service interfaceranking
- the level used to organize the aspect chain orderingadd
- name of the callback method to invoke on addchange
- name of the callback method to invoke on changeremove
- name of the callback method to invoke on removeswap
- name of the callback method to invoke on swappublic void clear()
public PropertyMetaData createPropertyMetaData()