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/07/02 13:03:31 UTC
svn commit: r418569 - in /cocoon/trunk:
blocks/cocoon-auth/cocoon-auth-impl/src/main/java/org/apache/cocoon/auth/impl/
blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/
blocks/cocoon-portal/cocoon-portal-impl/src/main...
Author: cziegeler
Date: Sun Jul 2 04:03:28 2006
New Revision: 418569
URL: http://svn.apache.org/viewvc?rev=418569&view=rev
Log:
More core cleanup to make Cocoon class and CocoonServlet class obsolete
Readd RequestListener
Add new DebugFilter
PropertyProvider is now a regular Spring bean (like a custom logger)
Added:
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java (with props)
Removed:
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/SettingsHelper.java
Modified:
cocoon/trunk/blocks/cocoon-auth/cocoon-auth-impl/src/main/java/org/apache/cocoon/auth/impl/StandardApplicationManager.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPAdapter.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/test/java/org/apache/cocoon/portal/AbstractPortalTestCase.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/Constants.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/ProcessingUtil.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/modules/input/SettingsInputModule.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/BaseSettings.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/PropertyProvider.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/generation/StatusGenerator.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServletListener.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/multipart/MultipartFilter.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/sitemap/SitemapServlet.java
cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java
cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/core/TestBootstrapEnvironment.java
cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml
Modified: cocoon/trunk/blocks/cocoon-auth/cocoon-auth-impl/src/main/java/org/apache/cocoon/auth/impl/StandardApplicationManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-auth/cocoon-auth-impl/src/main/java/org/apache/cocoon/auth/impl/StandardApplicationManager.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-auth/cocoon-auth-impl/src/main/java/org/apache/cocoon/auth/impl/StandardApplicationManager.java (original)
+++ cocoon/trunk/blocks/cocoon-auth/cocoon-auth-impl/src/main/java/org/apache/cocoon/auth/impl/StandardApplicationManager.java Sun Jul 2 04:03:28 2006
@@ -20,7 +20,7 @@
import java.util.Iterator;
import java.util.Map;
-import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.apache.avalon.framework.CascadingRuntimeException;
@@ -34,11 +34,11 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.commons.lang.ObjectUtils;
import org.apache.cocoon.auth.Application;
import org.apache.cocoon.auth.ApplicationManager;
@@ -80,10 +80,8 @@
public void contextualize(final Context aContext) throws ContextException {
this.context = aContext;
try {
- ServletConfig config =
- (ServletConfig)this.context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
- config.getServletContext().setAttribute(StandardApplicationManager.class.getName(),
- this);
+ final ServletContext servletContext = (ServletContext)aContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+ servletContext.setAttribute(StandardApplicationManager.class.getName(), this);
} catch (ContextException ignore) {
// we ignore this if we are not running inside a servlet environment
}
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java Sun Jul 2 04:03:28 2006
@@ -22,7 +22,7 @@
import java.util.List;
import java.util.Map;
-import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.configuration.Configurable;
@@ -36,6 +36,7 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
@@ -50,7 +51,6 @@
import org.apache.cocoon.portal.layout.SkinDescription;
import org.apache.cocoon.portal.layout.renderer.Renderer;
import org.apache.cocoon.portal.profile.ProfileManager;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
@@ -222,12 +222,12 @@
/**
* @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
*/
- public void contextualize(Context context) throws ContextException {
- this.context = context;
+ public void contextualize(Context aContext) throws ContextException {
+ this.context = aContext;
// add the portal service to the servlet context - if available
try {
- final ServletConfig servletConfig = (ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
- servletConfig.getServletContext().setAttribute(PortalService.ROLE, this);
+ final ServletContext servletContext = (ServletContext)aContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+ servletContext.setAttribute(PortalService.ROLE, this);
} catch (ContextException ignore) {
// we ignore the context exception
// this avoids startup errors if the portal is configured for the CLI
@@ -244,11 +244,13 @@
this.portalComponentManager.dispose();
}
// remove the portal service from the servlet context - if available
- try {
- final ServletConfig servletConfig = (ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
- servletConfig.getServletContext().removeAttribute(PortalService.ROLE);
- } catch (ContextException ignore) {
- // we ignore the context exception
+ if ( this.context != null ) {
+ try {
+ final ServletContext servletContext = (ServletContext)this.context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+ servletContext.removeAttribute(PortalService.ROLE);
+ } catch (ContextException ignore) {
+ // we ignore the context exception
+ }
}
}
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java Sun Jul 2 04:03:28 2006
@@ -23,13 +23,10 @@
import javax.portlet.PortletMode;
import javax.portlet.PortletRequest;
import javax.portlet.WindowState;
-import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
@@ -56,7 +53,6 @@
import org.apache.cocoon.portal.pluto.servlet.ServletResponseImpl;
import org.apache.cocoon.portal.serialization.IncludingHTMLSerializer;
import org.apache.cocoon.portal.util.HtmlSaxParser;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.cocoon.xml.AttributesImpl;
import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
@@ -85,9 +81,6 @@
extends AbstractCopletAdapter
implements PortalManagerAspect, CopletDecorationProvider, Receiver, Parameterizable {
- /** The servlet configuration for pluto. */
- protected ServletConfig servletConfig;
-
/** The Portlet Container. */
protected PortletContainer portletContainer;
@@ -98,21 +91,6 @@
protected Parameters parameters;
/**
- * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
- */
- public void contextualize(Context context) throws ContextException {
- super.contextualize(context);
- try {
- this.servletConfig = (ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
- } catch (ContextException ignore) {
- // we ignore the context exception
- // this avoids startup errors if the portal is configured for the CLI
- // environment
- this.getLogger().warn("The JSR-168 support is disabled as the servlet context is not available.", ignore);
- }
- }
-
- /**
* @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
*/
public void parameterize(Parameters params) throws ParameterException {
@@ -257,9 +235,7 @@
*/
public void initialize() throws Exception {
super.initialize();
- if ( this.servletConfig != null ) {
- this.initContainer();
- }
+ this.initContainer();
}
/**
@@ -297,7 +273,9 @@
Properties properties = new Properties();
try {
- portletContainer.init(uniqueContainerName, servletConfig, this.portletContainerEnvironment, properties);
+ // TODO - Currently it's safe to pass in null as the ServletConfig into Pluto, but we
+ // should try to provide an object
+ portletContainer.init(uniqueContainerName, null, this.portletContainerEnvironment, properties);
} catch (PortletContainerException exc) {
throw new ProcessingException("Initialization of the portlet container failed.", exc);
}
@@ -350,11 +328,6 @@
throws ProcessingException {
// process the events
aspectContext.invokeNext();
-
- // if we aren't running in a servlet environment, just skip the JSR-168 part
- if ( this.servletConfig == null ) {
- return;
- }
// do we already have an environment?
// if not, create one
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java Sun Jul 2 04:03:28 2006
@@ -29,7 +29,6 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import org.apache.avalon.framework.parameters.ParameterException;
@@ -37,6 +36,7 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.Constants;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.components.thread.RunnableManager;
import org.apache.cocoon.portal.PortalComponentManager;
@@ -50,7 +50,6 @@
import org.apache.cocoon.portal.impl.AbstractComponent;
import org.apache.cocoon.portal.pluto.deployment.Deployer;
import org.apache.cocoon.portal.pluto.deployment.WebApplicationRewriter;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.xml.EntityResolver;
@@ -125,8 +124,8 @@
/** The threadpool name to be used for daemon thread. */
protected String threadPoolName = "daemon";
- /** The servlet config. */
- protected ServletConfig servletConfig;
+ /** The servlet context. */
+ protected ServletContext servletContext;
/**
* Default constructor.
@@ -183,11 +182,10 @@
}
super.initialize();
- this.servletConfig = (ServletConfig) this.context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
- final ServletContext servletContext = servletConfig.getServletContext();
+ this.servletContext = (ServletContext)context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
// get our context path
- String baseWMDir = servletContext.getRealPath("");
+ String baseWMDir = this.servletContext.getRealPath("");
if (baseWMDir != null) {
// BEGIN PATCH for IBM WebSphere
if (baseWMDir.endsWith(File.separator)) {
@@ -198,7 +196,7 @@
this.contextName = baseWMDir.substring(lastIndex + 1);
baseWMDir = baseWMDir.substring(0, lastIndex);
if (this.getLogger().isDebugEnabled()) {
- this.getLogger().debug("servletContext.getRealPath('') =" + servletContext.getRealPath(""));
+ this.getLogger().debug("servletContext.getRealPath('') =" + this.servletContext.getRealPath(""));
this.getLogger().debug("baseWMDir = " + baseWMDir);
}
}
@@ -279,7 +277,7 @@
+ "and 'webapp-directory' is not configured.");
}
this.contextName = "local";
- this.loadLocal(this.servletConfig);
+ this.loadLocal();
} else {
this.scanWebapps();
}
@@ -331,19 +329,18 @@
}
}
- protected void loadLocal(ServletConfig config)
+ protected void loadLocal()
throws Exception {
- final ServletContext servletContext = config.getServletContext();
- URL url = servletContext.getResource("/" + PORTLET_XML);
+ URL url = this.servletContext.getResource("/" + PORTLET_XML);
if (url != null) {
InputSource portletSource = new InputSource(url.openStream());
portletSource.setSystemId(url.toExternalForm());
- url = servletContext.getResource("/" + WEB_XML);
+ url = this.servletContext.getResource("/" + WEB_XML);
final InputSource webSource = new InputSource(url.openStream());
webSource.setSystemId(url.toExternalForm());
- url = servletContext.getResource("/" + COPLET_XML);
+ url = this.servletContext.getResource("/" + COPLET_XML);
InputSource copletSource = null;
if ( url != null ) {
copletSource = new InputSource(url.openStream());
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java Sun Jul 2 04:03:28 2006
@@ -17,6 +17,7 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -33,6 +34,7 @@
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.context.Context;
@@ -40,6 +42,7 @@
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.Constants;
import org.apache.cocoon.portal.impl.AbstractComponent;
import org.apache.cocoon.portal.pluto.factory.ActionRequestFactoryImpl;
import org.apache.cocoon.portal.pluto.factory.ControllerFactoryImpl;
@@ -47,7 +50,6 @@
import org.apache.cocoon.portal.pluto.factory.PortletInvokerFactoryImpl;
import org.apache.cocoon.portal.pluto.factory.PortletPreferencesFactoryImpl;
import org.apache.cocoon.portal.pluto.factory.RenderRequestFactoryImpl;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.cocoon.util.ClassUtils;
import org.apache.pluto.factory.Factory;
import org.apache.pluto.factory.ObjectIDFactory;
@@ -91,11 +93,49 @@
/**<
* @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
*/
- public void contextualize(Context context) throws ContextException {
- super.contextualize(context);
- this.servletConfig = (ServletConfig)this.context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
+ public void contextualize(Context aContext) throws ContextException {
+ super.contextualize(aContext);
+ final ServletContext servletContext = (ServletContext)aContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+ this.servletConfig = new PortalServletConfig(servletContext);
}
+ protected static final class PortalServletConfig implements ServletConfig {
+
+ private final ServletContext servletContext;
+
+ public PortalServletConfig(ServletContext sContext) {
+ this.servletContext = sContext;
+ }
+
+ /**
+ * @see javax.servlet.ServletConfig#getInitParameter(java.lang.String)
+ */
+ public String getInitParameter(String arg0) {
+ return this.servletContext.getInitParameter(arg0);
+ }
+
+ /**
+ * @see javax.servlet.ServletConfig#getInitParameterNames()
+ */
+ public Enumeration getInitParameterNames() {
+ return this.servletContext.getInitParameterNames();
+ }
+
+ /**
+ * @see javax.servlet.ServletConfig#getServletContext()
+ */
+ public ServletContext getServletContext() {
+ return this.servletContext;
+ }
+
+ /**
+ * @see javax.servlet.ServletConfig#getServletName()
+ */
+ public String getServletName() {
+ return this.servletContext.getServletContextName();
+ }
+
+ }
/**
* @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
*/
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPAdapter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPAdapter.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPAdapter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPAdapter.java Sun Jul 2 04:03:28 2006
@@ -22,8 +22,6 @@
import java.util.List;
import java.util.Map;
-import javax.servlet.ServletConfig;
-
import oasis.names.tc.wsrp.v1.types.BlockingInteractionResponse;
import oasis.names.tc.wsrp.v1.types.LocalizedString;
import oasis.names.tc.wsrp.v1.types.MarkupContext;
@@ -38,8 +36,6 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
@@ -79,7 +75,6 @@
import org.apache.cocoon.portal.wsrp.consumer.WSRPRequestImpl;
import org.apache.cocoon.portal.wsrp.logging.WSRPLogManager;
import org.apache.cocoon.portal.wsrp.logging.WSRPLogger;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.xml.AbstractXMLPipe;
import org.apache.cocoon.xml.AttributesImpl;
@@ -158,9 +153,6 @@
/** Stores the current coplet instance data per thread. */
protected final ThreadLocal copletInstanceData = new ThreadLocal();
- /** The servlet configuration. */
- protected ServletConfig servletConfig;
-
/** The user context provider. */
protected UserContextProvider userContextProvider;
@@ -175,21 +167,6 @@
/** The configuration for this adapter. */
protected Parameters parameters;
-
- /**
- * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
- */
- public void contextualize(Context context) throws ContextException {
- super.contextualize(context);
- try {
- this.servletConfig = (ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
- } catch (ContextException ignore) {
- // we ignore the context exception
- // this avoids startup errors if the portal is configured for the CLI
- // environment
- this.getLogger().warn("The wsrp support is disabled as the servlet context is not available.", ignore);
- }
- }
/**
* @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/test/java/org/apache/cocoon/portal/AbstractPortalTestCase.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/test/java/org/apache/cocoon/portal/AbstractPortalTestCase.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/test/java/org/apache/cocoon/portal/AbstractPortalTestCase.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/test/java/org/apache/cocoon/portal/AbstractPortalTestCase.java Sun Jul 2 04:03:28 2006
@@ -23,13 +23,11 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.context.DefaultContext;
import org.apache.cocoon.CocoonTestCase;
import org.apache.cocoon.core.container.spring.ComponentInfo;
import org.apache.cocoon.core.container.spring.ConfigurationInfo;
import org.apache.cocoon.environment.mock.MockContext;
import org.apache.cocoon.portal.impl.PortalServiceImpl;
-import org.apache.cocoon.servlet.CocoonServlet;
/**
* Abstract test case class that can be used as a base for own portal
@@ -69,14 +67,6 @@
rootConfig.addChild(portalConfig);
rootConfig.makeReadOnly();
return rootConfig;
- }
-
- /**
- * @see org.apache.cocoon.core.container.ContainerTestCase#addContext(org.apache.avalon.framework.context.DefaultContext)
- */
- protected void addContext(DefaultContext context) {
- super.addContext(context);
- context.put(CocoonServlet.CONTEXT_SERVLET_CONFIG, this.getServletConfig());
}
/**
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/Constants.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/Constants.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/Constants.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/Constants.java Sun Jul 2 04:03:28 2006
@@ -178,7 +178,7 @@
/** The namespace prefix for the Error/Exception XML */
public static final String ERROR_NAMESPACE_PREFIX = "error";
- /** Application <code>Context</code> Key for the environmental Context */
+ /** Application <code>Context</code> Key for the environmental Context (= ServletContext) */
public static final String CONTEXT_ENVIRONMENT_CONTEXT = "environment-context";
/** Application <code>Context</code> Key for the work directory path */
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/ProcessingUtil.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/ProcessingUtil.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/ProcessingUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/ProcessingUtil.java Sun Jul 2 04:03:28 2006
@@ -22,7 +22,6 @@
import java.util.Map;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.core.Settings;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
import org.apache.excalibur.source.SourceResolver;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
@@ -42,9 +41,6 @@
/** Bean name for the logger. */
public static final String LOGGER_ROLE = "org.apache.avalon.framework.logger.Logger";
-
- /** Bean name for the settings. */
- public static final String SETTINGS_ROLE = Settings.class.getName();
/** Bean name for the service manager. */
public static final String SERVICE_MANAGER_ROLE = "org.apache.avalon.framework.service.ServiceManager";
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/modules/input/SettingsInputModule.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/modules/input/SettingsInputModule.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/modules/input/SettingsInputModule.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/modules/input/SettingsInputModule.java Sun Jul 2 04:03:28 2006
@@ -22,7 +22,6 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.ProcessingUtil;
import org.apache.cocoon.core.Settings;
import org.apache.cocoon.environment.internal.EnvironmentHelper;
import org.apache.commons.collections.IteratorUtils;
@@ -44,7 +43,7 @@
*/
public Object getAttribute(String name, Configuration modeConf, Map objectModel)
throws ConfigurationException {
- final Settings settings = (Settings)EnvironmentHelper.getCurrentProcessor().getBeanFactory().getBean(ProcessingUtil.SETTINGS_ROLE);
+ final Settings settings = (Settings)EnvironmentHelper.getCurrentProcessor().getBeanFactory().getBean(Settings.ROLE);
if ( settings != null ) {
return settings.getProperty(name);
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java Sun Jul 2 04:03:28 2006
@@ -22,7 +22,6 @@
import java.util.Map;
import java.util.Set;
-import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import org.apache.avalon.framework.context.ContextException;
@@ -34,7 +33,6 @@
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Context;
-import org.apache.cocoon.servlet.CocoonServlet;
import org.apache.commons.lang.BooleanUtils;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
@@ -60,9 +58,6 @@
ThreadSafe,
URIAbsolutizer {
- /** The context */
- protected Context envContext;
-
/** The ServiceManager */
protected ServiceManager manager;
@@ -81,12 +76,7 @@
*/
public void contextualize(org.apache.avalon.framework.context.Context context)
throws ContextException {
- this.envContext = (Context) context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
- try {
- this.servletContext = ((ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG)).getServletContext();
- } catch (ContextException ignore) {
- // in other environments (CLI etc.), we don't have a servlet context
- }
+ this.servletContext = (Context) context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
}
/**
@@ -116,11 +106,11 @@
URL u;
// Try to get a file first and fall back to a resource URL
- String actualPath = envContext.getRealPath(path);
+ String actualPath = this.servletContext.getRealPath(path);
if (actualPath != null) {
u = new File(actualPath).toURL();
} else {
- u = envContext.getResource(path);
+ u = this.servletContext.getResource(path);
}
if (u != null) {
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java Sun Jul 2 04:03:28 2006
@@ -20,7 +20,6 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.ProcessingUtil;
import org.apache.cocoon.components.pipeline.ProcessingPipeline;
import org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNodeBuilder;
import org.apache.cocoon.components.treeprocessor.ProcessingNode;
@@ -49,7 +48,7 @@
super.setBuilder(treeBuilder);
// check ssettings for ignoring of internal only pipeline flags
this.ignoreInternalOnly = false;
- final Settings settings = (Settings)treeBuilder.getBeanFactory().getBean(ProcessingUtil.SETTINGS_ROLE);
+ final Settings settings = (Settings)treeBuilder.getBeanFactory().getBean(Settings.ROLE);
final String value = settings.getProperty(PipelineNodeBuilder.PROPERTY_SITEMAP_INTERNALONLY);
if ( value != null ) {
this.ignoreInternalOnly = Boolean.valueOf(value).booleanValue();
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java Sun Jul 2 04:03:28 2006
@@ -76,7 +76,6 @@
import org.apache.cocoon.sitemap.LeaveSitemapEventListener;
import org.apache.cocoon.sitemap.PatternException;
import org.apache.cocoon.sitemap.SitemapParameters;
-import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.util.Deprecation;
import org.apache.cocoon.util.location.Location;
import org.apache.cocoon.util.location.LocationImpl;
@@ -399,10 +398,10 @@
factory.setBeanFactory(this.beanFactory);
// check for sitemap local properties
- Settings settings = (Settings)factory.getCurrentBeanFactory(itsContext).getBean(ProcessingUtil.SETTINGS_ROLE);
+ Settings settings = (Settings)factory.getCurrentBeanFactory(itsContext).getBean(Settings.ROLE);
if ( componentConfig != null && componentConfig.getAttribute("property-dir", null) != null ) {
final String propertyDir = componentConfig.getAttribute("property-dir");
- settings = this.createSettings(settings, propertyDir, useDefaultIncludes);
+ settings = this.createSettings(settings, propertyDir, useDefaultIncludes, factory.getCurrentBeanFactory(itsContext));
}
// compatibility with 2.1.x - check for global variables in sitemap
// TODO - This will be removed in later versions!
@@ -1152,7 +1151,8 @@
*/
protected MutableSettings createSettings(Settings parent,
String directory,
- boolean useDefaultIncludes) {
+ boolean useDefaultIncludes,
+ BeanFactory parentBeanFactory) {
// get the running mode
final String mode = System.getProperty(Settings.PROPERTY_RUNNING_MODE, Settings.DEFAULT_RUNNING_MODE);
@@ -1171,15 +1171,15 @@
// read all properties from the mode dependent directory
this.readProperties(directory + '/' + mode, s);
- // Next look for custom property providers
- Iterator i = s.getPropertyProviders().iterator();
- while ( i.hasNext() ) {
- final String className = (String)i.next();
+ // Next look for a custom property provider in the parent bean factory
+ if (parentBeanFactory != null && parentBeanFactory.containsBean(PropertyProvider.ROLE) ) {
try {
- PropertyProvider provider = (PropertyProvider)ClassUtils.newInstance(className);
- s.fill(provider.getProperties());
+ final Environment env = EnvironmentHelper.getCurrentEnvironment();
+ PropertyProvider provider = (PropertyProvider)parentBeanFactory.getBean(PropertyProvider.ROLE);
+ // TODO - add the name of the sitemap file to the path
+ s.fill(provider.getProperties(env.getURIPrefix()));
} catch (Exception ignore) {
- this.getLogger().warn("Unable to get property provider for class " + className, ignore);
+ this.getLogger().warn("Unable to get properties from provider.", ignore);
this.getLogger().warn("Continuing initialization.");
}
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/BaseSettings.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/BaseSettings.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/BaseSettings.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/BaseSettings.java Sun Jul 2 04:03:28 2006
@@ -43,9 +43,6 @@
/** This parameter specifies the class for the root processor */
String KEY_PROCESSOR_CLASS = "processor";
- /** The default root processor */
- String DEFAULT_PROCESSOR_CLASS = "org.apache.cocoon.Cocoon";
-
/**
* This parameter points to the main configuration file for Cocoon.
* Note that the path is specified in absolute notation but it will be
@@ -125,6 +122,15 @@
String KEY_FORM_ENCODING = "formencoding";
/**
+ * Set encoding used by the container. If not set the ISO-8859-1 encoding
+ * will be assumed.
+ * Since the servlet specification requires that the ISO-8859-1 encoding
+ * is used (by default), you should never change this value unless
+ * you have a buggy servlet container.
+ */
+ String KEY_CONTAINER_ENCODING = "containerencoding";
+
+ /**
* If this value is specified, it will be interpreted as a log level and
* all logging categories will be set to this level regardless of their
* definition in the logging configuration.
@@ -132,17 +138,6 @@
String KEY_LOGGING_OVERRIDE_LOGLEVEL = "override.loglevel";
/**
- * This key allows to add own {@link PropertyProvider}s.
- */
- String KEY_PROPERTY_PROVIDER = "property.provider";
-
- /**
- * @return Returns the class for the root processor
- * @see #KEY_PROCESSOR_CLASS
- */
- String getProcessorClassName();
-
- /**
* @return Returns the configuration.
* @see #KEY_CONFIGURATION
*/
@@ -197,6 +192,12 @@
String getFormEncoding();
/**
+ * @return Returns the container encoding
+ * @see #KEY_CONTAINER_ENCODING
+ */
+ String getContainerEncoding();
+
+ /**
* @return Returns the manageExceptions.
* @see #KEY_MANAGE_EXCEPTIONS
*/
@@ -218,10 +219,4 @@
* The creation time of the current Cocoon instance.
*/
long getCreationTime();
-
- /**
- * @return All property providers.
- * @see #KEY_PROPERTY_PROVIDER
- */
- List getPropertyProviders();
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java Sun Jul 2 04:03:28 2006
@@ -60,6 +60,7 @@
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.TraversableSource;
import org.apache.excalibur.source.impl.URLSource;
+import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.xml.sax.InputSource;
@@ -282,8 +283,10 @@
settings.setCacheDirectory(cacheDir.getAbsolutePath());
}
- public static DefaultContext createContext(Settings settings, Context environmentContext,
- String contextUrl, ClassLoader classLoader, BootstrapEnvironment env)
+ public static DefaultContext createContext(Settings settings,
+ Context environmentContext,
+ String contextUrl,
+ BootstrapEnvironment env)
throws ServletException, MalformedURLException {
DefaultContext appContext = new ComponentContext();
CoreUtil.addSourceResolverContext(appContext, environmentContext, env, contextUrl);
@@ -298,14 +301,17 @@
* @param env optional bootstrap context
* @param contextUrl URL for the context
*/
- private static void addSourceResolverContext(DefaultContext appContext, Context environmentContext, BootstrapEnvironment env, String contextUrl) {
+ private static void addSourceResolverContext(DefaultContext appContext,
+ Context environmentContext,
+ BootstrapEnvironment env,
+ String contextUrl) {
try {
appContext.put(ContextHelper.CONTEXT_ROOT_URL, new URL(contextUrl));
} catch (MalformedURLException ignore) {
// we simply ignore this
}
- // add environment context
+ // add environment context and config
appContext.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, environmentContext);
// now add environment specific information
@@ -377,15 +383,14 @@
// read all properties from the mode dependent directory
this.readProperties("context://WEB-INF/properties/" + mode, s, resolver);
- // Next look for custom property providers
- Iterator i = s.getPropertyProviders().iterator();
- while ( i.hasNext() ) {
- final String className = (String)i.next();
+ // Next look for a custom property provider in the spring root context
+ BeanFactory rootContext = BeanFactoryUtil.getWebApplicationContext(environmentContext);
+ if (rootContext != null && rootContext.containsBean(PropertyProvider.ROLE) ) {
try {
- PropertyProvider provider = (PropertyProvider)ClassUtils.newInstance(className);
- s.fill(provider.getProperties());
+ PropertyProvider provider = (PropertyProvider)rootContext.getBean(PropertyProvider.ROLE);
+ s.fill(provider.getProperties(null));
} catch (Exception ignore) {
- this.environmentContext.log("Unable to get property provider for class " + className, ignore);
+ this.environmentContext.log("Unable to get properties from provider.", ignore);
this.environmentContext.log("Continuing initialization.");
}
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java Sun Jul 2 04:03:28 2006
@@ -42,11 +42,6 @@
protected final List properties = new ArrayList();
/**
- * This parameter indicates what class to use for the root processor.
- */
- protected String processorClassName;
-
- /**
* This parameter points to the main configuration file for Cocoon.
* Note that the path is specified in absolute notation but it will be
* resolved relative to the application context path.
@@ -185,8 +180,10 @@
/** The time the cocoon instance was created. */
protected Long creationTime;
- /** The property providers. */
- protected final List propertyProviders = new ArrayList();
+ /** The container encoding.
+ * @see BaseSettings#KEY_CONTAINER_ENCODING
+ */
+ protected String containerEncoding;
/** The optional parent settings object. */
protected Settings parent;
@@ -196,7 +193,6 @@
*/
public MutableSettings() {
// set default values
- this.processorClassName = DEFAULT_PROCESSOR_CLASS;
this.reloadingEnabled = BooleanUtils.toBooleanObject(RELOADING_ENABLED_DEFAULT);
this.enableUploads = BooleanUtils.toBooleanObject(ENABLE_UPLOADS);
this.autosaveUploads = BooleanUtils.toBooleanObject(SAVE_UPLOADS_TO_DISK);
@@ -206,6 +202,7 @@
this.showCocoonVersion = BooleanUtils.toBooleanObject(SHOW_COCOON_VERSION);
this.manageExceptions = BooleanUtils.toBooleanObject(MANAGE_EXCEPTIONS);
this.configurationReloadDelay = new Long(1000);
+ this.containerEncoding = "ISO-8859-1";
}
public MutableSettings(Settings parent) {
@@ -226,9 +223,7 @@
key = key.substring(KEYPREFIX.length());
final String value = current.getValue().toString();
- if ( key.equals(KEY_PROCESSOR_CLASS) ) {
- this.processorClassName = value;
- } else if ( key.equals(KEY_CONFIGURATION) ) {
+ if ( key.equals(KEY_CONFIGURATION) ) {
this.configuration = value;
} else if ( key.equals(KEY_RELOAD_DELAY) ) {
this.configurationReloadDelay = Long.valueOf(value);
@@ -270,8 +265,8 @@
this.overrideLogLevel = value;
} else if ( key.startsWith(KEY_LOAD_CLASSES) ) {
this.addToLoadClasses(value);
- } else if ( key.startsWith(KEY_PROPERTY_PROVIDER) ) {
- this.addToPropertyProviders(value);
+ } else if ( key.startsWith(KEY_CONTAINER_ENCODING ) ) {
+ this.containerEncoding = value;
}
}
}
@@ -358,16 +353,6 @@
}
/**
- * @see org.apache.cocoon.core.BaseSettings#getProcessorClassName()
- */
- public String getProcessorClassName() {
- if ( this.processorClassName == null && this.parent != null ) {
- return this.parent.getProcessorClassName();
- }
- return this.processorClassName;
- }
-
- /**
* @see org.apache.cocoon.core.BaseSettings#getConfiguration()
*/
public String getConfiguration() {
@@ -401,6 +386,24 @@
}
/**
+ * @see org.apache.cocoon.core.BaseSettings#getContainerEncoding()
+ */
+ public String getContainerEncoding() {
+ if ( this.containerEncoding == null && this.parent != null ) {
+ return this.parent.getContainerEncoding();
+ }
+ return this.containerEncoding;
+ }
+
+ /**
+ * Set the container encoding.
+ * @param value The new encoding value.
+ */
+ public void setContainerEncoding(String value) {
+ this.containerEncoding = value;
+ }
+
+ /**
* @see org.apache.cocoon.core.BaseSettings#getLoadClasses()
*/
public List getLoadClasses() {
@@ -609,9 +612,7 @@
String value = null;
if ( key.startsWith(KEYPREFIX) ) {
final String sKey = key.substring(KEYPREFIX.length());
- if ( sKey.equals(KEY_PROCESSOR_CLASS) ) {
- value = this.getProcessorClassName();
- } else if ( sKey.equals(KEY_CONFIGURATION) ) {
+ if ( sKey.equals(KEY_CONFIGURATION) ) {
value = this.getConfiguration();
} else if ( sKey.equals(KEY_RELOAD_DELAY) ) {
value = String.valueOf(this.getReloadDelay(null));
@@ -651,8 +652,8 @@
value = this.getOverrideLogLevel();
} else if ( key.equals(KEY_LOAD_CLASSES) ) {
value = this.toString(this.getLoadClasses());
- } else if ( key.equals(KEY_PROPERTY_PROVIDER) ) {
- value = this.toString(this.getPropertyProviders());
+ } else if ( key.equals(KEY_CONTAINER_ENCODING) ) {
+ value = this.containerEncoding;
}
}
@@ -678,7 +679,6 @@
public String toString() {
return "Settings:\n" +
"Running mode : " + this.getProperty(PROPERTY_RUNNING_MODE, DEFAULT_RUNNING_MODE) + '\n' +
- KEY_PROCESSOR_CLASS + " : " + this.processorClassName + '\n' +
KEY_CONFIGURATION + " : " + this.configuration + '\n' +
KEY_RELOAD_DELAY + " : " + this.configurationReloadDelay + '\n' +
KEY_RELOADING + " : " + this.reloadingEnabled + '\n' +
@@ -697,6 +697,7 @@
KEY_CACHE_DIRECTORY + " : " + this.cacheDirectory + '\n' +
KEY_WORK_DIRECTORY + " : " + this.workDirectory + '\n' +
KEY_FORM_ENCODING + " : " + this.formEncoding + '\n' +
+ KEY_CONTAINER_ENCODING + " : " + this.containerEncoding + '\n' +
KEY_SHOWTIME + " : " + this.showTime + '\n' +
KEY_HIDE_SHOWTIME + " : " + this.hideShowTime + '\n' +
KEY_SHOW_VERSION + " : " + this.showCocoonVersion + '\n';
@@ -739,9 +740,9 @@
/**
* @param autosaveUploads The autosaveUploads to set.
*/
- public void setAutosaveUploads(boolean autosaveUploads) {
+ public void setAutosaveUploads(boolean autosaveUploadsValue) {
this.checkWriteable();
- this.autosaveUploads = BooleanUtils.toBooleanObject(autosaveUploads);
+ this.autosaveUploads = BooleanUtils.toBooleanObject(autosaveUploadsValue);
}
/**
@@ -753,14 +754,6 @@
}
/**
- * @param processorClassName The processorClassName to set.
- */
- public void setProcessorClassName(String processorClassName) {
- this.checkWriteable();
- this.processorClassName = processorClassName;
- }
-
- /**
* @param cocoonLogger The cocoonLogger to set.
*/
public void setCocoonLogger(String cocoonLogger) {
@@ -936,22 +929,6 @@
// Don't check read only here as this will change if Cocoon
// is reloaded while the settings remain the same.
this.creationTime = new Long(value);
- }
-
- /**
- * @see org.apache.cocoon.core.BaseSettings#getPropertyProviders()
- */
- public List getPropertyProviders() {
- // we don't ask the parent here
- return this.propertyProviders;
- }
-
- /**
- * Add a property provider.
- */
- public void addToPropertyProviders(String className) {
- this.checkWriteable();
- this.propertyProviders.add(className);
}
/**
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/PropertyProvider.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/PropertyProvider.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/PropertyProvider.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/PropertyProvider.java Sun Jul 2 04:03:28 2006
@@ -21,11 +21,15 @@
/**
* This is an interface for custom components delivering properties to
* configure Cocoon.
+ * This component must be setup as a Spring bean in the root application
+ * context.
*
* @version $Id$
* @since 2.2
*/
public interface PropertyProvider {
- Properties getProperties();
+ String ROLE = PropertyProvider.class.getName();
+
+ Properties getProperties(String path);
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java Sun Jul 2 04:03:28 2006
@@ -161,7 +161,7 @@
factory.registerSingleton(SourceResolver.ROLE + "/Local", resolver);
}
// add local settings
- factory.registerSingleton(ProcessingUtil.SETTINGS_ROLE, env.settings);
+ factory.registerSingleton(Settings.ROLE, env.settings);
prepareBeanFactory(factory, info);
if (preInstantiateSingletons) {
factory.preInstantiateSingletons();
@@ -185,16 +185,24 @@
public static ConfigurableListableBeanFactory createRootBeanFactory(AvalonEnvironment env,
ServletContext servletContext)
throws Exception {
- ApplicationContext parent = null;
- if( servletContext != null) {
- parent = (ApplicationContext)servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
- }
+ ApplicationContext parent = getWebApplicationContext(servletContext);
CocoonBeanFactory factory = new CocoonBeanFactory(parent);
factory.registerSingleton(ProcessingUtil.CONTEXT_ROLE, env.context);
factory.registerSingleton(ProcessingUtil.LOGGER_ROLE, env.logger);
- factory.registerSingleton(ProcessingUtil.SETTINGS_ROLE, env.settings);
+ factory.registerSingleton(Settings.ROLE, env.settings);
factory.preInstantiateSingletons();
return factory;
+ }
+
+ /**
+ * Get a possible root context.
+ */
+ public static ApplicationContext getWebApplicationContext(ServletContext servletContext) {
+ ApplicationContext parent = null;
+ if( servletContext != null) {
+ parent = (ApplicationContext)servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
+ }
+ return parent;
}
/**
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java Sun Jul 2 04:03:28 2006
@@ -109,7 +109,7 @@
this.logger = (Logger) this.parentBeanfactory.getBean(ProcessingUtil.LOGGER_ROLE);
}
if (this.settings == null && this.parentBeanfactory != null) {
- this.settings = (Settings) this.parentBeanfactory.getBean(ProcessingUtil.SETTINGS_ROLE);
+ this.settings = (Settings) this.parentBeanfactory.getBean(Settings.ROLE);
}
// create a minimal OSGi servlet context
@@ -148,7 +148,7 @@
this.logger.debug("Context path: " + contextPath);
// create a minimal Avalon Context
- DefaultContext avalonContext = CoreUtil.createContext(this.settings, osgiServletContext, contextPath, null, null);
+ DefaultContext avalonContext = CoreUtil.createContext(this.settings, osgiServletContext, contextPath, null);
// create an Avalon environment (it's some kind of container for Avalon related information)
AvalonEnvironment avalonEnvironment = new AvalonEnvironment();
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/generation/StatusGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/generation/StatusGenerator.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/generation/StatusGenerator.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/generation/StatusGenerator.java Sun Jul 2 04:03:28 2006
@@ -456,7 +456,6 @@
Settings.DEFAULT_RUNNING_MODE));
this.addValue(Settings.KEY_CONFIGURATION, s.getConfiguration());
this.addMultilineValue(Settings.KEY_LOAD_CLASSES, s.getLoadClasses());
- this.addValue(Settings.KEY_PROPERTY_PROVIDER, s.getPropertyProviders());
this.addValue(Settings.KEY_LOGGING_CONFIGURATION, s.getLoggingConfiguration());
this.addValue(Settings.KEY_LOGGING_BOOTSTRAP_LOGLEVEL, s.getBootstrapLogLevel());
this.addValue(Settings.KEY_LOGGING_COCOON_LOGGER, s.getCocoonLogger());
@@ -467,6 +466,7 @@
this.addValue(Settings.KEY_CACHE_DIRECTORY, s.getCacheDirectory());
this.addValue(Settings.KEY_WORK_DIRECTORY, s.getWorkDirectory());
this.addValue(Settings.KEY_FORM_ENCODING, s.getFormEncoding());
+ this.addValue(Settings.KEY_CONTAINER_ENCODING, s.getContainerEncoding());
this.endGroup();
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java Sun Jul 2 04:03:28 2006
@@ -55,12 +55,6 @@
*/
public class CocoonServlet extends HttpServlet {
- /**
- * Application <code>Context</code> Key for the servlet configuration
- * @since 2.1.3
- */
- public static final String CONTEXT_SERVLET_CONFIG = "servlet-config";
-
// Processing time message
protected static final String PROCESSED_BY = "Processed by "
+ Constants.COMPLETE_NAME + " in ";
@@ -535,8 +529,6 @@
* @see org.apache.cocoon.core.BootstrapEnvironment#configure(org.apache.cocoon.core.MutableSettings)
*/
public void configure(MutableSettings settings) {
- // fill from the servlet parameters
- SettingsHelper.fill(settings, this.config);
if ( settings.getWorkDirectory() == null ) {
final File workDir = (File)this.config.getServletContext().getAttribute("javax.servlet.context.tempdir");
settings.setWorkDirectory(workDir.getAbsolutePath());
@@ -550,7 +542,7 @@
* @see org.apache.cocoon.core.BootstrapEnvironment#configure(org.apache.avalon.framework.context.DefaultContext)
*/
public void configure(DefaultContext context) {
- context.put(CONTEXT_SERVLET_CONFIG, this.config);
+ // do nothing
}
}
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServletListener.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServletListener.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServletListener.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServletListener.java Sun Jul 2 04:03:28 2006
@@ -90,8 +90,6 @@
* @see org.apache.cocoon.core.BootstrapEnvironment#configure(org.apache.cocoon.core.MutableSettings)
*/
public void configure(MutableSettings settings) {
- // fill from the servlet parameters
- SettingsHelper.fill(settings, this.context);
if ( settings.getWorkDirectory() == null ) {
final File workDir = (File)context.getAttribute("javax.servlet.context.tempdir");
settings.setWorkDirectory(workDir.getAbsolutePath());
@@ -104,7 +102,7 @@
/**
* @see org.apache.cocoon.core.BootstrapEnvironment#configure(org.apache.avalon.framework.context.DefaultContext)
*/
- public void configure(DefaultContext context) {
+ public void configure(DefaultContext componentContext) {
// nothing to do
}
}
Added: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java?rev=418569&view=auto
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java (added)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java Sun Jul 2 04:03:28 2006
@@ -0,0 +1,172 @@
+/*
+ * 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.servlet;
+
+import java.io.IOException;
+import java.util.Enumeration;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.ProcessingUtil;
+import org.apache.commons.lang.SystemUtils;
+import org.springframework.beans.factory.BeanFactory;
+
+/**
+ * Servlet filter for handling multi part MIME uploads
+ *
+ * @version $Id$
+ */
+public class DebugFilter implements Filter{
+
+ final static protected String lineSeparator = SystemUtils.LINE_SEPARATOR;
+
+ /** Active request count. */
+ private volatile int activeRequestCount;
+
+ /** The logger. */
+ protected Logger logger;
+
+ /**
+ * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
+ */
+ public void init(FilterConfig config) throws ServletException {
+ BeanFactory cocoonBeanFactory = (BeanFactory) config.getServletContext().getAttribute(ProcessingUtil.CONTAINER_CONTEXT_ATTR_NAME);
+ this.logger = (Logger) cocoonBeanFactory.getBean(ProcessingUtil.LOGGER_ROLE);
+ }
+
+ /**
+ * @see javax.servlet.Filter#destroy()
+ */
+ public void destroy() {
+ // nothing to do here
+ }
+
+ /**
+ * Log debug information about the current environment.
+ * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
+ */
+ public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)
+ throws IOException, ServletException {
+ // we don't do debug msgs if this is not a http servlet request
+ if ( ! (req instanceof HttpServletRequest) ) {
+ filterChain.doFilter(req, res);
+ return;
+ }
+ try {
+ ++activeRequestCount;
+
+ final HttpServletRequest request = (HttpServletRequest)req;
+ final HttpSession session = ((HttpServletRequest)req).getSession(false);
+ final StringBuffer msg = new StringBuffer();
+ msg.append("DEBUGGING INFORMATION:").append(lineSeparator);
+ msg.append("REQUEST: ").append(request.getRequestURI()).append(lineSeparator).append(
+ lineSeparator);
+ msg.append("CONTEXT PATH: ").append(request.getContextPath()).append(lineSeparator);
+ msg.append("SERVLET PATH: ").append(request.getServletPath()).append(lineSeparator);
+ msg.append("PATH INFO: ").append(request.getPathInfo()).append(lineSeparator).append(
+ lineSeparator);
+
+ msg.append("REMOTE HOST: ").append(request.getRemoteHost()).append(lineSeparator);
+ msg.append("REMOTE ADDRESS: ").append(request.getRemoteAddr()).append(lineSeparator);
+ msg.append("REMOTE USER: ").append(request.getRemoteUser()).append(lineSeparator);
+ msg.append("REQUEST SESSION ID: ").append(request.getRequestedSessionId()).append(
+ lineSeparator);
+ msg.append("REQUEST PREFERRED LOCALE: ").append(request.getLocale().toString()).append(
+ lineSeparator);
+ msg.append("SERVER HOST: ").append(request.getServerName()).append(lineSeparator);
+ msg.append("SERVER PORT: ").append(request.getServerPort()).append(lineSeparator).append(
+ lineSeparator);
+
+ msg.append("METHOD: ").append(request.getMethod()).append(lineSeparator);
+ msg.append("CONTENT LENGTH: ").append(request.getContentLength()).append(lineSeparator);
+ msg.append("PROTOCOL: ").append(request.getProtocol()).append(lineSeparator);
+ msg.append("SCHEME: ").append(request.getScheme()).append(lineSeparator);
+ msg.append("AUTH TYPE: ").append(request.getAuthType()).append(lineSeparator).append(
+ lineSeparator);
+ msg.append("CURRENT ACTIVE REQUESTS: ").append(activeRequestCount).append(lineSeparator);
+
+ // log all of the request parameters
+ final Enumeration e = request.getParameterNames();
+
+ msg.append("REQUEST PARAMETERS:").append(lineSeparator).append(lineSeparator);
+
+ while (e.hasMoreElements()) {
+ String p = (String) e.nextElement();
+
+ msg.append("PARAM: '").append(p).append("' ").append("VALUES: '");
+ String[] params = request.getParameterValues(p);
+ for (int i = 0; i < params.length; i++) {
+ msg.append("[" + params[i] + "]");
+ if (i != (params.length - 1)) {
+ msg.append(", ");
+ }
+ }
+
+ msg.append("'").append(lineSeparator);
+ }
+
+ // log all of the header parameters
+ final Enumeration e2 = request.getHeaderNames();
+
+ msg.append("HEADER PARAMETERS:").append(lineSeparator).append(lineSeparator);
+
+ while (e2.hasMoreElements()) {
+ String p = (String) e2.nextElement();
+
+ msg.append("PARAM: '").append(p).append("' ").append("VALUES: '");
+ Enumeration e3 = request.getHeaders(p);
+ while (e3.hasMoreElements()) {
+ msg.append("[" + e3.nextElement() + "]");
+ if (e3.hasMoreElements()) {
+ msg.append(", ");
+ }
+ }
+
+ msg.append("'").append(lineSeparator);
+ }
+
+ msg.append(lineSeparator).append("SESSION ATTRIBUTES:").append(lineSeparator).append(
+ lineSeparator);
+
+ // log all of the session attributes
+ if (session != null) {
+ // Fix bug #12139: Session can be modified while still
+ // being enumerated here
+ synchronized (session) {
+ final Enumeration se = session.getAttributeNames();
+ while (se.hasMoreElements()) {
+ String p = (String) se.nextElement();
+ msg.append("PARAM: '").append(p).append("' ").append("VALUE: '").append(
+ session.getAttribute(p)).append("'").append(lineSeparator);
+ }
+ }
+ }
+
+ this.logger.debug(msg.toString());
+ filterChain.doFilter(request, res);
+ } finally {
+ --activeRequestCount;
+ }
+ }
+}
Propchange: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/DebugFilter.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java Sun Jul 2 04:03:28 2006
@@ -29,6 +29,7 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.ProcessingUtil;
import org.apache.cocoon.Processor;
+import org.apache.cocoon.RequestListener;
import org.apache.cocoon.ResourceNotFoundException;
import org.apache.cocoon.components.notification.DefaultNotifyingBuilder;
import org.apache.cocoon.components.notification.Notifier;
@@ -44,8 +45,6 @@
/**
* This is the entry point for Cocoon execution as an HTTP Servlet.
- * TODO - Move container encoding to properties
- * - Remove support for settings config from web.xml
*
* @version $Id$
*/
@@ -79,11 +78,17 @@
/** The root processor. */
protected final Processor rootProcessor;
+ /**
+ * An optional component that is called before and after processing all
+ * requests.
+ */
+ protected RequestListener requestListener;
+
public RequestProcessor(ServletContext servletContext) {
this.servletContext = servletContext;
this.cocoonBeanFactory = (BeanFactory) servletContext.getAttribute(ProcessingUtil.CONTAINER_CONTEXT_ATTR_NAME);
- this.settings = (Settings) this.cocoonBeanFactory.getBean(ProcessingUtil.SETTINGS_ROLE);
- final String encoding = this.servletContext.getInitParameter("container-encoding");
+ this.settings = (Settings) this.cocoonBeanFactory.getBean(Settings.ROLE);
+ final String encoding = this.settings.getContainerEncoding();
if ( encoding == null ) {
this.containerEncoding = "ISO-8859-1";
} else {
@@ -92,6 +97,10 @@
this.log = (Logger) this.cocoonBeanFactory.getBean(ProcessingUtil.LOGGER_ROLE);
this.rootProcessor = (Processor)this.cocoonBeanFactory.getBean(Processor.ROLE);
this.environmentContext = new HttpContext(this.servletContext);
+ // get the optional request listener
+ if (this.cocoonBeanFactory.containsBean(RequestListener.ROLE)) {
+ this.requestListener = (RequestListener) this.cocoonBeanFactory.getBean(RequestListener.ROLE);
+ }
}
/**
@@ -371,13 +380,38 @@
try {
boolean result;
+ if (this.requestListener != null) {
+ try {
+ requestListener.onRequestStart(environment);
+ } catch (Exception e) {
+ this.log.error("Error encountered monitoring request start: "
+ + e.getMessage());
+ }
+ }
result = this.rootProcessor.process(environment);
+ if (this.requestListener != null) {
+ try {
+ requestListener.onRequestEnd(environment);
+ } catch (Exception e) {
+ this.log.error("Error encountered monitoring request start: "
+ + e.getMessage());
+ }
+ }
+
// commit response on success
environment.commitResponse();
return result;
} catch (Exception any) {
+ if (this.requestListener != null) {
+ try {
+ requestListener.onRequestException(environment, any);
+ } catch (Exception e) {
+ this.log.error("Error encountered monitoring request start: "
+ + e.getMessage());
+ }
+ }
// reset response on error
environment.tryResetResponse();
throw any;
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/multipart/MultipartFilter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/multipart/MultipartFilter.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/multipart/MultipartFilter.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/multipart/MultipartFilter.java Sun Jul 2 04:03:28 2006
@@ -60,15 +60,15 @@
/** The root settings. */
protected Settings settings;
- /* (non-Javadoc)
+ /**
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig config) throws ServletException {
String containerEncoding;
ServletContext servletContext = config.getServletContext();
this.cocoonBeanFactory = (BeanFactory) servletContext.getAttribute(ProcessingUtil.CONTAINER_CONTEXT_ATTR_NAME);
- this.settings = (Settings) this.cocoonBeanFactory.getBean(ProcessingUtil.SETTINGS_ROLE);
- final String encoding = servletContext.getInitParameter("container-encoding");
+ this.settings = (Settings) this.cocoonBeanFactory.getBean(Settings.ROLE);
+ final String encoding = settings.getContainerEncoding();
if ( encoding == null ) {
containerEncoding = "ISO-8859-1";
} else {
@@ -83,13 +83,14 @@
this.log = (Logger) this.cocoonBeanFactory.getBean(ProcessingUtil.LOGGER_ROLE);
}
- /* (non-Javadoc)
+ /**
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
+ // nothing to do
}
- /* (non-Javadoc)
+ /**
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/sitemap/SitemapServlet.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/sitemap/SitemapServlet.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/sitemap/SitemapServlet.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/sitemap/SitemapServlet.java Sun Jul 2 04:03:28 2006
@@ -91,7 +91,7 @@
this.contextUrl = CoreUtil.getContextUrl(this.cocoonContext, MANIFEST_FILE);
org.apache.avalon.framework.context.Context avalonContext;
try {
- avalonContext = CoreUtil.createContext(this.settings, this.cocoonContext, this.contextUrl, null, null);
+ avalonContext = CoreUtil.createContext(this.settings, this.cocoonContext, this.contextUrl, null);
} catch (MalformedURLException e) {
throw new ServletException(e);
}
Modified: cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java (original)
+++ cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/SitemapTestCase.java Sun Jul 2 04:03:28 2006
@@ -27,7 +27,6 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.Cocoon;
import org.apache.cocoon.Processor;
import org.apache.cocoon.core.BootstrapEnvironment;
import org.apache.cocoon.core.CoreUtil;
@@ -54,8 +53,6 @@
private ConfigurableBeanFactory container;
private ServiceManager serviceManager;
- protected String processorClassName = Cocoon.class.getName();
-
protected void setUp() throws Exception {
super.setUp();
@@ -75,8 +72,7 @@
this.classDir = this.getClassDirURL().toExternalForm();
BootstrapEnvironment env =
- new TestBootstrapEnvironment(this.getConfiguration(),
- this.processorClassName);
+ new TestBootstrapEnvironment(this.getConfiguration());
this.coreUtil = new TestCoreUtil(env);
this.processor = this.coreUtil.createProcessor();
Modified: cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/core/TestBootstrapEnvironment.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/core/TestBootstrapEnvironment.java?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/core/TestBootstrapEnvironment.java (original)
+++ cocoon/trunk/core/cocoon-core/src/test/java/org/apache/cocoon/core/TestBootstrapEnvironment.java Sun Jul 2 04:03:28 2006
@@ -23,12 +23,9 @@
implements BootstrapEnvironment {
private final String configuration;
- private String processorClassName;
- public TestBootstrapEnvironment(String configuration,
- String processorClassName) {
+ public TestBootstrapEnvironment(String configuration) {
this.configuration = configuration;
- this.processorClassName = processorClassName;
}
/**
@@ -37,9 +34,9 @@
public void configure(MutableSettings settings) {
settings.setConfiguration(this.configuration);
settings.setWorkDirectory("work");
- settings.setProcessorClassName(this.processorClassName);
}
public void configure(DefaultContext context) {
+ // nothing to do here
}
}
Modified: cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml?rev=418569&r1=418568&r2=418569&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml Sun Jul 2 04:03:28 2006
@@ -39,17 +39,6 @@
<description>An override of the session cookie path</description>
</context-param-->
- <!-- Servlet Context Listener ======================================= -->
-
- <!--+
- | Declare a context listener that sets up the Cocoon Spring bean factory
- | and makes it available as a context parameter.
- +-->
-
- <listener>
- <listener-class>org.apache.cocoon.servlet.CocoonServletListener</listener-class>
- </listener>
-
<!-- Servlet Filters ================================================ -->
<!--+
@@ -63,6 +52,48 @@
<filter-class>org.apache.cocoon.servlet.multipart.MultipartFilter</filter-class>
</filter>
+ <!--+
+ | Declare a filter for debugging incomming request
+ +-->
+
+ <filter>
+ <filter-name></filter-name>
+ <display-name>Cocoon debug filter</display-name>
+ <description>Log debug information about each request</description>
+ <filter-class>org.apache.cocoon.servlet.DebugFilter</filter-class>
+ </filter>
+
+ <!-- Filter mappings ================================================ -->
+
+ <!--+
+ | Use the Cocoon multipart filter together with the Cocoon demo webapp
+ +-->
+
+ <filter-mapping>
+ <filter-name>CocoonMultipartFilter</filter-name>
+ <servlet-name>Cocoon</servlet-name>
+ </filter-mapping>
+
+ <!--+
+ | Use the Cocoon debug filter together with the Cocoon demo webapp
+
+ <filter-mapping>
+ <filter-name>CocoonDebugFilter</filter-name>
+ <servlet-name>Cocoon</servlet-name>
+ </filter-mapping>
+ +-->
+
+ <!-- Servlet Context Listener ======================================= -->
+
+ <!--+
+ | Declare a context listener that sets up the Cocoon Spring bean factory
+ | and makes it available as a context parameter.
+ +-->
+
+ <listener>
+ <listener-class>org.apache.cocoon.servlet.CocoonServletListener</listener-class>
+ </listener>
+
<!-- Servlet Configuration ========================================== -->
<servlet>
@@ -73,35 +104,12 @@
<servlet-class>org.apache.cocoon.servlet.SitemapServlet</servlet-class>
<!--
- Set encoding used by the container. If not set the ISO-8859-1 encoding
- will be assumed.
- Since the servlet specification requires that the ISO-8859-1 encoding
- is used (by default), you should never change this value unless
- you have a buggy servlet container.
- -->
- <init-param>
- <param-name>container-encoding</param-name>
- <param-value>ISO-8859-1</param-value>
- </init-param>
-
- <!--
This parameter allows you to startup Cocoon2 immediately after startup
of your servlet engine.
-->
<load-on-startup>1</load-on-startup>
</servlet>
- <!-- Filter mappings ================================================ -->
-
- <!--+
- | Use the Cocoon multipart filter together with the Cocoon demo webapp
- +-->
-
- <filter-mapping>
- <filter-name>CocoonMultipartFilter</filter-name>
- <servlet-name>Cocoon</servlet-name>
- </filter-mapping>
-
<!-- URL space mappings ============================================= -->
<!--