You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/02/25 20:06:00 UTC
svn commit: r380967 - in /cocoon/trunk/cocoon-core/src:
main/java/org/apache/cocoon/core/
main/java/org/apache/cocoon/core/container/spring/
test/java/org/apache/cocoon/ test/java/org/apache/cocoon/core/
test/java/org/apache/cocoon/core/container/
Author: cziegeler
Date: Sat Feb 25 11:05:58 2006
New Revision: 380967
URL: http://svn.apache.org/viewcvs?rev=380967&view=rev
Log:
Make tests compilable again
Removed:
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/CoreServiceManagerTestCase.java
Modified:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ComponentInfo.java
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/CocoonTestCase.java
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapComponentTestCase.java
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/TestCoreUtil.java
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/ContainerTestCase.java
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java Sat Feb 25 11:05:58 2006
@@ -739,6 +739,10 @@
}
}
+ public CocoonXmlWebApplicationContext getContainer() {
+ return this.container;
+ }
+
/**
* Retreives the "extra-classpath" attribute, that needs to be
* added to the class path.
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java Sat Feb 25 11:05:58 2006
@@ -103,7 +103,7 @@
* @return A new root application context.
* @throws Exception
*/
- public static ApplicationContext createRootApplicationContext(AvalonEnvironment env)
+ public static CocoonXmlWebApplicationContext createRootApplicationContext(AvalonEnvironment env)
throws Exception {
final ApplicationContext parent = (ApplicationContext)env.servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
CocoonXmlWebApplicationContext context = new CocoonXmlWebApplicationContext(parent);
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ComponentInfo.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ComponentInfo.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ComponentInfo.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ComponentInfo.java Sat Feb 25 11:05:58 2006
@@ -292,6 +292,10 @@
return defaultValue;
}
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
/**
* Create a new component info with the same configuration
* as the current one.
Modified: cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/CocoonTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/CocoonTestCase.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/CocoonTestCase.java (original)
+++ cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/CocoonTestCase.java Sat Feb 25 11:05:58 2006
@@ -16,12 +16,10 @@
package org.apache.cocoon;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.cocoon.core.container.CoreServiceManager;
-import org.apache.cocoon.core.container.StandaloneServiceSelector;
import org.apache.cocoon.core.container.ContainerTestCase;
+import org.apache.cocoon.core.container.spring.ComponentInfo;
+import org.apache.cocoon.core.container.spring.ConfigurationInfo;
+import org.apache.excalibur.source.SourceFactory;
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.impl.ResourceSourceFactory;
import org.apache.excalibur.source.impl.SourceResolverImpl;
@@ -34,33 +32,40 @@
*/
public abstract class CocoonTestCase extends ContainerTestCase {
- /* (non-Javadoc)
- * @see org.apache.cocoon.core.container.ContainerTestCase#addComponents(org.apache.cocoon.core.container.CocoonServiceManager)
+ /**
+ * @see org.apache.cocoon.core.container.ContainerTestCase#addComponents(org.apache.cocoon.core.container.spring.CocoonXmlWebApplicationContext)
*/
- protected void addComponents(CoreServiceManager manager)
- throws ServiceException, ConfigurationException {
- super.addComponents(manager);
+ protected void addComponents(ConfigurationInfo info)
+ throws Exception {
+ super.addComponents(info);
if ( this.addSourceFactories() ) {
- // Create configuration for source-factories
- final DefaultConfiguration df = new DefaultConfiguration("source-factories");
- DefaultConfiguration factory = new DefaultConfiguration("component-instance");
- factory.setAttribute("class", ResourceSourceFactory.class.getName());
- factory.setAttribute("name", "resource");
- df.addChild(factory);
- factory = new DefaultConfiguration("component-instance");
- factory.setAttribute("class", URLSourceFactory.class.getName());
- factory.setAttribute("name", "*");
- df.addChild(factory);
- manager.addComponent("org.apache.excalibur.source.SourceFactorySelector",
- StandaloneServiceSelector.class.getName(),
- df,
- null);
+ ComponentInfo component;
+ // Add resource source factory
+ component = new ComponentInfo();
+ component.setComponentClassName(ResourceSourceFactory.class.getName());
+ component.setRole(SourceFactory.ROLE + "/resource");
+ info.addComponent(component);
+
+ // Add url source source factory
+ component = new ComponentInfo();
+ component.setComponentClassName(URLSourceFactory.class.getName());
+ component.setRole(SourceFactory.ROLE + "/*");
+ info.addComponent(component);
+
+ // add source factory selector
+ component = new ComponentInfo();
+ component.setModel(ComponentInfo.MODEL_SINGLETON);
+ component.setComponentClassName(SourceFactory.ROLE + "Selector");
+ component.setRole("org.apache.cocoon.core.container.DefaultServiceSelector");
+ component.setAlias("source-factories");
+ component.setDefaultValue("*");
+ info.addComponent(component);
}
if ( this.addSourceResolver() ) {
- manager.addComponent(SourceResolver.ROLE,
- SourceResolverImpl.class.getName(),
- new DefaultConfiguration("", "-"),
- null);
+ ComponentInfo component = new ComponentInfo();
+ component.setComponentClassName(SourceResolverImpl.class.getName());
+ component.setRole(SourceResolver.ROLE);
+ info.addComponent(component);
}
}
Modified: cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapComponentTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapComponentTestCase.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapComponentTestCase.java (original)
+++ cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapComponentTestCase.java Sat Feb 25 11:05:58 2006
@@ -28,8 +28,6 @@
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-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;
@@ -40,8 +38,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.CoreServiceManager;
-import org.apache.cocoon.core.container.StandaloneServiceSelector;
+import org.apache.cocoon.core.container.spring.ComponentInfo;
+import org.apache.cocoon.core.container.spring.ConfigurationInfo;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
import org.apache.cocoon.environment.mock.MockContext;
@@ -107,7 +105,7 @@
context.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, getContext());
}
- /* (non-Javadoc)
+ /**
* @see junit.framework.TestCase#setUp()
*/
public void setUp() throws Exception {
@@ -126,28 +124,31 @@
redirector.reset();
}
- /* (non-Javadoc)
- * @see org.apache.cocoon.core.container.ContainerTestCase#addComponents(org.apache.cocoon.core.container.CocoonServiceManager)
+ /**
+ * @see org.apache.cocoon.CocoonTestCase#addComponents(org.apache.cocoon.core.container.spring.ConfigurationInfo)
*/
- protected void addComponents(CoreServiceManager manager)
- throws ServiceException, ConfigurationException {
- super.addComponents(manager);
+ protected void addComponents(ConfigurationInfo info)
+ throws Exception {
+ super.addComponents(info);
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",
- StandaloneServiceSelector.class.getName(),
- df,
- null);
+
+ // Add component
+ ComponentInfo component = new ComponentInfo();
+ component.setComponentClassName(componentClassName);
+ component.setRole(typeClassName + "/" + key);
+ info.addComponent(component);
+
+ // add selector
+ component = new ComponentInfo();
+ component.setModel(ComponentInfo.MODEL_SINGLETON);
+ component.setComponentClassName(typeClassName + "Selector");
+ component.setRole("org.apache.cocoon.core.container.DefaultServiceSelector");
+ component.setDefaultValue(key);
+ info.addComponent(component);
}
}
Modified: cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java (original)
+++ cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java Sat Feb 25 11:05:58 2006
@@ -26,12 +26,14 @@
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.Cocoon;
import org.apache.cocoon.Processor;
import org.apache.cocoon.core.BootstrapEnvironment;
import org.apache.cocoon.core.CoreUtil;
import org.apache.cocoon.core.TestBootstrapEnvironment;
import org.apache.cocoon.core.TestCoreUtil;
+import org.apache.cocoon.core.container.spring.CocoonXmlWebApplicationContext;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.mock.MockContext;
import org.apache.cocoon.environment.mock.MockEnvironment;
@@ -49,7 +51,9 @@
private CoreUtil coreUtil;
private Processor processor;
private String classDir;
-
+ private CocoonXmlWebApplicationContext container;
+ private ServiceManager serviceManager;
+
protected String processorClassName = Cocoon.class.getName();
protected void setUp() throws Exception {
@@ -78,6 +82,8 @@
this.coreUtil = new TestCoreUtil(env);
this.processor = this.coreUtil.createProcessor();
+ this.container = this.coreUtil.getContainer();
+ this.serviceManager = (ServiceManager)this.container.getBean(ServiceManager.class.getName());
}
protected void tearDown() throws Exception {
@@ -91,17 +97,11 @@
}
protected final Object lookup( final String key ) throws ServiceException {
- if (this.processor instanceof Cocoon) {
- return ((Cocoon)this.processor).getServiceManager().lookup( key );
- } else {
- throw new ServiceException(key, "The processor have no service manager");
- }
+ return this.serviceManager.lookup(key);
}
protected final void release( final Object object ) {
- if (this.processor instanceof Cocoon) {
- ((Cocoon)this.processor).getServiceManager().release( object );
- }
+ this.serviceManager.release(object);
}
protected String getConfiguration() {
Modified: cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/TestCoreUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/TestCoreUtil.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/TestCoreUtil.java (original)
+++ cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/TestCoreUtil.java Sat Feb 25 11:05:58 2006
@@ -26,11 +26,6 @@
this.classloader = TestCoreUtil.class.getClassLoader();
}
- // Simplified logging
- protected void initLogger() {
- this.log = ((TestBootstrapEnvironment)this.env).logger;
- }
-
// Simplified classloader handling
protected void updateEnvironment() throws Exception {}
}
Modified: cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/ContainerTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/ContainerTestCase.java?rev=380967&r1=380966&r2=380967&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/ContainerTestCase.java (original)
+++ cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/ContainerTestCase.java Sat Feb 25 11:05:58 2006
@@ -21,10 +21,8 @@
import junit.framework.TestCase;
-import org.apache.avalon.excalibur.logger.LoggerManager;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
import org.apache.avalon.framework.container.ContainerUtil;
@@ -38,6 +36,12 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.core.Core;
import org.apache.cocoon.core.MutableSettings;
+import org.apache.cocoon.core.container.spring.ApplicationContextFactory;
+import org.apache.cocoon.core.container.spring.AvalonEnvironment;
+import org.apache.cocoon.core.container.spring.CocoonXmlWebApplicationContext;
+import org.apache.cocoon.core.container.spring.ConfigReader;
+import org.apache.cocoon.core.container.spring.ConfigurationInfo;
+import org.apache.cocoon.environment.mock.MockContext;
/**
* JUnit TestCase for Cocoon Components.
@@ -129,18 +133,21 @@
/** The context */
private Context context;
-
+
+ /** The root application context. */
+ private CocoonXmlWebApplicationContext rootContext;
+
/** Return the logger */
protected Logger getLogger() {
return logger;
}
- /** Return the service manager */
+ /** Return the service manager. */
protected ServiceManager getManager() {
return this.manager;
}
-
- /* (non-Javadoc)
+
+ /**
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
@@ -196,32 +203,13 @@
conf = new DefaultConfiguration("", "-");
}
- this.prepare( conf.getChild( "context" ),
- conf.getChild( "roles" ),
- conf.getChild( "components" ) );
- }
-
- /**
- * Initializes the ComponentLocator
- *
- * @param context The configuration object for the context
- * @param roles The configuration object for the roles
- * @param components The configuration object for the components
- *
- * More detailed control over configuration can be achieved by
- * overriding <code>prepare()</code>, construct the configuration
- * objects and call this method.
- */
- protected final void prepare( final Configuration context,
- final Configuration roles,
- final Configuration components )
- throws Exception {
- this.context = this.setupContext( context );
+ // setup context
+ this.context = this.setupContext( conf.getChild( "context" ) );
- this.setupManagers( components, roles );
+ this.setupManagers( conf.getChild( "components" ), conf.getChild( "roles" ) );
}
- /* (non-Javadoc)
+ /**
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
@@ -233,10 +221,13 @@
* Disposes the <code>ComponentLocator</code>
*/
final private void done() {
- if( manager != null ) {
- ContainerUtil.dispose(manager);
- manager = null;
+ if( this.rootContext != null ) {
+ this.rootContext.destroy();
+ this.rootContext = null;
}
+ this.manager = null;
+ this.context = null;
+ this.logger = null;
}
/**
@@ -268,6 +259,7 @@
}
}
this.addContext( context );
+ context.makeReadOnly();
return context ;
}
@@ -283,34 +275,32 @@
* This method may be overwritten by subclasses to add aditional
* components.
*/
- protected void addComponents( CoreServiceManager manager)
- throws ServiceException, ConfigurationException {
+ protected void addComponents(ConfigurationInfo info)
+ throws Exception {
// subclasses can add components here
}
final private void setupManagers( final Configuration confCM,
final Configuration confRM)
throws Exception {
- // Setup the RoleManager
- RoleManager roleManager = new RoleManager();
- roleManager.enableLogging( this.getLogger() );
- roleManager.configure( confRM );
-
- // Set up root manager for Core
- Core core = new Core(new MutableSettings(), this.context);
- ((DefaultContext)this.context).put(Core.ROLE, core);
- SingleComponentServiceManager rsm = new SingleComponentServiceManager(null, core, Core.ROLE);
-
- // Set up the ComponentLocator
- CoreServiceManager ecManager = new CoreServiceManager(rsm);
- ecManager.enableLogging( this.getLogger() );
- ecManager.contextualize( this.context );
- ecManager.setRoleManager( roleManager );
- ecManager.setLoggerManager( new DefaultLoggerManager(this.logger));
- ecManager.configure( confCM );
- this.addComponents( ecManager );
- ecManager.initialize();
- this.manager = ecManager;
+ final AvalonEnvironment avalonEnv = new AvalonEnvironment();
+ avalonEnv.logger = this.logger;
+ avalonEnv.context = this.context;
+ avalonEnv.settings = new MutableSettings();
+ avalonEnv.core = new Core(avalonEnv.settings, avalonEnv.context);
+ avalonEnv.servletContext = new MockContext();
+
+ this.rootContext = ApplicationContextFactory.createRootApplicationContext(avalonEnv);
+ // read roles
+ ConfigurationInfo rolesInfo = ConfigReader.readConfiguration(confRM, null, avalonEnv);
+ CocoonXmlWebApplicationContext rolesContext = ApplicationContextFactory.createApplicationContext(avalonEnv, rolesInfo, rootContext, true);
+
+ // read components
+ ConfigurationInfo componentsInfo = ConfigReader.readConfiguration(confCM, rolesInfo, avalonEnv);
+ this.addComponents( componentsInfo );
+ CocoonXmlWebApplicationContext componentsContext = ApplicationContextFactory.createApplicationContext(avalonEnv, componentsInfo, rolesContext, false);
+
+ this.manager = (ServiceManager)componentsContext.getBean(ServiceManager.class.getName());
}
protected final Object lookup( final String key )
@@ -363,29 +353,5 @@
protected Object getComponent(String classname)
throws Exception {
return this.getComponent(classname, null, null);
- }
-
- /**
- * We use this simple logger manager that sends all output to the console (logger)
- */
- protected static class DefaultLoggerManager implements LoggerManager {
-
- private Logger logger;
-
- public DefaultLoggerManager(Logger logger) {
- this.logger = logger;
- }
- /* (non-Javadoc)
- * @see org.apache.avalon.excalibur.logger.LoggerManager#getDefaultLogger()
- */
- public Logger getDefaultLogger() {
- return this.logger;
- }
- /* (non-Javadoc)
- * @see org.apache.avalon.excalibur.logger.LoggerManager#getLoggerForCategory(java.lang.String)
- */
- public Logger getLoggerForCategory(String arg0) {
- return this.logger;
- }
}
}