Author: cschneider Date: Wed Oct 5 14:07:17 2011 New Revision: 1179233 URL: http://svn.apache.org/viewvc?rev=1179233&view=rev Log: CAMEL-4500 Removing DispatchingTraceEventHandler and instead adding the functionality to TraceInterceptor. So we can support more than one tracer
Removed: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DispatchingTraceEventHandler.java 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/processor/interceptor/TraceInterceptor.java camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.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=1179233&r1=1179232&r2=1179233&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 Wed Oct 5 14:07:17 2011 @@ -24,8 +24,6 @@ import org.apache.camel.api.management.M import org.apache.camel.api.management.ManagedResource; import org.apache.camel.api.management.NotificationSender; import org.apache.camel.api.management.NotificationSenderAware; -import org.apache.camel.processor.interceptor.DispatchingTraceEventHandler; -import org.apache.camel.processor.interceptor.TraceEventHandler; import org.apache.camel.processor.interceptor.Tracer; import org.apache.camel.spi.ManagementStrategy; import org.apache.camel.util.ObjectHelper; @@ -45,16 +43,8 @@ public class ManagedTracer implements No public ManagedTracer(CamelContext camelContext, Tracer tracer) { this.camelContext = camelContext; this.tracer = tracer; - TraceEventHandler oldHandler = tracer.getTraceHandler(); jmxTraceHandler = new JMXNotificationTraceEventHandler(); - if (oldHandler != null) { - DispatchingTraceEventHandler teh = new DispatchingTraceEventHandler(); - teh.addHandler(oldHandler); - teh.addHandler(jmxTraceHandler); - tracer.setTraceHandler(teh); - } else { - tracer.setTraceHandler(jmxTraceHandler); - } + tracer.addTraceHandler(jmxTraceHandler); } public void init(ManagementStrategy strategy) { 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=1179233&r1=1179232&r2=1179233&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 Wed Oct 5 14:07:17 2011 @@ -58,7 +58,6 @@ public class TraceInterceptor extends De private TraceFormatter formatter; private RouteContext routeContext; - private TraceEventHandler traceHandler; public TraceInterceptor(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter, Tracer tracer) { super(target); @@ -69,7 +68,6 @@ public class TraceInterceptor extends De if (tracer.getFormatter() != null) { this.formatter = tracer.getFormatter(); } - this.traceHandler = tracer.getTraceHandler(); } @Override @@ -277,38 +275,27 @@ public class TraceInterceptor extends De return tracer; } - public TraceEventHandler getTraceHandler() { - return traceHandler; - } - - /* - * Note that this should only be set before the route has been started - */ - public void setTraceHandler(TraceEventHandler traceHandler) { - this.traceHandler = traceHandler; - } - protected void logExchange(Exchange exchange) { // process the exchange that formats and logs it logger.process(exchange); } protected void traceExchange(Exchange exchange) throws Exception { - if (traceHandler != null) { + for (TraceEventHandler traceHandler : tracer.getTraceHandlers()) { traceHandler.traceExchange(node, processor, this, exchange); } } protected Object traceExchangeIn(Exchange exchange) throws Exception { - if (traceHandler != null) { - return traceHandler.traceExchangeIn(node, processor, this, exchange); - } else { - return null; + Object result = null; + for (TraceEventHandler traceHandler : tracer.getTraceHandlers()) { + result = traceHandler.traceExchangeIn(node, processor, this, exchange); } + return result; } protected void traceExchangeOut(Exchange exchange, Object traceState) throws Exception { - if (traceHandler != null) { + for (TraceEventHandler traceHandler : tracer.getTraceHandlers()) { traceHandler.traceExchangeOut(node, processor, this, exchange, traceState); } } @@ -360,12 +347,12 @@ public class TraceInterceptor extends De @Override protected void doStart() throws Exception { super.doStart(); - ServiceHelper.startService(traceHandler); + ServiceHelper.startService(tracer.getTraceHandlers()); } @Override protected void doStop() throws Exception { super.doStop(); - ServiceHelper.stopService(traceHandler); + ServiceHelper.stopService(tracer.getTraceHandlers()); } } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=1179233&r1=1179232&r2=1179233&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java Wed Oct 5 14:07:17 2011 @@ -16,6 +16,7 @@ */ package org.apache.camel.processor.interceptor; +import java.util.ArrayList; import java.util.List; import org.apache.camel.CamelContext; @@ -53,11 +54,12 @@ public class Tracer implements Intercept private boolean useJpa; private CamelLogProcessor logger; private TraceInterceptorFactory traceInterceptorFactory = new DefaultTraceInterceptorFactory(); - private TraceEventHandler traceHandler; + private List<TraceEventHandler> traceHandlers; private String jpaTraceEventMessageClassName = JPA_TRACE_EVENT_MESSAGE; public Tracer() { - traceHandler = new DefaultTraceEventHandler(this); + traceHandlers = new ArrayList<TraceEventHandler>(); + traceHandlers.add(new DefaultTraceEventHandler(this)); } /** @@ -278,8 +280,21 @@ public class Tracer implements Intercept this.traceInterceptorFactory = traceInterceptorFactory; } + /** + * + * @return the first trace event handler + */ + @Deprecated public TraceEventHandler getTraceHandler() { - return traceHandler; + return traceHandlers.get(0); + } + + /** + * + * @return list of tracehandlers + */ + public List<TraceEventHandler> getTraceHandlers() { + return traceHandlers; } /** @@ -291,8 +306,25 @@ public class Tracer implements Intercept * The TraceHandler should only be set before any routes are created, hence this * method is not thread safe. */ + @Deprecated public void setTraceHandler(TraceEventHandler traceHandler) { - this.traceHandler = traceHandler; + this.traceHandlers.add(0, traceHandler); + } + + /** + * Add the given tracehandler + * @param traceHandler + */ + public void addTraceHandler(TraceEventHandler traceHandler) { + this.traceHandlers.add(traceHandler); + } + + /** + * Remove the given tracehandler + * @param traceHandler + */ + public void removeTraceHandler(TraceEventHandler traceHandler) { + this.traceHandlers.add(traceHandler); } public String getJpaTraceEventMessageClassName() { Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java?rev=1179233&r1=1179232&r2=1179233&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java Wed Oct 5 14:07:17 2011 @@ -23,7 +23,6 @@ import org.apache.camel.CamelContext; import org.apache.camel.DelegateProcessor; import org.apache.camel.Processor; import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.processor.WrapProcessor; public class TraceInterceptorFactoryCreatesHandlerTest extends TracingTestBase { @@ -45,7 +44,7 @@ public class TraceInterceptorFactoryCrea if (traceAllNodes || !target.getClass().equals(TraceTestProcessor.class)) { TraceHandlerTestHandler traceHandler = new TraceHandlerTestHandler(eventMessages); traceHandler.setTraceAllNodes(true); - interceptor.setTraceHandler(traceHandler); + tracer.addTraceHandler(traceHandler); } return interceptor;