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/20 12:48:29 UTC
svn commit: r379105 - in /cocoon/trunk: ./
cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/
cocoon-core/src/main/java/org/apache/cocoon/bean/
cocoon-core/src/main/java/org/apache/cocoon/components/source/
cocoon-core/src/m...
Author: cziegeler
Date: Mon Feb 20 03:48:20 2006
New Revision: 379105
URL: http://svn.apache.org/viewcvs?rev=379105&view=rev
Log:
Spring block is not needed anymore; make sub sitemaps work correctly
Removed:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/ComponentLocatorWrapper.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/ComponentLocator.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/impl/ComponentManager.java
Modified:
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlocksContext.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonBean.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/source/CocoonSourceResolver.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/SitemapLanguage.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/Core.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/CoreServiceManager.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/Sitemap.java
cocoon/trunk/pom.xml
Modified: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlocksContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlocksContext.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlocksContext.java (original)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/BlocksContext.java Mon Feb 20 03:48:20 2006
@@ -121,7 +121,7 @@
int index = this.mountPath.length();
while (this.block == null && index != -1) {
this.mountPath = this.mountPath.substring(0, index);
- this.block = (Block) BlocksContext.this.blocks.getMountedBlock(this.mountPath);
+ this.block = BlocksContext.this.blocks.getMountedBlock(this.mountPath);
index = this.mountPath.lastIndexOf('/');
}
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonBean.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonBean.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonBean.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonBean.java Mon Feb 20 03:48:20 2006
@@ -93,7 +93,7 @@
if (this.initialized == false) {
super.initialize();
- this.sourceResolver = (SourceResolver)this.coreUtil.getCore().getCurrentSitemap().getComponentLocator().getComponent(SourceResolver.ROLE);
+ this.sourceResolver = (SourceResolver)this.coreUtil.getCore().getCurrentSitemap().getComponentLocator().lookup(SourceResolver.ROLE);
initialized = true;
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/source/CocoonSourceResolver.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/source/CocoonSourceResolver.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/source/CocoonSourceResolver.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/source/CocoonSourceResolver.java Mon Feb 20 03:48:20 2006
@@ -34,10 +34,8 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Processor;
import org.apache.cocoon.core.Core;
-import org.apache.cocoon.core.container.ComponentLocatorWrapper;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
-import org.apache.cocoon.sitemap.ComponentLocator;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
@@ -144,7 +142,7 @@
}
}
- final ComponentLocator m = this.getComponentLocator();
+ final ServiceManager m = this.getComponentLocator();
Source source = null;
// search for a SourceFactory implementing the protocol
@@ -218,14 +216,14 @@
/**
* Get the component locator.
*/
- protected ComponentLocator getComponentLocator() {
- ComponentLocator l = null;
+ protected ServiceManager getComponentLocator() {
+ ServiceManager l = null;
final Sitemap sitemap = this.core.getCurrentSitemap();
if ( sitemap != null ) {
l = sitemap.getComponentLocator();
}
if ( l == null ) {
- l = new ComponentLocatorWrapper(this.manager);
+ l = this.manager;
}
return l;
}
@@ -233,9 +231,13 @@
/**
* Get the SourceFactory
*/
- protected SourceFactory getSourceFactory(ComponentLocator m, String scheme)
+ protected SourceFactory getSourceFactory(ServiceManager m, String scheme)
throws ProcessingException {
- return (SourceFactory)m.getComponent(SourceFactory.ROLE + '/' + scheme);
+ try {
+ return (SourceFactory)m.lookup(SourceFactory.ROLE + '/' + scheme);
+ } catch (ServiceException se) {
+ throw new ProcessingException("Unable to lookup source factory for scheme: " + scheme, se);
+ }
}
/**
@@ -247,7 +249,7 @@
if ( this.customResolver != null ) {
this.customResolver.release( source );
} else {
- final ComponentLocator m = this.getComponentLocator();
+ final ServiceManager m = this.getComponentLocator();
// search for a SourceFactory implementing the protocol
final String scheme = source.getScheme();
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=379105&r1=379104&r2=379105&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 Mon Feb 20 03:48:20 2006
@@ -37,14 +37,12 @@
import org.apache.cocoon.environment.internal.EnvironmentHelper;
import org.apache.cocoon.environment.internal.ForwardEnvironmentWrapper;
import org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade;
-import org.apache.cocoon.sitemap.ComponentLocator;
import org.apache.cocoon.sitemap.EnterSitemapEvent;
import org.apache.cocoon.sitemap.EnterSitemapEventListener;
import org.apache.cocoon.sitemap.ExecutionContext;
import org.apache.cocoon.sitemap.LeaveSitemapEvent;
import org.apache.cocoon.sitemap.LeaveSitemapEventListener;
import org.apache.cocoon.sitemap.SitemapExecutor;
-import org.apache.cocoon.sitemap.SitemapListener;
import org.apache.cocoon.util.location.Location;
import org.apache.cocoon.util.location.LocationImpl;
import org.apache.commons.jci.listeners.NotificationListener;
@@ -81,9 +79,6 @@
/** The sitemap executor */
private SitemapExecutor sitemapExecutor;
- /** Optional application container */
- private ComponentLocator applicationContainer;
-
/** Optional event listeners for the enter sitemap event */
private List enterSitemapEventListeners = new ArrayList();
@@ -131,7 +126,6 @@
ClassLoader classloader,
ProcessingNode rootNode,
List disposableNodes,
- ComponentLocator componentLocator,
List enterSitemapEventListeners,
List leaveSitemapEventListeners) {
if (this.rootNode != null) {
@@ -144,7 +138,6 @@
this.disposableNodes = disposableNodes;
this.enterSitemapEventListeners = enterSitemapEventListeners;
this.leaveSitemapEventListeners = leaveSitemapEventListeners;
- this.applicationContainer = componentLocator;
}
/** Set the sitemap component configurations (called as part of the tree building process) */
@@ -395,12 +388,6 @@
// dispose listeners
this.disposeListeners(this.enterSitemapEventListeners);
this.disposeListeners(this.leaveSitemapEventListeners);
-
- // dispose component locator - if it is a SitemapListener it is already disposed!
- if ( !(this.applicationContainer instanceof SitemapListener) ) {
- ContainerUtil.dispose(this.applicationContainer);
- }
- this.applicationContainer = null;
}
protected void disposeListeners(List l) {
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=379105&r1=379104&r2=379105&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 Mon Feb 20 03:48:20 2006
@@ -42,7 +42,6 @@
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.components.treeprocessor.variables.VariableResolverFactory;
import org.apache.cocoon.components.treeprocessor.variables.VariableResolver;
-import org.apache.cocoon.sitemap.ComponentLocator;
import org.apache.cocoon.sitemap.PatternException;
import org.apache.cocoon.sitemap.SitemapParameters;
import org.apache.cocoon.util.location.Location;
@@ -121,9 +120,6 @@
*/
protected ProcessorComponentInfo itsComponentInfo;
- /** Optional application container */
- protected ComponentLocator applicationContainer;
-
/** Optional event listeners for the enter sitemap event */
protected List enterSitemapEventListeners = new ArrayList();
@@ -261,14 +257,6 @@
}
/**
- * @see org.apache.cocoon.components.treeprocessor.TreeBuilder#getComponentLocator()
- */
- public ComponentLocator getComponentLocator() {
- // Useless method as it's redefined in SitemapLanguage
- return this.applicationContainer;
- }
-
- /**
* @see org.apache.cocoon.components.treeprocessor.TreeBuilder#getEnterSitemapEventListeners()
*/
public List getEnterSitemapEventListeners() {
@@ -644,7 +632,6 @@
this.registeredNodes.clear();
VariableResolverFactory.setDisposableCollector(null);
- this.applicationContainer = null;
this.enterSitemapEventListeners.clear();
this.leaveSitemapEventListeners.clear();
}
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=379105&r1=379104&r2=379105&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 Mon Feb 20 03:48:20 2006
@@ -20,7 +20,6 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.sitemap.ComponentLocator;
/**
*
@@ -116,11 +115,6 @@
* Get the value of an attribute.
*/
Object getAttribute(String name);
-
- /**
- * Return the sitemap component locator - if available.
- */
- ComponentLocator getComponentLocator();
/**
* Return all event listers that are registered for the
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=379105&r1=379104&r2=379105&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 Mon Feb 20 03:48:20 2006
@@ -727,7 +727,6 @@
treeBuilder.getBuiltProcessorClassLoader(),
root,
treeBuilder.getDisposableNodes(),
- treeBuilder.getComponentLocator(),
treeBuilder.getEnterSitemapEventListeners(),
treeBuilder.getLeaveSitemapEventListeners());
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=379105&r1=379104&r2=379105&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 Mon Feb 20 03:48:20 2006
@@ -50,12 +50,10 @@
import org.apache.cocoon.generation.Generator;
import org.apache.cocoon.serialization.Serializer;
import org.apache.cocoon.servlet.CocoonServlet;
-import org.apache.cocoon.sitemap.ComponentLocator;
import org.apache.cocoon.sitemap.EnterSitemapEventListener;
import org.apache.cocoon.sitemap.LeaveSitemapEventListener;
import org.apache.cocoon.sitemap.PatternException;
import org.apache.cocoon.sitemap.SitemapListener;
-import org.apache.cocoon.sitemap.impl.ComponentManager;
import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.util.StringUtils;
import org.apache.regexp.RE;
@@ -124,38 +122,25 @@
c.removeChild(config.getChild("listeners"));
// setup spring container
+ // first, get the correct parent
+ CocoonXmlWebApplicationContext parentContext = this.applicationContext.getCurrentApplicationContext();
+
final AvalonEnvironment ae = new AvalonEnvironment();
ae.context = context;
ae.core = (Core)applicationContext.getBean(Core.ROLE);
ae.logger = this.getLogger();
ae.servletContext = ((ServletConfig)context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG)).getServletContext();
ae.settings = ae.core.getSettings();
- final ConfigurationInfo ci = ConfigReader.readConfiguration(c, this.applicationContext.getConfigurationInfo(), ae);
+ final ConfigurationInfo ci = ConfigReader.readConfiguration(c, parentContext.getConfigurationInfo(), ae);
final CocoonXmlWebApplicationContext sitemapContext =
- ApplicationContextFactory.createApplicationContext(ae, ci, this.applicationContext, false);
+ ApplicationContextFactory.createApplicationContext(ae, ci, parentContext, false);
newManager = (ServiceManager) sitemapContext.getBean(ServiceManager.class.getName());
Logger sitemapLogger = sitemapLogger = (Logger)sitemapContext.getBean(Logger.class.getName());
- // check for an application specific container
- final Configuration appContainer = config.getChild("application-container", false);
- if ( appContainer != null ) {
- final String clazzName = appContainer.getAttribute("class");
-
- final ComponentLocator cl = (ComponentLocator)ClassUtils.newInstance(clazzName);
- // Go through the component lifecycle
- LifecycleHelper.setupComponent(cl, sitemapLogger, context, newManager, appContainer);
-
- this.applicationContainer = cl;
-
- newManager = new ComponentManager(newManager, cl);
- }
-
+ this.addListener(new TreeBuilder.EventComponent(sitemapContext, false));
+
// and finally the listeners
- if ( this.applicationContainer instanceof SitemapListener ) {
- this.addListener(new TreeBuilder.EventComponent(this.applicationContainer, false));
- }
-
final Configuration listenersWrapper = config.getChild("listeners", false);
if ( listenersWrapper != null ) {
final Configuration[] listeners = listenersWrapper.getChildren("listener");
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/Core.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/Core.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/Core.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/Core.java Mon Feb 20 03:48:20 2006
@@ -29,9 +29,7 @@
import org.apache.cocoon.Processor;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.components.flow.Interpreter;
-import org.apache.cocoon.core.container.ComponentLocatorWrapper;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
-import org.apache.cocoon.sitemap.ComponentLocator;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.commons.lang.NotImplementedException;
@@ -204,17 +202,8 @@
/**
* @see org.apache.cocoon.sitemap.Sitemap#getComponentLocator()
*/
- public ComponentLocator getComponentLocator() {
- final ServiceManager m = EnvironmentHelper.getSitemapServiceManager();
- ComponentLocator l = null;
- if ( m != null ) {
- if ( !(m instanceof ComponentLocator) ) {
- l = new ComponentLocatorWrapper(m);
- } else {
- l = (ComponentLocator)m;
- }
- }
- return l;
+ public ServiceManager getComponentLocator() {
+ return EnvironmentHelper.getSitemapServiceManager();
}
/**
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/CoreServiceManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/CoreServiceManager.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/CoreServiceManager.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/CoreServiceManager.java Mon Feb 20 03:48:20 2006
@@ -55,7 +55,6 @@
import org.apache.cocoon.core.container.handler.LazyHandler;
import org.apache.cocoon.core.source.SimpleSourceResolver;
import org.apache.cocoon.matching.helpers.WildcardHelper;
-import org.apache.cocoon.sitemap.impl.ComponentManager;
import org.apache.cocoon.util.JMXUtils;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
@@ -142,9 +141,6 @@
RoleManager parentRoleManager = null;
// FIXME - We should change this to a cleaner way!
ServiceManager coreServicemanager = parent;
- if ( parent instanceof ComponentManager ) {
- coreServicemanager = ((ComponentManager)parent).getServiceManager();
- }
// get role manager
if ( coreServicemanager instanceof RoleManagerOwner ) {
parentRoleManager = ((RoleManagerOwner)coreServicemanager).getRoleManager();
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/CocoonXmlWebApplicationContext.java Mon Feb 20 03:48:20 2006
@@ -18,6 +18,7 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Map;
+import java.util.Stack;
import org.apache.avalon.framework.CascadingRuntimeException;
import org.apache.avalon.framework.configuration.Configurable;
@@ -29,9 +30,14 @@
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
-import org.apache.cocoon.sitemap.ComponentLocator;
+import org.apache.cocoon.sitemap.EnterSitemapEvent;
+import org.apache.cocoon.sitemap.EnterSitemapEventListener;
+import org.apache.cocoon.sitemap.LeaveSitemapEvent;
+import org.apache.cocoon.sitemap.LeaveSitemapEventListener;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
import org.springframework.beans.BeansException;
@@ -54,9 +60,10 @@
*/
public class CocoonXmlWebApplicationContext
extends XmlWebApplicationContext
- implements ComponentLocator {
+ implements EnterSitemapEventListener, LeaveSitemapEventListener {
public static final String DEFAULT_SPRING_CONFIG = "conf/applicationContext.xml";
+ public static final String APPLICATION_CONTEXT_REQUEST_ATTRIBUTE = "application-context";
final private Resource avalonResource;
protected SourceResolver resolver;
@@ -168,24 +175,48 @@
}
/**
- * @see org.apache.cocoon.sitemap.ComponentLocator#getComponent(java.lang.String)
+ * @see org.apache.cocoon.sitemap.EnterSitemapEventListener#enteredSitemap(org.apache.cocoon.sitemap.EnterSitemapEvent)
*/
- public Object getComponent(String key) throws ProcessingException {
- return this.getBean(key);
+ public void enteredSitemap(EnterSitemapEvent event) {
+ final Request request = ObjectModelHelper.getRequest(event.getEnvironment().getObjectModel());
+ final Object oldContext = request.getAttribute(APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
+ if ( oldContext != null ) {
+ Stack stack = (Stack)request.getAttribute("ac-stack", Request.REQUEST_SCOPE);
+ if ( stack == null ) {
+ stack = new Stack();
+ request.setAttribute("ac-stack", stack, Request.REQUEST_SCOPE);
+ }
+ stack.push(oldContext);
+ }
+ request.setAttribute(APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, this, Request.REQUEST_SCOPE);
}
/**
- * @see org.apache.cocoon.sitemap.ComponentLocator#hasComponent(java.lang.String)
+ * @see org.apache.cocoon.sitemap.LeaveSitemapEventListener#leftSitemap(org.apache.cocoon.sitemap.LeaveSitemapEvent)
*/
- public boolean hasComponent(String key) {
- return this.containsBean(key);
+ public void leftSitemap(LeaveSitemapEvent event) {
+ final Request request = ObjectModelHelper.getRequest(event.getEnvironment().getObjectModel());
+ final Stack stack = (Stack)request.getAttribute("ac-stack", Request.REQUEST_SCOPE);
+ if ( stack == null ) {
+ request.removeAttribute(APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, Request.REQUEST_SCOPE);
+ } else {
+ final Object oldContext = stack.pop();
+ request.setAttribute(APPLICATION_CONTEXT_REQUEST_ATTRIBUTE, oldContext, Request.REQUEST_SCOPE);
+ if ( stack.size() == 0 ) {
+ request.removeAttribute("ac-stack", Request.REQUEST_SCOPE);
+ }
+ }
}
- /**
- * @see org.apache.cocoon.sitemap.ComponentLocator#release(java.lang.Object)
- */
- public void release(Object component) {
- // nothing to do
+ public CocoonXmlWebApplicationContext getCurrentApplicationContext() {
+ final Request request = ContextHelper.getRequest(this.avalonContext);
+ if ( this.avalonContext == null ) {
+ return this;
+ }
+ if ( request.getAttribute(APPLICATION_CONTEXT_REQUEST_ATTRIBUTE) != null ) {
+ return (CocoonXmlWebApplicationContext)request.getAttribute(APPLICATION_CONTEXT_REQUEST_ATTRIBUTE);
+ }
+ return this;
}
/**
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/Sitemap.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/Sitemap.java?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/Sitemap.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/sitemap/Sitemap.java Mon Feb 20 03:48:20 2006
@@ -15,12 +15,13 @@
*/
package org.apache.cocoon.sitemap;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.Processor;
import org.apache.cocoon.components.flow.Interpreter;
/**
* TODO WORK IN PROGRESS!!
- *
+ * FIXME - we should not use the service manager
* This interface describes the current sitemap. The current sitemap is available using
* {@link org.apache.cocoon.core.Core#getCurrentSitemap()}.
*
@@ -33,7 +34,7 @@
* Return the locator of the current sitemap.
* @return The current locator.
*/
- ComponentLocator getComponentLocator();
+ ServiceManager getComponentLocator();
/**
* Return the current processor
Modified: cocoon/trunk/pom.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/pom.xml?rev=379105&r1=379104&r2=379105&view=diff
==============================================================================
--- cocoon/trunk/pom.xml (original)
+++ cocoon/trunk/pom.xml Mon Feb 20 03:48:20 2006
@@ -52,7 +52,6 @@
<module>cocoon-portal</module>
<module>cocoon-session-fw</module>
<module>cocoon-sitemap</module>
- <module>cocoon-spring</module>
<module>cocoon-template</module>
<module>cocoon-validation</module>
<!--module>cocoon-xmldb</module-->