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 2013/01/25 08:20:49 UTC

svn commit: r1438363 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/impl/DefaultRouteNode.java test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java

Author: davsclaus
Date: Fri Jan 25 07:20:49 2013
New Revision: 1438363

URL: http://svn.apache.org/viewvc?rev=1438363&view=rev
Log:
CAMEL-5995: Improved trace logic to look for traceable in wrapped/delegate processors.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java
      - copied, changed from r1438156, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java?rev=1438363&r1=1438362&r2=1438363&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java Fri Jan 25 07:20:49 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.impl;
 
+import org.apache.camel.DelegateProcessor;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
@@ -52,26 +53,40 @@ public class DefaultRouteNode implements
         return processorDefinition;
     }
 
-    @SuppressWarnings("deprecation")
     public String getLabel(Exchange exchange) {
         if (expression != null) {
             return expression.evaluate(exchange, String.class);
         }
 
-        Processor target = processor;
-        if (target != null && target instanceof Traceable) {
+        String label = getTraceLabel(processor);
+        if (label == null) {
+            // no label then default to use the definition label
+            label = processorDefinition.getLabel();
+        }
+        return label;
+    }
+
+    @SuppressWarnings("deprecation")
+    private String getTraceLabel(Processor target) {
+        if (target == null) {
+            return null;
+        }
+
+        if (target instanceof Traceable) {
             Traceable trace = (Traceable) target;
             return trace.getTraceLabel();
-        }
-        
-        // Compatiblity for old Traceable interface
-        if (target != null && target instanceof org.apache.camel.processor.Traceable) {
+        } else if (target instanceof org.apache.camel.processor.Traceable) {
+            // to be backwards compatible
             org.apache.camel.processor.Traceable trace = (org.apache.camel.processor.Traceable) target;
             return trace.getTraceLabel();
         }
 
-        // default then to definition
-        return processorDefinition.getLabel();
+        // if we are a delegate then drill down
+        if (target instanceof DelegateProcessor) {
+            return getTraceLabel(((DelegateProcessor) target).getProcessor());
+        }
+
+        return null;
     }
 
     public boolean isAbstract() {

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java (from r1438156, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java&r1=1438156&r2=1438363&rev=1438363&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java Fri Jan 25 07:20:49 2013
@@ -24,7 +24,7 @@ import org.apache.camel.builder.RouteBui
 /**
  * @version 
  */
-public class SimpleProcessorTest extends ContextTestSupport {
+public class SimpleProcessorTraceableTest extends ContextTestSupport {
 
     public void testProcess() throws Exception {
         String out = template.requestBody("direct:start", "Hello World", String.class);
@@ -36,13 +36,24 @@ public class SimpleProcessorTest extends
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start").process(new Processor() {
-                    public void process(Exchange exchange) throws Exception {
-                        exchange.getOut().setBody("Bye World");
-                    }
-                });
+                context.setTracing(true);
+
+                from("direct:start").process(new MyProcessor());
             }
         };
     }
 
+    private class MyProcessor implements Processor, org.apache.camel.Traceable {
+
+        @Override
+        public void process(Exchange exchange) throws Exception {
+            exchange.getOut().setBody("Bye World");
+        }
+
+        @Override
+        public String getTraceLabel() {
+            return "Yeah this is my processor";
+        }
+    }
+
 }