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/26 19:45:30 UTC
svn commit: r381135 - in /cocoon/trunk:
cocoon-blocks-fw/cocoon-blocks-fw-servlet-impl/src/main/java/org/apache/cocoon/blocks/servlet/
cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/
cocoon-core/src/main/java/org/apache/cocoon/com...
Author: cziegeler
Date: Sun Feb 26 10:45:26 2006
New Revision: 381135
URL: http://svn.apache.org/viewcvs?rev=381135&view=rev
Log:
Remove dependency to ApplicationContext and rename everything to reflect all the recent changes.
Added:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java (with props)
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonBeanFactory.java
- copied, changed from r381130, cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java
Removed:
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
Modified:
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-servlet-impl/src/main/java/org/apache/cocoon/blocks/servlet/BlocksManager.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java
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/CoreUtil.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
cocoon/trunk/cocoon-core/src/test/java/org/apache/cocoon/core/container/ContainerTestCase.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/ManagedCocoonPortlet.java
Modified: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-servlet-impl/src/main/java/org/apache/cocoon/blocks/servlet/BlocksManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-servlet-impl/src/main/java/org/apache/cocoon/blocks/servlet/BlocksManager.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-servlet-impl/src/main/java/org/apache/cocoon/blocks/servlet/BlocksManager.java (original)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-servlet-impl/src/main/java/org/apache/cocoon/blocks/servlet/BlocksManager.java Sun Feb 26 10:45:26 2006
@@ -49,7 +49,7 @@
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.components.source.impl.DelayedRefreshSourceWrapper;
import org.apache.cocoon.core.MutableSettings;
-import org.apache.cocoon.core.container.spring.ApplicationContextFactory;
+import org.apache.cocoon.core.container.spring.BeanFactoryUtil;
import org.apache.cocoon.core.servlet.CoreUtil;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.impl.URLSource;
@@ -87,7 +87,7 @@
}
// FIXME - how do we get the settings object?
- this.logger = ApplicationContextFactory.createRootLogger(this.getServletConfig().getServletContext(), new MutableSettings());
+ this.logger = BeanFactoryUtil.createRootLogger(this.getServletConfig().getServletContext(), new MutableSettings());
this.getLogger().debug("Initializing the Blocks Manager");
InputSource is = null;
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java Sun Feb 26 10:45:26 2006
@@ -36,7 +36,7 @@
*/
public void setBuilder(TreeBuilder treeBuilder) {
this.treeBuilder = treeBuilder;
- this.manager = (ServiceManager)treeBuilder.getApplicationContext().getBean(ServiceManager.class.getName());
+ this.manager = (ServiceManager)treeBuilder.getBeanFactory().getBean(ServiceManager.class.getName());
}
/**
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Sun Feb 26 10:45:26 2006
@@ -33,7 +33,7 @@
import org.apache.cocoon.Processor;
import org.apache.cocoon.components.ChainedConfiguration;
import org.apache.cocoon.components.source.impl.SitemapSourceInfo;
-import org.apache.cocoon.core.container.spring.CocoonXmlWebApplicationContext;
+import org.apache.cocoon.core.container.spring.CocoonBeanFactory;
import org.apache.cocoon.core.container.spring.NameForAliasAware;
import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.environment.ForwardRedirector;
@@ -53,8 +53,7 @@
import org.apache.cocoon.util.location.Location;
import org.apache.cocoon.util.location.LocationImpl;
import org.apache.commons.jci.listeners.NotificationListener;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
/**
* The concrete implementation of {@link Processor}, containing the evaluation tree and associated
@@ -65,6 +64,8 @@
public class ConcreteTreeProcessor extends AbstractLogEnabled
implements Processor, Disposable, ExecutionContext, NotificationListener {
+ private static final String BEAN_FACTORY_STACK_REQUEST_ATTRIBUTE = CocoonBeanFactory.class.getName() + "/Stack";
+
/** Our ServiceManager */
private ServiceManager manager;
@@ -107,7 +108,7 @@
private Map classpathListeners = Collections.EMPTY_MAP;
/** Bean Factory for this sitemap. */
- protected BeanFactory beanFactory;
+ protected ConfigurableBeanFactory beanFactory;
/**
* Builds a concrete processig, given the wrapping processor
@@ -137,7 +138,7 @@
}
/** Set the processor data, result of the treebuilder job */
- public void setProcessorData(BeanFactory beanFactory,
+ public void setProcessorData(ConfigurableBeanFactory beanFactory,
ClassLoader classloader,
ProcessingNode rootNode,
List disposableNodes,
@@ -285,16 +286,16 @@
*/
protected void enteredSitemap(EnterSitemapEvent event) {
final Request request = ObjectModelHelper.getRequest(event.getEnvironment().getObjectModel());
- final Object oldContext = request.getAttribute(CocoonXmlWebApplicationContext.APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
+ final Object oldContext = request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
if ( oldContext != null ) {
- Stack stack = (Stack)request.getAttribute("ac-stack", Request.REQUEST_SCOPE);
+ Stack stack = (Stack)request.getAttribute(BEAN_FACTORY_STACK_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
if ( stack == null ) {
stack = new Stack();
- request.setAttribute("ac-stack", stack, Request.REQUEST_SCOPE);
+ request.setAttribute(BEAN_FACTORY_STACK_REQUEST_ATTRIBUTE, stack, Request.REQUEST_SCOPE);
}
stack.push(oldContext);
}
- request.setAttribute(CocoonXmlWebApplicationContext.APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, this.beanFactory, Request.REQUEST_SCOPE);
+ request.setAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE, this.beanFactory, Request.REQUEST_SCOPE);
}
/**
@@ -302,14 +303,14 @@
*/
protected void leftSitemap(LeaveSitemapEvent event) {
final Request request = ObjectModelHelper.getRequest(event.getEnvironment().getObjectModel());
- final Stack stack = (Stack)request.getAttribute("ac-stack", Request.REQUEST_SCOPE);
+ final Stack stack = (Stack)request.getAttribute(BEAN_FACTORY_STACK_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
if ( stack == null ) {
- request.removeAttribute(CocoonXmlWebApplicationContext.APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
+ request.removeAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
} else {
final Object oldContext = stack.pop();
- request.setAttribute(CocoonXmlWebApplicationContext.APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, oldContext, Request.REQUEST_SCOPE);
+ request.setAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE, oldContext, Request.REQUEST_SCOPE);
if ( stack.size() == 0 ) {
- request.removeAttribute("ac-stack", Request.REQUEST_SCOPE);
+ request.removeAttribute(BEAN_FACTORY_STACK_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
}
}
}
@@ -468,13 +469,7 @@
this.disposeListeners(this.enterSitemapEventListeners);
this.disposeListeners(this.leaveSitemapEventListeners);
if ( this.beanFactory != null ) {
- if (this.beanFactory instanceof DisposableBean)
- try {
- ((DisposableBean)this.beanFactory).destroy();
- } catch (Exception e) {
- // Not much to do
- this.getLogger().error("Can't destory the Spring context", e);
- }
+ this.beanFactory.destroySingletons();
this.beanFactory = null;
}
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java Sun Feb 26 10:45:26 2006
@@ -48,7 +48,7 @@
import org.apache.cocoon.util.location.LocationUtils;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
-import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
/**
*
@@ -96,7 +96,7 @@
*/
private ServiceManager itsManager;
- private BeanFactory itsApplicationContext;
+ private ConfigurableBeanFactory itsBeanFactory;
/**
* The classloader for the processor that we are building.
@@ -218,7 +218,7 @@
*
* @return a component manager
*/
- protected abstract BeanFactory createApplicationContext(ClassLoader classloader, Context context, Configuration tree)
+ protected abstract ConfigurableBeanFactory createApplicationContext(ClassLoader classloader, Context context, Configuration tree)
throws Exception;
@@ -237,10 +237,10 @@
}
/**
- * @see org.apache.cocoon.components.treeprocessor.TreeBuilder#getApplicationContext()
+ * @see org.apache.cocoon.components.treeprocessor.TreeBuilder#getBeanFactory()
*/
- public BeanFactory getApplicationContext() {
- return this.itsApplicationContext;
+ public ConfigurableBeanFactory getBeanFactory() {
+ return this.itsBeanFactory;
}
public ClassLoader getBuiltProcessorClassLoader() {
@@ -371,9 +371,9 @@
// currentThread.setContextClassLoader(this.itsClassLoader);
this.itsClassLoader = Thread.currentThread().getContextClassLoader();
- this.itsApplicationContext = createApplicationContext(this.itsClassLoader, this.itsContext, componentConfig);
- this.itsComponentInfo = (ProcessorComponentInfo)this.itsApplicationContext.getBean(ProcessorComponentInfo.ROLE);
- this.itsManager = (ServiceManager)this.itsApplicationContext.getBean(ServiceManager.class.getName());
+ this.itsBeanFactory = createApplicationContext(this.itsClassLoader, this.itsContext, componentConfig);
+ this.itsComponentInfo = (ProcessorComponentInfo)this.itsBeanFactory.getBean(ProcessorComponentInfo.ROLE);
+ this.itsManager = (ServiceManager)this.itsBeanFactory.getBean(ServiceManager.class.getName());
// Create a helper object to setup components
this.itsLifecycle = new LifecycleHelper(getLogger(),
this.itsContext,
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java Sun Feb 26 10:45:26 2006
@@ -19,7 +19,7 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
/**
*
@@ -40,7 +40,7 @@
}
}
- BeanFactory getApplicationContext();
+ ConfigurableBeanFactory getBeanFactory();
ClassLoader getBuiltProcessorClassLoader();
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java Sun Feb 26 10:45:26 2006
@@ -688,7 +688,7 @@
ProcessingNode root = treeBuilder.build(sitemapProgram);
newProcessor.setProcessorData(
- treeBuilder.getApplicationContext(),
+ treeBuilder.getBeanFactory(),
treeBuilder.getBuiltProcessorClassLoader(),
root,
treeBuilder.getDisposableNodes(),
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java Sun Feb 26 10:45:26 2006
@@ -20,6 +20,7 @@
import java.util.Map;
import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Processor;
import org.apache.cocoon.components.treeprocessor.AbstractProcessingNode;
@@ -70,7 +71,7 @@
this.passThrough = BooleanUtils.toBooleanObject(passThrough);
}
- /* (non-Javadoc)
+ /**
* @see org.apache.cocoon.components.treeprocessor.ProcessingNode#invoke(org.apache.cocoon.environment.Environment, org.apache.cocoon.components.treeprocessor.InvokeContext)
*/
public final boolean invoke(Environment env, InvokeContext context)
@@ -145,13 +146,13 @@
return processor;
}
- /* (non-Javadoc)
+ /**
* @see org.apache.avalon.framework.activity.Disposable#dispose()
*/
public void dispose() {
Iterator i = this.processors.values().iterator();
while (i.hasNext()) {
- ((TreeProcessor) i.next()).dispose();
+ ContainerUtil.dispose(i.next());
}
this.processors.clear();
}
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=381135&r1=381134&r2=381135&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 26 10:45:26 2006
@@ -41,9 +41,9 @@
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.BeanFactoryUtil;
import org.apache.cocoon.core.container.spring.AvalonEnvironment;
-import org.apache.cocoon.core.container.spring.CocoonXmlWebApplicationContext;
+import org.apache.cocoon.core.container.spring.CocoonBeanFactory;
import org.apache.cocoon.core.container.spring.ConfigReader;
import org.apache.cocoon.core.container.spring.ConfigurationInfo;
import org.apache.cocoon.environment.Environment;
@@ -106,7 +106,7 @@
* Build a component manager with the contents of the <map:components> element of
* the tree.
*/
- protected BeanFactory createApplicationContext(ClassLoader classloader, Context context, Configuration config)
+ protected ConfigurableBeanFactory createApplicationContext(ClassLoader classloader, Context context, Configuration config)
throws Exception {
// Create the classloader, if needed.
@@ -128,8 +128,8 @@
// first, get the correct parent
ConfigurableBeanFactory parentContext = this.beanFactory;
final Request request = ContextHelper.getRequest(context);
- if ( request.getAttribute(CocoonXmlWebApplicationContext.APPLICATION_CONTEXT_REQUEST_ATTRIBUTE) != null ) {
- parentContext = (ConfigurableBeanFactory)request.getAttribute(CocoonXmlWebApplicationContext.APPLICATION_CONTEXT_REQUEST_ATTRIBUTE);
+ if ( request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE) != null ) {
+ parentContext = (ConfigurableBeanFactory)request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE);
}
final AvalonEnvironment ae = new AvalonEnvironment();
@@ -142,7 +142,7 @@
final ConfigurationInfo ci = ConfigReader.readConfiguration(c, parentConfigInfo, ae);
final ConfigurableBeanFactory sitemapContext =
- ApplicationContextFactory.createApplicationContext(ae, ci, parentContext, false);
+ BeanFactoryUtil.createApplicationContext(ae, ci, parentContext, false);
newManager = (ServiceManager) sitemapContext.getBean(ServiceManager.class.getName());
Logger sitemapLogger = sitemapLogger = (Logger)sitemapContext.getBean(Logger.class.getName());
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=381135&r1=381134&r2=381135&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 Sun Feb 26 10:45:26 2006
@@ -45,7 +45,7 @@
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.components.source.impl.DelayedRefreshSourceWrapper;
-import org.apache.cocoon.core.container.spring.ApplicationContextFactory;
+import org.apache.cocoon.core.container.spring.BeanFactoryUtil;
import org.apache.cocoon.core.container.spring.AvalonEnvironment;
import org.apache.cocoon.core.container.spring.ConfigReader;
import org.apache.cocoon.core.container.spring.ConfigurationInfo;
@@ -204,7 +204,7 @@
this.settings.setWorkDirectory(workDir.getAbsolutePath());
// Init logger
- this.log = ApplicationContextFactory.createRootLogger(servletContext,
+ this.log = BeanFactoryUtil.createRootLogger(servletContext,
this.settings);
this.env.setLogger(this.log);
@@ -619,9 +619,9 @@
env.logger = this.log;
env.servletContext = this.env.getEnvironmentContext();
env.settings = this.core.getSettings();
- ConfigurableBeanFactory rootContext = ApplicationContextFactory.createRootApplicationContext(env);
+ ConfigurableBeanFactory rootContext = BeanFactoryUtil.createRootApplicationContext(env);
ConfigurationInfo result = ConfigReader.readConfiguration(settings.getConfiguration(), env);
- ConfigurableBeanFactory mainContext = ApplicationContextFactory.createApplicationContext(env, result, rootContext, true);
+ ConfigurableBeanFactory mainContext = BeanFactoryUtil.createApplicationContext(env, result, rootContext, true);
return mainContext;
}
Added: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java?rev=381135&view=auto
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java (added)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java Sun Feb 26 10:45:26 2006
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.core.container.spring;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Iterator;
+
+import javax.servlet.ServletContext;
+
+import org.apache.avalon.excalibur.logger.Log4JConfLoggerManager;
+import org.apache.avalon.excalibur.logger.ServletLogger;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.DefaultConfiguration;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.acting.Action;
+import org.apache.cocoon.components.pipeline.ProcessingPipeline;
+import org.apache.cocoon.components.treeprocessor.ProcessorComponentInfo;
+import org.apache.cocoon.core.Core;
+import org.apache.cocoon.core.CoreInitializationException;
+import org.apache.cocoon.core.Settings;
+import org.apache.cocoon.core.container.util.ConfigurationBuilder;
+import org.apache.cocoon.core.container.util.SettingsContext;
+import org.apache.cocoon.generation.Generator;
+import org.apache.cocoon.matching.Matcher;
+import org.apache.cocoon.reading.Reader;
+import org.apache.cocoon.selection.Selector;
+import org.apache.cocoon.serialization.Serializer;
+import org.apache.cocoon.transformation.Transformer;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.core.io.Resource;
+import org.springframework.web.context.WebApplicationContext;
+
+/**
+ * This utility class helps in creating new Spring {@link BeanFactory} objects which support
+ * the Avalon style component configuration. It also offers help in setting up the root
+ * logger for Cocoon.
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public class BeanFactoryUtil {
+
+ /**
+ * Create a new (sub) bean factory.
+ *
+ * @param env The avalon environment.
+ * @param info The avalon configuration.
+ * @param parent The parent factory or null.
+ * @return A new bean factory.
+ * @throws Exception
+ */
+ public static ConfigurableBeanFactory createApplicationContext(AvalonEnvironment env,
+ ConfigurationInfo info,
+ BeanFactory parent,
+ boolean addCocoon)
+ throws Exception {
+ final String xmlConfig = (new XmlConfigCreator()).createConfig(info, addCocoon);
+ Resource rsc = new ByteArrayResource(xmlConfig.getBytes("utf-8"));
+ Logger logger = env.logger;
+ if ( info.rootLogger != null ) {
+ logger = env.logger.getChildLogger(info.rootLogger);
+ }
+ CocoonBeanFactory context = new CocoonBeanFactory(rsc,
+ parent,
+ logger,
+ info,
+ env.context,
+ env.settings);
+ if ( info.rootLogger != null ) {
+ context.registerSingleton(Logger.class.getName(), logger);
+ }
+ prepareApplicationContext(context, info);
+ return context;
+ }
+
+ /**
+ * Create the root bean factory.
+ * This factory is the root of all Cocoon based Spring bean factories. If
+ * the default Spring application context is created using the Spring context listener, that
+ * default context will be the parent of this factory.
+ *
+ * @param env The avalon environment.
+ * @return A new root application factory.
+ * @throws Exception
+ */
+ public static ConfigurableBeanFactory createRootApplicationContext(AvalonEnvironment env)
+ throws Exception {
+ final ApplicationContext parent = (ApplicationContext)env.servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
+ CocoonBeanFactory factory = new CocoonBeanFactory(parent);
+ factory.registerSingleton(Context.class.getName(), env.context);
+ factory.registerSingleton(Logger.class.getName(), env.logger);
+ factory.registerSingleton(Core.class.getName(), env.core);
+ factory.registerSingleton(Settings.class.getName(), env.settings);
+ return factory;
+ }
+
+ /**
+ * Create the root logger for Cocoon.
+ * If the root spring application context is setup (using the spring listener) and
+ * if it contains a Logger bean (a bean with the name of the Logger class), then
+ * that bean is used as the root logger.
+ * If either the context is not available or the Logger bean is not defined, we setup
+ * our own Logger based on Log4j.
+ *
+ * @param context The servlet context.
+ * @param settings The core settings.
+ * @return The root logger for Cocoon.
+ */
+ public static Logger createRootLogger(ServletContext context,
+ Settings settings) {
+ final ApplicationContext parent = (ApplicationContext)context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
+ // test for a logger in the parent context
+ if ( parent != null && parent.containsBean(Logger.class.getName()) ) {
+ if ( settings.getEnvironmentLogger() == null || settings.getEnvironmentLogger().length() == 0 ) {
+ return (Logger)parent.getBean(Logger.class.getName());
+ }
+ return ((Logger)parent.getBean(Logger.class.getName())).getChildLogger(settings.getEnvironmentLogger());
+ }
+ // create a new log4j logger
+ try {
+ return initLogger(context, settings);
+ } catch (Exception ce) {
+ ce.printStackTrace();
+ throw new CoreInitializationException("Cannot setup log4j logging system.", ce);
+ }
+ }
+
+ protected static Logger initLogger(ServletContext servletContext,
+ Settings settings)
+ throws Exception {
+ // create a bootstrap logger
+ int logLevel;
+ final String logLevelString = settings.getBootstrapLogLevel();
+ if ( "DEBUG".equalsIgnoreCase(logLevelString) ) {
+ logLevel = ServletLogger.LEVEL_DEBUG;
+ } else if ( "WARN".equalsIgnoreCase(logLevelString) ) {
+ logLevel = ServletLogger.LEVEL_WARN;
+ } else if ( "ERROR".equalsIgnoreCase(logLevelString) ) {
+ logLevel = ServletLogger.LEVEL_ERROR;
+ } else {
+ logLevel = ServletLogger.LEVEL_INFO;
+ }
+ final Logger bootstrapLogger = new ServletLogger(servletContext, "Cocoon", logLevel);
+
+
+ // create an own context for the logger manager
+ final DefaultContext subcontext = new SettingsContext(settings);
+ subcontext.put("context-work", new File(settings.getWorkDirectory()));
+ final File logSCDir = new File(settings.getWorkDirectory(), "cocoon-logs");
+ logSCDir.mkdirs();
+ subcontext.put("log-dir", logSCDir.toString());
+ subcontext.put("servlet-context", servletContext);
+
+ final Log4JConfLoggerManager loggerManager = new Log4JConfLoggerManager();
+ loggerManager.enableLogging(bootstrapLogger);
+ loggerManager.contextualize(subcontext);
+
+ // Configure the log4j manager
+ String loggerConfig = settings.getLoggingConfiguration();
+ if ( !loggerConfig.startsWith("/") ) {
+ loggerConfig = '/' + loggerConfig;
+ }
+ if ( loggerConfig != null ) {
+ final URL url = servletContext.getResource(loggerConfig);
+ if ( url != null ) {
+ final ConfigurationBuilder builder = new ConfigurationBuilder(settings);
+ final Configuration conf = builder.build(servletContext.getResourceAsStream(loggerConfig));
+ // override log level?
+ if (settings.getOverrideLogLevel() != null) {
+ // TODO - override loglevel for log4j
+ }
+ loggerManager.configure(conf);
+ } else {
+ bootstrapLogger.warn("The logging configuration '" + loggerConfig + "' is not available.");
+ loggerManager.configure(new DefaultConfiguration("empty"));
+ }
+ } else {
+ loggerManager.configure(new DefaultConfiguration("empty"));
+ }
+
+ String accesslogger = settings.getEnvironmentLogger();
+ if (accesslogger == null) {
+ accesslogger = "cocoon";
+ }
+ return loggerManager.getLoggerForCategory(accesslogger);
+ }
+
+ protected static void prepareApplicationContext(CocoonBeanFactory context,
+ ConfigurationInfo configInfo) {
+ // TODO - we should find a better way
+ // add ProcessorComponentInfo
+ ProcessorComponentInfo parentInfo = null;
+ if ( context.getParentBeanFactory() != null && context.getParentBeanFactory().containsBean(ProcessorComponentInfo.ROLE) ) {
+ parentInfo = (ProcessorComponentInfo)context.getParentBeanFactory().getBean(ProcessorComponentInfo.ROLE);
+ }
+ ProcessorComponentInfo info = new ProcessorComponentInfo(parentInfo);
+ final Iterator i = configInfo.getComponents().values().iterator();
+ while (i.hasNext()) {
+ final ComponentInfo current = (ComponentInfo)i.next();
+ info.componentAdded(current.getRole(), current.getComponentClassName(), current.getConfiguration());
+ }
+ prepareSelector(info, context, configInfo, Generator.ROLE);
+ prepareSelector(info, context, configInfo, Transformer.ROLE);
+ prepareSelector(info, context, configInfo, Serializer.ROLE);
+ prepareSelector(info, context, configInfo, ProcessingPipeline.ROLE);
+ prepareSelector(info, context, configInfo, Action.ROLE);
+ prepareSelector(info, context, configInfo, Selector.ROLE);
+ prepareSelector(info, context, configInfo, Matcher.ROLE);
+ prepareSelector(info, context, configInfo, Reader.ROLE);
+ info.lock();
+ context.registerSingleton(ProcessorComponentInfo.ROLE, info);
+ }
+
+ protected static void prepareSelector(ProcessorComponentInfo info,
+ CocoonBeanFactory context,
+ ConfigurationInfo configInfo,
+ String category) {
+ final ComponentInfo component = (ComponentInfo)configInfo.getComponents().get(category + "Selector");
+ if ( component != null ) {
+ info.setDefaultType(category, component.getDefaultValue());
+ }
+ }
+
+}
Propchange: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonBeanFactory.java (from r381130, 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/CocoonBeanFactory.java?p2=cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonBeanFactory.java&p1=cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java&r1=381130&r2=381135&rev=381135&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/CocoonBeanFactory.java Sun Feb 26 10:45:26 2006
@@ -15,7 +15,6 @@
*/
package org.apache.cocoon.core.container.spring;
-import java.io.IOException;
import java.util.Map;
import org.apache.avalon.framework.configuration.Configurable;
@@ -28,21 +27,17 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.components.SitemapConfigurable;
+import org.apache.cocoon.core.Settings;
import org.apache.cocoon.core.container.util.DefaultSitemapConfigurationHolder;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanInitializationException;
-import org.springframework.beans.factory.HierarchicalBeanFactory;
import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationEvent;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.event.ContextClosedEvent;
import org.springframework.core.io.Resource;
-import org.springframework.web.context.support.XmlWebApplicationContext;
/**
* This is a Cocoon specific implementation of a Spring {@link ApplicationContext}.
@@ -50,11 +45,14 @@
* @since 2.2
* @version $Id$
*/
-public class CocoonXmlWebApplicationContext
- extends XmlWebApplicationContext
- implements ApplicationListener, NameForAliasAware {
+public class CocoonBeanFactory
+ extends DefaultListableBeanFactory
+ implements NameForAliasAware {
- public static final String APPLICATION_CONTEXT_REQUEST_ATTRIBUTE = "application-context";
+ protected final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
+
+ /** The name of the request attribute containing the current bean factory. */
+ public static final String BEAN_FACTORY_REQUEST_ATTRIBUTE = CocoonBeanFactory.class.getName();
final private Resource avalonResource;
@@ -62,113 +60,54 @@
protected final Context avalonContext;
protected final ConfigurationInfo avalonConfiguration;
- protected boolean destroyed = false;
-
- protected final HierarchicalBeanFactory parentFactory;
-
- public CocoonXmlWebApplicationContext(HierarchicalBeanFactory parent) {
- this(null, parent, null, null, null);
+ public CocoonBeanFactory(BeanFactory parent) {
+ this(null, parent, null, null, null, null);
}
- public CocoonXmlWebApplicationContext(Resource avalonResource,
- HierarchicalBeanFactory parent,
- Logger avalonLogger,
- ConfigurationInfo avalonConfiguration,
- Context avalonContext) {
- this.parentFactory = parent;
+ public CocoonBeanFactory(Resource avalonResource,
+ BeanFactory parent,
+ Logger avalonLogger,
+ ConfigurationInfo avalonConfiguration,
+ Context avalonContext,
+ Settings settings) {
+ super(parent);
this.avalonResource = avalonResource;
this.avalonLogger = avalonLogger;
this.avalonConfiguration = avalonConfiguration;
this.avalonContext = avalonContext;
- if ( parent instanceof CocoonXmlWebApplicationContext) {
- ((CocoonXmlWebApplicationContext)parent).registerChildContext(this);
-
+
+ if ( this.avalonConfiguration != null ) {
+ AvalonPostProcessor processor = new AvalonPostProcessor(this.avalonConfiguration.getComponents(),
+ this.avalonContext,
+ this.avalonLogger,
+ this);
+ this.addBeanPostProcessor(processor);
+ this.registerSingleton(ConfigurationInfo.class.getName(), this.avalonConfiguration);
+ }
+ if ( this.avalonResource != null ) {
+ this.reader.loadBeanDefinitions(this.avalonResource);
+ }
+ // post processing
+ if ( settings != null ) {
+ (new CocoonSettingsConfigurer(settings)).postProcessBeanFactory(this);
}
}
+ /**
+ * @see org.apache.cocoon.core.container.spring.NameForAliasAware#getNameForAlias(java.lang.String)
+ */
public String getNameForAlias(String alias) {
if ( this.avalonConfiguration != null ) {
final String value = this.avalonConfiguration.getRoleForName(alias);
if ( value != null ) {
return value;
}
- if ( this.getParent() instanceof CocoonXmlWebApplicationContext ) {
- return ((CocoonXmlWebApplicationContext)this.getParent()).getNameForAlias(alias);
+ if ( this.getParentBeanFactory() instanceof NameForAliasAware ) {
+ return ((NameForAliasAware)this.getParentBeanFactory()).getNameForAlias(alias);
}
}
// default: we just return the alias
return alias;
- }
- /**
- * Register a child context as a listener. This allows a child context to destroy itself
- * when the parent is destroyed.
- * @param childContext The child context.
- */
- public void registerChildContext(CocoonXmlWebApplicationContext childContext) {
- this.addListener(childContext);
- }
-
- /**
- * @see org.springframework.context.support.AbstractApplicationContext#destroy()
- */
- public void destroy() {
- if ( !this.destroyed ) {
- this.destroyed = true;
- super.destroy();
- }
- }
-
- /**
- * @see org.springframework.web.context.support.XmlWebApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
- */
- protected void loadBeanDefinitions(XmlBeanDefinitionReader reader)
- throws BeansException, IOException {
- super.loadBeanDefinitions(reader);
- if ( this.avalonResource != null ) {
- reader.loadBeanDefinitions(this.avalonResource);
- }
- }
-
- /**
- * Create a new bean factory and add a bean post processor to handle
- * Avalon components.
- * @see org.springframework.context.support.AbstractRefreshableApplicationContext#createBeanFactory()
- */
- protected DefaultListableBeanFactory createBeanFactory() {
- DefaultListableBeanFactory beanFactory = super.createBeanFactory();
- if ( this.parentFactory != null ) {
- beanFactory.setParentBeanFactory(this.parentFactory);
- }
- if ( this.avalonConfiguration != null ) {
- AvalonPostProcessor processor = new AvalonPostProcessor(this.avalonConfiguration.getComponents(),
- this.avalonContext,
- this.avalonLogger,
- beanFactory);
- beanFactory.addBeanPostProcessor(processor);
- beanFactory.registerSingleton(ConfigurationInfo.class.getName(), this.avalonConfiguration);
- }
- return beanFactory;
- }
-
- /**
- * We don't have any default locations - this application context is a nested one
- * which is configured through a sitemap. All possible configuration files are
- * configured in the sitemap.
- * @return An empty array.
- */
- protected String[] getDefaultConfigLocations() {
- return new String[]{};
- }
-
- /**
- * @see org.springframework.context.ApplicationListener#onApplicationEvent(org.springframework.context.ApplicationEvent)
- */
- public void onApplicationEvent(ApplicationEvent event) {
- if ( event instanceof ContextClosedEvent ) {
- if (((ContextClosedEvent)event).getApplicationContext().equals(this.getParent()) ) {
- this.destroy();
- }
- }
}
/**
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=381135&r1=381134&r2=381135&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 26 10:45:26 2006
@@ -90,6 +90,14 @@
this.configInfo.getClassNames().put(current.getRole(), current.copy());
}
}
+ // TODO - we should add the processor to each container
+ // This would avoid the hacky getting of the current container in the tree processor
+ /*
+ ComponentInfo processorInfo = (ComponentInfo) parentInfo.getComponents().get(Processor.ROLE);
+ if ( processorInfo != null ) {
+ this.configInfo.getComponents().put(Processor.ROLE, processorInfo.copy());
+ }
+ */
} else {
this.configInfo = new ConfigurationInfo();
}
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=381135&r1=381134&r2=381135&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 Sun Feb 26 10:45:26 2006
@@ -36,7 +36,7 @@
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.BeanFactoryUtil;
import org.apache.cocoon.core.container.spring.AvalonEnvironment;
import org.apache.cocoon.core.container.spring.ConfigReader;
import org.apache.cocoon.core.container.spring.ConfigurationInfo;
@@ -290,15 +290,15 @@
avalonEnv.core = new Core(avalonEnv.settings, avalonEnv.context);
avalonEnv.servletContext = new MockContext();
- this.rootContext = ApplicationContextFactory.createRootApplicationContext(avalonEnv);
+ this.rootContext = BeanFactoryUtil.createRootApplicationContext(avalonEnv);
// read roles
ConfigurationInfo rolesInfo = ConfigReader.readConfiguration(confRM, null, avalonEnv);
- ConfigurableBeanFactory rolesContext = ApplicationContextFactory.createApplicationContext(avalonEnv, rolesInfo, rootContext, true);
+ ConfigurableBeanFactory rolesContext = BeanFactoryUtil.createApplicationContext(avalonEnv, rolesInfo, rootContext, true);
// read components
ConfigurationInfo componentsInfo = ConfigReader.readConfiguration(confCM, rolesInfo, avalonEnv);
this.addComponents( componentsInfo );
- ConfigurableBeanFactory componentsContext = ApplicationContextFactory.createApplicationContext(avalonEnv, componentsInfo, rolesContext, false);
+ ConfigurableBeanFactory componentsContext = BeanFactoryUtil.createApplicationContext(avalonEnv, componentsInfo, rolesContext, false);
this.manager = (ServiceManager)componentsContext.getBean(ServiceManager.class.getName());
}
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/ManagedCocoonPortlet.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/ManagedCocoonPortlet.java?rev=381135&r1=381134&r2=381135&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/ManagedCocoonPortlet.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/ManagedCocoonPortlet.java Sun Feb 26 10:45:26 2006
@@ -40,7 +40,7 @@
import org.apache.cocoon.components.notification.Notifier;
import org.apache.cocoon.components.notification.Notifying;
import org.apache.cocoon.core.MutableSettings;
-import org.apache.cocoon.core.container.spring.ApplicationContextFactory;
+import org.apache.cocoon.core.container.spring.BeanFactoryUtil;
import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.environment.portlet.PortletContext;
import org.apache.cocoon.environment.portlet.PortletEnvironment;
@@ -215,7 +215,7 @@
// Init logger
// FIXME - how do we get the settings object?
- this.log = ApplicationContextFactory.createRootLogger(this.envPortletContext, new MutableSettings());
+ this.log = BeanFactoryUtil.createRootLogger(this.envPortletContext, new MutableSettings());
final String uploadDirParam = conf.getInitParameter("upload-directory");
if (uploadDirParam != null) {