org.apache.avalon.fortress.impl.handler
Class ComponentFactory

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.excalibur.instrument.AbstractLogEnabledInstrumentable
          extended by org.apache.avalon.fortress.impl.handler.ComponentFactory
All Implemented Interfaces:
org.apache.avalon.framework.logger.LogEnabled, org.apache.excalibur.instrument.Instrumentable, org.d_haven.mpool.ObjectFactory

public final class ComponentFactory
extends org.apache.excalibur.instrument.AbstractLogEnabledInstrumentable
implements org.d_haven.mpool.ObjectFactory

Factory for Avalon components.

Version:
CVS $Revision: 1.31 $ $Date: 2004/04/13 13:17:54 $
Author:
Avalon Development Team

Nested Class Summary
protected  class ComponentFactory.ClassInfo
          This class collects all information about the components class: - the constructor to use - the parameters to pass into the constructor - Additional infos about implemented methods
 
Field Summary
private  ComponentFactory.ClassInfo m_classinfo
          The class info for creating the component
private  java.lang.Class m_componentClass
          The class which this ComponentFactory should create.
private  org.apache.avalon.framework.logger.Logger m_componentLogger
          The component's logger
private  org.apache.avalon.framework.configuration.Configuration m_configuration
          The configuration for this component.
private  org.apache.avalon.framework.context.Context m_context
          The Context for the component
private  org.apache.excalibur.instrument.CounterInstrument m_dispose
           
private  LifecycleExtensionManager m_extManager
          Lifecycle extensions manager
private  org.apache.avalon.excalibur.logger.LoggerManager m_loggerManager
          The LogKitManager for child ComponentSelectors
private  org.apache.excalibur.instrument.CounterInstrument m_newInstance
           
private  org.apache.avalon.framework.service.ServiceManager m_serviceManager
          The component manager for this component.
private  boolean m_useDynamicCreation
          Use the dynamic configuration
 
Fields inherited from interface org.apache.excalibur.instrument.Instrumentable
EMPTY_INSTRUMENT_ARRAY, EMPTY_INSTRUMENTABLE_ARRAY
 
Constructor Summary
ComponentFactory(java.lang.Class componentClass, org.apache.avalon.framework.configuration.Configuration configuration, org.apache.avalon.framework.service.ServiceManager serviceManager, org.apache.avalon.framework.context.Context context, org.apache.avalon.excalibur.logger.LoggerManager loggerManager, LifecycleExtensionManager extManager)
          Construct a new component factory for the specified component.
 
Method Summary
private  org.apache.avalon.framework.logger.Logger aquireLogger()
           
protected  void configureComponent(java.lang.Object component)
          Configure the component
protected  void contextualizeComponent(java.lang.Object component)
          Contextualize the component
protected  java.lang.Object createComponent()
          Create a new component
 void dispose(java.lang.Object component)
          Disposal of the supplied component instance.
protected  void enabledComponentLogging(java.lang.Object component)
          Enable logging for the component
 java.lang.Class getCreatedClass()
          Returns the component class.
 java.lang.Object newInstance()
          Returns a new instance of a component and optionally applies a logging channel, instrumentation, context, a component or service manager, configuration, parameters, lifecycle extensions, initialization, and execution phases based on the interfaces implemented by the component class.
protected  void serviceComponent(java.lang.Object component)
          Service the component
 
Methods inherited from class org.apache.excalibur.instrument.AbstractLogEnabledInstrumentable
addChildInstrumentable, addInstrument, getChildInstrumentables, getInstrumentableName, getInstruments, setInstrumentableName
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_newInstance

private final org.apache.excalibur.instrument.CounterInstrument m_newInstance

m_dispose

private final org.apache.excalibur.instrument.CounterInstrument m_dispose

m_componentClass

private final java.lang.Class m_componentClass
The class which this ComponentFactory should create.


m_context

private final org.apache.avalon.framework.context.Context m_context
The Context for the component


m_serviceManager

private final org.apache.avalon.framework.service.ServiceManager m_serviceManager
The component manager for this component.


m_configuration

private final org.apache.avalon.framework.configuration.Configuration m_configuration
The configuration for this component.


m_loggerManager

private final org.apache.avalon.excalibur.logger.LoggerManager m_loggerManager
The LogKitManager for child ComponentSelectors


m_extManager

private final LifecycleExtensionManager m_extManager
Lifecycle extensions manager


m_componentLogger

private final org.apache.avalon.framework.logger.Logger m_componentLogger
The component's logger


m_classinfo

private ComponentFactory.ClassInfo m_classinfo
The class info for creating the component


m_useDynamicCreation

private final boolean m_useDynamicCreation
Use the dynamic configuration

See Also:
Constant Field Values
Constructor Detail

ComponentFactory

public ComponentFactory(java.lang.Class componentClass,
                        org.apache.avalon.framework.configuration.Configuration configuration,
                        org.apache.avalon.framework.service.ServiceManager serviceManager,
                        org.apache.avalon.framework.context.Context context,
                        org.apache.avalon.excalibur.logger.LoggerManager loggerManager,
                        LifecycleExtensionManager extManager)
Construct a new component factory for the specified component.

Parameters:
componentClass - the class to instantiate (must have a default constructor).
configuration - the Configuration object to pass to new instances.
serviceManager - the service manager to pass to Serviceables.
context - the Context to pass to Contexutalizables.
loggerManager - the loggerManager manager instance.
Method Detail

newInstance

public java.lang.Object newInstance()
                             throws java.lang.Exception
Returns a new instance of a component and optionally applies a logging channel, instrumentation, context, a component or service manager, configuration, parameters, lifecycle extensions, initialization, and execution phases based on the interfaces implemented by the component class.

Specified by:
newInstance in interface org.d_haven.mpool.ObjectFactory
Returns:
the new instance
Throws:
java.lang.Exception

aquireLogger

private org.apache.avalon.framework.logger.Logger aquireLogger()

getCreatedClass

public final java.lang.Class getCreatedClass()
Returns the component class.

Specified by:
getCreatedClass in interface org.d_haven.mpool.ObjectFactory
Returns:
the class

dispose

public final void dispose(java.lang.Object component)
                   throws java.lang.Exception
Disposal of the supplied component instance.

Specified by:
dispose in interface org.d_haven.mpool.ObjectFactory
Parameters:
component - the component to dispose of
Throws:
java.lang.Exception - if a disposal error occurs

createComponent

protected java.lang.Object createComponent()
                                    throws java.lang.Exception
Create a new component

Throws:
java.lang.Exception

enabledComponentLogging

protected void enabledComponentLogging(java.lang.Object component)
                                throws java.lang.Exception
Enable logging for the component

Throws:
java.lang.Exception

contextualizeComponent

protected void contextualizeComponent(java.lang.Object component)
                               throws java.lang.Exception
Contextualize the component

Throws:
java.lang.Exception

serviceComponent

protected void serviceComponent(java.lang.Object component)
                         throws java.lang.Exception
Service the component

Throws:
java.lang.Exception

configureComponent

protected void configureComponent(java.lang.Object component)
                           throws java.lang.Exception
Configure the component

Throws:
java.lang.Exception