org.apache.felix.dm.impl
Class FilterService

java.lang.Object
  extended by org.apache.felix.dm.impl.FilterService
All Implemented Interfaces:
Component
Direct Known Subclasses:
AdapterServiceImpl, AspectServiceImpl, BundleAdapterServiceImpl, FactoryConfigurationAdapterServiceImpl, ResourceAdapterServiceImpl

public class FilterService
extends Object
implements Component

This class allows to filter a Service interface. All Aspect/Adapters extends this class in order to add functionality to the default Service implementation.


Field Summary
protected  Object m_callbackObject
           
protected  Object m_compositionInstance
           
protected  String m_compositionMethod
           
protected  String m_destroy
           
protected  Object m_factory
           
protected  String m_factoryCreateMethod
           
protected  String m_init
           
protected  ComponentImpl m_service
           
protected  Object m_serviceImpl
           
protected  String[] m_serviceInterfaces
           
protected  Dictionary m_serviceProperties
           
protected  String m_start
           
protected  List m_stateListeners
           
protected  String m_stop
           
 
Constructor Summary
FilterService(Component service)
           
 
Method Summary
 Component add(Dependency dependency)
          Adds a new dependency to this component.
 Component add(List dependencies)
           
 void addStateListener(ComponentStateListener listener)
          Adds a component state listener to this component.
 boolean getAutoConfig(Class clazz)
          Returns the status of auto configuration of the specified class.
 String getAutoConfigInstance(Class clazz)
          Returns the instance variable name of auto configuration of the specified class.
 Object[] getCompositionInstances()
          Returns the composition instances that make up this component, or just the component instance if it does not have a composition, or an empty array if the component has not even been instantiated.
 List getDependencies()
          Returns a list of dependencies.
 DependencyManager getDependencyManager()
          Returns the dependency manager associated with this component.
 Object getService()
          Returns the component instance for this component.
 Dictionary getServiceProperties()
          Returns the service properties associated with the component.
 ServiceRegistration getServiceRegistration()
          Returns the service registration for this component.
 void invokeCallbackMethod(Object[] instances, String methodName, Class[][] signatures, Object[][] parameters)
           
 Component remove(Dependency dependency)
          Removes a dependency from this component.
 void removeStateListener(ComponentStateListener listener)
          Removes a component state listener from this component.
 Component setAutoConfig(Class clazz, boolean autoConfig)
          Configures auto configuration of injected classes in the component instance.
 Component setAutoConfig(Class clazz, String instanceName)
          Configures auto configuration of injected classes in the component instance.
 Component setCallbacks(Object instance, String init, String start, String stop, String destroy)
          Sets the names of the methods used as callbacks.
 Component setCallbacks(String init, String start, String stop, String destroy)
          Sets the names of the methods used as callbacks.
 Component setComposition(Object instance, String getMethod)
          Sets the instance and method to invoke to get back all instances that are part of a composition and need dependencies injected.
 Component setComposition(String getMethod)
          Sets the method to invoke on the service implementation to get back all instances that are part of a composition and need dependencies injected.
 Component setFactory(Object factory, String createMethod)
          Sets the factory to use to create the implementation.
 Component setFactory(String createMethod)
          Sets the factory to use to create the implementation.
 Component setImplementation(Object implementation)
          Sets the implementation for this component.
 Component setInterface(String[] serviceInterfaces, Dictionary properties)
          Sets the public interfaces under which this component should be registered in the OSGi service registry.
 Component setInterface(String serviceName, Dictionary properties)
          Sets the public interface under which this component should be registered in the OSGi service registry.
 Component setServiceProperties(Dictionary serviceProperties)
          Sets the service properties associated with the component.
 void start()
          Starts the component.
 void stop()
          Stops the component.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_service

protected ComponentImpl m_service

m_stateListeners

protected List m_stateListeners

m_init

protected String m_init

m_start

protected String m_start

m_stop

protected String m_stop

m_destroy

protected String m_destroy

m_callbackObject

protected Object m_callbackObject

m_compositionInstance

protected Object m_compositionInstance

m_compositionMethod

protected String m_compositionMethod

m_serviceInterfaces

protected String[] m_serviceInterfaces

m_serviceImpl

protected Object m_serviceImpl

m_factory

protected Object m_factory

m_factoryCreateMethod

protected String m_factoryCreateMethod

m_serviceProperties

protected Dictionary m_serviceProperties
Constructor Detail

FilterService

public FilterService(Component service)
Method Detail

add

public Component add(Dependency dependency)
Description copied from interface: Component
Adds a new dependency to this component.

Specified by:
add in interface Component
Parameters:
dependency - the dependency to add
Returns:
this component

add

public Component add(List dependencies)
Specified by:
add in interface Component

addStateListener

public void addStateListener(ComponentStateListener listener)
Description copied from interface: Component
Adds a component state listener to this component.

Specified by:
addStateListener in interface Component
Parameters:
listener - the state listener

getDependencies

public List getDependencies()
Description copied from interface: Component
Returns a list of dependencies.

Specified by:
getDependencies in interface Component
Returns:
a list of dependencies

getService

public Object getService()
Description copied from interface: Component
Returns the component instance for this component. The method will return null if no component instance is available.

Specified by:
getService in interface Component
Returns:
the component instance

getServiceProperties

public Dictionary getServiceProperties()
Description copied from interface: Component
Returns the service properties associated with the component.

Specified by:
getServiceProperties in interface Component
Returns:
the properties or null if there are none

getServiceRegistration

public ServiceRegistration getServiceRegistration()
Description copied from interface: Component
Returns the service registration for this component. The method will return null if no service registration is available, for example if this component is not registered as a service at all.

Specified by:
getServiceRegistration in interface Component
Returns:
the service registration

remove

public Component remove(Dependency dependency)
Description copied from interface: Component
Removes a dependency from this component.

Specified by:
remove in interface Component
Parameters:
dependency - the dependency to remove
Returns:
this component

removeStateListener

public void removeStateListener(ComponentStateListener listener)
Description copied from interface: Component
Removes a component state listener from this component.

Specified by:
removeStateListener in interface Component
Parameters:
listener - the state listener

setCallbacks

public Component setCallbacks(Object instance,
                              String init,
                              String start,
                              String stop,
                              String destroy)
Description copied from interface: Component
Sets the names of the methods used as callbacks. These methods, when found, are invoked on the specified instance as part of the life cycle management of the component implementation.

See setCallbacks(String init, String start, String stop, String destroy) for more information on the signatures. Specifying an instance means you can create a manager that will be invoked whenever the life cycle of a component changes and this manager can then decide how to expose this life cycle to the actual component, offering an important indirection when developing your own component models.

Specified by:
setCallbacks in interface Component

setCallbacks

public Component setCallbacks(String init,
                              String start,
                              String stop,
                              String destroy)
Description copied from interface: Component
Sets the names of the methods used as callbacks. These methods, when found, are invoked as part of the life cycle management of the component implementation. The dependency manager will look for a method of this name with the following signatures, in this order:
  1. method(Component component)
  2. method()

Specified by:
setCallbacks in interface Component
Parameters:
init - the name of the init method
start - the name of the start method
stop - the name of the stop method
destroy - the name of the destroy method
Returns:
the component

setComposition

public Component setComposition(Object instance,
                                String getMethod)
Description copied from interface: Component
Sets the instance and method to invoke to get back all instances that are part of a composition and need dependencies injected. All of them will be searched for any of the dependencies. The method that is invoked must return an Object[].

Specified by:
setComposition in interface Component
Parameters:
instance - the instance that has the method
getMethod - the method to invoke

setComposition

public Component setComposition(String getMethod)
Description copied from interface: Component
Sets the method to invoke on the service implementation to get back all instances that are part of a composition and need dependencies injected. All of them will be searched for any of the dependencies. The method that is invoked must return an Object[].

Specified by:
setComposition in interface Component
Parameters:
getMethod - the method to invoke

setFactory

public Component setFactory(Object factory,
                            String createMethod)
Description copied from interface: Component
Sets the factory to use to create the implementation. You can specify both the factory class and method to invoke. The method should return the implementation, and can use any method to create it. Actually, this can be used together with setComposition to create a composition of instances that work together to implement a component. The factory itself can also be instantiated lazily by not specifying an instance, but a Class.

Specified by:
setFactory in interface Component
Parameters:
factory - the factory instance or class
createMethod - the name of the create method

setFactory

public Component setFactory(String createMethod)
Description copied from interface: Component
Sets the factory to use to create the implementation. You specify the method to invoke. The method should return the implementation, and can use any method to create it. Actually, this can be used together with setComposition to create a composition of instances that work together to implement a component.

Note that currently, there is no default for the factory, so please use setFactory(factory, createMethod) instead.

Specified by:
setFactory in interface Component
Parameters:
createMethod - the name of the create method

setImplementation

public Component setImplementation(Object implementation)
Description copied from interface: Component
Sets the implementation for this component. You can actually specify an instance you have instantiated manually, or a Class that will be instantiated using its default constructor when the required dependencies are resolved, effectively giving you a lazy instantiation mechanism. There are four special methods that are called when found through reflection to give you life cycle management options:
  1. init() is invoked after the instance has been created and dependencies have been resolved, and can be used to initialize the internal state of the instance or even to add more dependencies based on runtime state
  2. start() is invoked right before the service is registered
  3. stop() is invoked right after the service is unregistered
  4. destroy() is invoked after all dependencies are removed
In short, this allows you to initialize your instance before it is registered, perform some post-initialization and pre-destruction code as well as final cleanup. If a method is not defined, it simply is not called, so you can decide which one(s) you need. If you need even more fine-grained control, you can register as a service state listener too.

Specified by:
setImplementation in interface Component
Parameters:
implementation - the implementation
Returns:
this component
See Also:
ComponentStateListener

setInterface

public Component setInterface(String serviceName,
                              Dictionary properties)
Description copied from interface: Component
Sets the public interface under which this component should be registered in the OSGi service registry.

Specified by:
setInterface in interface Component
Parameters:
serviceName - the name of the service interface
properties - the properties for this service
Returns:
this component

setInterface

public Component setInterface(String[] serviceInterfaces,
                              Dictionary properties)
Description copied from interface: Component
Sets the public interfaces under which this component should be registered in the OSGi service registry.

Specified by:
setInterface in interface Component
Parameters:
serviceInterfaces - the names of the service interface
properties - the properties for these services
Returns:
this component

setServiceProperties

public Component setServiceProperties(Dictionary serviceProperties)
Description copied from interface: Component
Sets the service properties associated with the component. If the service was already registered, it will be updated.

Specified by:
setServiceProperties in interface Component
Parameters:
serviceProperties - the properties

start

public void start()
Description copied from interface: Component
Starts the component. This activates the dependency tracking mechanism for this component.

Specified by:
start in interface Component

stop

public void stop()
Description copied from interface: Component
Stops the component. This deactivates the dependency tracking mechanism for this component.

Specified by:
stop in interface Component

invokeCallbackMethod

public void invokeCallbackMethod(Object[] instances,
                                 String methodName,
                                 Class[][] signatures,
                                 Object[][] parameters)
Specified by:
invokeCallbackMethod in interface Component

getCompositionInstances

public Object[] getCompositionInstances()
Description copied from interface: Component
Returns the composition instances that make up this component, or just the component instance if it does not have a composition, or an empty array if the component has not even been instantiated.

Specified by:
getCompositionInstances in interface Component

getDependencyManager

public DependencyManager getDependencyManager()
Description copied from interface: Component
Returns the dependency manager associated with this component.

Specified by:
getDependencyManager in interface Component

setAutoConfig

public Component setAutoConfig(Class clazz,
                               boolean autoConfig)
Description copied from interface: Component
Configures auto configuration of injected classes in the component instance. The following injections are currently performed, unless you explicitly turn them off:
BundleContext
the bundle context of the bundle
ServiceRegistration
the service registration used to register your service
DependencyManager
the dependency manager instance
Component
the component instance of the dependency manager

Specified by:
setAutoConfig in interface Component
Parameters:
clazz - the class (from the list above)
autoConfig - false to turn off auto configuration

setAutoConfig

public Component setAutoConfig(Class clazz,
                               String instanceName)
Description copied from interface: Component
Configures auto configuration of injected classes in the component instance.

Specified by:
setAutoConfig in interface Component
Parameters:
clazz - the class (from the list above)
instanceName - the name of the instance to inject the class into
See Also:
Component.setAutoConfig(Class, boolean)

getAutoConfig

public boolean getAutoConfig(Class clazz)
Description copied from interface: Component
Returns the status of auto configuration of the specified class.

Specified by:
getAutoConfig in interface Component

getAutoConfigInstance

public String getAutoConfigInstance(Class clazz)
Description copied from interface: Component
Returns the instance variable name of auto configuration of the specified class.

Specified by:
getAutoConfigInstance in interface Component


Copyright © 2013 The Apache Software Foundation. All Rights Reserved.