Author: davsclaus
Date: Sat Jun 27 09:33:23 2009
New Revision: 788943

URL: http://svn.apache.org/viewvc?rev=788943&view=rev
Log:
CAMEL-1759: Added unit test and fixed a NPE in DefaultTraceEventMessage.

Added:
    
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java
      - copied, changed from r788930, 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java?rev=788943&r1=788942&r2=788943&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
 Sat Jun 27 09:33:23 2009
@@ -21,10 +21,8 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.RouteNode;
-import org.apache.camel.processor.Traceable;
 import org.apache.camel.spi.TraceableUnitOfWork;
 import org.apache.camel.util.MessageHelper;
 
@@ -82,33 +80,25 @@
 
     // Implementation
     //---------------------------------------------------------------
-    private String extractTraceLabel(RouteNode entry) {
-        Processor processor = entry.getProcessor();
-        if (processor instanceof Traceable) {
-            Traceable trace = (Traceable) processor;
-            return trace.getTraceLabel();
-        }
-        return processor.toString();
-    }
 
-    private String extractShortExchangeId(Exchange exchange) {
+    private static String extractShortExchangeId(Exchange exchange) {
         return 
exchange.getExchangeId().substring(exchange.getExchangeId().indexOf("/") + 1);
     }
 
-    private String extractFromNode(Exchange exchange) {
+    private static String extractFromNode(Exchange exchange) {
         if (exchange.getUnitOfWork() instanceof TraceableUnitOfWork) {
             TraceableUnitOfWork tuow = (TraceableUnitOfWork) 
exchange.getUnitOfWork();
             RouteNode last = tuow.getSecondLastNode();
-            return last != null ? extractTraceLabel(last) : null;
+            return last != null ? last.getLabel(exchange) : null;
         }
         return null;
     }
 
-    private String extractToNode(Exchange exchange) {
+    private static String extractToNode(Exchange exchange) {
         if (exchange.getUnitOfWork() instanceof TraceableUnitOfWork) {
             TraceableUnitOfWork tuow = (TraceableUnitOfWork) 
exchange.getUnitOfWork();
             RouteNode last = tuow.getLastNode();
-            return last != null ? extractTraceLabel(last) : null;
+            return last != null ? last.getLabel(exchange) : null;
         }
         return null;
     }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java?rev=788943&r1=788942&r2=788943&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java
 Sat Jun 27 09:33:23 2009
@@ -52,8 +52,6 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                context.setTracing(true);
-
                 
onException(IllegalArgumentException.class).handled(true).to("log:boom").to("mock:boom");
 
                 from("direct:start").process(new Processor() {

Copied: 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java
 (from r788930, 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java&r1=788930&r2=788943&rev=788943&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java
 Sat Jun 27 09:33:23 2009
@@ -21,30 +21,60 @@
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.processor.interceptor.TraceEventMessage;
+import org.apache.camel.processor.interceptor.Tracer;
 
 /**
- * Default error handler test
+ * Default error handler test with trace
  *
  * @version $Revision$
  */
-public class DefaultErrorHandlerOnExceptionTest extends ContextTestSupport {
+public class DefaultErrorHandlerOnExceptionTraceTest extends 
ContextTestSupport {
 
     public void testOk() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedBodiesReceived("Bye World");
+        getMockEndpoint("mock:trace").expectedMessageCount(2);
 
         template.sendBody("direct:start", "Hello World");
 
         assertMockEndpointsSatisfied();
+
+        TraceEventMessage msg1 = 
getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
+        TraceEventMessage msg2 = 
getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
+
+        assertEquals("direct:start", msg1.getFromEndpointUri());
+        
assertTrue(msg1.getToNode().startsWith("org.apache.camel.processor.DefaultErrorHandlerOnExceptionTraceTest"));
+
+        
assertTrue(msg2.getPreviousNode().startsWith("org.apache.camel.processor.DefaultErrorHandlerOnExceptionTraceTest"));
+        assertEquals("mock:result", msg2.getToNode());
     }
 
     public void testWithError() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:boom");
         mock.expectedMessageCount(1);
+        getMockEndpoint("mock:trace").expectedMessageCount(4);
 
         template.sendBody("direct:start", "Kabom");
 
         assertMockEndpointsSatisfied();
+
+        TraceEventMessage msg1 = 
getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
+        TraceEventMessage msg2 = 
getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
+        TraceEventMessage msg3 = 
getMockEndpoint("mock:trace").getReceivedExchanges().get(2).getIn().getBody(TraceEventMessage.class);
+        TraceEventMessage msg4 = 
getMockEndpoint("mock:trace").getReceivedExchanges().get(3).getIn().getBody(TraceEventMessage.class);
+
+        assertEquals("direct:start", msg1.getFromEndpointUri());
+        
assertTrue(msg1.getToNode().startsWith("org.apache.camel.processor.DefaultErrorHandlerOnExceptionTraceTest"));
+
+        
assertTrue(msg2.getPreviousNode().startsWith("org.apache.camel.processor.DefaultErrorHandlerOnExceptionTraceTest"));
+        assertEquals("OnException[IllegalArgumentException]", 
msg2.getToNode());
+
+        assertEquals("OnException[IllegalArgumentException]", 
msg3.getPreviousNode());
+        assertEquals("log:boom", msg3.getToNode());
+
+        assertEquals("log:boom", msg4.getPreviousNode());
+        assertEquals("mock:boom", msg4.getToNode());
     }
 
     @Override
@@ -52,7 +82,9 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                context.setTracing(true);
+                Tracer tracer = new Tracer();
+                tracer.setDestinationUri("mock:trace");
+                context.addInterceptStrategy(tracer);
 
                 
onException(IllegalArgumentException.class).handled(true).to("log:boom").to("mock:boom");
 


Reply via email to