Author: davsclaus
Date: Fri Nov 27 12:05:44 2009
New Revision: 884845

URL: http://svn.apache.org/viewvc?rev=884845&view=rev
Log:
CAMEL-2233: Tracer now show route id by default.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorTest.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
 Fri Nov 27 12:05:44 2009
@@ -331,6 +331,22 @@
         tracer.getDefaultTraceFormatter().setShowException(showException);
     }
 
+    @ManagedAttribute(description = "Formatter show route id")
+    public boolean getFormatterShowRouteId() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowRouteId();
+    }
+
+    @ManagedAttribute(description = "Formatter show route id")
+    public void setFormatterShowRouteId(boolean showRouteId) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowRouteId(showRouteId);
+    }
+
     @ManagedAttribute(description = "Formatter breadcrumb length")
     public int getFormatterBreadCrumbLength() {
         if (tracer.getDefaultTraceFormatter() == null) {
@@ -394,5 +410,5 @@
         }
         tracer.getDefaultTraceFormatter().setMaxChars(maxChars);
     }
-    
+
 }

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
 Fri Nov 27 12:05:44 2009
@@ -722,14 +722,12 @@
     @SuppressWarnings("unchecked")
     public Type routeId(String id) {
         ProcessorDefinition def = this;
-        // drill to the top
-        while (def.getParent() != null) {
-            def = def.getParent();
-        }
-        if (def instanceof RouteDefinition) {
-            RouteDefinition route = (RouteDefinition) def;
+
+        RouteDefinition route = ProcessorDefinitionHelper.getRoute(def);
+        if (route != null) {
             route.setId(id);
         }
+
         return (Type) this;
     }
 

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
 Fri Nov 27 12:05:44 2009
@@ -81,6 +81,32 @@
         return node.getParent().getOutputs().get(0).equals(node);
     }
 
+    /**
+     * Gets the route definition the given node belongs to.
+     *
+     * @param node the node
+     * @return the route, or <tt>null</tt> if not possible to find
+     */
+    public static RouteDefinition getRoute(ProcessorDefinition<?> node) {
+        if (node == null) {
+            return null;
+        }
+
+        ProcessorDefinition def = node;
+        // drill to the top
+        while (def != null && def.getParent() != null) {
+            def = def.getParent();
+        }
+
+        if (def instanceof RouteDefinition) {
+            return (RouteDefinition) def;
+        } else {
+            // not found
+            return null;
+        }
+
+    }
+
     @SuppressWarnings("unchecked")
     private static <T> void doFindType(List<ProcessorDefinition> outputs, 
Class<T> type, List<T> found) {
         if (outputs == null || outputs.isEmpty()) {

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
 Fri Nov 27 12:05:44 2009
@@ -20,6 +20,8 @@
 import org.apache.camel.Message;
 import org.apache.camel.RouteNode;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.TracedRouteNodes;
 import org.apache.camel.util.MessageHelper;
 
@@ -42,6 +44,7 @@
     private boolean showOutBody;
     private boolean showOutBodyType;
     private boolean showException = true;
+    private boolean showRouteId = true;
     private int maxChars;
 
     public Object format(final TraceInterceptor interceptor, final 
ProcessorDefinition<?> node, final Exchange exchange) {
@@ -84,14 +87,17 @@
             sb.append(", Exception:").append(exchange.getException());
         }
 
+        // replace ugly <<<, with <<<
+        String s = sb.toString();
+        s = s.replaceFirst("<<<,", "<<<");
+
         if (maxChars > 0) {
-            String s = sb.toString();
             if (s.length() > maxChars) {
                 s = s.substring(0, maxChars) + "...";
             }
             return s;
         } else {
-            return sb.toString();
+            return s;
         }
     }
 
@@ -191,6 +197,14 @@
         this.showException = showException;
     }
 
+    public boolean isShowRouteId() {
+        return showRouteId;
+    }
+
+    public void setShowRouteId(boolean showRouteId) {
+        this.showRouteId = showRouteId;
+    }
+
     public int getBreadCrumbLength() {
         return breadCrumbLength;
     }
@@ -225,6 +239,17 @@
 
     // Implementation methods
     //-------------------------------------------------------------------------
+
+    protected String extractRoute(ProcessorDefinition<?> node) {
+        RouteDefinition route = ProcessorDefinitionHelper.getRoute(node);
+        if (route != null) {
+            return route.getId();
+        } else {
+            return null;
+        }
+    }
+
+
     protected Object getBreadCrumbID(Exchange exchange) {
         return exchange.getExchangeId();
     }
@@ -264,10 +289,11 @@
             }
         }
 
-        // compute from and to
+        // compute from, to and route
         String from = "";
         String to = "";
-        if (showNode) {
+        String route = "";
+        if (showNode || showRouteId) {
             TracedRouteNodes traced = 
exchange.getUnitOfWork().getTracedRouteNodes();
 
             RouteNode traceFrom = traced.getSecondLastNode();
@@ -280,12 +306,23 @@
             RouteNode traceTo = traced.getLastNode();
             if (traceTo != null) {
                 to = getNodeMessage(traceTo, exchange);
+                // if its an abstract dummy holder then get the 2nd last so we 
can get the real node that has
+                // information which route it belongs to
+                if (traceTo.isAbstract()) {
+                    traceTo = traced.getSecondLastNode();
+                }
+                route = extractRoute(traceTo.getProcessorDefinition());
             }
         }
 
         // assemble result with and without the to/from
         if (showNode) {
-            result = id.trim() + " >>> " + from + " --> " + to.trim();
+            if (showRouteId && route != null) {
+                result = id.trim() + " >>> (" + route + ") " + from + " --> " 
+ to.trim() + " <<< ";
+            } else {
+                result = id.trim() + " >>> " + from + " --> " + to.trim() + " 
<<< ";
+            }
+
             if (interceptor.shouldTraceOutExchanges() && exchange.hasOut()) {
                 result += " (OUT) ";
             }

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
 Fri Nov 27 12:05:44 2009
@@ -28,7 +28,7 @@
      * Formats a log message at given point of interception.
      * 
      * @param interceptor    the tracing interceptor
-     * @param node           the node where the interception occured
+     * @param node           the node where the interception occurred
      * @param exchange       the current exchange
      * @return the log message
      */

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java
 Fri Nov 27 12:05:44 2009
@@ -138,6 +138,10 @@
         Boolean fsn = (Boolean) mbeanServer.getAttribute(on, 
"FormatterShowNode");
         assertEquals(true, fsn.booleanValue());
 
+        mbeanServer.setAttribute(on, new Attribute("FormatterShowRouteId", 
Boolean.FALSE));
+        Boolean fsr = (Boolean) mbeanServer.getAttribute(on, 
"FormatterShowRouteId");
+        assertEquals(false, fsr.booleanValue());
+
         mbeanServer.setAttribute(on, new 
Attribute("FormatterShowExchangePattern", Boolean.TRUE));
         Boolean fsep = (Boolean) mbeanServer.getAttribute(on, 
"FormatterShowExchangePattern");
         assertEquals(true, fsep.booleanValue());

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorTest.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorTest.java
 Fri Nov 27 12:05:44 2009
@@ -38,7 +38,7 @@
                 // enable tracing
                 getContext().setTracing(true);
 
-                from("direct:start").
+                from("direct:start").routeId("foo").
                         process(new Processor() {
                             public void process(Exchange exchange) throws 
Exception {
                                 // do nothing
@@ -49,8 +49,10 @@
                                 return "MyProcessor";
                             }
                         }).
-                        to("mock:a").
-                        to("mock:b");
+                        to("mock:foo").
+                        to("direct:bar");
+
+                from("direct:bar").routeId("bar").to("mock:bar");
             }
         };
     }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java?rev=884845&r1=884844&r2=884845&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java
 Fri Nov 27 12:05:44 2009
@@ -152,6 +152,9 @@
         formatter.setShowShortExchangeId(true);
         assertEquals(true, formatter.isShowShortExchangeId());
 
+        formatter.setShowRouteId(false);
+        assertEquals(false, formatter.isShowRouteId());
+
         return formatter;
     }
 


Reply via email to