Return-Path: Delivered-To: apmail-jakarta-avalon-cvs-archive@apache.org Received: (qmail 18754 invoked from network); 24 Sep 2002 20:40:13 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 24 Sep 2002 20:40:13 -0000 Received: (qmail 12290 invoked by uid 97); 24 Sep 2002 20:40:52 -0000 Delivered-To: qmlist-jakarta-archive-avalon-cvs@jakarta.apache.org Received: (qmail 12043 invoked by uid 97); 24 Sep 2002 20:40:51 -0000 Mailing-List: contact avalon-cvs-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Avalon CVS List" Reply-To: "Avalon Developers List" Delivered-To: mailing list avalon-cvs@jakarta.apache.org Received: (qmail 11857 invoked by uid 97); 24 Sep 2002 20:40:48 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Date: 24 Sep 2002 20:39:53 -0000 Message-ID: <20020924203953.52900.qmail@icarus.apache.org> From: bloritsch@apache.org To: jakarta-avalon-excalibur-cvs@apache.org Subject: cvs commit: jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component ComponentHandler.java DefaultComponentFactory.java DefaultComponentHandler.java ExcaliburComponentManager.java ExcaliburComponentSelector.java PoolableComponentHandler.java ThreadSafeComponentHandler.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N bloritsch 2002/09/24 13:39:53 Modified: component build.xml default.properties component/src/java/org/apache/avalon/excalibur/component ComponentHandler.java DefaultComponentFactory.java DefaultComponentHandler.java ExcaliburComponentManager.java ExcaliburComponentSelector.java PoolableComponentHandler.java ThreadSafeComponentHandler.java Log: update component to use proxies Revision Changes Path 1.26 +2 -0 jakarta-avalon-excalibur/component/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/build.xml,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- build.xml 21 Aug 2002 06:03:15 -0000 1.25 +++ build.xml 24 Sep 2002 20:39:52 -0000 1.26 @@ -16,6 +16,7 @@ + @@ -75,6 +76,7 @@ + 1.14 +5 -0 jakarta-avalon-excalibur/component/default.properties Index: default.properties =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/default.properties,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- default.properties 6 Sep 2002 06:48:22 -0000 1.13 +++ default.properties 24 Sep 2002 20:39:52 -0000 1.14 @@ -38,6 +38,11 @@ excalibur-collections.lib=${excalibur-collections.home} excalibur-collections.jar=${excalibur-collections.lib}/excalibur-collections-1.0.jar +# ----- Excalibur Container ----- +excalibur-container.home=${basedir}/../container +excalibur-container.lib=${excalibur-container.home}/build/lib +excalibur-container.jar=${excalibur-container.lib}/excalibur-container-1.0.jar + # ----- Excalibur logger, version 1.0 or later ----- excalibur-logger.home=${basedir}/../logger/dist excalibur-logger.lib=${excalibur-logger.home} 1.7 +11 -7 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ComponentHandler.java Index: ComponentHandler.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ComponentHandler.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ComponentHandler.java 20 Aug 2002 10:32:10 -0000 1.6 +++ ComponentHandler.java 24 Sep 2002 20:39:53 -0000 1.7 @@ -55,6 +55,7 @@ /** * Looks up and returns a component handler for a given component class. * + * @param role The role name of the component. * @param componentClass Class of the component for which the handle is * being requested. * @param configuration The configuration for this component. @@ -63,15 +64,14 @@ * @param context The current context object. * @param roleManager The current RoleManager. * @param loggerManager The current LogKitLoggerManager. - * @param instrumentManager The current InstrumentManager. - * @param instrumentableName The name of the handler. * * @throws Exception If there were any problems obtaining a ComponentHandler * * @deprecated This method has been deprecated in favor of the version below which * handles instrumentation. */ - public static ComponentHandler getComponentHandler( final Class componentClass, + public static ComponentHandler getComponentHandler( final String role, + final Class componentClass, final Configuration configuration, final ComponentManager componentManager, final Context context, @@ -79,7 +79,8 @@ final LogkitLoggerManager loggerManager ) throws Exception { - return ComponentHandler.getComponentHandler( componentClass, + return ComponentHandler.getComponentHandler( role, + componentClass, configuration, componentManager, context, @@ -92,6 +93,7 @@ /** * Looks up and returns a component handler for a given component class. * + * @param role The role name of the component. * @param componentClass Class of the component for which the handle is * being requested. * @param configuration The configuration for this component. @@ -106,7 +108,8 @@ * * @throws Exception If there were any problems obtaining a ComponentHandler */ - public static ComponentHandler getComponentHandler( final Class componentClass, + public static ComponentHandler getComponentHandler( final String role, + final Class componentClass, final Configuration configuration, final ComponentManager componentManager, final Context context, @@ -142,7 +145,8 @@ // Create the factory to use to create the instances of the Component. DefaultComponentFactory factory = - new DefaultComponentFactory( componentClass, + new DefaultComponentFactory( role, + componentClass, configuration, componentManager, context, 1.9 +46 -13 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/DefaultComponentFactory.java Index: DefaultComponentFactory.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/DefaultComponentFactory.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DefaultComponentFactory.java 18 Aug 2002 14:40:22 -0000 1.8 +++ DefaultComponentFactory.java 24 Sep 2002 20:39:53 -0000 1.9 @@ -37,6 +37,7 @@ import org.apache.excalibur.instrument.Instrumentable; import org.apache.excalibur.instrument.InstrumentManageable; import org.apache.excalibur.instrument.InstrumentManager; +import org.apache.excalibur.container.legacy.ComponentProxyGenerator; /** * Factory for Avalon components. @@ -88,6 +89,9 @@ /** Instrumentable Name assigned to objects created by this factory. */ private String m_instrumentableName; + private ComponentProxyGenerator m_proxyGenerator; + private String m_role; + /*--------------------------------------------------------------- * Constructors *-------------------------------------------------------------*/ @@ -103,14 +107,16 @@ * @deprecated This constructor has been deprecated in favor of the version below which * handles instrumentation. */ - public DefaultComponentFactory( final Class componentClass, + public DefaultComponentFactory( final String role, + final Class componentClass, final Configuration configuration, final ComponentManager componentManager, final Context context, final RoleManager roles, final LogkitLoggerManager loggerManager ) { - this( componentClass, + this( role, + componentClass, configuration, componentManager, context, @@ -134,7 +140,8 @@ * @param instrumentableName The instrument name to assign the component if * it is Instrumentable. */ - public DefaultComponentFactory( final Class componentClass, + public DefaultComponentFactory( final String role, + final Class componentClass, final Configuration configuration, final ComponentManager componentManager, final Context context, @@ -144,6 +151,7 @@ final String instrumentableName ) { + m_role = role; m_componentClass = componentClass; m_configuration = configuration; m_componentManager = componentManager; @@ -152,6 +160,7 @@ m_loggerManager = loggerManager; m_instrumentManager = instrumentManager; m_instrumentableName = instrumentableName; + m_proxyGenerator = new ComponentProxyGenerator( m_componentClass.getClassLoader() ); } /*--------------------------------------------------------------- @@ -293,7 +302,19 @@ m_components.put( component, proxy ); - return component; + Component returnableComponent; + + if ( ! ( component instanceof Component ) ) + { + returnableComponent = m_proxyGenerator.getProxy( m_role , component ); + m_components.put( returnableComponent, component ); + } + else + { + returnableComponent = (Component) component; + } + + return returnableComponent; } public final Class getCreatedClass() @@ -304,35 +325,47 @@ public final void decommission( final Object component ) throws Exception { + Object check = m_components.get( component ); + Object decommission; + if ( check instanceof ServiceManager || check instanceof ComponentManager || null == check ) + { + decommission = component; + } + else + { + decommission = check; + m_components.remove( component ); + } + if( getLogger().isDebugEnabled() ) { getLogger().debug( "ComponentFactory decommissioning instance of " + m_componentClass.getName() + "." ); } - if( component instanceof Startable ) + if( decommission instanceof Startable ) { - ( (Startable)component ).stop(); + ( (Startable)decommission ).stop(); } if( component instanceof Disposable ) { - ( (Disposable)component ).dispose(); + ( (Disposable)decommission ).dispose(); } - if( component instanceof Composable ) + if( decommission instanceof Composable ) { // ensure any components looked up by this Composable are properly // released, if they haven't been released already - ( (ComponentManagerProxy)m_components.get( component ) ).releaseAll(); + ( (ComponentManagerProxy)m_components.get( decommission ) ).releaseAll(); } - if( component instanceof Serviceable ) + if( decommission instanceof Serviceable ) { - ( (ServiceManagerProxy)m_components.get( component ) ).releaseAll(); + ( (ServiceManagerProxy)m_components.get( decommission ) ).releaseAll(); } - m_components.remove( component ); + m_components.remove( decommission ); } /*--------------------------------------------------------------- 1.4 +4 -3 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/DefaultComponentHandler.java Index: DefaultComponentHandler.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/DefaultComponentHandler.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DefaultComponentHandler.java 21 Aug 2002 05:04:36 -0000 1.3 +++ DefaultComponentHandler.java 24 Sep 2002 20:39:53 -0000 1.4 @@ -51,7 +51,8 @@ * * @throws Exception If there are any problems creating the handler. */ - protected DefaultComponentHandler( final Class componentClass, + protected DefaultComponentHandler( final String role, + final Class componentClass, final Configuration config, final ComponentManager manager, final Context context, @@ -60,7 +61,7 @@ throws Exception { this( - new DefaultComponentFactory( componentClass, config, manager, context, roles, logkit ), + new DefaultComponentFactory(role, componentClass, config, manager, context, roles, logkit ), config ); } 1.17 +9 -5 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ExcaliburComponentManager.java Index: ExcaliburComponentManager.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ExcaliburComponentManager.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- ExcaliburComponentManager.java 23 Aug 2002 02:45:50 -0000 1.16 +++ ExcaliburComponentManager.java 24 Sep 2002 20:39:53 -0000 1.17 @@ -215,7 +215,8 @@ final Configuration configuration = new DefaultConfiguration( "", "-" ); - handler = getComponentHandler( componentClass, + handler = getComponentHandler( role, + componentClass, configuration, m_context, m_roles, @@ -765,7 +766,8 @@ * * @throws Exception If there were any problems obtaining a ComponentHandler */ - protected ComponentHandler getComponentHandler( final Class componentClass, + protected ComponentHandler getComponentHandler( final String role, + final Class componentClass, final Configuration configuration, final Context context, final RoleManager roleManager, @@ -778,7 +780,8 @@ String instrumentableName = configuration.getAttribute( "instrumentable", configuration.getName() ); - return ComponentHandler.getComponentHandler( componentClass, + return ComponentHandler.getComponentHandler( role, + componentClass, configuration, this, context, @@ -813,7 +816,8 @@ getLogger().debug( "Attempting to get Handler for role [" + role + "]" ); } - final ComponentHandler handler = getComponentHandler( component, + final ComponentHandler handler = getComponentHandler( role, + component, configuration, m_context, m_roles, 1.15 +7 -4 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ExcaliburComponentSelector.java Index: ExcaliburComponentSelector.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ExcaliburComponentSelector.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- ExcaliburComponentSelector.java 22 Aug 2002 22:56:10 -0000 1.14 +++ ExcaliburComponentSelector.java 24 Sep 2002 20:39:53 -0000 1.15 @@ -625,7 +625,8 @@ * * @throws Exception If there were any problems obtaining a ComponentHandler */ - protected ComponentHandler getComponentHandler( final Class componentClass, + protected ComponentHandler getComponentHandler( final String role, + final Class componentClass, final Configuration configuration, final ComponentManager componentManager, final Context context, @@ -640,7 +641,8 @@ + configuration.getAttribute( "instrumentable", configuration.getAttribute( "name", configuration.getName() ) ); - return ComponentHandler.getComponentHandler( componentClass, + return ComponentHandler.getComponentHandler( role, + componentClass, configuration, componentManager, context, @@ -678,7 +680,8 @@ try { - final ComponentHandler handler = getComponentHandler( component, + final ComponentHandler handler = getComponentHandler( m_rolename, + component, configuration, m_componentManager, m_context, 1.6 +4 -3 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/PoolableComponentHandler.java Index: PoolableComponentHandler.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/PoolableComponentHandler.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- PoolableComponentHandler.java 6 Aug 2002 16:28:38 -0000 1.5 +++ PoolableComponentHandler.java 24 Sep 2002 20:39:53 -0000 1.6 @@ -105,7 +105,8 @@ * whether a Component is ThreadSafe, Poolable, or SingleThreaded. * It falls back to SingleThreaded if not specified. */ - protected PoolableComponentHandler( final Class componentClass, + protected PoolableComponentHandler( final String role, + final Class componentClass, final Configuration config, final ComponentManager manager, final Context context, @@ -114,7 +115,7 @@ throws Exception { this( - new DefaultComponentFactory( componentClass, config, manager, context, roles, logkit ), + new DefaultComponentFactory( role, componentClass, config, manager, context, roles, logkit ), config ); } 1.5 +4 -3 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ThreadSafeComponentHandler.java Index: ThreadSafeComponentHandler.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ThreadSafeComponentHandler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ThreadSafeComponentHandler.java 6 Aug 2002 16:28:38 -0000 1.4 +++ ThreadSafeComponentHandler.java 24 Sep 2002 20:39:53 -0000 1.5 @@ -37,7 +37,8 @@ * whether a Component is ThreadSafe, Poolable, or SingleThreaded. * It falls back to SingleThreaded if not specified. */ - protected ThreadSafeComponentHandler( final Class componentClass, + protected ThreadSafeComponentHandler( final String role, + final Class componentClass, final Configuration config, final ComponentManager manager, final Context context, @@ -46,7 +47,7 @@ throws Exception { this( - new DefaultComponentFactory( componentClass, config, manager, context, roles, logkit ), + new DefaultComponentFactory( role, componentClass, config, manager, context, roles, logkit ), config ); } -- To unsubscribe, e-mail: For additional commands, e-mail: