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/19 16:02:25 UTC
svn commit: r378906 - in
/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon:
components/treeprocessor/sitemap/ core/container/spring/
Author: cziegeler
Date: Sun Feb 19 07:02:24 2006
New Revision: 378906
URL: http://svn.apache.org/viewcvs?rev=378906&view=rev
Log:
Start adding spring based tree processor code
Modified:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.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/CocoonXmlWebApplicationContext.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ComponentInfo.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java?rev=378906&r1=378905&r2=378906&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java Sun Feb 19 07:02:24 2006
@@ -23,6 +23,9 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+
+import javax.servlet.ServletConfig;
+
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
@@ -38,10 +41,17 @@
import org.apache.cocoon.components.treeprocessor.CategoryNodeBuilder;
import org.apache.cocoon.components.treeprocessor.DefaultTreeBuilder;
import org.apache.cocoon.components.treeprocessor.TreeBuilder;
+import org.apache.cocoon.core.Core;
+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.Environment;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
import org.apache.cocoon.generation.Generator;
import org.apache.cocoon.serialization.Serializer;
+import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.cocoon.sitemap.ComponentLocator;
import org.apache.cocoon.sitemap.EnterSitemapEventListener;
import org.apache.cocoon.sitemap.LeaveSitemapEventListener;
@@ -51,13 +61,22 @@
import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.util.StringUtils;
import org.apache.regexp.RE;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanCreationException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
/**
* The tree builder for the sitemap language.
*
* @version $Id$
*/
-public class SitemapLanguage extends DefaultTreeBuilder {
+public class SitemapLanguage
+ extends DefaultTreeBuilder
+ implements ApplicationContextAware {
+
+ /** Spring application context. */
+ protected CocoonXmlWebApplicationContext applicationContext;
// Regexp's for splitting expressions
private static final String COMMA_SPLIT_REGEXP = "[\\s]*,[\\s]*";
@@ -94,11 +113,6 @@
// Create the classloader, if needed.
ServiceManager newManager;
- newManager = new CocoonServiceManager(this.parentProcessorManager, classloader);
-
- // Go through the component lifecycle
- ContainerUtil.enableLogging(newManager, this.getLogger());
- ContainerUtil.contextualize(newManager, context);
// before we pass the configuration we have to strip the
// additional configuration parts, like classpath etc. as these
// are not configurations for the service manager
@@ -111,10 +125,32 @@
c.removeChild(config.getChild("classpath"));
c.removeChild(config.getChild("listeners"));
- ContainerUtil.configure(newManager, c);
- ContainerUtil.initialize(newManager);
+ Logger sitemapLogger;
+ // setup spring container
+ if ( this.applicationContext != null ) {
+ final AvalonEnvironment ae = new AvalonEnvironment();
+ ae.context = context;
+ ae.core = (Core)applicationContext.getBean(Core.ROLE);
+ ae.logger = this.getLogger();
+ ae.servletContext = ((ServletConfig)context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG)).getServletContext();
+ ae.settings = ae.core.getSettings();
+ final ConfigurationInfo ci = ConfigReader.readConfiguration(c, this.applicationContext.getConfigurationInfo(), ae);
+ System.out.println("Setting up spring based tree processor.");
+ final ApplicationContext sitemapContext =
+ ApplicationContextFactory.createApplicationContext(ae, ci, this.applicationContext, false);
+ System.out.println("Looked up core: " + sitemapContext.getBean(Core.ROLE));
+ newManager = (ServiceManager) sitemapContext.getBean(ServiceManager.class.getName());
+ sitemapLogger = (Logger)sitemapContext.getBean(Logger.class.getName());
+ } else {
+ newManager = new CocoonServiceManager(this.parentProcessorManager, classloader);
- Logger sitemapLogger = ((CocoonServiceManager)newManager).getServiceManagerLogger();
+ // Go through the component lifecycle
+ ContainerUtil.enableLogging(newManager, this.getLogger());
+ ContainerUtil.contextualize(newManager, context);
+ ContainerUtil.configure(newManager, c);
+ ContainerUtil.initialize(newManager);
+ sitemapLogger = ((CocoonServiceManager)newManager).getServiceManagerLogger();
+ }
// check for an application specific container
final Configuration appContainer = config.getChild("application-container", false);
if ( appContainer != null ) {
@@ -520,5 +556,15 @@
return Collections.EMPTY_SET;
}
return Arrays.asList(StringUtils.split(labels, ", \t\n\r"));
+ }
+
+ /**
+ * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
+ */
+ public void setApplicationContext(ApplicationContext ae) throws BeansException {
+ if ( ! (ae instanceof CocoonXmlWebApplicationContext) ) {
+ throw new BeanCreationException("Application context for tree processor must be an instance of " + CocoonXmlWebApplicationContext.class.getName());
+ }
+ this.applicationContext = (CocoonXmlWebApplicationContext)ae;
}
}
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=378906&r1=378905&r2=378906&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 Sun Feb 19 07:02:24 2006
@@ -60,7 +60,7 @@
CocoonXmlWebApplicationContext context = new CocoonXmlWebApplicationContext(rsc,
parent,
logger,
- info.getComponents(),
+ info,
env.context);
context.addBeanFactoryPostProcessor(new CocoonSettingsConfigurer(env.settings));
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java?rev=378906&r1=378905&r2=378906&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java Sun Feb 19 07:02:24 2006
@@ -60,24 +60,28 @@
protected final Logger avalonLogger;
protected final Context avalonContext;
- protected final Map avalonComponentDefinitions;
+ protected final ConfigurationInfo avalonConfiguration;
public CocoonXmlWebApplicationContext(ApplicationContext parent) {
this(null, parent, null, null, null);
}
- public CocoonXmlWebApplicationContext(Resource avalonResource,
+ public CocoonXmlWebApplicationContext(Resource avalonResource,
ApplicationContext parent,
Logger avalonLogger,
- Map avalonComponentDefs,
+ ConfigurationInfo avalonConfiguration,
Context avalonContext) {
this.setParent(parent);
this.avalonResource = avalonResource;
this.avalonLogger = avalonLogger;
- this.avalonComponentDefinitions = avalonComponentDefs;
+ this.avalonConfiguration = avalonConfiguration;
this.avalonContext = avalonContext;
}
+ public ConfigurationInfo getConfigurationInfo() {
+ return this.avalonConfiguration;
+ }
+
/**
* @see org.springframework.web.context.support.XmlWebApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
*/
@@ -94,8 +98,8 @@
*/
protected DefaultListableBeanFactory createBeanFactory() {
DefaultListableBeanFactory beanFactory = super.createBeanFactory();
- if ( this.avalonComponentDefinitions != null ) {
- AvalonPostProcessor processor = new AvalonPostProcessor(this.avalonComponentDefinitions,
+ if ( this.avalonConfiguration != null ) {
+ AvalonPostProcessor processor = new AvalonPostProcessor(this.avalonConfiguration.getComponents(),
this.avalonContext,
this.avalonLogger,
beanFactory);
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=378906&r1=378905&r2=378906&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 Sun Feb 19 07:02:24 2006
@@ -41,7 +41,7 @@
private String destroyMethodName;
private String poolInMethodName;
private String poolOutMethodName;
- private String serviceClassName;
+ private String componentClassName;
private Configuration configuration;
private Parameters parameters;
private String loggerCategory;
@@ -124,15 +124,15 @@
/**
* @return Returns the serviceClassName.
*/
- public String getServiceClassName() {
- return serviceClassName;
+ public String getComponentClassName() {
+ return componentClassName;
}
/**
* @param serviceClassName The serviceClassName to set.
*/
- public void setServiceClassName(String serviceClassName) {
- this.serviceClassName = serviceClassName;
+ public void setComponentClassName(String serviceClassName) {
+ this.componentClassName = serviceClassName;
}
/**
@@ -157,7 +157,7 @@
* @see java.lang.Object#toString()
*/
public String toString() {
- return "ServiceInfo: {class=" + this.getServiceClassName()+"}";
+ return "ServiceInfo: {class=" + this.getComponentClassName()+"}";
}
public void fill(Configuration attr) {
@@ -218,4 +218,14 @@
this.parameters = parameters;
}
+ /**
+ * Is this a selector?
+ */
+ public boolean isSelector() {
+ if ( this.componentClassName.equals("org.apache.cocoon.core.container.DefaultServiceSelector")
+ || this.componentClassName.equals("org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector") ) {
+ return true;
+ }
+ return false;
+ }
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java?rev=378906&r1=378905&r2=378906&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java Sun Feb 19 07:02:24 2006
@@ -48,23 +48,11 @@
protected SourceResolver resolver;
- /** Map for shorthand to role mapping. */
- private final Map shorthands = new HashMap();
-
- /** Map for role to default classname mapping. */
- private final Map classNames = new HashMap();
-
- /** Map for role->key to classname mapping. */
- private final Map keyClassNames = new HashMap();
-
- /** List of components. */
- private final Map components = new HashMap();
-
- /** Root logger. */
- private String rootLogger;
+ /** The configuration info. */
+ protected ConfigurationInfo configInfo;
/** Avalon environment. */
- private AvalonEnvironment environment;
+ protected AvalonEnvironment environment;
public static ConfigurationInfo readConfiguration(String source, AvalonEnvironment env)
throws Exception {
@@ -75,16 +63,53 @@
ConfigReader converter = new ConfigReader();
converter.resolver = sourceResolver;
converter.environment = env;
-
+ converter.configInfo = new ConfigurationInfo();
+
converter.convert(source);
+ final Iterator i = converter.configInfo.getClassNames().values().iterator();
+ while ( i.hasNext() ) {
+ final ComponentInfo current = (ComponentInfo)i.next();
+ converter.configInfo.addComponent(current);
+ }
+ converter.configInfo.clearClassNames();
+
+ return converter.configInfo;
+ }
+
+ public static ConfigurationInfo readConfiguration(Configuration config,
+ ConfigurationInfo parentInfo,
+ AvalonEnvironment env)
+ throws Exception {
+ final SimpleSourceResolver sourceResolver = new SimpleSourceResolver();
+ sourceResolver.enableLogging(env.logger);
+ sourceResolver.contextualize(env.context);
+
+ ConfigReader converter = new ConfigReader();
+ converter.resolver = sourceResolver;
+ converter.environment = env;
+ converter.configInfo = new ConfigurationInfo(parentInfo);
+ // now add selectors from parent
+ if ( parentInfo != null ) {
+ final Iterator i = parentInfo.getComponents().values().iterator();
+ while ( i.hasNext() ) {
+ final ComponentInfo current = (ComponentInfo)i.next();
+ if ( current.isSelector() ) {
+ converter.configInfo.getClassNames().put(current.getRole(), current);
+ }
+ }
+ }
+ converter.convert(config);
+ final Iterator i = converter.configInfo.getClassNames().values().iterator();
+ while ( i.hasNext() ) {
+ final ComponentInfo current = (ComponentInfo)i.next();
+ converter.configInfo.addComponent(current);
+ }
+ converter.configInfo.clearClassNames();
- ConfigurationInfo info = new ConfigurationInfo();
- info.setComponents(converter.components);
- info.setRootLogger(converter.rootLogger);
- return info;
+ return converter.configInfo;
}
- public ConfigReader() {
+ private ConfigReader() {
// nothing to do
}
@@ -97,20 +122,25 @@
// It's possible to define a logger on a per sitemap/service manager base.
// This is the default logger for all components defined with this sitemap/manager.
- this.rootLogger = config.getAttribute("logger", null);
+ this.configInfo.setRootLogger(config.getAttribute("logger", null));
// and load configuration with a empty list of loaded configurations
- parseConfiguration(config, root.getURI(), new HashSet());
- final Iterator i = this.classNames.values().iterator();
- while ( i.hasNext() ) {
- final ComponentInfo current = (ComponentInfo)i.next();
- this.components.put(current.getRole(), current);
- }
+ this.parseConfiguration(config, root.getURI(), new HashSet());
} finally {
this.resolver.release(root);
}
}
+ protected void convert(Configuration config)
+ throws Exception {
+ // It's possible to define a logger on a per sitemap/service manager base.
+ // This is the default logger for all components defined with this sitemap/manager.
+ this.configInfo.setRootLogger(config.getAttribute("logger", null));
+
+ // and load configuration with a empty list of loaded configurations
+ this.parseConfiguration(config, null, new HashSet());
+ }
+
protected void parseConfiguration(final Configuration configuration,
String contextURI,
Set loadedURIs)
@@ -131,7 +161,7 @@
String role = componentConfig.getAttribute("role", null);
if (role == null) {
// Get the role from the role manager if not explicitely specified
- role = (String)this.shorthands.get( componentName );
+ role = (String)this.configInfo.getShorthands().get( componentName );
if (role == null) {
// Unknown role
throw new ConfigurationException("Unknown component type '" + componentName +
@@ -144,12 +174,12 @@
ComponentInfo info;
if (className == null) {
// Get the default class name for this role
- info = (ComponentInfo)this.classNames.get( role );
+ info = (ComponentInfo)this.configInfo.getClassNames().get( role );
if (info == null) {
throw new ConfigurationException("Cannot find a class for role " + role + " at " + componentConfig.getLocation());
}
- this.classNames.remove(info);
- className = info.getServiceClassName();
+ this.configInfo.getClassNames().remove(info);
+ className = info.getComponentClassName();
} else {
info = new ComponentInfo();
}
@@ -161,11 +191,11 @@
role = role + "/" + name;
}
info.fill(componentConfig);
- info.setServiceClassName(className);
+ info.setComponentClassName(className);
info.setRole(role);
info.setConfiguration(componentConfig);
- this.components.put(info.getRole(), info);
+ this.configInfo.addComponent(info);
// now if this is a selector, then we have to register the single components
if ( info.getConfiguration() != null && className.endsWith("Selector") ) {
String classAttribute = null;
@@ -195,9 +225,9 @@
final ComponentInfo childInfo = new ComponentInfo();
childInfo.fill(current);
childInfo.setConfiguration(current);
- childInfo.setServiceClassName(current.getAttribute(classAttribute));
+ childInfo.setComponentClassName(current.getAttribute(classAttribute));
childInfo.setRole(componentRole + current.getAttribute("name"));
- this.components.put(childInfo.getRole(), childInfo);
+ this.configInfo.addComponent(childInfo);
}
}
}
@@ -329,7 +359,7 @@
if (shorthand != null) {
// Store the shorthand and check that its consistent with any previous one
- Object previous = this.shorthands.put( shorthand, roleName );
+ Object previous = this.configInfo.getShorthands().put( shorthand, roleName );
if (previous != null && !previous.equals(roleName)) {
throw new ConfigurationException("Shorthand '" + shorthand + "' already used for role " +
previous + ": inconsistent declaration at " + role.getLocation());
@@ -337,19 +367,19 @@
}
if ( defaultClassName != null ) {
- ComponentInfo info = (ComponentInfo)this.classNames.get(roleName);
+ ComponentInfo info = (ComponentInfo)this.configInfo.getClassNames().get(roleName);
if (info == null) {
// Create a new info and store it
info = new ComponentInfo();
- info.setServiceClassName(defaultClassName);
+ info.setComponentClassName(defaultClassName);
info.fill(role);
info.setRole(roleName);
info.setConfiguration(role);
- this.classNames.put(roleName, info);
+ this.configInfo.getClassNames().put(roleName, info);
} else {
// Check that it's consistent with the existing info
- if (!defaultClassName.equals(info.getServiceClassName())) {
- throw new ConfigurationException("Invalid redeclaration: default class already set to " + info.getServiceClassName() +
+ if (!defaultClassName.equals(info.getComponentClassName())) {
+ throw new ConfigurationException("Invalid redeclaration: default class already set to " + info.getComponentClassName() +
" for role " + roleName + " at " + role.getLocation());
}
//FIXME: should check also other ServiceInfo members
@@ -358,10 +388,10 @@
final Configuration[] keys = role.getChildren( "hint" );
if( keys.length > 0 ) {
- Map keyMap = (Map)this.keyClassNames.get(roleName);
+ Map keyMap = (Map)this.configInfo.getKeyClassNames().get(roleName);
if (keyMap == null) {
keyMap = new HashMap();
- this.keyClassNames.put(roleName, keyMap);
+ this.configInfo.getKeyClassNames().put(roleName, keyMap);
}
for( int j = 0; j < keys.length; j++ ) {
@@ -373,14 +403,14 @@
ComponentInfo info = (ComponentInfo)keyMap.get(shortHand);
if (info == null) {
info = new ComponentInfo();
- info.setServiceClassName(className);
+ info.setComponentClassName(className);
info.fill(key);
info.setConfiguration(key);
keyMap.put( shortHand, info );
} else {
// Check that it's consistent with the existing info
- if (!className.equals(info.getServiceClassName())) {
- throw new ConfigurationException("Invalid redeclaration: class already set to " + info.getServiceClassName() +
+ if (!className.equals(info.getComponentClassName())) {
+ throw new ConfigurationException("Invalid redeclaration: class already set to " + info.getComponentClassName() +
" for hint " + shortHand + " at " + key.getLocation());
}
//FIXME: should check also other ServiceInfo members
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java?rev=378906&r1=378905&r2=378906&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java Sun Feb 19 07:02:24 2006
@@ -15,6 +15,7 @@
*/
package org.apache.cocoon.core.container.spring;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -27,16 +28,35 @@
*/
public class ConfigurationInfo {
- protected Map components;
-
+ /** Root logger. */
protected String rootLogger;
- public Map getComponents() {
- return components;
+ /** Map for shorthand to role mapping. */
+ private final Map shorthands;
+
+ /** Map for role to default classname mapping. */
+ private final Map classNames;
+
+ /** Map for role->key to classname mapping. */
+ private final Map keyClassNames;
+
+ /** List of components. */
+ private final Map components = new HashMap();
+
+ public ConfigurationInfo() {
+ this.shorthands = new HashMap();
+ this.classNames = new HashMap();
+ this.keyClassNames = new HashMap();
}
- public void setComponents(Map components) {
- this.components = components;
+ public ConfigurationInfo(ConfigurationInfo parent) {
+ this.shorthands = new HashMap(parent.shorthands);
+ this.classNames = new HashMap(parent.classNames);
+ this.keyClassNames = new HashMap(parent.keyClassNames);
+ }
+
+ public Map getComponents() {
+ return components;
}
public String getRootLogger() {
@@ -47,5 +67,23 @@
this.rootLogger = rootLogger;
}
+ public void addComponent(ComponentInfo info) {
+ this.components.put(info.getRole(), info);
+ }
+
+ public Map getClassNames() {
+ return this.classNames;
+ }
+
+ public void clearClassNames() {
+ this.classNames.clear();
+ }
+
+ public Map getShorthands() {
+ return this.shorthands;
+ }
+ public Map getKeyClassNames() {
+ return this.keyClassNames;
+ }
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java?rev=378906&r1=378905&r2=378906&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java Sun Feb 19 07:02:24 2006
@@ -66,13 +66,12 @@
final ComponentInfo current = (ComponentInfo)entry.getValue();
final String role = current.getRole();
- String className = current.getServiceClassName();
+ String className = current.getComponentClassName();
boolean isSelector = false;
boolean singleton = true;
boolean poolable = false;
- // Test for Selector - we skip them
- if ( className.equals("org.apache.cocoon.core.container.DefaultServiceSelector")
- || className.equals("org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector") ) {
+ // Test for Selector - we just create a wrapper for them to flatten the hierarchy
+ if ( current.isSelector() ) {
// Add selector
className = AvalonServiceSelector.class.getName();
isSelector = true;