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 2009/06/26 10:03:26 UTC

svn commit: r788621 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/impl/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/processor/interceptor/ main/java/org/apache/camel/processor/loadbalancer/ main/java/org/apache/camel...

Author: davsclaus
Date: Fri Jun 26 08:03:25 2009
New Revision: 788621

URL: http://svn.apache.org/viewvc?rev=788621&view=rev
Log:
CAMEL-1759: Improved tracer to be more fine grained using Processor instead of model objects to reflect the route path.

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java   (with props)
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Aggregator.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Delayer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ExchangePatternProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SortProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Throttler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.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/TraceInterceptor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RoundRobinLoadBalancer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/TraceableUnitOfWork.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/JoinRoutesTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromWhenTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java Fri Jun 26 08:03:25 2009
@@ -21,8 +21,8 @@
 import java.util.List;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
 import org.apache.camel.Service;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.spi.TraceableUnitOfWork;
 import org.apache.camel.util.UuidGenerator;
@@ -40,7 +40,7 @@
 
     private String id;
     private List<Synchronization> synchronizations;
-    private List<ProcessorDefinition> routeList;
+    private List<Processor> processorList;
     private Object originalInBody;
 
     public DefaultUnitOfWork(Exchange exchange) {
@@ -57,11 +57,10 @@
             synchronizations.clear();
             synchronizations = null;
         }
-        if (routeList != null) {
-            routeList.clear();
-            routeList = null;
+        if (processorList != null) {
+            processorList.clear();
+            processorList = null;
         }
-
         originalInBody = null;
     }
 
@@ -116,22 +115,29 @@
         return id;
     }
 
-    public synchronized void addInterceptedNode(ProcessorDefinition node) {
-        if (routeList == null) {
-            routeList = new ArrayList<ProcessorDefinition>();
+    public void addInterceptedProcessor(Processor processor) {
+        if (processorList == null) {
+            processorList = new ArrayList<Processor>();
+        }
+        processorList.add(processor);
+    }
+
+    public Processor getLastInterceptedProcessor() {
+        if (processorList == null || processorList.isEmpty()) {
+            return null;
         }
-        routeList.add(node);
+        return processorList.get(processorList.size() - 1);
     }
 
-    public synchronized ProcessorDefinition getLastInterceptedNode() {
-        if (routeList == null || routeList.isEmpty()) {
+    public Processor getSecondLastInterceptedProcessor() {
+        if (processorList == null || processorList.isEmpty() || processorList.size() == 1) {
             return null;
         }
-        return routeList.get(routeList.size() - 1);
+        return processorList.get(processorList.size() - 2);
     }
 
-    public List<ProcessorDefinition> getInterceptedNodes() {
-        return Collections.unmodifiableList(routeList);
+    public List<Processor> getInterceptedProcessors() {
+        return Collections.unmodifiableList(processorList);
     }
 
     public Object getOriginalInBody() {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Aggregator.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Aggregator.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Aggregator.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Aggregator.java Fri Jun 26 08:03:25 2009
@@ -41,15 +41,19 @@
  *
  * @version $Revision$
  */
-public class Aggregator extends BatchProcessor {
+public class Aggregator extends BatchProcessor implements Traceable {
+
+    private Expression correlationExpression;
 
     public Aggregator(Processor processor, Expression correlationExpression, AggregationStrategy aggregationStrategy) {
         this(processor, new DefaultAggregationCollection(correlationExpression, aggregationStrategy));
+        this.correlationExpression = correlationExpression;
     }
 
     public Aggregator(Processor processor, Expression correlationExpression, AggregationStrategy aggregationStrategy,
                       Predicate aggregationCompletedPredicate) {
         this(processor, new PredicateAggregationCollection(correlationExpression, aggregationStrategy, aggregationCompletedPredicate));
+        this.correlationExpression = correlationExpression;
     }
 
     public Aggregator(Processor processor, AggregationCollection collection) {
@@ -61,4 +65,7 @@
         return "Aggregator[to: " + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Aggregate[" + correlationExpression + "]";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java Fri Jun 26 08:03:25 2009
@@ -29,7 +29,7 @@
  *
  * @version $Revision$
  */
-public class CatchProcessor extends DelegateProcessor {
+public class CatchProcessor extends DelegateProcessor implements Traceable {
     private final List<Class> exceptions;
     private final Predicate onWhen;
     private final Predicate handled;
@@ -46,6 +46,10 @@
         return "Catch[" + exceptions + " -> " + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Catch";
+    }
+
     /**
      * Whether this catch processor catch the given thrown exception
      *

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java Fri Jun 26 08:03:25 2009
@@ -33,7 +33,7 @@
  * 
  * @version $Revision$
  */
-public class ChoiceProcessor extends ServiceSupport implements Processor, Navigate<Processor> {
+public class ChoiceProcessor extends ServiceSupport implements Processor, Navigate<Processor>, Traceable {
     private final List<FilterProcessor> filters;
     private final Processor otherwise;
 
@@ -80,6 +80,10 @@
         return builder.toString();
     }
 
+    public String getTraceLabel() {
+        return "Choice";
+    }
+
     public List<FilterProcessor> getFilters() {
         return filters;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Delayer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Delayer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Delayer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Delayer.java Fri Jun 26 08:03:25 2009
@@ -27,7 +27,7 @@
  * 
  * @version $Revision$
  */
-public class Delayer extends DelayProcessorSupport {
+public class Delayer extends DelayProcessorSupport implements Traceable {
     private final Expression delay;
 
     public Delayer(Processor processor, Expression delay) {
@@ -40,6 +40,10 @@
         return "Delayer[" + delay + " to: " + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Delayer[" + delay + "]";
+    }
+
     // Implementation methods
     // -------------------------------------------------------------------------
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Enricher.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Enricher.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Enricher.java Fri Jun 26 08:03:25 2009
@@ -146,6 +146,11 @@
         return new CopyAggregationStrategy();
     }
 
+    @Override
+    public String toString() {
+        return "Enrich[" + producer.getEndpoint().getEndpointUri() + "]";
+    }
+
     protected void doStart() throws Exception {
         producer.start();
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ExchangePatternProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ExchangePatternProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ExchangePatternProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ExchangePatternProcessor.java Fri Jun 26 08:03:25 2009
@@ -38,4 +38,8 @@
         exchange.setPattern(exchangePattern);        
     }
 
+    @Override
+    public String toString() {
+        return "SetExchangePattern[" + exchangePattern + "]";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java Fri Jun 26 08:03:25 2009
@@ -28,7 +28,7 @@
  *
  * @version $Revision$
  */
-public class FilterProcessor extends DelegateProcessor {
+public class FilterProcessor extends DelegateProcessor implements Traceable {
     private static final Log LOG = LogFactory.getLog(FilterProcessor.class);
     private final Predicate predicate;
 
@@ -54,6 +54,10 @@
         return "Filter[if: " + predicate + " do: " + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Filter[if: " + predicate + "]";
+    }
+
     public Predicate getPredicate() {
         return predicate;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java Fri Jun 26 08:03:25 2009
@@ -28,7 +28,7 @@
  *
  * @version $Revision$
  */
-public class LoopProcessor extends DelegateProcessor {
+public class LoopProcessor extends DelegateProcessor implements Traceable {
     private static final Log LOG = LogFactory.getLog(LoopProcessor.class);
 
     private final Expression expression;
@@ -60,6 +60,10 @@
         return "Loop[for: " + expression + " times do: " + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Loop[" + expression + "]";
+    }
+
     public Expression getExpression() {
         return expression;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java Fri Jun 26 08:03:25 2009
@@ -53,4 +53,9 @@
         byte[] data = buffer.toByteArray();
         out.setBody(data);
     }
+
+    @Override
+    public String toString() {
+        return "Marshal[" + dataFormat + "]";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java Fri Jun 26 08:03:25 2009
@@ -49,7 +49,7 @@
  * @see Pipeline
  * @version $Revision$
  */
-public class MulticastProcessor extends ServiceSupport implements Processor, Navigate {
+public class MulticastProcessor extends ServiceSupport implements Processor, Navigate, Traceable {
 
     private static final transient Log LOG = LogFactory.getLog(MulticastProcessor.class);
 
@@ -112,6 +112,10 @@
         return "Multicast[" + getProcessors() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Multicast";
+    }
+
     public void process(Exchange exchange) throws Exception {
         final AtomicExchange result = new AtomicExchange();
         final Iterable<ProcessorExchangePair> pairs = createProcessorExchangePairs(exchange);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java Fri Jun 26 08:03:25 2009
@@ -32,7 +32,7 @@
  *
  * @version $Revision$
  */
-public class Pipeline extends MulticastProcessor implements Processor {
+public class Pipeline extends MulticastProcessor implements Processor, Traceable {
     private static final transient Log LOG = LogFactory.getLog(Pipeline.class);
 
     public Pipeline(Collection<Processor> processors) {
@@ -160,4 +160,8 @@
         return "Pipeline" + getProcessors();
     }
 
+    @Override
+    public String getTraceLabel() {
+        return "Pipeline";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java Fri Jun 26 08:03:25 2009
@@ -33,7 +33,7 @@
  *
  * @version $Revision$
  */
-public class Resequencer extends BatchProcessor {
+public class Resequencer extends BatchProcessor implements Traceable {
 
     public Resequencer(Processor processor, Expression expression) {
         this(processor, createSet(expression));
@@ -52,6 +52,10 @@
         return "Resequencer[to: " + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Resequence";
+    }
+
     // Implementation methods
     //-------------------------------------------------------------------------
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java Fri Jun 26 08:03:25 2009
@@ -25,7 +25,7 @@
  *
  * @version $Revision$
  */
-public class RollbackProcessor implements Processor {
+public class RollbackProcessor implements Processor, Traceable {
 
     private String message;
 
@@ -50,4 +50,8 @@
             return "Rollback";
         }
     }
+
+    public String getTraceLabel() {
+        return "Rollback";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java Fri Jun 26 08:03:25 2009
@@ -27,8 +27,7 @@
 import org.apache.camel.impl.ServiceSupport;
 import org.apache.camel.model.RoutingSlipDefinition;
 import org.apache.camel.util.ExchangeHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+
 import static org.apache.camel.util.ObjectHelper.notNull;
 
 /**
@@ -36,8 +35,7 @@
  * pattern where the list of actual endpoints to send a message exchange to are
  * dependent on the value of a message header.
  */
-public class RoutingSlip extends ServiceSupport implements Processor {
-    private static final transient Log LOG = LogFactory.getLog(RoutingSlip.class);
+public class RoutingSlip extends ServiceSupport implements Processor, Traceable {
     private ProducerCache producerCache;
     private final String header;
     private final String uriDelimiter;
@@ -59,6 +57,10 @@
         return "RoutingSlip[header=" + header + " uriDelimiter=" + uriDelimiter + "]";
     }
 
+    public String getTraceLabel() {
+        return "RoutingSlip[" + header + "]";
+    }
+
     public void process(Exchange exchange) throws Exception {
         Message message = exchange.getIn();
         String[] recipients = recipients(message);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java Fri Jun 26 08:03:25 2009
@@ -33,7 +33,7 @@
  *
  * @version $Revision$
  */
-public class SendProcessor extends ServiceSupport implements Processor {
+public class SendProcessor extends ServiceSupport implements Processor, Traceable {
     protected static final transient Log LOG = LogFactory.getLog(SendProcessor.class);
     protected ProducerCache producerCache;
     protected Endpoint destination;
@@ -54,6 +54,10 @@
         return "sendTo(" + destination + (pattern != null ? " " + pattern : "") + ")";
     }
 
+    public String getTraceLabel() {
+        return destination.getEndpointUri();
+    }
+
     public void process(final Exchange exchange) throws Exception {
         getProducerCache(exchange).doInProducer(destination, exchange, pattern, new ProducerCallback<Exchange>() {
             public Exchange doInProducer(Producer producer, Exchange exchange, ExchangePattern pattern) throws Exception {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SortProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SortProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SortProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SortProcessor.java Fri Jun 26 08:03:25 2009
@@ -54,6 +54,10 @@
         }
     }
 
+    public String toString() {
+        return "Sort[" + expression + "]";
+    }
+
 }
 
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java Fri Jun 26 08:03:25 2009
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.processor;
 
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -42,7 +41,7 @@
  *
  * @version $Revision$
  */
-public class Splitter extends MulticastProcessor implements Processor {
+public class Splitter extends MulticastProcessor implements Processor, Traceable {
     private final Expression expression;
 
     public Splitter(Expression expression, Processor destination, AggregationStrategy aggregationStrategy) {
@@ -64,6 +63,11 @@
     }
 
     @Override
+    public String getTraceLabel() {
+        return "Split[" + expression + "]";
+    }
+
+    @Override
     protected Iterable<ProcessorExchangePair> createProcessorExchangePairs(Exchange exchange) {
         Object value = expression.evaluate(exchange, Object.class);
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java Fri Jun 26 08:03:25 2009
@@ -33,6 +33,6 @@
 
     @Override
     public String toString() {
-        return "StopProcessor";
+        return "Stop";
     }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java Fri Jun 26 08:03:25 2009
@@ -58,7 +58,7 @@
  * 
  * @see ResequencerEngine
  */
-public class StreamResequencer extends ServiceSupport implements SequenceSender<Exchange>, Processor, Navigate<Processor> {
+public class StreamResequencer extends ServiceSupport implements SequenceSender<Exchange>, Processor, Navigate<Processor>, Traceable {
 
     private static final long DELIVERY_ATTEMPT_INTERVAL = 1000L;
     
@@ -133,6 +133,10 @@
         return "StreamResequencer[to: " + processor + "]";
     }
 
+    public String getTraceLabel() {
+        return "StreamResequence";
+    }
+
     @Override
     protected void doStart() throws Exception {
         ServiceHelper.startServices(processor);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java Fri Jun 26 08:03:25 2009
@@ -115,4 +115,8 @@
         }
     }
 
+    public String toString() {
+        return "Threads";
+    }
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Throttler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Throttler.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Throttler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Throttler.java Fri Jun 26 08:03:25 2009
@@ -30,7 +30,7 @@
  * 
  * @version $Revision$
  */
-public class Throttler extends DelayProcessorSupport {
+public class Throttler extends DelayProcessorSupport implements Traceable {
     private long maximumRequestsPerPeriod;
     private long timePeriodMillis;
     private TimeSlot slot;
@@ -51,6 +51,10 @@
                + getProcessor() + "]";
     }
 
+    public String getTraceLabel() {
+        return "Throttle[" + maximumRequestsPerPeriod + " per: " + timePeriodMillis + "]";
+    }
+
     // Properties
     // -----------------------------------------------------------------------
     public long getMaximumRequestsPerPeriod() {
@@ -97,10 +101,10 @@
         slot.assign();
         return slot;
     }
-    
+
     /*
-     * A time slot is capable of handling a number of exchanges within a certain period of time.
-     */
+    * A time slot is capable of handling a number of exchanges within a certain period of time.
+    */
     protected class TimeSlot {
         
         private long capacity = Throttler.this.maximumRequestsPerPeriod;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java Fri Jun 26 08:03:25 2009
@@ -36,4 +36,8 @@
         exchange.setException(exception);
     }
 
+    public String toString() {
+        return "ThrowException";
+    }
+
 }
\ No newline at end of file

Added: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java?rev=788621&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java Fri Jun 26 08:03:25 2009
@@ -0,0 +1,36 @@
+/**
+ * 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;
+
+/**
+ * Traceable processors allowing easeir tracing using constructed labels to help identify the processor
+ * and where its defined in the route model.
+ *
+ * @version $Revision$
+ */
+public interface Traceable {
+
+    /**
+     * Gets the trace label used for logging when tracing is enabled.
+     * <p/>
+     * The lable should be short and precise.
+     *
+     * @return  the label
+     */
+    public String getTraceLabel();
+
+}

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Traceable.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TransformProcessor.java Fri Jun 26 08:03:25 2009
@@ -23,7 +23,7 @@
 /**
  * A processor which sets the body on the OUT message with an expression
  */
-public class TransformProcessor extends DelegateProcessor {
+public class TransformProcessor extends DelegateProcessor implements Traceable {
     private final Expression expression;
 
     public TransformProcessor(Expression expression) {
@@ -50,4 +50,8 @@
     public String toString() {
         return "Transform(" + expression + (processor != null ? "," + processor : "") + ")";
     }
+
+    public String getTraceLabel() {
+        return "Transform[" + expression + "]";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java Fri Jun 26 08:03:25 2009
@@ -33,7 +33,7 @@
  *
  * @version $Revision$
  */
-public class TryProcessor extends ServiceSupport implements Processor, Navigate<Processor> {
+public class TryProcessor extends ServiceSupport implements Processor, Navigate<Processor>, Traceable {
     private static final transient Log LOG = LogFactory.getLog(TryProcessor.class);
 
     private final Processor tryProcessor;
@@ -51,6 +51,10 @@
         return "Try {" + tryProcessor + "} " + catchClauses + finallyText;
     }
 
+    public String getTraceLabel() {
+        return "Try";
+    }
+
     public void process(Exchange exchange) throws Exception {
         Exception e;
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java Fri Jun 26 08:03:25 2009
@@ -56,4 +56,9 @@
             }
         }
     }
+
+    public String toString() {
+        return "Unmarshal[" + dataFormat + "]";
+    }
+
 }
\ No newline at end of file

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java Fri Jun 26 08:03:25 2009
@@ -67,7 +67,7 @@
 
     @Override
     public String toString() {
-        return "wireTap(" + destination.getEndpointUri() + ")";
+        return "WireTap[" + destination.getEndpointUri() + "]";
     }
 
     public void process(Exchange exchange) throws Exception {

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=788621&r1=788620&r2=788621&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 Fri Jun 26 08:03:25 2009
@@ -21,6 +21,8 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.processor.Traceable;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.TraceableUnitOfWork;
 import org.apache.camel.util.MessageHelper;
@@ -59,8 +61,8 @@
         // need to use defensive copies to avoid Exchange altering after the point of interception
         this.timestamp = timestamp;
         this.fromEndpointUri = exchange.getFromEndpoint() != null ? exchange.getFromEndpoint().getEndpointUri() : null;
-        this.previousNode = extractPreviousNode(exchange);
-        this.toNode = extractNode(toNode);
+        this.previousNode = extractFromNode(exchange);
+        this.toNode = extractToNode(exchange);
         this.exchangeId = exchange.getExchangeId();
         this.shortExchangeId = extractShortExchangeId(exchange);
         this.exchangePattern = exchange.getPattern().toString();
@@ -79,19 +81,32 @@
 
     // Implementation
     //---------------------------------------------------------------
-    private String extractNode(ProcessorDefinition node) {
-        return node.getShortName() + "(" + node.getLabel() + ")";
+    private String extractTraceLabel(Processor processor) {
+        if (processor instanceof Traceable) {
+            Traceable trace = (Traceable) processor;
+            return trace.getTraceLabel();
+        }
+        return processor.toString();
     }
 
     private String extractShortExchangeId(Exchange exchange) {
         return exchange.getExchangeId().substring(exchange.getExchangeId().indexOf("/") + 1);
     }
 
-    private String extractPreviousNode(Exchange exchange) {
+    private String extractFromNode(Exchange exchange) {
+        if (exchange.getUnitOfWork() instanceof TraceableUnitOfWork) {
+            TraceableUnitOfWork tuow = (TraceableUnitOfWork) exchange.getUnitOfWork();
+            Processor last = tuow.getSecondLastInterceptedProcessor();
+            return last != null ? extractTraceLabel(last) : null;
+        }
+        return null;
+    }
+
+    private String extractToNode(Exchange exchange) {
         if (exchange.getUnitOfWork() instanceof TraceableUnitOfWork) {
             TraceableUnitOfWork tuow = (TraceableUnitOfWork) exchange.getUnitOfWork();
-            ProcessorDefinition last = tuow.getLastInterceptedNode();
-            return last != null ? extractNode(last) : null;
+            Processor last = tuow.getLastInterceptedProcessor();
+            return last != null ? extractTraceLabel(last) : null;
         }
         return null;
     }

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=788621&r1=788620&r2=788621&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 Jun 26 08:03:25 2009
@@ -18,6 +18,8 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.processor.Traceable;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.TraceableUnitOfWork;
 import org.apache.camel.spi.UnitOfWork;
@@ -34,7 +36,7 @@
     private boolean showExchangeId;
     private boolean showShortExchangeId;
     private boolean showExchangePattern = true;
-    private boolean showProperties = true;
+    private boolean showProperties;
     private boolean showHeaders = true;
     private boolean showBody = true;
     private boolean showBodyType = true;
@@ -234,8 +236,15 @@
         }
     }
 
-    protected String getNodeMessage(ProcessorDefinition node) {
-        String message = node.getShortName() + "(" + node.getLabel() + ")";
+    protected String getNodeMessage(Processor processor) {
+        String message;
+        if (processor instanceof Traceable) {
+            Traceable trace = (Traceable) processor;
+            message = trace.getTraceLabel();
+        } else {
+            message = processor.toString();
+        }
+
         if (nodeLength > 0) {
             return String.format("%1$-" + nodeLength + "." + nodeLength + "s", message);
         } else {
@@ -271,18 +280,21 @@
 
         // compute from and to
         String from = "";
+        String to = "";
         if (showNode && exchange.getUnitOfWork() instanceof TraceableUnitOfWork) {
             TraceableUnitOfWork tuow = (TraceableUnitOfWork) exchange.getUnitOfWork();
-            ProcessorDefinition prev = tuow.getLastInterceptedNode();
-            if (prev != null) {
-                from = getNodeMessage(prev);
+
+            Processor fromProcessor = tuow.getSecondLastInterceptedProcessor();
+            if (fromProcessor != null) {
+                from = getNodeMessage(fromProcessor);
             } else if (exchange.getFromEndpoint() != null) {
-                from = exchange.getFromEndpoint().getEndpointUri();
+                from = "from(" + exchange.getFromEndpoint().getEndpointUri() + ")";
+            }
+
+            Processor toProcessor = tuow.getLastInterceptedProcessor();
+            if (toProcessor != null) {
+                to = getNodeMessage(toProcessor);
             }
-        }
-        String to = "";
-        if (showNode) {
-            to = getNodeMessage(currentNode);
         }
 
         // assemble result with and without the to/from

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java Fri Jun 26 08:03:25 2009
@@ -27,6 +27,8 @@
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateProcessor;
 import org.apache.camel.processor.Logger;
+import org.apache.camel.processor.Pipeline;
+import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.TraceableUnitOfWork;
@@ -100,14 +102,15 @@
         try {
             // before
             if (shouldLog) {
-                logExchange(exchange);
-                traceExchange(exchange);
 
                 // if traceable then register this as the previous node, now it has been logged
                 if (exchange.getUnitOfWork() instanceof TraceableUnitOfWork) {
                     TraceableUnitOfWork tuow = (TraceableUnitOfWork) exchange.getUnitOfWork();
-                    tuow.addInterceptedNode(node);
+                    tuow.addInterceptedProcessor(super.getProcessor());
                 }
+
+                logExchange(exchange);
+                traceExchange(exchange);
             }
 
             // process the exchange

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java Fri Jun 26 08:03:25 2009
@@ -120,4 +120,8 @@
         }
     }
 
+    public String toString() {
+        return "FailoverLoadBalancer";
+    }
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java Fri Jun 26 08:03:25 2009
@@ -37,4 +37,8 @@
             }
         }
     }
+
+    public String toString() {
+        return "RandomLoadBalancer";
+    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RoundRobinLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RoundRobinLoadBalancer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RoundRobinLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RoundRobinLoadBalancer.java Fri Jun 26 08:03:25 2009
@@ -36,4 +36,9 @@
         }
         return processors.get(counter);
     }
+
+    public String toString() {
+        return "RoundRobinLoadBalancer";
+    }
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java Fri Jun 26 08:03:25 2009
@@ -120,4 +120,9 @@
         }
         return hashCode;
     }
+
+    public String toString() {
+        return "StickyLoadBalancer";
+    }
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java Fri Jun 26 08:03:25 2009
@@ -51,4 +51,8 @@
         return exchange.copy();
     }
 
+    public String toString() {
+        return "TopicLoadBalancer";
+    }
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/TraceableUnitOfWork.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/TraceableUnitOfWork.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/TraceableUnitOfWork.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/TraceableUnitOfWork.java Fri Jun 26 08:03:25 2009
@@ -18,7 +18,7 @@
 
 import java.util.List;
 
-import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.Processor;
 
 /**
  * A Unit of work that is also traceable with the
@@ -30,21 +30,26 @@
 public interface TraceableUnitOfWork extends UnitOfWork {
 
     /**
-     * Adds the given node that was intercepted
+     * Adds the given processor that was intercepted
      *
-     * @param node the node
+     * @param processor the processor
      */
-    void addInterceptedNode(ProcessorDefinition node);
+    void addInterceptedProcessor(Processor processor);
 
     /**
-     * Gets the last intercepted node, is <tt>null</tt> if no last exists.
+     * Gets the last intercepted processor, is <tt>null</tt> if no last exists.
      */
-    ProcessorDefinition getLastInterceptedNode();
+    Processor getLastInterceptedProcessor();
 
     /**
-     * Gets the current list of intercepted nodes, representing the route path the
+     * Gets the 2nd last intercepted processor, is <tt>null</tt> if no last exists.
+     */
+    Processor getSecondLastInterceptedProcessor();
+
+    /**
+     * Gets the current list of intercepted processors, representing the route path the
      * current {@link org.apache.camel.Exchange} has taken.
      */
-    List<ProcessorDefinition> getInterceptedNodes();
+    List<Processor> getInterceptedProcessors();
 
 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/JoinRoutesTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/JoinRoutesTest.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/JoinRoutesTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/JoinRoutesTest.java Fri Jun 26 08:03:25 2009
@@ -63,6 +63,8 @@
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
+                context.setTracing(true);
+
                 from("direct:a").choice()
                         .when(header("foo").isEqualTo("bar")).to("direct:b")
                         .when(header("foo").isEqualTo("cheese")).to("direct:c")

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java Fri Jun 26 08:03:25 2009
@@ -33,7 +33,7 @@
 
     public void testSendingSomeMessages() throws Exception {
         Object out = template.requestBody("direct:start", "Hello London");
-        assertEquals("Failed at: bean:bar", out);
+        assertEquals("Failed at: sendTo(Endpoint[bean:bar])", out);
     }
 
     @Override
@@ -72,12 +72,16 @@
             TraceableUnitOfWork tuow = (TraceableUnitOfWork) exchange.getUnitOfWork();
 
             // get the list of intercepted nodes
-            List<ProcessorDefinition> list = tuow.getInterceptedNodes();
+            List<Processor> list = tuow.getInterceptedProcessors();
             // get the 2nd last as the last is me (MyErrorProcessor)
-            ProcessorDefinition last = list.get(list.size() - 2);
+            Processor last = list.get(list.size() - 2);
 
             // set error message
-            exchange.getFault().setBody("Failed at: " + last.getLabel());
+            exchange.getFault().setBody("Failed at: " + last.toString());
+        }
+
+        public String toString() {
+            return "MyErrorProcessor";
         }
     }
     // END SNIPPET: e2

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromWhenTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromWhenTest.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromWhenTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromWhenTest.java Fri Jun 26 08:03:25 2009
@@ -49,6 +49,8 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                context.setTracing(true);
+
                 interceptFrom().when(toPredicate(simple("${body} contains 'Goofy'"))).to("mock:goofy").stop();
 
                 from("direct:start").to("mock:end");

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java Fri Jun 26 08:03:25 2009
@@ -35,6 +35,8 @@
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                context.setTracing(true);
+
                 // START SNIPPET: e1
                 // we intercept by endpoint, that means that whenever an exchange is about to be sent to
                 // this endpoint, its intercepted and routed with this detour route beforehand
@@ -99,6 +101,8 @@
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                context.setTracing(true);
+
                 // START SNIPPET: e3
                 // since we use the skipSendToOriginalEndpoint() we instruct Camel to skip
                 // sending the exchange to the original intended destination after the intercept

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java?rev=788621&r1=788620&r2=788621&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java Fri Jun 26 08:03:25 2009
@@ -88,6 +88,8 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                context.setTracing(true);
+
                 errorHandler(deadLetterChannel("mock:error"));
 
                 onException(MyTechnicalException.class).maximumRedeliveries(0).handled(true).to("mock:tech");