You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by bl...@apache.org on 2002/02/19 21:48:05 UTC
cvs commit: jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test ConfigurableRoleManagerTestCase.java ExcaliburRoleManagerTestCase.java
bloritsch 02/02/19 12:48:04
Modified: src/java/org/apache/avalon/excalibur/datasource
AbstractJdbcConnection.java
src/scratchpad/org/apache/avalon/excalibur/system
AbstractContainer.java ContainerManager.java
src/scratchpad/org/apache/avalon/excalibur/system/handler
ComponentFactory.java FactoryComponentHandler.java
PerThreadComponentHandler.java
PoolableComponentHandler.java
ThreadSafeComponentHandler.java
Added: src/scratchpad/org/apache/avalon/excalibur/system/util
AbstractRoleManager.java
ConfigurableRoleManager.java ContextManager.java
ExcaliburRoleManager.java RoleManager.java
src/scratchpad/org/apache/avalon/excalibur/system/util/test
ConfigurableRoleManagerTestCase.java
ExcaliburRoleManagerTestCase.java
Removed: src/scratchpad/org/apache/avalon/excalibur/system
AbstractRoleManager.java
ConfigurableRoleManager.java
ExcaliburRoleManager.java RoleManager.java
src/scratchpad/org/apache/avalon/excalibur/system/test
ConfigurableRoleManagerTestCase.java
ExcaliburRoleManagerTestCase.java
Log:
fix compilation error, move RoleManager and beginnings of ContextManager to system.util
Revision Changes Path
1.13 +2 -1 jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/datasource/AbstractJdbcConnection.java
Index: AbstractJdbcConnection.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/datasource/AbstractJdbcConnection.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- AbstractJdbcConnection.java 19 Feb 2002 20:27:36 -0000 1.12
+++ AbstractJdbcConnection.java 19 Feb 2002 20:48:03 -0000 1.13
@@ -13,6 +13,7 @@
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
+import java.sql.ResultSet;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.activity.Disposable;
@@ -29,7 +30,7 @@
* total number of Connection objects that are created.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.12 $ $Date: 2002/02/19 20:27:36 $
+ * @version CVS $Revision: 1.13 $ $Date: 2002/02/19 20:48:03 $
* @since 4.1
*/
public abstract class AbstractJdbcConnection
1.22 +2 -1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/AbstractContainer.java
Index: AbstractContainer.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/AbstractContainer.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- AbstractContainer.java 18 Feb 2002 15:40:46 -0000 1.21
+++ AbstractContainer.java 19 Feb 2002 20:48:03 -0000 1.22
@@ -20,6 +20,7 @@
import org.apache.avalon.excalibur.logger.LoggerManager;
import org.apache.avalon.excalibur.event.Queue;
import org.apache.avalon.excalibur.mpool.PoolManager;
+import org.apache.avalon.excalibur.system.util.*;
import java.util.ArrayList;
import java.util.Collections;
@@ -34,7 +35,7 @@
* Manager can expose that to the instantiating class.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.21 $ $Date: 2002/02/18 15:40:46 $
+ * @version CVS $Revision: 1.22 $ $Date: 2002/02/19 20:48:03 $
*/
public abstract class AbstractContainer
extends AbstractLogEnabled
1.28 +2 -1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/ContainerManager.java
Index: ContainerManager.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/ContainerManager.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- ContainerManager.java 19 Feb 2002 02:05:58 -0000 1.27
+++ ContainerManager.java 19 Feb 2002 20:48:03 -0000 1.28
@@ -21,6 +21,7 @@
import org.apache.avalon.excalibur.source.*;
import org.apache.avalon.excalibur.command.*;
import org.apache.avalon.excalibur.mpool.*;
+import org.apache.avalon.excalibur.system.util.*;
import java.io.File;
@@ -109,7 +110,7 @@
* </table>
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.27 $ $Date: 2002/02/19 02:05:58 $
+ * @version CVS $Revision: 1.28 $ $Date: 2002/02/19 20:48:03 $
*/
public class ContainerManager implements Disposable
{
1.3 +2 -2 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/ComponentFactory.java
Index: ComponentFactory.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/ComponentFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ComponentFactory.java 12 Feb 2002 21:30:43 -0000 1.2
+++ ComponentFactory.java 19 Feb 2002 20:48:03 -0000 1.3
@@ -7,7 +7,7 @@
*/
package org.apache.avalon.excalibur.system.handler;
-import org.apache.avalon.excalibur.system.RoleManager;
+import org.apache.avalon.excalibur.system.util.RoleManager;
import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
@@ -30,7 +30,7 @@
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
- * @version CVS $Revision: 1.2 $ $Date: 2002/02/12 21:30:43 $
+ * @version CVS $Revision: 1.3 $ $Date: 2002/02/19 20:48:03 $
* @since 4.0
*/
public class ComponentFactory
1.6 +2 -2 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/FactoryComponentHandler.java
Index: FactoryComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/FactoryComponentHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- FactoryComponentHandler.java 12 Feb 2002 21:30:43 -0000 1.5
+++ FactoryComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.6
@@ -8,7 +8,7 @@
package org.apache.avalon.excalibur.system.handler;
import org.apache.avalon.excalibur.system.Container;
-import org.apache.avalon.excalibur.system.RoleManager;
+import org.apache.avalon.excalibur.system.util.RoleManager;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager;
@@ -23,7 +23,7 @@
* and destroyed correctly.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
+ * @version CVS $Revision: 1.6 $ $Date: 2002/02/19 20:48:03 $
* @since 4.0
*/
public final class FactoryComponentHandler
1.6 +2 -2 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PerThreadComponentHandler.java
Index: PerThreadComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PerThreadComponentHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PerThreadComponentHandler.java 12 Feb 2002 21:30:43 -0000 1.5
+++ PerThreadComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.6
@@ -8,7 +8,7 @@
package org.apache.avalon.excalibur.system.handler;
import org.apache.avalon.excalibur.system.Container;
-import org.apache.avalon.excalibur.system.RoleManager;
+import org.apache.avalon.excalibur.system.util.RoleManager;
import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.component.Component;
@@ -23,7 +23,7 @@
* and destroyed correctly.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
+ * @version CVS $Revision: 1.6 $ $Date: 2002/02/19 20:48:03 $
* @since 4.0
*/
public final class PerThreadComponentHandler implements ComponentHandler {
1.9 +2 -2 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PoolableComponentHandler.java
Index: PoolableComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PoolableComponentHandler.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- PoolableComponentHandler.java 18 Feb 2002 16:14:32 -0000 1.8
+++ PoolableComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.9
@@ -8,7 +8,7 @@
package org.apache.avalon.excalibur.system.handler;
import org.apache.avalon.excalibur.system.Container;
-import org.apache.avalon.excalibur.system.RoleManager;
+import org.apache.avalon.excalibur.system.util.RoleManager;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager;
@@ -25,7 +25,7 @@
* and destroyed correctly.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.8 $ $Date: 2002/02/18 16:14:32 $
+ * @version CVS $Revision: 1.9 $ $Date: 2002/02/19 20:48:03 $
* @since 4.0
*/
public final class PoolableComponentHandler implements ComponentHandler {
1.6 +2 -2 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/ThreadSafeComponentHandler.java
Index: ThreadSafeComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/ThreadSafeComponentHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ThreadSafeComponentHandler.java 12 Feb 2002 21:30:43 -0000 1.5
+++ ThreadSafeComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.6
@@ -8,7 +8,7 @@
package org.apache.avalon.excalibur.system.handler;
import org.apache.avalon.excalibur.system.Container;
-import org.apache.avalon.excalibur.system.RoleManager;
+import org.apache.avalon.excalibur.system.util.RoleManager;
import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.component.Component;
@@ -23,7 +23,7 @@
* and destroyed correctly.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
+ * @version CVS $Revision: 1.6 $ $Date: 2002/02/19 20:48:03 $
* @since 4.0
*/
public final class ThreadSafeComponentHandler implements ComponentHandler {
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/AbstractRoleManager.java
Index: AbstractRoleManager.java
===================================================================
/*
* 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.system.util;
import org.apache.avalon.framework.component.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* The Excalibur Role Manager is used for Excalibur Role Mappings. All of the
* information is hard-coded.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public abstract class AbstractRoleManager
implements RoleManager
{
protected static final String EMPTY_STRING = "";
protected final ClassLoader m_loader;
/** Map for shorthand to class mapping */
protected Map m_shorthands;
/** Map for role to classname mapping */
protected Map m_classNames;
/** Map for role to handler classname mapping */
protected Map m_handlerNames;
/** Parent <code>RoleManager</code> for nested resolution */
protected final RoleManager m_parent;
/**
* Default constructor--this RoleManager has no parent.
*/
public AbstractRoleManager()
{
this( null );
}
/**
* Alternate constructor--this RoleManager has the specified
* parent.
*
* @param parent The parent <code>RoleManager</code>.
*/
public AbstractRoleManager(RoleManager parent)
{
this( parent, Thread.currentThread().getContextClassLoader() );
}
/**
* Alternate constructor--this RoleManager has the specified
* parent.
*
* @param parent The parent <code>RoleManager</code>.
*/
public AbstractRoleManager(RoleManager parent, ClassLoader loader)
{
ClassLoader thisLoader = loader;
if ( null == thisLoader )
{
thisLoader = Thread.currentThread().getContextClassLoader();
}
m_loader = thisLoader;
m_parent = parent;
}
protected void setup( Map shorts, Map classes, Map handlers,
String shortName, String role, String className,
String handlerClassName )
{
final Class klass;
Class handlerKlass;
try
{
klass = m_loader.loadClass( className );
if ( ! Component.class.isAssignableFrom( klass ) )
{
// Do not store reference if it is not a Component
return;
}
}
catch ( Exception e )
{
// Do not store reference if class does not exist.
return;
}
try
{
handlerKlass = m_loader.loadClass( handlerClassName );
}
catch ( Exception e )
{
handlerKlass = org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler.class;
}
shorts.put( shortName, klass );
shorts.put( klass, shortName );
classes.put( klass,
role );
List classList = (List) classes.get( role );
if ( null == classList )
{
classList = new ArrayList(5);
}
classList.add( klass );
classes.put( role, classList );
handlers.put( klass, handlerKlass );
}
/**
* Find the Class for the given shorthand name. If there is no
* correspondence between the class and the shorthand name, the method
* returns <code>null</code>. If this RoleManager does not have the match,
* and there is a parent RoleManager, the parent will be asked to resolve
* the request.
*/
public final Class getClassForName( final String shorthandName )
{
if (shorthandName == null) return null;
final Class component = (Class)m_shorthands.get( shorthandName );
if( null == component && null != m_parent )
{
return m_parent.getClassForName( shorthandName );
}
return component;
}
/**
* Retrieves the real role name from a shorthand name. Usually
* the shorthand name refers to a configuration element name. If
* this RoleManager does not have the match, and there is a parent
* RoleManager, the parent will be asked to resolve the role.
*
* @param shorthandName The shortname that is an alias for the role.
* @return the official role name.
*/
public final String getNameForClass( final Class klass )
{
final String shorthandName = (String)m_shorthands.get( klass );
if( null == shorthandName && null != m_parent )
{
return m_parent.getNameForClass( klass );
}
return shorthandName;
}
/**
* Retrieves the handler class name for the specified class name. This
* is called for every ComponentImplementation. If this RoleManager does
* not have the match, and there is a parent RoleManager, the parent will be
* asked to resolve the handler's class name.
*
* @param role The role that has a default implementation.
* @return the Fully Qualified Class Name (FQCN) for the role.
*/
public final Class getHandlerClassForClass( final Class className )
{
final Class handler = (Class)m_handlerNames.get( className );
if( null == handler && null != m_parent )
{
return m_parent.getHandlerClassForClass( className );
}
return handler;
}
/**
* Retrieves the default class name for the specified role. This
* is only called when the configuration does not specify the
* class explicitly. If this RoleManager does not have the match,
* and there is a parent RoleManager, the parent will be asked
* to resolve the class name.
*
* @param role The role that has a default implementation.
* @return the Fully Qualified Class Name (FQCN) for the role.
*/
public final Class[] getClassesForRole( final String role )
{
final List classes = (List)m_classNames.get( role );
if( null == classes && null != m_parent )
{
return m_parent.getClassesForRole( role );
}
return (Class []) classes.toArray( new Class[] {} );
}
/**
* Retrieves a default class name for a role/hint combination.
* This is only called when a role is mapped to a
* DefaultComponentSelector, and the configuration elements use
* shorthand names for the type of component. If this RoleManager
* does not have the match, and there is a parent RoleManager, the
* parent will be asked to resolve the class name.
*
* @param role The role that this shorthand refers to.
* @param shorthand The shorthand name for the type of Component
* @return the FQCN for the role/hint combination.
*/
public final String getRoleForClass( final Class klass )
{
final String role = (String)m_classNames.get( klass );
if( null == role )
{
if( null != m_parent )
{
return m_parent.getRoleForClass( klass );
}
else
{
return EMPTY_STRING;
}
}
return role;
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/ConfigurableRoleManager.java
Index: ConfigurableRoleManager.java
===================================================================
/*
* 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.system.util;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
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.logger.AbstractLoggable;
/**
* Configurable RoleManager implementation. It populates the RoleManager
* from a configuration hierarchy. This is based on the DefaultRoleManager
* in the org.apache.avalon.component package.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public class ConfigurableRoleManager
extends AbstractRoleManager
implements Configurable
{
/**
* Default constructor--this RoleManager has no parent.
*/
public ConfigurableRoleManager()
{
super( null );
}
/**
* Alternate constructor--this RoleManager has the specified
* parent.
*
* @param parent The parent <code>RoleManager</code>.
*/
public ConfigurableRoleManager(RoleManager parent)
{
super( parent, Thread.currentThread().getContextClassLoader() );
}
/**
* Alternate constructor--this RoleManager has the specified
* parent and a classloader.
*
* @param parent The parent <code>RoleManager</code>.
*/
public ConfigurableRoleManager(RoleManager parent, ClassLoader loader)
{
super( parent, loader );
}
/**
* Reads a configuration object and creates the role, shorthand,
* and class name mapping.
*
* @param configuration The configuration object.
* @throws ConfigurationException if the configuration is malformed
*/
public final void configure( final Configuration configuration )
throws ConfigurationException
{
final Map shorts = new HashMap();
final Map classes = new HashMap();
final Map handlers = new HashMap();
final Map hintclasses = new HashMap();
final Configuration[] roles = configuration.getChildren( "role" );
for( int i = 0; i < roles.length; i++ )
{
final String role = roles[ i ].getAttribute( "name" );
Configuration[] components = roles[i].getChildren( "component" );
for ( int j = 0; j < components.length; j++)
{
final String shorthand = components[ j ].getAttribute( "shorthand" );
final String className =
components[ j ].getAttribute( "class", null );
final String handlerClassName =
components[ j ].getAttribute( "handler",
"org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler" );
setup( shorts, classes, handlers, shorthand, role, className, handlerClassName );
}
}
m_shorthands = Collections.unmodifiableMap( shorts );
m_classNames = Collections.unmodifiableMap( classes );
m_handlerNames = Collections.unmodifiableMap( handlers );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/ContextManager.java
Index: ContextManager.java
===================================================================
/*
* 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.system.util;
/**
* RoleManager Interface, use this to specify the Components and how they
* correspond to easy shorthand names. The RoleManager assumes a flat
* relationship of shorthand names to classes, and classes to roles.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public interface ContextManager
{
/**
* Find the Class for the given shorthand name. If there is no
* correspondence between the class and the shorthand name, the method
* returns <code>null</code>. If this RoleManager does not have the match,
* and there is a parent RoleManager, the parent will be asked to resolve
* the request.
*/
Class getClassForName( final String shorthandName );
/**
* This method is merely a hint for serialization. If this RoleManager does
* not have the match, and there is a parent RoleManager, the parent will be
* asked to resolve the request.
*/
String getNameForClass( final Class component );
/**
* Get the Role name for a specific class. If the class does not belong to
* a Component, or the Role is not easily determinable, this method will return
* <code>null</code>. If this RoleManager does not have the match, and
* there is a parent RoleManager, the parent will be asked to resolve the
* request.
*/
String getRoleForClass( final Class component );
/**
* Get an array of classes registered with the role manager that implement a
* role. If this RoleManager does not have the match, and there is a parent
* RoleManager, the parent will be asked to resolve the request.
*/
Class[] getClassesForRole( final String role );
/**
* Retrieves the handler class name for the specified class. This
* is called for every Component Implementation. If this RoleManager does
* not have the match, and there is a parent RoleManager, the parent will be
* asked to resolve the handler's class name.
*
* @param class The class of the Component in question.
* @return the Class instance of the ComponentHandler.
*/
Class getHandlerClassForClass( final Class className );
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/ExcaliburRoleManager.java
Index: ExcaliburRoleManager.java
===================================================================
/*
* 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.system.util;
import org.apache.avalon.framework.component.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* The Excalibur Role Manager is used for Excalibur Role Mappings. All of the
* information is hard-coded.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public class ExcaliburRoleManager
extends AbstractRoleManager
{
/**
* Default constructor--this RoleManager has no parent.
*/
public ExcaliburRoleManager()
{
super( null );
}
/**
* Alternate constructor--this RoleManager has the specified
* parent.
*
* @param parent The parent <code>RoleManager</code>.
*/
public ExcaliburRoleManager(RoleManager parent)
{
super( parent, Thread.currentThread().getContextClassLoader() );
}
/**
* Alternate constructor--this RoleManager has the specified
* parent and a classloader.
*
* @param parent The parent <code>RoleManager</code>.
*/
public ExcaliburRoleManager(RoleManager parent, ClassLoader loader)
{
super( parent, loader );
HashMap shorts = new HashMap( 10 );
HashMap classes = new HashMap( 10 );
HashMap handlers = new HashMap( 10 );
/* Set up Cache relations */
setup( shorts, classes, handlers, "cache",
"org.apache.avalon.excalibur.cache.Cache",
"org.apache.avalon.excalibur.cache.DefaultCache",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
setup( shorts, classes, handlers, "lru-cache",
"org.apache.avalon.excalibur.cache.Cache",
"org.apache.avalon.excalibur.cache.LRUCache",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
/* Set up DataSource relations */
setup( shorts, classes, handlers, "jdbc-datasource",
"org.apache.avalon.excalibur.datasource.DataSourceComponent",
"org.apache.avalon.excalibur.datasource.JdbcDataSource",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
setup( shorts, classes, handlers, "j2ee-datasource",
"org.apache.avalon.excalibur.datasource.DataSourceComponent",
"org.apache.avalon.excalibur.datasource.J2eeDataSource",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
setup( shorts, classes, handlers, "informix-datasource",
"org.apache.avalon.excalibur.datasource.DataSourceComponent",
"org.apache.avalon.excalibur.datasource.InformixDataSource",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
/* Set up i18n relations */
setup( shorts, classes, handlers, "i18n",
"org.apache.avalon.excalibur.i18n.BundleSelector",
"org.apache.avalon.excalibur.i18n.BundleSelector",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
/* Set up Monitor relations */
setup( shorts, classes, handlers, "monitor",
"org.apache.avalon.excalibur.monitor.Monitor",
"org.apache.avalon.excalibur.monitor.ActiveMonitor",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
setup( shorts, classes, handlers, "passive-monitor",
"org.apache.avalon.excalibur.monitor.Monitor",
"org.apache.avalon.excalibur.monitor.PassiveMonitor",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
/* Set up XPath relations */
setup( shorts, classes, handlers, "xalan-xpath",
"org.apache.avalon.excalibur.xml.xpath.XPathProcessor",
"org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
setup( shorts, classes, handlers, "jaxpath",
"org.apache.avalon.excalibur.xml.xpath.XPathProcessor",
"org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
/* Set up SourceResolver relations */
setup( shorts, classes, handlers, "resolver",
"org.apache.avalon.excalibur.source.SourceResolver",
"org.apache.avalon.excalibur.source.SourceResolverImpl",
"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
/* Set up XML parser relations */
setup( shorts, classes, handlers, "parser",
"org.apache.avalon.excalibur.xml.Parser",
"org.apache.avalon.excalibur.xml.JaxpParser",
"org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler" );
setup( shorts, classes, handlers, "xerces-parser",
"org.apache.avalon.excalibur.xml.Parser",
"org.apache.avalon.excalibur.xml.XercesParser",
"org.apache.avalon.excalibur.system.handler.FactoryComponentHandler" );
m_shorthands = Collections.unmodifiableMap( shorts );
m_classNames = Collections.unmodifiableMap( classes );
m_handlerNames = Collections.unmodifiableMap( handlers );
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/RoleManager.java
Index: RoleManager.java
===================================================================
/*
* 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.system.util;
/**
* RoleManager Interface, use this to specify the Components and how they
* correspond to easy shorthand names. The RoleManager assumes a flat
* relationship of shorthand names to classes, and classes to roles.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public interface RoleManager
{
/**
* Find the Class for the given shorthand name. If there is no
* correspondence between the class and the shorthand name, the method
* returns <code>null</code>. If this RoleManager does not have the match,
* and there is a parent RoleManager, the parent will be asked to resolve
* the request.
*/
Class getClassForName( final String shorthandName );
/**
* This method is merely a hint for serialization. If this RoleManager does
* not have the match, and there is a parent RoleManager, the parent will be
* asked to resolve the request.
*/
String getNameForClass( final Class component );
/**
* Get the Role name for a specific class. If the class does not belong to
* a Component, or the Role is not easily determinable, this method will return
* <code>null</code>. If this RoleManager does not have the match, and
* there is a parent RoleManager, the parent will be asked to resolve the
* request.
*/
String getRoleForClass( final Class component );
/**
* Get an array of classes registered with the role manager that implement a
* role. If this RoleManager does not have the match, and there is a parent
* RoleManager, the parent will be asked to resolve the request.
*/
Class[] getClassesForRole( final String role );
/**
* Retrieves the handler class name for the specified class. This
* is called for every Component Implementation. If this RoleManager does
* not have the match, and there is a parent RoleManager, the parent will be
* asked to resolve the handler's class name.
*
* @param class The class of the Component in question.
* @return the Class instance of the ComponentHandler.
*/
Class getHandlerClassForClass( final Class className );
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test/ConfigurableRoleManagerTestCase.java
Index: ConfigurableRoleManagerTestCase.java
===================================================================
/*
* 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.system.util.test;
import org.apache.avalon.excalibur.system.util.ConfigurableRoleManager;
import org.apache.avalon.framework.configuration.*;
import junit.framework.TestCase;
/**
* Configurable RoleManager implementation. It populates the RoleManager
* from a configuration hierarchy. This is based on the DefaultRoleManager
* in the org.apache.avalon.component package.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public class ConfigurableRoleManagerTestCase
extends TestCase
{
/**
* Default constructor--this RoleManager has no parent.
*/
public ConfigurableRoleManagerTestCase( String name )
{
super( name );
}
/**
* Test the shorthand return values.
*/
public void testShorthandReturnValues()
throws Exception
{
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
ConfigurableRoleManager roles = new ConfigurableRoleManager( null, this.getClass().getClassLoader() );
roles.configure( builder.build(this.getClass().getClassLoader()
.getResourceAsStream( "org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
assertEquals(
roles.getClassForName( "datasource" ),
Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
);
assertEquals(
roles.getClassForName( "monitor" ),
Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
);
assertEquals(
roles.getClassForName( "parser" ),
Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
);
}
/**
* Test the shorthand return values.
*/
public void testShorthandRemapReturnValues()
throws Exception
{
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
ConfigurableRoleManager roles = new ConfigurableRoleManager( null, this.getClass().getClassLoader() );
roles.configure( builder.build(this.getClass().getClassLoader()
.getResourceAsStream( "org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
"datasource"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
"monitor"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" ) ),
"parser"
);
}
/**
* Test the shorthand return values.
*/
public void testRoleForClass()
throws Exception
{
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
ConfigurableRoleManager roles = new ConfigurableRoleManager( null, this.getClass().getClassLoader() );
roles.configure( builder.build(this.getClass().getClassLoader()
.getResourceAsStream( "org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
"org.apache.avalon.excalibur.datasource.DataSourceComponent"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
"org.apache.avalon.excalibur.monitor.Monitor"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" ) ),
"org.apache.avalon.excalibur.xml.Parser"
);
}
/**
* Test the shorthand return values.
*/
public void testClassesForRole()
throws Exception
{
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
ConfigurableRoleManager roles = new ConfigurableRoleManager( null, this.getClass().getClassLoader() );
roles.configure( builder.build(this.getClass().getClassLoader()
.getResourceAsStream( "org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
Class[] classes = roles.getClassesForRole( "org.apache.avalon.excalibur.datasource.DataSourceComponent" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.monitor.Monitor" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.xml.Parser" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
);
}
/**
* Test the handler class return values.
*/
public void testHandlerClassReturnValues()
throws Exception
{
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
ConfigurableRoleManager roles = new ConfigurableRoleManager( null, this.getClass().getClassLoader() );
roles.configure( builder.build(this.getClass().getClassLoader()
.getResourceAsStream( "org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.PoolableComponentHandler" )
);
}
}
1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test/ExcaliburRoleManagerTestCase.java
Index: ExcaliburRoleManagerTestCase.java
===================================================================
/*
* 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.system.util.test;
import org.apache.avalon.excalibur.system.util.ExcaliburRoleManager;
import junit.framework.TestCase;
/**
* Configurable RoleManager implementation. It populates the RoleManager
* from a configuration hierarchy. This is based on the DefaultRoleManager
* in the org.apache.avalon.component package.
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
* @since 4.1
*/
public class ExcaliburRoleManagerTestCase
extends TestCase
{
/**
* Default constructor--this RoleManager has no parent.
*/
public ExcaliburRoleManagerTestCase( String name )
{
super( name );
}
/**
* Test the shorthand return values.
*/
public void testShorthandReturnValues()
throws Exception
{
ExcaliburRoleManager roles = new ExcaliburRoleManager( null, this.getClass().getClassLoader() );
assertEquals(
roles.getClassForName( "cache" ),
Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" )
);
assertEquals(
roles.getClassForName( "lru-cache" ),
Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" )
);
assertEquals(
roles.getClassForName( "jdbc-datasource" ),
Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
);
assertEquals(
roles.getClassForName( "j2ee-datasource" ),
Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" )
);
assertEquals(
roles.getClassForName( "informix-datasource" ),
Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" )
);
assertEquals(
roles.getClassForName( "i18n" ),
Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" )
);
assertEquals(
roles.getClassForName( "monitor" ),
Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
);
assertEquals(
roles.getClassForName( "passive-monitor" ),
Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" )
);
assertEquals(
roles.getClassForName( "xalan-xpath" ),
Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" )
);
assertEquals(
roles.getClassForName( "jaxpath" ),
Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" )
);
assertEquals(
roles.getClassForName( "resolver" ),
Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" )
);
assertEquals(
roles.getClassForName( "parser" ),
Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
);
assertEquals(
roles.getClassForName( "xerces-parser" ),
Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" )
);
}
/**
* Test the shorthand return values.
*/
public void testShorthandRemapReturnValues()
throws Exception
{
ExcaliburRoleManager roles = new ExcaliburRoleManager( null, this.getClass().getClassLoader() );
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" ) ),
"cache"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" ) ),
"lru-cache"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
"jdbc-datasource"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" ) ),
"j2ee-datasource"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" ) ),
"informix-datasource"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" ) ),
"i18n"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
"monitor"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" ) ),
"passive-monitor"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" ) ),
"xalan-xpath"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" ) ),
"jaxpath"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" ) ),
"resolver"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" ) ),
"parser"
);
assertEquals(
roles.getNameForClass( Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" ) ),
"xerces-parser"
);
}
/**
* Test the shorthand return values.
*/
public void testRoleForClass()
throws Exception
{
ExcaliburRoleManager roles = new ExcaliburRoleManager( null, this.getClass().getClassLoader() );
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" ) ),
"org.apache.avalon.excalibur.cache.Cache"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" ) ),
"org.apache.avalon.excalibur.cache.Cache"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
"org.apache.avalon.excalibur.datasource.DataSourceComponent"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" ) ),
"org.apache.avalon.excalibur.datasource.DataSourceComponent"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" ) ),
"org.apache.avalon.excalibur.datasource.DataSourceComponent"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" ) ),
"org.apache.avalon.excalibur.i18n.BundleSelector"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
"org.apache.avalon.excalibur.monitor.Monitor"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" ) ),
"org.apache.avalon.excalibur.monitor.Monitor"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" ) ),
"org.apache.avalon.excalibur.xml.xpath.XPathProcessor"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" ) ),
"org.apache.avalon.excalibur.xml.xpath.XPathProcessor"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" ) ),
"org.apache.avalon.excalibur.source.SourceResolver"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" ) ),
"org.apache.avalon.excalibur.xml.Parser"
);
assertEquals(
roles.getRoleForClass( Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" ) ),
"org.apache.avalon.excalibur.xml.Parser"
);
}
/**
* Test the shorthand return values.
*/
public void testClassesForRole()
throws Exception
{
ExcaliburRoleManager roles = new ExcaliburRoleManager( null, this.getClass().getClassLoader() );
Class[] classes = roles.getClassesForRole( "org.apache.avalon.excalibur.cache.Cache" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" )
);
assertEquals(
classes[1],
Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.datasource.DataSourceComponent" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
);
assertEquals(
classes[1],
Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" )
);
assertEquals(
classes[2],
Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.i18n.BundleSelector" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.monitor.Monitor" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
);
assertEquals(
classes[1],
Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.xml.xpath.XPathProcessor" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" )
);
assertEquals(
classes[1],
Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.source.SourceResolver" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" )
);
classes = roles.getClassesForRole( "org.apache.avalon.excalibur.xml.Parser" );
assertEquals(
classes[0],
Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
);
assertEquals(
classes[1],
Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" )
);
}
/**
* Test the handler class return values.
*/
public void testHandlerClassReturnValues()
throws Exception
{
ExcaliburRoleManager roles = new ExcaliburRoleManager( null, this.getClass().getClassLoader() );
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler" )
);
assertEquals(
roles.getHandlerClassForClass( Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" ) ),
Class.forName( "org.apache.avalon.excalibur.system.handler.FactoryComponentHandler" )
);
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: Compile Error [was: RE: cvs commit: jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test ConfigurableRoleManagerTestCase.java ExcaliburRoleManagerTestCase.java
Posted by Gerhard Froehlich <g-...@gmx.de>.
Ahh I see. Definitly driving to long
the keyboard.
sorry
Gerhard
"Three o'clock is always too late or too early for
anything you want to do.
(Jean-Paul Sartre)"
>-----Original Message-----
>From: Berin Loritsch [mailto:bloritsch@apache.org]
>Sent: Tuesday, February 19, 2002 10:42 PM
>To: Avalon Developers List
>Subject: Re: Compile Error [was: RE: cvs commit:
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/syst
>em/util/test ConfigurableRoleManagerTestCase.java
>ExcaliburRoleManagerTestCase.java
>
>
>Gerhard Froehlich wrote:
>> Hi,
>> hmm where is this ConsoleLogger, maybe on your local
>> machine ;).
>>
>> Joke...I can't compile, because he doesn't find the
>> "ConsoleLogger"...
>
>make sure you update jakarta-avalon as well....
>
>
>--
>
>"They that give up essential liberty to obtain a little temporary safety
> deserve neither liberty nor safety."
> - Benjamin Franklin
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Compile Error [was: RE: cvs commit: jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test ConfigurableRoleManagerTestCase.java ExcaliburRoleManagerTestCase.java
Posted by Berin Loritsch <bl...@apache.org>.
Gerhard Froehlich wrote:
> Hi,
> hmm where is this ConsoleLogger, maybe on your local
> machine ;).
>
> Joke...I can't compile, because he doesn't find the
> "ConsoleLogger"...
make sure you update jakarta-avalon as well....
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Compile Error [was: RE: cvs commit: jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test ConfigurableRoleManagerTestCase.java ExcaliburRoleManagerTestCase.java
Posted by Gerhard Froehlich <g-...@gmx.de>.
Hi,
hmm where is this ConsoleLogger, maybe on your local
machine ;).
Joke...I can't compile, because he doesn't find the
"ConsoleLogger"...
~Gerhard
"Sorry, but my karma just ran over your dogma."
>-----Original Message-----
>From: bloritsch@apache.org [mailto:bloritsch@apache.org]
>Sent: Tuesday, February 19, 2002 9:48 PM
>To: jakarta-avalon-excalibur-cvs@apache.org
>Subject: cvs commit:
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/syst
>em/util/test ConfigurableRoleManagerTestCase.java
>ExcaliburRoleManagerTestCase.java
>
>
>bloritsch 02/02/19 12:48:04
>
> Modified: src/java/org/apache/avalon/excalibur/datasource
> AbstractJdbcConnection.java
> src/scratchpad/org/apache/avalon/excalibur/system
> AbstractContainer.java ContainerManager.java
> src/scratchpad/org/apache/avalon/excalibur/system/handler
> ComponentFactory.java FactoryComponentHandler.java
> PerThreadComponentHandler.java
> PoolableComponentHandler.java
> ThreadSafeComponentHandler.java
> Added: src/scratchpad/org/apache/avalon/excalibur/system/util
> AbstractRoleManager.java
> ConfigurableRoleManager.java ContextManager.java
> ExcaliburRoleManager.java RoleManager.java
> src/scratchpad/org/apache/avalon/excalibur/system/util/test
> ConfigurableRoleManagerTestCase.java
> ExcaliburRoleManagerTestCase.java
> Removed: src/scratchpad/org/apache/avalon/excalibur/system
> AbstractRoleManager.java
> ConfigurableRoleManager.java
> ExcaliburRoleManager.java RoleManager.java
> src/scratchpad/org/apache/avalon/excalibur/system/test
> ConfigurableRoleManagerTestCase.java
> ExcaliburRoleManagerTestCase.java
> Log:
> fix compilation error, move RoleManager and beginnings of ContextManager to system.util
>
> Revision Changes Path
> 1.13 +2 -1
>jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/datasource/AbstractJdbcConnec
>tion.java
>
> Index: AbstractJdbcConnection.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/datasource/Abstract
>JdbcConnection.java,v
> retrieving revision 1.12
> retrieving revision 1.13
> diff -u -r1.12 -r1.13
> --- AbstractJdbcConnection.java 19 Feb 2002 20:27:36 -0000 1.12
> +++ AbstractJdbcConnection.java 19 Feb 2002 20:48:03 -0000 1.13
> @@ -13,6 +13,7 @@
> import java.sql.PreparedStatement;
> import java.sql.SQLException;
> import java.sql.Statement;
> +import java.sql.ResultSet;
> import org.apache.avalon.framework.logger.AbstractLogEnabled;
> import org.apache.avalon.framework.activity.Initializable;
> import org.apache.avalon.framework.activity.Disposable;
> @@ -29,7 +30,7 @@
> * total number of Connection objects that are created.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.12 $ $Date: 2002/02/19 20:27:36 $
> + * @version CVS $Revision: 1.13 $ $Date: 2002/02/19 20:48:03 $
> * @since 4.1
> */
> public abstract class AbstractJdbcConnection
>
>
>
> 1.22 +2 -1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/AbstractContainer.java
>
> Index: AbstractContainer.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/Abstra
>ctContainer.java,v
> retrieving revision 1.21
> retrieving revision 1.22
> diff -u -r1.21 -r1.22
> --- AbstractContainer.java 18 Feb 2002 15:40:46 -0000 1.21
> +++ AbstractContainer.java 19 Feb 2002 20:48:03 -0000 1.22
> @@ -20,6 +20,7 @@
> import org.apache.avalon.excalibur.logger.LoggerManager;
> import org.apache.avalon.excalibur.event.Queue;
> import org.apache.avalon.excalibur.mpool.PoolManager;
> +import org.apache.avalon.excalibur.system.util.*;
>
> import java.util.ArrayList;
> import java.util.Collections;
> @@ -34,7 +35,7 @@
> * Manager can expose that to the instantiating class.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.21 $ $Date: 2002/02/18 15:40:46 $
> + * @version CVS $Revision: 1.22 $ $Date: 2002/02/19 20:48:03 $
> */
> public abstract class AbstractContainer
> extends AbstractLogEnabled
>
>
>
> 1.28 +2 -1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/ContainerManager.java
>
> Index: ContainerManager.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/Contai
>nerManager.java,v
> retrieving revision 1.27
> retrieving revision 1.28
> diff -u -r1.27 -r1.28
> --- ContainerManager.java 19 Feb 2002 02:05:58 -0000 1.27
> +++ ContainerManager.java 19 Feb 2002 20:48:03 -0000 1.28
> @@ -21,6 +21,7 @@
> import org.apache.avalon.excalibur.source.*;
> import org.apache.avalon.excalibur.command.*;
> import org.apache.avalon.excalibur.mpool.*;
> +import org.apache.avalon.excalibur.system.util.*;
>
> import java.io.File;
>
> @@ -109,7 +110,7 @@
> * </table>
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.27 $ $Date: 2002/02/19 02:05:58 $
> + * @version CVS $Revision: 1.28 $ $Date: 2002/02/19 20:48:03 $
> */
> public class ContainerManager implements Disposable
> {
>
>
>
> 1.3 +2 -2
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/Componen
>tFactory.java
>
> Index: ComponentFactory.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handle
>r/ComponentFactory.java,v
> retrieving revision 1.2
> retrieving revision 1.3
> diff -u -r1.2 -r1.3
> --- ComponentFactory.java 12 Feb 2002 21:30:43 -0000 1.2
> +++ ComponentFactory.java 19 Feb 2002 20:48:03 -0000 1.3
> @@ -7,7 +7,7 @@
> */
> package org.apache.avalon.excalibur.system.handler;
>
> -import org.apache.avalon.excalibur.system.RoleManager;
> +import org.apache.avalon.excalibur.system.util.RoleManager;
> import org.apache.avalon.framework.activity.Startable;
> import org.apache.avalon.framework.activity.Disposable;
> import org.apache.avalon.framework.activity.Initializable;
> @@ -30,7 +30,7 @@
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
> - * @version CVS $Revision: 1.2 $ $Date: 2002/02/12 21:30:43 $
> + * @version CVS $Revision: 1.3 $ $Date: 2002/02/19 20:48:03 $
> * @since 4.0
> */
> public class ComponentFactory
>
>
>
> 1.6 +2 -2
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/FactoryC
>omponentHandler.java
>
> Index: FactoryComponentHandler.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handle
>r/FactoryComponentHandler.java,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -u -r1.5 -r1.6
> --- FactoryComponentHandler.java 12 Feb 2002 21:30:43 -0000 1.5
> +++ FactoryComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.6
> @@ -8,7 +8,7 @@
> package org.apache.avalon.excalibur.system.handler;
>
> import org.apache.avalon.excalibur.system.Container;
> -import org.apache.avalon.excalibur.system.RoleManager;
> +import org.apache.avalon.excalibur.system.util.RoleManager;
> import org.apache.avalon.framework.activity.Disposable;
> import org.apache.avalon.framework.component.Component;
> import org.apache.avalon.framework.component.ComponentManager;
> @@ -23,7 +23,7 @@
> * and destroyed correctly.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
> + * @version CVS $Revision: 1.6 $ $Date: 2002/02/19 20:48:03 $
> * @since 4.0
> */
> public final class FactoryComponentHandler
>
>
>
> 1.6 +2 -2
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PerThrea
>dComponentHandler.java
>
> Index: PerThreadComponentHandler.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handle
r/PerThreadComponentHandler.java,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -u -r1.5 -r1.6
> --- PerThreadComponentHandler.java 12 Feb 2002 21:30:43 -0000 1.5
> +++ PerThreadComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.6
> @@ -8,7 +8,7 @@
> package org.apache.avalon.excalibur.system.handler;
>
> import org.apache.avalon.excalibur.system.Container;
> -import org.apache.avalon.excalibur.system.RoleManager;
> +import org.apache.avalon.excalibur.system.util.RoleManager;
> import org.apache.avalon.framework.activity.Startable;
> import org.apache.avalon.framework.activity.Disposable;
> import org.apache.avalon.framework.component.Component;
> @@ -23,7 +23,7 @@
> * and destroyed correctly.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
> + * @version CVS $Revision: 1.6 $ $Date: 2002/02/19 20:48:03 $
> * @since 4.0
> */
> public final class PerThreadComponentHandler implements ComponentHandler {
>
>
>
> 1.9 +2 -2
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/Poolable
>ComponentHandler.java
>
> Index: PoolableComponentHandler.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handle
>r/PoolableComponentHandler.java,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -u -r1.8 -r1.9
> --- PoolableComponentHandler.java 18 Feb 2002 16:14:32 -0000 1.8
> +++ PoolableComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.9
> @@ -8,7 +8,7 @@
> package org.apache.avalon.excalibur.system.handler;
>
> import org.apache.avalon.excalibur.system.Container;
> -import org.apache.avalon.excalibur.system.RoleManager;
> +import org.apache.avalon.excalibur.system.util.RoleManager;
> import org.apache.avalon.framework.activity.Disposable;
> import org.apache.avalon.framework.component.Component;
> import org.apache.avalon.framework.component.ComponentManager;
> @@ -25,7 +25,7 @@
> * and destroyed correctly.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.8 $ $Date: 2002/02/18 16:14:32 $
> + * @version CVS $Revision: 1.9 $ $Date: 2002/02/19 20:48:03 $
> * @since 4.0
> */
> public final class PoolableComponentHandler implements ComponentHandler {
>
>
>
> 1.6 +2 -2
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/ThreadSa
>feComponentHandler.java
>
> Index: ThreadSafeComponentHandler.java
> ===================================================================
> RCS file:
>/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handle
r/ThreadSafeComponentHandler.java,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -u -r1.5 -r1.6
> --- ThreadSafeComponentHandler.java 12 Feb 2002 21:30:43 -0000 1.5
> +++ ThreadSafeComponentHandler.java 19 Feb 2002 20:48:03 -0000 1.6
> @@ -8,7 +8,7 @@
> package org.apache.avalon.excalibur.system.handler;
>
> import org.apache.avalon.excalibur.system.Container;
> -import org.apache.avalon.excalibur.system.RoleManager;
> +import org.apache.avalon.excalibur.system.util.RoleManager;
> import org.apache.avalon.framework.activity.Startable;
> import org.apache.avalon.framework.activity.Disposable;
> import org.apache.avalon.framework.component.Component;
> @@ -23,7 +23,7 @@
> * and destroyed correctly.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> - * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
> + * @version CVS $Revision: 1.6 $ $Date: 2002/02/19 20:48:03 $
> * @since 4.0
> */
> public final class ThreadSafeComponentHandler implements ComponentHandler {
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/AbstractRol
>eManager.java
>
> Index: AbstractRoleManager.java
> ===================================================================
> /*
> * 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.system.util;
>
> import org.apache.avalon.framework.component.Component;
>
> import java.util.ArrayList;
> import java.util.Collections;
> import java.util.List;
> import java.util.Map;
>
> /**
> * The Excalibur Role Manager is used for Excalibur Role Mappings. All of the
> * information is hard-coded.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public abstract class AbstractRoleManager
> implements RoleManager
> {
> protected static final String EMPTY_STRING = "";
>
> protected final ClassLoader m_loader;
>
> /** Map for shorthand to class mapping */
> protected Map m_shorthands;
>
> /** Map for role to classname mapping */
> protected Map m_classNames;
>
> /** Map for role to handler classname mapping */
> protected Map m_handlerNames;
>
> /** Parent <code>RoleManager</code> for nested resolution */
> protected final RoleManager m_parent;
>
> /**
> * Default constructor--this RoleManager has no parent.
> */
> public AbstractRoleManager()
> {
> this( null );
> }
>
> /**
> * Alternate constructor--this RoleManager has the specified
> * parent.
> *
> * @param parent The parent <code>RoleManager</code>.
> */
> public AbstractRoleManager(RoleManager parent)
> {
> this( parent, Thread.currentThread().getContextClassLoader() );
> }
>
> /**
> * Alternate constructor--this RoleManager has the specified
> * parent.
> *
> * @param parent The parent <code>RoleManager</code>.
> */
> public AbstractRoleManager(RoleManager parent, ClassLoader loader)
> {
> ClassLoader thisLoader = loader;
>
> if ( null == thisLoader )
> {
> thisLoader = Thread.currentThread().getContextClassLoader();
> }
>
> m_loader = thisLoader;
> m_parent = parent;
> }
>
> protected void setup( Map shorts, Map classes, Map handlers,
> String shortName, String role, String className,
> String handlerClassName )
> {
> final Class klass;
> Class handlerKlass;
>
> try
> {
> klass = m_loader.loadClass( className );
>
> if ( ! Component.class.isAssignableFrom( klass ) )
> {
> // Do not store reference if it is not a Component
> return;
> }
> }
> catch ( Exception e )
> {
> // Do not store reference if class does not exist.
> return;
> }
>
> try
> {
> handlerKlass = m_loader.loadClass( handlerClassName );
> }
> catch ( Exception e )
> {
> handlerKlass =
>org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler.class;
> }
>
> shorts.put( shortName, klass );
> shorts.put( klass, shortName );
> classes.put( klass,
> role );
>
> List classList = (List) classes.get( role );
>
> if ( null == classList )
> {
> classList = new ArrayList(5);
> }
>
> classList.add( klass );
> classes.put( role, classList );
>
> handlers.put( klass, handlerKlass );
> }
>
> /**
> * Find the Class for the given shorthand name. If there is no
> * correspondence between the class and the shorthand name, the method
> * returns <code>null</code>. If this RoleManager does not have the match,
> * and there is a parent RoleManager, the parent will be asked to resolve
> * the request.
> */
> public final Class getClassForName( final String shorthandName )
> {
> if (shorthandName == null) return null;
>
> final Class component = (Class)m_shorthands.get( shorthandName );
>
> if( null == component && null != m_parent )
> {
> return m_parent.getClassForName( shorthandName );
> }
>
> return component;
> }
>
> /**
> * Retrieves the real role name from a shorthand name. Usually
> * the shorthand name refers to a configuration element name. If
> * this RoleManager does not have the match, and there is a parent
> * RoleManager, the parent will be asked to resolve the role.
> *
> * @param shorthandName The shortname that is an alias for the role.
> * @return the official role name.
> */
> public final String getNameForClass( final Class klass )
> {
> final String shorthandName = (String)m_shorthands.get( klass );
>
> if( null == shorthandName && null != m_parent )
> {
> return m_parent.getNameForClass( klass );
> }
>
> return shorthandName;
> }
>
> /**
> * Retrieves the handler class name for the specified class name. This
> * is called for every ComponentImplementation. If this RoleManager does
> * not have the match, and there is a parent RoleManager, the parent will be
> * asked to resolve the handler's class name.
> *
> * @param role The role that has a default implementation.
> * @return the Fully Qualified Class Name (FQCN) for the role.
> */
> public final Class getHandlerClassForClass( final Class className )
> {
> final Class handler = (Class)m_handlerNames.get( className );
>
> if( null == handler && null != m_parent )
> {
> return m_parent.getHandlerClassForClass( className );
> }
>
> return handler;
> }
>
> /**
> * Retrieves the default class name for the specified role. This
> * is only called when the configuration does not specify the
> * class explicitly. If this RoleManager does not have the match,
> * and there is a parent RoleManager, the parent will be asked
> * to resolve the class name.
> *
> * @param role The role that has a default implementation.
> * @return the Fully Qualified Class Name (FQCN) for the role.
> */
> public final Class[] getClassesForRole( final String role )
> {
> final List classes = (List)m_classNames.get( role );
>
> if( null == classes && null != m_parent )
> {
> return m_parent.getClassesForRole( role );
> }
>
> return (Class []) classes.toArray( new Class[] {} );
> }
>
> /**
> * Retrieves a default class name for a role/hint combination.
> * This is only called when a role is mapped to a
> * DefaultComponentSelector, and the configuration elements use
> * shorthand names for the type of component. If this RoleManager
> * does not have the match, and there is a parent RoleManager, the
> * parent will be asked to resolve the class name.
> *
> * @param role The role that this shorthand refers to.
> * @param shorthand The shorthand name for the type of Component
> * @return the FQCN for the role/hint combination.
> */
> public final String getRoleForClass( final Class klass )
> {
> final String role = (String)m_classNames.get( klass );
>
> if( null == role )
> {
> if( null != m_parent )
> {
> return m_parent.getRoleForClass( klass );
> }
> else
> {
> return EMPTY_STRING;
> }
> }
>
> return role;
> }
> }
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/Configurabl
>eRoleManager.java
>
> Index: ConfigurableRoleManager.java
> ===================================================================
> /*
> * 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.system.util;
>
> import java.util.Collections;
> import java.util.HashMap;
> import java.util.Map;
> 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.logger.AbstractLoggable;
>
> /**
> * Configurable RoleManager implementation. It populates the RoleManager
> * from a configuration hierarchy. This is based on the DefaultRoleManager
> * in the org.apache.avalon.component package.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public class ConfigurableRoleManager
> extends AbstractRoleManager
> implements Configurable
> {
> /**
> * Default constructor--this RoleManager has no parent.
> */
> public ConfigurableRoleManager()
> {
> super( null );
> }
>
>
> /**
> * Alternate constructor--this RoleManager has the specified
> * parent.
> *
> * @param parent The parent <code>RoleManager</code>.
> */
> public ConfigurableRoleManager(RoleManager parent)
> {
> super( parent, Thread.currentThread().getContextClassLoader() );
> }
>
> /**
> * Alternate constructor--this RoleManager has the specified
> * parent and a classloader.
> *
> * @param parent The parent <code>RoleManager</code>.
> */
> public ConfigurableRoleManager(RoleManager parent, ClassLoader loader)
> {
> super( parent, loader );
> }
>
>
> /**
> * Reads a configuration object and creates the role, shorthand,
> * and class name mapping.
> *
> * @param configuration The configuration object.
> * @throws ConfigurationException if the configuration is malformed
> */
> public final void configure( final Configuration configuration )
> throws ConfigurationException
> {
> final Map shorts = new HashMap();
> final Map classes = new HashMap();
> final Map handlers = new HashMap();
> final Map hintclasses = new HashMap();
>
> final Configuration[] roles = configuration.getChildren( "role" );
>
> for( int i = 0; i < roles.length; i++ )
> {
> final String role = roles[ i ].getAttribute( "name" );
> Configuration[] components = roles[i].getChildren( "component" );
>
> for ( int j = 0; j < components.length; j++)
> {
> final String shorthand = components[ j ].getAttribute( "shorthand" );
> final String className =
> components[ j ].getAttribute( "class", null );
> final String handlerClassName =
> components[ j ].getAttribute( "handler",
> "org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler" );
>
> setup( shorts, classes, handlers, shorthand, role, className, handlerClassName );
> }
> }
>
> m_shorthands = Collections.unmodifiableMap( shorts );
> m_classNames = Collections.unmodifiableMap( classes );
> m_handlerNames = Collections.unmodifiableMap( handlers );
> }
> }
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/ContextManager.java
>
> Index: ContextManager.java
> ===================================================================
> /*
> * 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.system.util;
>
> /**
> * RoleManager Interface, use this to specify the Components and how they
> * correspond to easy shorthand names. The RoleManager assumes a flat
> * relationship of shorthand names to classes, and classes to roles.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public interface ContextManager
> {
> /**
> * Find the Class for the given shorthand name. If there is no
> * correspondence between the class and the shorthand name, the method
> * returns <code>null</code>. If this RoleManager does not have the match,
> * and there is a parent RoleManager, the parent will be asked to resolve
> * the request.
> */
> Class getClassForName( final String shorthandName );
>
> /**
> * This method is merely a hint for serialization. If this RoleManager does
> * not have the match, and there is a parent RoleManager, the parent will be
> * asked to resolve the request.
> */
> String getNameForClass( final Class component );
>
> /**
> * Get the Role name for a specific class. If the class does not belong to
> * a Component, or the Role is not easily determinable, this method will return
> * <code>null</code>. If this RoleManager does not have the match, and
> * there is a parent RoleManager, the parent will be asked to resolve the
> * request.
> */
> String getRoleForClass( final Class component );
>
> /**
> * Get an array of classes registered with the role manager that implement a
> * role. If this RoleManager does not have the match, and there is a parent
> * RoleManager, the parent will be asked to resolve the request.
> */
> Class[] getClassesForRole( final String role );
>
> /**
> * Retrieves the handler class name for the specified class. This
> * is called for every Component Implementation. If this RoleManager does
> * not have the match, and there is a parent RoleManager, the parent will be
> * asked to resolve the handler's class name.
> *
> * @param class The class of the Component in question.
> * @return the Class instance of the ComponentHandler.
> */
> Class getHandlerClassForClass( final Class className );
> }
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/ExcaliburRo
>leManager.java
>
> Index: ExcaliburRoleManager.java
> ===================================================================
> /*
> * 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.system.util;
>
> import org.apache.avalon.framework.component.Component;
>
> import java.util.ArrayList;
> import java.util.Collections;
> import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
>
> /**
> * The Excalibur Role Manager is used for Excalibur Role Mappings. All of the
> * information is hard-coded.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public class ExcaliburRoleManager
> extends AbstractRoleManager
> {
> /**
> * Default constructor--this RoleManager has no parent.
> */
> public ExcaliburRoleManager()
> {
> super( null );
> }
>
> /**
> * Alternate constructor--this RoleManager has the specified
> * parent.
> *
> * @param parent The parent <code>RoleManager</code>.
> */
> public ExcaliburRoleManager(RoleManager parent)
> {
> super( parent, Thread.currentThread().getContextClassLoader() );
> }
>
> /**
> * Alternate constructor--this RoleManager has the specified
> * parent and a classloader.
> *
> * @param parent The parent <code>RoleManager</code>.
> */
> public ExcaliburRoleManager(RoleManager parent, ClassLoader loader)
> {
> super( parent, loader );
>
> HashMap shorts = new HashMap( 10 );
> HashMap classes = new HashMap( 10 );
> HashMap handlers = new HashMap( 10 );
>
> /* Set up Cache relations */
> setup( shorts, classes, handlers, "cache",
> "org.apache.avalon.excalibur.cache.Cache",
> "org.apache.avalon.excalibur.cache.DefaultCache",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
> setup( shorts, classes, handlers, "lru-cache",
> "org.apache.avalon.excalibur.cache.Cache",
> "org.apache.avalon.excalibur.cache.LRUCache",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
>
> /* Set up DataSource relations */
> setup( shorts, classes, handlers, "jdbc-datasource",
> "org.apache.avalon.excalibur.datasource.DataSourceComponent",
> "org.apache.avalon.excalibur.datasource.JdbcDataSource",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
> setup( shorts, classes, handlers, "j2ee-datasource",
> "org.apache.avalon.excalibur.datasource.DataSourceComponent",
> "org.apache.avalon.excalibur.datasource.J2eeDataSource",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
> setup( shorts, classes, handlers, "informix-datasource",
> "org.apache.avalon.excalibur.datasource.DataSourceComponent",
> "org.apache.avalon.excalibur.datasource.InformixDataSource",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
>
> /* Set up i18n relations */
> setup( shorts, classes, handlers, "i18n",
> "org.apache.avalon.excalibur.i18n.BundleSelector",
> "org.apache.avalon.excalibur.i18n.BundleSelector",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
>
> /* Set up Monitor relations */
> setup( shorts, classes, handlers, "monitor",
> "org.apache.avalon.excalibur.monitor.Monitor",
> "org.apache.avalon.excalibur.monitor.ActiveMonitor",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
> setup( shorts, classes, handlers, "passive-monitor",
> "org.apache.avalon.excalibur.monitor.Monitor",
> "org.apache.avalon.excalibur.monitor.PassiveMonitor",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
>
> /* Set up XPath relations */
> setup( shorts, classes, handlers, "xalan-xpath",
> "org.apache.avalon.excalibur.xml.xpath.XPathProcessor",
> "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
> setup( shorts, classes, handlers, "jaxpath",
> "org.apache.avalon.excalibur.xml.xpath.XPathProcessor",
> "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
>
> /* Set up SourceResolver relations */
> setup( shorts, classes, handlers, "resolver",
> "org.apache.avalon.excalibur.source.SourceResolver",
> "org.apache.avalon.excalibur.source.SourceResolverImpl",
> "org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" );
>
> /* Set up XML parser relations */
> setup( shorts, classes, handlers, "parser",
> "org.apache.avalon.excalibur.xml.Parser",
> "org.apache.avalon.excalibur.xml.JaxpParser",
> "org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler" );
> setup( shorts, classes, handlers, "xerces-parser",
> "org.apache.avalon.excalibur.xml.Parser",
> "org.apache.avalon.excalibur.xml.XercesParser",
> "org.apache.avalon.excalibur.system.handler.FactoryComponentHandler" );
>
> m_shorthands = Collections.unmodifiableMap( shorts );
> m_classNames = Collections.unmodifiableMap( classes );
> m_handlerNames = Collections.unmodifiableMap( handlers );
> }
> }
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/RoleManager.java
>
> Index: RoleManager.java
> ===================================================================
> /*
> * 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.system.util;
>
> /**
> * RoleManager Interface, use this to specify the Components and how they
> * correspond to easy shorthand names. The RoleManager assumes a flat
> * relationship of shorthand names to classes, and classes to roles.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public interface RoleManager
> {
> /**
> * Find the Class for the given shorthand name. If there is no
> * correspondence between the class and the shorthand name, the method
> * returns <code>null</code>. If this RoleManager does not have the match,
> * and there is a parent RoleManager, the parent will be asked to resolve
> * the request.
> */
> Class getClassForName( final String shorthandName );
>
> /**
> * This method is merely a hint for serialization. If this RoleManager does
> * not have the match, and there is a parent RoleManager, the parent will be
> * asked to resolve the request.
> */
> String getNameForClass( final Class component );
>
> /**
> * Get the Role name for a specific class. If the class does not belong to
> * a Component, or the Role is not easily determinable, this method will return
> * <code>null</code>. If this RoleManager does not have the match, and
> * there is a parent RoleManager, the parent will be asked to resolve the
> * request.
> */
> String getRoleForClass( final Class component );
>
> /**
> * Get an array of classes registered with the role manager that implement a
> * role. If this RoleManager does not have the match, and there is a parent
> * RoleManager, the parent will be asked to resolve the request.
> */
> Class[] getClassesForRole( final String role );
>
> /**
> * Retrieves the handler class name for the specified class. This
> * is called for every Component Implementation. If this RoleManager does
> * not have the match, and there is a parent RoleManager, the parent will be
> * asked to resolve the handler's class name.
> *
> * @param class The class of the Component in question.
> * @return the Class instance of the ComponentHandler.
> */
> Class getHandlerClassForClass( final Class className );
> }
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test/Config
>urableRoleManagerTestCase.java
>
> Index: ConfigurableRoleManagerTestCase.java
> ===================================================================
> /*
> * 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.system.util.test;
>
> import org.apache.avalon.excalibur.system.util.ConfigurableRoleManager;
> import org.apache.avalon.framework.configuration.*;
>
> import junit.framework.TestCase;
>
> /**
> * Configurable RoleManager implementation. It populates the RoleManager
> * from a configuration hierarchy. This is based on the DefaultRoleManager
> * in the org.apache.avalon.component package.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public class ConfigurableRoleManagerTestCase
> extends TestCase
> {
> /**
> * Default constructor--this RoleManager has no parent.
> */
> public ConfigurableRoleManagerTestCase( String name )
> {
> super( name );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testShorthandReturnValues()
> throws Exception
> {
> DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
> ConfigurableRoleManager roles = new ConfigurableRoleManager( null,
>this.getClass().getClassLoader() );
> roles.configure( builder.build(this.getClass().getClassLoader()
> .getResourceAsStream(
>"org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
>
> assertEquals(
> roles.getClassForName( "datasource" ),
> Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
> );
> assertEquals(
> roles.getClassForName( "monitor" ),
> Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
> );
> assertEquals(
> roles.getClassForName( "parser" ),
> Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
> );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testShorthandRemapReturnValues()
> throws Exception
> {
> DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
> ConfigurableRoleManager roles = new ConfigurableRoleManager( null,
>this.getClass().getClassLoader() );
> roles.configure( builder.build(this.getClass().getClassLoader()
> .getResourceAsStream(
>"org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
>
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
> "datasource"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
> "monitor"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.JaxpParser" ) ),
> "parser"
> );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testRoleForClass()
> throws Exception
> {
> DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
> ConfigurableRoleManager roles = new ConfigurableRoleManager( null,
>this.getClass().getClassLoader() );
> roles.configure( builder.build(this.getClass().getClassLoader()
> .getResourceAsStream(
>"org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
>
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
> "org.apache.avalon.excalibur.datasource.DataSourceComponent"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
> "org.apache.avalon.excalibur.monitor.Monitor"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.JaxpParser" ) ),
> "org.apache.avalon.excalibur.xml.Parser"
> );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testClassesForRole()
> throws Exception
> {
> DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
> ConfigurableRoleManager roles = new ConfigurableRoleManager( null,
>this.getClass().getClassLoader() );
> roles.configure( builder.build(this.getClass().getClassLoader()
> .getResourceAsStream(
>"org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
>
> Class[] classes = roles.getClassesForRole(
>"org.apache.avalon.excalibur.datasource.DataSourceComponent" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
> );
>
> classes = roles.getClassesForRole( "org.apache.avalon.excalibur.monitor.Monitor" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
> );
>
> classes = roles.getClassesForRole( "org.apache.avalon.excalibur.xml.Parser" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
> );
> }
>
> /**
> * Test the handler class return values.
> */
> public void testHandlerClassReturnValues()
> throws Exception
> {
> DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
> ConfigurableRoleManager roles = new ConfigurableRoleManager( null,
>this.getClass().getClassLoader() );
> roles.configure( builder.build(this.getClass().getClassLoader()
> .getResourceAsStream(
>"org/apache/avalon/excalibur/system/test/ContainerProfile.roles" ) ) );
>
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.JaxpParser" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.PoolableComponentHandler" )
> );
> }
> }
>
>
>
> 1.1
>jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/util/test/Excali
>burRoleManagerTestCase.java
>
> Index: ExcaliburRoleManagerTestCase.java
> ===================================================================
> /*
> * 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.system.util.test;
>
> import org.apache.avalon.excalibur.system.util.ExcaliburRoleManager;
>
> import junit.framework.TestCase;
>
> /**
> * Configurable RoleManager implementation. It populates the RoleManager
> * from a configuration hierarchy. This is based on the DefaultRoleManager
> * in the org.apache.avalon.component package.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2002/02/19 20:48:04 $
> * @since 4.1
> */
> public class ExcaliburRoleManagerTestCase
> extends TestCase
> {
> /**
> * Default constructor--this RoleManager has no parent.
> */
> public ExcaliburRoleManagerTestCase( String name )
> {
> super( name );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testShorthandReturnValues()
> throws Exception
> {
> ExcaliburRoleManager roles = new ExcaliburRoleManager( null,
>this.getClass().getClassLoader() );
>
> assertEquals(
> roles.getClassForName( "cache" ),
> Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" )
> );
> assertEquals(
> roles.getClassForName( "lru-cache" ),
> Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" )
> );
> assertEquals(
> roles.getClassForName( "jdbc-datasource" ),
> Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
> );
> assertEquals(
> roles.getClassForName( "j2ee-datasource" ),
> Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" )
> );
> assertEquals(
> roles.getClassForName( "informix-datasource" ),
> Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" )
> );
> assertEquals(
> roles.getClassForName( "i18n" ),
> Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" )
> );
> assertEquals(
> roles.getClassForName( "monitor" ),
> Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
> );
> assertEquals(
> roles.getClassForName( "passive-monitor" ),
> Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" )
> );
> assertEquals(
> roles.getClassForName( "xalan-xpath" ),
> Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" )
> );
> assertEquals(
> roles.getClassForName( "jaxpath" ),
> Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" )
> );
> assertEquals(
> roles.getClassForName( "resolver" ),
> Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" )
> );
> assertEquals(
> roles.getClassForName( "parser" ),
> Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
> );
> assertEquals(
> roles.getClassForName( "xerces-parser" ),
> Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" )
> );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testShorthandRemapReturnValues()
> throws Exception
> {
> ExcaliburRoleManager roles = new ExcaliburRoleManager( null,
>this.getClass().getClassLoader() );
>
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.cache.DefaultCache" ) ),
> "cache"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.cache.LRUCache" ) ),
> "lru-cache"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
> "jdbc-datasource"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.J2eeDataSource" ) ),
> "j2ee-datasource"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.InformixDataSource" ) ),
> "informix-datasource"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.i18n.BundleSelector" ) ),
> "i18n"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
> "monitor"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.PassiveMonitor" ) ),
> "passive-monitor"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" ) ),
> "xalan-xpath"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" ) ),
> "jaxpath"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.source.SourceResolverImpl" ) ),
> "resolver"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.JaxpParser" ) ),
> "parser"
> );
> assertEquals(
> roles.getNameForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.XercesParser" ) ),
> "xerces-parser"
> );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testRoleForClass()
> throws Exception
> {
> ExcaliburRoleManager roles = new ExcaliburRoleManager( null,
>this.getClass().getClassLoader() );
>
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.cache.DefaultCache" ) ),
> "org.apache.avalon.excalibur.cache.Cache"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.cache.LRUCache" ) ),
> "org.apache.avalon.excalibur.cache.Cache"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
> "org.apache.avalon.excalibur.datasource.DataSourceComponent"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.J2eeDataSource" ) ),
> "org.apache.avalon.excalibur.datasource.DataSourceComponent"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.InformixDataSource" ) ),
> "org.apache.avalon.excalibur.datasource.DataSourceComponent"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.i18n.BundleSelector" ) ),
> "org.apache.avalon.excalibur.i18n.BundleSelector"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
> "org.apache.avalon.excalibur.monitor.Monitor"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.PassiveMonitor" ) ),
> "org.apache.avalon.excalibur.monitor.Monitor"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" ) ),
> "org.apache.avalon.excalibur.xml.xpath.XPathProcessor"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" ) ),
> "org.apache.avalon.excalibur.xml.xpath.XPathProcessor"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.source.SourceResolverImpl" ) ),
> "org.apache.avalon.excalibur.source.SourceResolver"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.JaxpParser" ) ),
> "org.apache.avalon.excalibur.xml.Parser"
> );
> assertEquals(
> roles.getRoleForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.XercesParser" ) ),
> "org.apache.avalon.excalibur.xml.Parser"
> );
> }
>
> /**
> * Test the shorthand return values.
> */
> public void testClassesForRole()
> throws Exception
> {
> ExcaliburRoleManager roles = new ExcaliburRoleManager( null,
>this.getClass().getClassLoader() );
>
> Class[] classes = roles.getClassesForRole( "org.apache.avalon.excalibur.cache.Cache" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.cache.DefaultCache" )
> );
> assertEquals(
> classes[1],
> Class.forName( "org.apache.avalon.excalibur.cache.LRUCache" )
> );
>
> classes = roles.getClassesForRole(
>"org.apache.avalon.excalibur.datasource.DataSourceComponent" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.datasource.JdbcDataSource" )
> );
> assertEquals(
> classes[1],
> Class.forName( "org.apache.avalon.excalibur.datasource.J2eeDataSource" )
> );
> assertEquals(
> classes[2],
> Class.forName( "org.apache.avalon.excalibur.datasource.InformixDataSource" )
> );
>
> classes = roles.getClassesForRole( "org.apache.avalon.excalibur.i18n.BundleSelector" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.i18n.BundleSelector" )
> );
>
> classes = roles.getClassesForRole( "org.apache.avalon.excalibur.monitor.Monitor" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.monitor.ActiveMonitor" )
> );
> assertEquals(
> classes[1],
> Class.forName( "org.apache.avalon.excalibur.monitor.PassiveMonitor" )
> );
>
> classes = roles.getClassesForRole(
>"org.apache.avalon.excalibur.xml.xpath.XPathProcessor" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" )
> );
> assertEquals(
> classes[1],
> Class.forName( "org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" )
> );
>
> classes = roles.getClassesForRole( "org.apache.avalon.excalibur.source.SourceResolver" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.source.SourceResolverImpl" )
> );
>
> classes = roles.getClassesForRole( "org.apache.avalon.excalibur.xml.Parser" );
>
> assertEquals(
> classes[0],
> Class.forName( "org.apache.avalon.excalibur.xml.JaxpParser" )
> );
> assertEquals(
> classes[1],
> Class.forName( "org.apache.avalon.excalibur.xml.XercesParser" )
> );
> }
>
> /**
> * Test the handler class return values.
> */
> public void testHandlerClassReturnValues()
> throws Exception
> {
> ExcaliburRoleManager roles = new ExcaliburRoleManager( null,
>this.getClass().getClassLoader() );
>
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.cache.DefaultCache" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.cache.LRUCache" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.JdbcDataSource" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.J2eeDataSource" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.datasource.InformixDataSource" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.i18n.BundleSelector" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.ActiveMonitor" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.monitor.PassiveMonitor" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.xpath.JaxenProcessorImpl" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.source.SourceResolverImpl" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.ThreadSafeComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.JaxpParser" ) ),
> Class.forName(
>"org.apache.avalon.excalibur.system.handler.PerThreadComponentHandler" )
> );
> assertEquals(
> roles.getHandlerClassForClass( Class.forName(
>"org.apache.avalon.excalibur.xml.XercesParser" ) ),
> Class.forName( "org.apache.avalon.excalibur.system.handler.FactoryComponentHandler" )
> );
> }
> }
>
>
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>