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) {