bloritsch 2003/02/15 09:43:33 Modified: component/src/java/org/apache/avalon/excalibur/component ComponentProxyGenerator.java ExcaliburComponentManager.java Log: put the code in the right place for the proxy generator Revision Changes Path 1.2 +32 -1 avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ComponentProxyGenerator.java Index: ComponentProxyGenerator.java =================================================================== RCS file: /home/cvs/avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ComponentProxyGenerator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ComponentProxyGenerator.java 9 Nov 2002 08:41:03 -0000 1.1 +++ ComponentProxyGenerator.java 15 Feb 2003 17:43:33 -0000 1.2 @@ -99,7 +99,8 @@ */ public Component getProxy( String role, Object service ) throws Exception { - Class serviceInterface = m_classLoader.loadClass( role ); + Lookup value = parseRole( role ); + Class serviceInterface = m_classLoader.loadClass( value.role ); return (Component)Proxy.newProxyInstance( m_classLoader, new Class[]{Component.class, serviceInterface}, @@ -138,5 +139,35 @@ throw ite.getTargetException(); } } + } + + private Lookup parseRole( String role ) + { + Lookup lookup = new Lookup(); + lookup.role = role; + lookup.hint = AbstractContainer.DEFAULT_ENTRY; + + if ( role.endsWith("Selector") ) + { + lookup.role = role.substring(0, role.length() - "Selector".length()); + lookup.hint = AbstractContainer.SELECTOR_ENTRY; + } + + int index = role.lastIndexOf("/"); + + // needs to be further than the first character + if ( index > 0 ) + { + lookup.role = role.substring(0, index); + lookup.hint = role.substring(index + 1); + } + + return lookup; + } + + private final static class Lookup + { + public String role; + public String hint; } } 1.24 +3 -204 avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ExcaliburComponentManager.java Index: ExcaliburComponentManager.java =================================================================== RCS file: /home/cvs/avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/ExcaliburComponentManager.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- ExcaliburComponentManager.java 15 Feb 2003 17:34:16 -0000 1.23 +++ ExcaliburComponentManager.java 15 Feb 2003 17:43:33 -0000 1.24 @@ -1,175 +1,4 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE.txt file. - */ -package org.apache.avalon.excalibur.component; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import org.apache.commons.collections.StaticBucketMap; -import org.apache.avalon.excalibur.logger.LogKitManageable; -import org.apache.avalon.excalibur.logger.LogKitManager; -import org.apache.avalon.excalibur.logger.LoggerManager; -import org.apache.avalon.framework.activity.Disposable; -import org.apache.avalon.framework.activity.Initializable; -import org.apache.avalon.framework.component.Component; -import org.apache.avalon.framework.component.ComponentException; -import org.apache.avalon.framework.component.ComponentManager; -import org.apache.avalon.framework.configuration.Configurable; -import org.apache.avalon.framework.configuration.Configuration; -import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.configuration.DefaultConfiguration; -import org.apache.avalon.framework.context.Context; -import org.apache.avalon.framework.context.Contextualizable; -import org.apache.excalibur.instrument.Instrument; -import org.apache.excalibur.instrument.InstrumentManageable; -import org.apache.excalibur.instrument.InstrumentManager; -import org.apache.excalibur.instrument.Instrumentable; - -/** - * Default component manager for Avalon's components. - * - * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @author <a href="mailto:[EMAIL PROTECTED]">Paul Russell</a> - * @author <a href="mailto:[EMAIL PROTECTED]">Ryan Shaw</a> - * @author <a href="mailto:[EMAIL PROTECTED]">Leif Mortenson</a> - * @version CVS $Revision$ $Date$ - * @since 4.0 - */ -public class ExcaliburComponentManager - extends AbstractDualLogEnabled - implements ComponentManager, - Configurable, - Contextualizable, - Initializable, - Disposable, - RoleManageable, - LogKitManageable, - InstrumentManageable, - Instrumentable -{ - /** Instrumentable name used to represent the component-manager. - * Handlers reference this name to register themselves at the correct - * location under the ECM. */ - public static final String INSTRUMENTABLE_NAME = "component-manager"; - - /** The parent ComponentLocator */ - private final ComponentManager m_parentManager; - - /** The classloader used for this system. */ - private final ClassLoader m_loader; - - /** The application context for components */ - private Context m_context; - - /** Static component mapping handlers. */ - private final StaticBucketMap m_componentMapping = new StaticBucketMap(); - - /** Used to map roles to ComponentHandlers. */ - private final StaticBucketMap m_componentHandlers = new StaticBucketMap(); - - /** added component handlers before initialization to maintain - * the order of initialization - */ - private final List m_newComponentHandlers = new ArrayList(); - - /** RoleInfos. */ - private RoleManager m_roles; - - /** LogKitManager. */ - private LogkitLoggerManager m_logkit; - - /** Is the Manager disposed or not? */ - private boolean m_disposed; - - /** Is the Manager initialized? */ - private boolean m_initialized; - - /** Instrument Manager being used by the Component Manager. */ - private InstrumentManager m_instrumentManager; - - /** Instrumentable Name assigned to this Instrumentable */ - private String m_instrumentableName = INSTRUMENTABLE_NAME; - - /*--------------------------------------------------------------- - * Constructors - *-------------------------------------------------------------*/ - /** Create a new ExcaliburComponentManager. */ - public ExcaliburComponentManager() - { - this( null, Thread.currentThread().getContextClassLoader() ); - } - - /** Create a new ExcaliburComponentManager with uses a specific Classloader. */ - public ExcaliburComponentManager( final ClassLoader loader ) - { - this( null, loader ); - } - - /** Create the ComponentLocator with a Classloader and parent ComponentLocator */ - public ExcaliburComponentManager( final ComponentManager manager, final ClassLoader loader ) - { - if( null == loader ) - { - m_loader = Thread.currentThread().getContextClassLoader(); - } - else - { - m_loader = loader; - } - - m_parentManager = manager; - } - - /** Create the ComponentLocator with a parent ComponentLocator */ - public ExcaliburComponentManager( final ComponentManager manager ) - { - this( manager, Thread.currentThread().getContextClassLoader() ); - } - - /*--------------------------------------------------------------- - * ComponentManager Methods - *-------------------------------------------------------------*/ - /** - * Return an instance of a component based on a Role. The Role is usually the Interface's - * Fully Qualified Name(FQN)--unless there are multiple Components for the same Role. In that - * case, the Role's FQN is appended with "Selector", and we return a ComponentSelector. - */ - public Component lookup( final String role ) - throws ComponentException - { - if( !m_initialized ) - { - if( getLogger().isWarnEnabled() ) - { - getLogger().warn( - "Looking up component on an uninitialized ComponentLocator [" + role + "]" ); - } - } - - if( m_disposed ) - { - throw new IllegalStateException( - "You cannot lookup components on a disposed ComponentLocator" ); - } - - if( null == role ) - { - final String message = - "ComponentLocator Attempted to retrieve component with null role."; - - if( getLogger().isErrorEnabled() ) - { - getLogger().error( message ); - } - throw new ComponentException( role, message ); - } - - ComponentHandler handler = (ComponentHandler)m_componentHandlers.get( role ); +g`" ComponentHandler handler = (ComponentHandler)m_componentHandlers.get( role ); // Retrieve the instance of the requested component if( null == handler ) @@ -296,7 +125,7 @@ // In the case of a ThreadSafeComponentHandler, the same component will be mapped // multiple times but because each put will overwrite the last, this is not a // problem. Checking to see if the put has already been done would be slower. - m_componentMapping.put( component, handler ); + m_componentMapping.put( component.toString(), handler ); return component; } @@ -338,7 +167,7 @@ // synchronization around the access to the map. final ComponentHandler handler = - (ComponentHandler)m_componentMapping.get( component ); + (ComponentHandler)m_componentMapping.get( component.toString() ); if( null != handler ) { @@ -870,35 +699,5 @@ getLogger().warn( "Could not set up Component for role [" + role + "]", e ); } } - } - - private Lookup parseRole( String role ) - { - Lookup lookup = new Lookup(); - lookup.role = role; - lookup.hint = AbstractContainer.DEFAULT_ENTRY; - - if ( role.endsWith("Selector") ) - { - lookup.role = role.substring(0, role.length() - "Selector".length()); - lookup.hint = AbstractContainer.SELECTOR_ENTRY; - } - - int index = role.lastIndexOf("/"); - - // needs to be further than the first character - if ( index > 0 ) - { - lookup.role = role.substring(0, index); - lookup.hint = role.substring(index + 1); - } - - return lookup; - } - - private final static class Lookup - { - public String role; - public String hint; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]