bruno       2003/09/08 11:58:01

  Modified:    src/java/org/apache/cocoon/components/treeprocessor/sitemap
                        PipelineNode.java
  Log:
  * Log errors handled by map:handl-errors to a separate log target.
  * Replaced tabs by spaces.
  
  Revision  Changes    Path
  1.9       +29 -25    
cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java
  
  Index: PipelineNode.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- PipelineNode.java 10 Jul 2003 13:17:00 -0000      1.8
  +++ PipelineNode.java 8 Sep 2003 18:58:01 -0000       1.9
  @@ -75,8 +75,8 @@
    * @version CVS $Id$
    */
   public class PipelineNode
  -    extends AbstractParentProcessingNode
  -    implements Composable, ParameterizableProcessingNode {
  +        extends AbstractParentProcessingNode
  +        implements Composable, ParameterizableProcessingNode {
   
       // TODO : handle a 'fail-hard' environment attribute
       // can be useful to stop off-line generation when there's an error
  @@ -86,11 +86,13 @@
       private ProcessingNode error404;
   
       private ProcessingNode error500;
  -    
  +
       private ErrorHandlerHelper errorHandlerHelper = new ErrorHandlerHelper();
  -    
  +
       private ComponentManager manager;
   
  +    protected Logger handledErrorsLogger;
  +
       private boolean internalOnly = false;
   
       /** Is it the last <pipeline> in the enclosing <pipelines> ? */
  @@ -118,11 +120,11 @@
           errorHandlerHelper.compose(manager);
       }
   
  -     public void enableLogging(Logger logger)
  -     {
  -             super.enableLogging(logger);
  -             errorHandlerHelper.enableLogging(logger);
  -     }
  +    public void enableLogging(Logger logger) {
  +        super.enableLogging(logger);
  +        errorHandlerHelper.enableLogging(logger);
  +        handledErrorsLogger = logger.getChildLogger("handled-errors");
  +    }
   
       public void setChildren(ProcessingNode[] nodes) {
           this.children = nodes;
  @@ -149,8 +151,8 @@
       }
   
       public final boolean invoke(Environment env, InvokeContext context)
  -    throws Exception {
  -        
  +            throws Exception {
  +
           boolean externalRequest = env.isExternal();
   
           // Always fail on external resquests if internal only.
  @@ -172,25 +174,27 @@
           } catch (ConnectionResetException cre) {
               // Will be reported by CocoonServlet, rethrowing
               throw cre;
  -            
  -        } catch(Exception ex) {
  -            
  +
  +        } catch (Exception ex) {
  +
               if (!externalRequest) {
                   // Propagate exception on internal requests
                   throw ex;
  -                
  +
               } else if (error404 != null && ex instanceof 
ResourceNotFoundException) {
  -                         // Invoke 404-specific handler
  -                         return 
errorHandlerHelper.invokeErrorHandler(error404, ex, env);
  -                         
  -                     } else if (error500 != null) {
  +                // Invoke 404-specific handler
  +                handledErrorsLogger.error(ex.getMessage(), ex);
  +                return errorHandlerHelper.invokeErrorHandler(error404, ex, 
env);
  +
  +            } else if (error500 != null) {
                   // Invoke global handler
  +                handledErrorsLogger.error(ex.getMessage(), ex);
                   return errorHandlerHelper.invokeErrorHandler(error500, ex, 
env);
  -                
  -                     } else {
  -                         // No handler : propagate
  -                         throw ex;
  -                     }
  +
  +            } else {
  +                // No handler : propagate
  +                throw ex;
  +            }
           }
       }
   }
  
  
  

Reply via email to