You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2007/12/28 02:32:08 UTC
svn commit: r607152 - in
/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src: changes/
main/java/org/apache/cocoon/components/treeprocessor/sitemap/
Author: vgritsenko
Date: Thu Dec 27 17:32:07 2007
New Revision: 607152
URL: http://svn.apache.org/viewvc?rev=607152&view=rev
Log:
<action dev="vgritsenko" type="remove">
Remove support for Cocoon 2.0 error handlers, <map:handle-errors type="500">,
which were deprecated since Cocoon 2.1m1.
</action>
Modified:
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/ErrorHandlerHelper.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNode.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNodeBuilder.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelinesNode.java
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml Thu Dec 27 17:32:07 2007
@@ -18,18 +18,24 @@
under the License.
-->
-<!--+
- | Find usage details at http://maven.apache.org/plugins/maven-changes-plugin/usage.html
- |
- | @version $Id$
- +-->
+<!--
+ - See http://maven.apache.org/plugins/maven-changes-plugin/usage.html
+ -
+ - $Id$
+ -->
<document>
<body>
- <release version="1.0.0-RC2" date="2007-??-??" description="unreleased">
+ <release version="1.0.0" date="2008-??-??" description="unreleased">
+ <action dev="vgritsenko" type="remove">
+ Remove support for Cocoon 2.0 error handlers, <map:handle-errors type="500">,
+ which were deprecated since Cocoon 2.1m1.
+ </action>
+ </release>
+ <release version="1.0.0-RC2" date="2007-10-12" description="released">
<action dev="gkossakowski" type="fix" issue="COCOON-2108" due-to="Hugh Sparks" due-to-email="hugh@csparks.com">
- Construct xmodule:flow-attr does not accept document object. Fixes problem that caused
- "The object type: class java.lang.String could not be serialized to XML" exception.
- </action>
+ Construct xmodule:flow-attr does not accept document object. Fixes problem that caused
+ "The object type: class java.lang.String could not be serialized to XML" exception.
+ </action>
<action dev="vgritsenko" type="fix">
Regression in <map:serialize/> - do not override status code if
it was not set on serialize element.
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/ErrorHandlerHelper.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/ErrorHandlerHelper.java?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/ErrorHandlerHelper.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/ErrorHandlerHelper.java Thu Dec 27 17:32:07 2007
@@ -52,15 +52,9 @@
protected Log handledErrorsLogger;
/**
- * Error handling node for the ResourceNotFoundException
- * (deprecated)
- */
- private HandleErrorsNode error404;
-
- /**
* Error handling node for all other exceptions
*/
- private HandleErrorsNode error500;
+ private HandleErrorsNode error;
/**
@@ -71,27 +65,23 @@
this.handledErrorsLogger = LoggerUtils.getChildLogger(this.manager, "handled");
}
- void set404Handler(ProcessingNode node) {
- this.error404 = (HandleErrorsNode) node;
- }
-
- void set500Handler(ProcessingNode node) {
- this.error500 = (HandleErrorsNode) node;
+ void setErrorHandler(ProcessingNode node) {
+ this.error = (HandleErrorsNode) node;
}
/**
* @return true if has no error handler nodes set
*/
public boolean isEmpty() {
- return this.error404 == null && this.error500 == null;
+ return this.error == null;
}
public boolean isInternal() {
- return this.error500 != null && this.error500.isInternal();
+ return this.error != null && this.error.isInternal();
}
public boolean isExternal() {
- return this.error500 != null && this.error500.isExternal();
+ return this.error != null && this.error.isExternal();
}
/**
@@ -129,15 +119,12 @@
} else if (!internal && !isExternal()) {
// Propagate exception on external request: No external handler.
throw ex;
- } else if (!internal && error404 != null && ex instanceof ResourceNotFoundException) {
- // Invoke 404-specific handler: Only on external requests. Deprecated.
- return prepareErrorHandler(error404, ex, env, context);
- } else if (error500 != null) {
- // Invoke global handler
- return prepareErrorHandler(error500, ex, env, context);
+ } else if (error != null) {
+ // Invoke error handler
+ return prepareErrorHandler(error, ex, env, context);
}
- // Exception was not handled in this error handler, propagate.
+ // Exception was not handled by this error handler, propagate.
throw ex;
}
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNode.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNode.java?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNode.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNode.java Thu Dec 27 17:32:07 2007
@@ -17,8 +17,6 @@
package org.apache.cocoon.components.treeprocessor.sitemap;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.commons.lang.SystemUtils;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode;
@@ -34,18 +32,15 @@
*/
public final class HandleErrorsNode extends AbstractParentProcessingNode {
- private ProcessingNode[] children;
- private int statusCode;
private boolean internal;
private boolean external;
+ private ProcessingNode[] children;
/**
- * @param statusCode Value of the type attribute: 404 (deprecated), 500 (deprecated), or -1 (no attribute present).
* @param scope Value of the error handler scope attribute: external, internal, always.
*/
- public HandleErrorsNode(int statusCode, String scope)
+ public HandleErrorsNode(String scope)
throws ConfigurationException {
- this.statusCode = statusCode;
if ("internal".equals(scope)) {
this.internal = true;
} else if ("external".equals(scope)) {
@@ -59,10 +54,6 @@
}
}
- public int getStatusCode() {
- return this.statusCode;
- }
-
public boolean isInternal() {
return this.internal;
}
@@ -82,41 +73,20 @@
getLogger().info("Processing handle-errors at " + getLocation());
}
- if (statusCode == -1) {
- // No 'type' attribute : new Cocoon 2.1 behaviour, no implicit generator
- try {
- return invokeNodes(this.children, env, context);
-
- } catch (ProcessingException e) {
- // Handle the various cases related to the transition from implicit generators in handle-errors to
- // explicit ones, in order to provide meaningful messages that will ease the migration
- if (e.getMessage().indexOf("Must set a generator before adding") != -1) {
-
- env.getObjectModel().remove(ObjectModelHelper.THROWABLE_OBJECT);
- throw new ProcessingException(
- "Incomplete pipeline: 'handle-error' without a 'type' must include a generator." +
- SystemUtils.LINE_SEPARATOR +
- "Either add a generator (preferred) or a type='500' attribute (deprecated) on 'handle-errors'", getLocation());
- }
-
- // Rethrow the exception
- throw e;
- }
- }
- // A 'type' attribute is present : add the implicit generator
- context.getProcessingPipeline().setGenerator("<notifier>", "", Parameters.EMPTY_PARAMETERS, Parameters.EMPTY_PARAMETERS);
-
+ // No 'type' attribute : new Cocoon 2.1 behaviour, no implicit generator
try {
return invokeNodes(this.children, env, context);
+
} catch (ProcessingException e) {
- if (e.getMessage().indexOf("Generator already set") != -1){
+ // Handle the transition from implicit generators in handle-errors to
+ // explicit ones, in order to provide meaningful messages that will ease the migration
+ if (e.getMessage().indexOf("Must set a generator before adding") != -1) {
env.getObjectModel().remove(ObjectModelHelper.THROWABLE_OBJECT);
- throw new ProcessingException(
- "Error: 'handle-error' with a 'type' attribute has an implicit generator." +
- SystemUtils.LINE_SEPARATOR +
- "Please remove the 'type' attribute on 'handle-error'", getLocation());
+ throw new ProcessingException("Incomplete pipeline: 'handle-error' must include a generator.",
+ getLocation());
}
+
// Rethrow the exception
throw e;
}
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNodeBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNodeBuilder.java?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNodeBuilder.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/HandleErrorsNodeBuilder.java Thu Dec 27 17:32:07 2007
@@ -37,8 +37,7 @@
public ProcessingNode buildNode(Configuration config) throws Exception {
- HandleErrorsNode node = new HandleErrorsNode(config.getAttributeAsInteger("type", -1),
- config.getAttribute("when", "external"));
+ HandleErrorsNode node = new HandleErrorsNode(config.getAttribute("when", "external"));
this.treeBuilder.setupNode(node, config);
// Set a flag that will prevent redirects
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java Thu Dec 27 17:32:07 2007
@@ -89,12 +89,8 @@
this.isLast = isLast;
}
- public void set404Handler(ProcessingNode node) {
- this.errorHandlerHelper.set404Handler(node);
- }
-
- public void set500Handler(ProcessingNode node) {
- this.errorHandlerHelper.set500Handler(node);
+ public void setErrorHandler(ProcessingNode node) {
+ this.errorHandlerHelper.setErrorHandler(node);
}
public void setInternalOnly(boolean internalOnly) {
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNodeBuilder.java Thu Dec 27 17:32:07 2007
@@ -77,12 +77,8 @@
node.setInternalOnly(config.getAttributeAsBoolean(PipelineNodeBuilder.ATTRIBUTE_INTERNAL_ONLY, false));
}
- // Main (with no "type" attribute) error handler: new in Cocoon 2.1, must have a generator
- ProcessingNode mainHandler = null;
-
- // 404 & 500 error handlers as in Cocoon 2.0.x, have an implicit generator
- ProcessingNode error404Handler = null;
- ProcessingNode error500Handler = null;
+ // Error handler node
+ HandleErrorsNode handler = null;
Configuration[] childConfigs = config.getChildren();
List children = new ArrayList();
@@ -92,47 +88,12 @@
ProcessingNodeBuilder builder = this.treeBuilder.createNodeBuilder(childConfig);
if (builder instanceof HandleErrorsNodeBuilder) {
- // Error handler : check type
- HandleErrorsNode handler = (HandleErrorsNode)builder.buildNode(childConfig);
- int status = handler.getStatusCode();
-
- switch(status) {
- case -1: // main handler (needs generator)
- if (mainHandler != null) {
- throw new ConfigurationException("Duplicate <handle-errors> at " + handler.getLocation());
- } else if (error500Handler != null || error404Handler != null) {
- throw new ConfigurationException("Cannot mix <handle-errors> with and without 'type' attribute at " +
- handler.getLocation());
- } else {
- mainHandler = handler;
- }
- break;
-
- case 404:
- if (error404Handler != null) {
- throw new ConfigurationException("Duplicate <handle-errors type='404' at " + handler.getLocation());
- } else if(mainHandler != null) {
- throw new ConfigurationException("Cannot mix <handle-errors> with and without 'type' attribute at " +
- handler.getLocation());
- } else {
- error404Handler = handler;
- }
- break;
-
- case 500:
- if (error500Handler != null) {
- throw new ConfigurationException("Duplicate <handle-errors type='500' at " + handler.getLocation());
- } else if (mainHandler != null) {
- throw new ConfigurationException("Cannot mix <handle-errors> with and without 'type' attribute at " +
- handler.getLocation());
- } else {
- error500Handler = handler;
- }
- break;
-
- default:
- throw new ConfigurationException("Unknown handle-errors type (" + type + ") at " + handler.getLocation());
+ if (handler != null) {
+ throw new ConfigurationException("Duplicate <handle-errors> at " + handler.getLocation());
}
+
+ // Error handler : check type
+ handler = (HandleErrorsNode) builder.buildNode(childConfig);
} else {
// Regular builder
children.add(builder.buildNode(childConfig));
@@ -141,9 +102,7 @@
}
node.setChildren(toNodeArray(children));
- node.set404Handler(error404Handler);
- // Set either main or error500 handler as only one can exist
- node.set500Handler(error500Handler == null ? mainHandler : error500Handler);
+ node.setErrorHandler(handler);
return node;
}
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelinesNode.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelinesNode.java?rev=607152&r1=607151&r2=607152&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelinesNode.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelinesNode.java Thu Dec 27 17:32:07 2007
@@ -54,7 +54,7 @@
}
public void setErrorHandler(ProcessingNode node) {
- this.errorHandlerHelper.set500Handler(node);
+ this.errorHandlerHelper.setErrorHandler(node);
}
public void setChildren(ProcessingNode[] nodes) {