Author: cziegeler Date: Mon Oct 25 05:53:02 2004 New Revision: 55493 Modified: cocoon/trunk/src/core/test/org/apache/cocoon/core/container/ContainerTestCase.java cocoon/trunk/src/test/org/apache/cocoon/SitemapComponentTestCase.java Log: Add some helper methods - not sure if they really help
Modified: cocoon/trunk/src/core/test/org/apache/cocoon/core/container/ContainerTestCase.java ============================================================================== --- cocoon/trunk/src/core/test/org/apache/cocoon/core/container/ContainerTestCase.java (original) +++ cocoon/trunk/src/core/test/org/apache/cocoon/core/container/ContainerTestCase.java Mon Oct 25 05:53:02 2004 @@ -30,6 +30,7 @@ import org.apache.avalon.framework.context.DefaultContext; import org.apache.avalon.framework.logger.ConsoleLogger; import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; @@ -121,6 +122,9 @@ /** The service manager to use */ private ServiceManager manager; + /** The context */ + private Context context; + /** Return the logger */ protected Logger getLogger() { return logger; @@ -184,11 +188,10 @@ conf = new DefaultConfiguration("", "-"); } - final Context context = this.setupContext( conf.getChild( "context" ) ); + this.context = this.setupContext( conf.getChild( "context" ) ); this.setupManagers( conf.getChild( "components" ), - conf.getChild( "roles" ), - context ); + conf.getChild( "roles" )); } /* (non-Javadoc) @@ -259,8 +262,7 @@ } final private void setupManagers( final Configuration confCM, - final Configuration confRM, - final Context context ) + final Configuration confRM) throws Exception { // Setup the RoleManager RoleManager roleManager = new RoleManager(); @@ -270,7 +272,7 @@ // Set up the ComponentLocator CocoonServiceManager ecManager = new CocoonServiceManager(null, null); ecManager.enableLogging( this.getLogger() ); - ecManager.contextualize( context ); + ecManager.contextualize( this.context ); ecManager.setRoleManager( roleManager ); ecManager.setLoggerManager( new DefaultLoggerManager(this.logger)); ecManager.configure( confCM ); @@ -288,6 +290,35 @@ manager.release( object ); } + private Object getComponent(String classname, + Configuration conf, + Parameters p) + throws Exception { + final Object instance = Class.forName(classname).newInstance(); + ContainerUtil.enableLogging(instance, getLogger()); + ContainerUtil.contextualize(instance, this.context); + ContainerUtil.service(instance, getManager()); + ContainerUtil.configure(instance, conf); + ContainerUtil.parameterize(instance, p); + ContainerUtil.initialize(instance); + return instance; + } + + protected Object getComponent(String classname, + Configuration conf) + throws Exception { + return this.getComponent(classname, conf, null); + } + + protected Object getComponent(String classname, + Parameters p) + throws Exception { + return this.getComponent(classname, null, p); + } + + /** + * We use this simple logger manager that sends all output to the console (logger) + */ protected static class DefaultLoggerManager implements LoggerManager { private Logger logger; Modified: cocoon/trunk/src/test/org/apache/cocoon/SitemapComponentTestCase.java ============================================================================== --- cocoon/trunk/src/test/org/apache/cocoon/SitemapComponentTestCase.java (original) +++ cocoon/trunk/src/test/org/apache/cocoon/SitemapComponentTestCase.java Mon Oct 25 05:53:02 2004 @@ -29,6 +29,7 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.avalon.framework.context.DefaultContext; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.service.ServiceException; @@ -39,6 +40,8 @@ import org.apache.cocoon.components.flow.FlowHelper; import org.apache.cocoon.components.flow.Interpreter; import org.apache.cocoon.components.source.SourceResolverAdapter; +import org.apache.cocoon.core.container.CocoonServiceManager; +import org.apache.cocoon.core.container.CocoonServiceSelector; import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.mock.MockContext; import org.apache.cocoon.environment.mock.MockRedirector; @@ -103,6 +106,9 @@ context.put(ContextHelper.CONTEXT_OBJECT_MODEL, objectmodel); } + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ public void setUp() throws Exception { super.setUp(); objectmodel.clear(); @@ -117,6 +123,38 @@ objectmodel.put(ObjectModelHelper.CONTEXT_OBJECT, context); redirector.reset(); + } + + /* (non-Javadoc) + * @see org.apache.cocoon.core.container.ContainerTestCase#addComponents(org.apache.cocoon.core.container.CocoonServiceManager) + */ + protected void addComponents(CocoonServiceManager manager) + throws ServiceException { + super.addComponents(manager); + final String[] o = this.getSitemapComponentInfo(); + if ( o != null ) { + final String typeClassName = o[0]; + final String componentClassName = o[1]; + final String key = o[2]; + + // Create configuration for selector + final DefaultConfiguration df = new DefaultConfiguration("transformers"); + final DefaultConfiguration factory = new DefaultConfiguration("component-instance"); + factory.setAttribute("class", componentClassName); + factory.setAttribute("name", key); + df.addChild(factory); + manager.addComponent(typeClassName + "Selector", + CocoonServiceSelector.class, + df); + } + } + + /** + * This triple can be used to add a sitemap component to the service manager + * @return A triple of strings: class name of the type, class name of the component, key + */ + protected String[] getSitemapComponentInfo() { + return null; } /**