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, &lt;map:handle-errors type="500"&gt;,
        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, &lt;map:handle-errors type="500"&gt;,
+        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 &lt;map:serialize/&gt; - 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) {