org.apache.felix.ipojo.composite
Class CompositeFactory

java.lang.Object
  extended by org.apache.felix.ipojo.IPojoFactory
      extended by org.apache.felix.ipojo.ComponentFactory
          extended by org.apache.felix.ipojo.composite.CompositeFactory
All Implemented Interfaces:
org.apache.felix.ipojo.Factory, org.apache.felix.ipojo.util.TrackerCustomizer, org.osgi.service.cm.ManagedServiceFactory

public class CompositeFactory
extends org.apache.felix.ipojo.ComponentFactory
implements org.apache.felix.ipojo.util.TrackerCustomizer

The component factory manages component instance objects. This management consist in creating and managing component instance build with the component factory. This class could export Factory and ManagedServiceFactory services.

Author:
Felix Project Team

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.felix.ipojo.IPojoFactory
org.apache.felix.ipojo.IPojoFactory.RequiredHandler
 
Field Summary
protected  org.apache.felix.ipojo.util.Tracker m_tracker
          Tracker used to track required handler factories.
 
Fields inherited from class org.apache.felix.ipojo.IPojoFactory
m_componentDesc, m_componentInstances, m_componentMetadata, m_context, m_factoryName, m_instancesName, m_isPublic, m_listeners, m_logger, m_requiredHandlers, m_sr, m_state
 
Fields inherited from interface org.apache.felix.ipojo.Factory
INVALID, VALID
 
Constructor Summary
CompositeFactory(org.osgi.framework.BundleContext context, org.apache.felix.ipojo.metadata.Element metadata)
          Create a composite factory.
 
Method Summary
 void check(org.apache.felix.ipojo.metadata.Element metadata)
          Check if the metadata are well formed.
 org.apache.felix.ipojo.ComponentInstance createInstance(java.util.Dictionary configuration, org.apache.felix.ipojo.IPojoContext context, org.apache.felix.ipojo.HandlerManager[] handlers)
          Create an instance from the current factory.
 java.lang.String getClassName()
           
 java.lang.String getFactoryName()
           
 java.util.List getRequiredHandlerList()
          Compute required handlers.
 void reconfigure(java.util.Dictionary properties)
          Reconfigure an existing instance.
 void starting()
          Start all the instance managers.
 void stopping()
          Stop all the instance managers.
 
Methods inherited from class org.apache.felix.ipojo.ComponentFactory
addedService, addingService, defineClass, getComponentTypeDescription, getPojoMetadata, getResource, loadClass, modifiedService, removedService
 
Methods inherited from class org.apache.felix.ipojo.IPojoFactory
addFactoryStateListener, checkAcceptability, computeDescription, computeFactoryState, createComponentInstance, createComponentInstance, deleted, disposed, generateName, getBundleContext, getComponentDescription, getDescription, getHandler, getLogger, getMissingHandlers, getName, getRequiredHandlers, getState, isAcceptable, match, removeFactoryStateListener, start, stop, updated
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.felix.ipojo.util.TrackerCustomizer
addedService, addingService, modifiedService, removedService
 

Field Detail

m_tracker

protected org.apache.felix.ipojo.util.Tracker m_tracker
Tracker used to track required handler factories.

Constructor Detail

CompositeFactory

public CompositeFactory(org.osgi.framework.BundleContext context,
                        org.apache.felix.ipojo.metadata.Element metadata)
                 throws org.apache.felix.ipojo.ConfigurationException
Create a composite factory.

Parameters:
context - : bundle context
metadata - : metadata of the component to create
Throws:
org.apache.felix.ipojo.ConfigurationException - occurs when the element describing the factory is malformed.
Method Detail

check

public void check(org.apache.felix.ipojo.metadata.Element metadata)
           throws org.apache.felix.ipojo.ConfigurationException
Check if the metadata are well formed.

Overrides:
check in class org.apache.felix.ipojo.ComponentFactory
Parameters:
metadata - : metadata
Throws:
org.apache.felix.ipojo.ConfigurationException - occurs when the element describing the factory is malformed.
See Also:
ComponentFactory.check(org.apache.felix.ipojo.metadata.Element)

getClassName

public java.lang.String getClassName()
Specified by:
getClassName in interface org.apache.felix.ipojo.Factory
Overrides:
getClassName in class org.apache.felix.ipojo.ComponentFactory

getRequiredHandlerList

public java.util.List getRequiredHandlerList()
Compute required handlers.

Overrides:
getRequiredHandlerList in class org.apache.felix.ipojo.ComponentFactory
Returns:
the list of required handler.

stopping

public void stopping()
Stop all the instance managers.

Overrides:
stopping in class org.apache.felix.ipojo.ComponentFactory

starting

public void starting()
Start all the instance managers.

Overrides:
starting in class org.apache.felix.ipojo.ComponentFactory

createInstance

public org.apache.felix.ipojo.ComponentInstance createInstance(java.util.Dictionary configuration,
                                                               org.apache.felix.ipojo.IPojoContext context,
                                                               org.apache.felix.ipojo.HandlerManager[] handlers)
                                                        throws org.apache.felix.ipojo.ConfigurationException
Create an instance from the current factory.

Overrides:
createInstance in class org.apache.felix.ipojo.ComponentFactory
Parameters:
configuration - : instance configuration
context - : bundle context to inject in the instance manager
handlers - : array of handler object to attached on the instance
Returns:
the created instance
Throws:
org.apache.felix.ipojo.ConfigurationException - either the instance configuration or the instance starting has failed
See Also:
ComponentFactory.createInstance(java.util.Dictionary, org.apache.felix.ipojo.IPojoContext, org.apache.felix.ipojo.HandlerManager[])

reconfigure

public void reconfigure(java.util.Dictionary properties)
                 throws org.apache.felix.ipojo.UnacceptableConfiguration,
                        org.apache.felix.ipojo.MissingHandlerException
Reconfigure an existing instance.

Specified by:
reconfigure in interface org.apache.felix.ipojo.Factory
Overrides:
reconfigure in class org.apache.felix.ipojo.IPojoFactory
Parameters:
properties - : the new configuration to push.
Throws:
org.apache.felix.ipojo.UnacceptableConfiguration - : occurs if the new configuration is not consistent with the component type.
org.apache.felix.ipojo.MissingHandlerException - : occurs when an handler is unavailable when creating the instance.
See Also:
Factory.reconfigure(java.util.Dictionary)

getFactoryName

public java.lang.String getFactoryName()
Overrides:
getFactoryName in class org.apache.felix.ipojo.ComponentFactory