You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2008/08/13 20:41:19 UTC

svn commit: r685638 - in /activemq/camel/trunk/camel-core/src: main/java/org/apache/camel/processor/LoggingErrorHandler.java test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java

Author: davsclaus
Date: Wed Aug 13 11:41:18 2008
New Revision: 685638

URL: http://svn.apache.org/viewvc?rev=685638&view=rev
Log:
CAMEL-792: LoggingErrorHandler did not test for exception set on exchange itself and info logging was really logging at debug (copy paste code mistake)

Added:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java   (with props)
Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java?rev=685638&r1=685637&r2=685638&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java Wed Aug 13 11:41:18 2008
@@ -48,14 +48,24 @@
     }
 
     public void process(Exchange exchange) throws Exception {
+        Throwable error = null;
         try {
             output.process(exchange);
+
+            // could also fail and set exception on the exchange itself
+            if (exchange.getException() != null) {
+                error = exchange.getException();
+            }
         } catch (Throwable e) {
-            if (!customProcessorForException(exchange, e)) {
-                logError(exchange, e);
+            error = e;
+        }
+
+        if (error != null) {
+            if (!customProcessorForException(exchange, error)) {
+                logError(exchange, error);
             }
         }
-    }
+   }
 
     // Properties
     // -------------------------------------------------------------------------
@@ -104,7 +114,7 @@
             break;
         case INFO:
             if (log.isInfoEnabled()) {
-                log.debug(logMessage(exchange, e), e);
+                log.info(logMessage(exchange, e), e);
             }
             break;
         case TRACE:

Added: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java?rev=685638&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java (added)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java Wed Aug 13 11:41:18 2008
@@ -0,0 +1,128 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.camel.processor;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.commons.logging.Log;
+
+/**
+ * Exception throw inside Pipeline was not reported or handled when error
+ * handler is LoggingErrorHandler. (CAMEL-792)
+ */
+public class LoggingErrorHandlerTest extends ContextTestSupport {
+
+    private MyLog log = new MyLog();
+
+    public void testLogException() {
+        template.sendBody("direct:in", "Hello World");
+        assertTrue("Should have logged it", log.logged);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                // set to use our logger
+                errorHandler(loggingErrorHandler(log));
+
+                from("direct:in").process(new Processor() {
+                    public void process(Exchange exchange) throws Exception {
+                        throw new IllegalArgumentException("Hello World");
+                    }
+                });
+            }
+        };
+    }
+
+    /**
+     * Just implement the Log interface, dont wanna mess with easymock or the like at current time
+     * for this simple test.
+     */
+    private class MyLog implements Log {
+
+        boolean logged;
+
+        public boolean isDebugEnabled() {
+            return false;
+        }
+
+        public boolean isErrorEnabled() {
+            return true;
+        }
+
+        public boolean isFatalEnabled() {
+            return false;
+        }
+
+        public boolean isInfoEnabled() {
+            return true;
+        }
+
+        public boolean isTraceEnabled() {
+            return false;
+        }
+
+        public boolean isWarnEnabled() {
+            return true;
+        }
+
+        public void trace(Object message) {
+        }
+
+        public void trace(Object message, Throwable t) {
+        }
+
+        public void debug(Object message) {
+        }
+
+        public void debug(Object message, Throwable t) {
+        }
+
+        public void info(Object message) {
+        }
+
+        public void info(Object message, Throwable t) {
+            assertNotNull(t);
+            assertNotNull(message);
+            logged = true;
+        }
+
+        public void warn(Object message) {
+        }
+
+        public void warn(Object message, Throwable t) {
+        }
+
+        public void error(Object message) {
+        }
+
+        public void error(Object message, Throwable t) {
+        }
+
+        public void fatal(Object message) {
+        }
+
+        public void fatal(Object message, Throwable t) {
+        }
+    }
+
+
+    
+}

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LoggingErrorHandlerTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date