Author: dkulp
Date: Wed Oct 5 17:33:34 2011
New Revision: 1179342
URL: http://svn.apache.org/viewvc?rev=1179342&view=rev
Log:
[CAMEL-4500] Make the traceHandlers list threadsafe and allow the
TraceInterceptor to use the live list (instead of a copy of it) to allow
dynamic changing of the tracers
Modified:
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/async/AsyncTraceHandlerTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.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/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=1179342&r1=1179341&r2=1179342&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 17:33:34 2011
@@ -17,6 +17,7 @@
package org.apache.camel.processor.interceptor;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.camel.AsyncCallback;
@@ -72,8 +73,7 @@ public class TraceInterceptor extends De
if (tracer.getFormatter() != null) {
this.formatter = tracer.getFormatter();
}
- this.traceHandlers = new ArrayList<TraceEventHandler>();
- this.traceHandlers.addAll(tracer.getTraceHandlers());
+ this.traceHandlers = tracer.getTraceHandlers();
}
@Override
@@ -367,7 +367,6 @@ public class TraceInterceptor extends De
@Deprecated
public void setTraceHandler(TraceEventHandler traceHandler) {
- traceHandlers.clear();
- traceHandlers.add(traceHandler);
+ traceHandlers = Collections.singletonList(traceHandler);
}
}
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=1179342&r1=1179341&r2=1179342&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 17:33:34 2011
@@ -16,8 +16,8 @@
*/
package org.apache.camel.processor.interceptor;
-import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
@@ -54,11 +54,11 @@ public class Tracer implements Intercept
private boolean useJpa;
private CamelLogProcessor logger;
private TraceInterceptorFactory traceInterceptorFactory = new
DefaultTraceInterceptorFactory();
- private List<TraceEventHandler> traceHandlers;
+ private CopyOnWriteArrayList<TraceEventHandler> traceHandlers;
private String jpaTraceEventMessageClassName = JPA_TRACE_EVENT_MESSAGE;
public Tracer() {
- traceHandlers = new ArrayList<TraceEventHandler>();
+ traceHandlers = new CopyOnWriteArrayList<TraceEventHandler>();
traceHandlers.add(new DefaultTraceEventHandler(this));
}
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java?rev=1179342&r1=1179341&r2=1179342&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java
Wed Oct 5 17:33:34 2011
@@ -51,7 +51,8 @@ public class AsyncTraceHandlerTest exten
Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
tracer.setEnabled(true);
- tracer.setTraceHandler(new MyTraceHandler());
+ tracer.getTraceHandlers().clear();
+ tracer.getTraceHandlers().add(new MyTraceHandler());
tracer.setTraceOutExchanges(true);
return contextLocal;
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java?rev=1179342&r1=1179341&r2=1179342&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java
Wed Oct 5 17:33:34 2011
@@ -31,14 +31,15 @@ public class TraceHandlerTest extends Tr
Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
tracer.setEnabled(true);
tracer.setTraceExceptions(true);
- tracer.setTraceHandler(new TraceHandlerTestHandler(tracedMessages));
+ tracer.getTraceHandlers().clear();
+ tracer.getTraceHandlers().add(new
TraceHandlerTestHandler(tracedMessages));
return contextLocal;
}
@Override
protected void prepareTestTracerExceptionInOut() {
- ((TraceHandlerTestHandler) ((Tracer)
context.getDefaultTracer()).getTraceHandler()).setTraceAllNodes(true);
+ ((TraceHandlerTestHandler) ((Tracer)
context.getDefaultTracer()).getTraceHandlers().get(0)).setTraceAllNodes(true);
}
}
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=1179342&r1=1179341&r2=1179342&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 17:33:34 2011
@@ -35,7 +35,9 @@ public class TraceInterceptorFactoryCrea
this.traceAllNodes = traceAllNodes;
}
+ @SuppressWarnings("deprecation")
public Processor createTraceInterceptor(ProcessorDefinition node,
Processor target, TraceFormatter formatter, Tracer tracer) {
+
TraceInterceptor interceptor = new TraceInterceptor(node, target,
formatter, tracer);
while (target instanceof DelegateProcessor) {