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; + } } } }