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/01/12 09:06:11 UTC
svn commit: r733646 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/processor/interceptor/
camel-core/src/test/java/org/apache/camel/builder/
camel-core/src/test/java/org/apache/camel/processor/interceptor/
components/camel-spring...
Author: davsclaus
Date: Mon Jan 12 00:06:10 2009
New Revision: 733646
URL: http://svn.apache.org/viewvc?rev=733646&view=rev
Log:
CAMEL-1245: Tracer destination is now a String uri
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventExchange.java
- copied, changed from r733633, activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEvent.java
Removed:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEvent.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml
Copied: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventExchange.java (from r733633, activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEvent.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventExchange.java?p2=activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventExchange.java&p1=activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEvent.java&r1=733633&r2=733646&rev=733646&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEvent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventExchange.java Mon Jan 12 00:06:10 2009
@@ -28,20 +28,18 @@
* <p/>
* The IN body contains {@link TraceEventMessage} with trace details of the original IN message.
*/
-public class TraceEvent extends DefaultExchange {
+public class TraceEventExchange extends DefaultExchange {
private String nodeId;
- private String exchangeId;
private Date timestamp;
private Exchange tracedExchange;
- public TraceEvent(Exchange parent) {
+ public TraceEventExchange(Exchange parent) {
super(parent);
}
@Override
public Exchange newInstance() {
- TraceEvent answer = new TraceEvent(this);
- answer.setExchangeId(exchangeId);
+ TraceEventExchange answer = new TraceEventExchange(this);
answer.setNodeId(nodeId);
answer.setTimestamp(timestamp);
answer.setTracedExchange(tracedExchange);
@@ -85,6 +83,6 @@
@Override
public String toString() {
- return "TraceEvent[" + tracedExchange.getExchangeId() + "] on node: " + nodeId;
+ return "TraceEventExchange[" + tracedExchange.getExchangeId() + "] on node: " + nodeId;
}
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java Mon Jan 12 00:06:10 2009
@@ -80,7 +80,7 @@
public void process(final Exchange exchange) throws Exception {
// interceptor will also trace routes supposed only for TraceEvents so we need to skip
// logging TraceEvents to avoid infinite looping
- if (exchange instanceof TraceEvent || exchange.getProperty(TRACE_EVENT, Boolean.class) != null) {
+ if (exchange instanceof TraceEventExchange || exchange.getProperty(TRACE_EVENT, Boolean.class) != null) {
// but we must still process to allow routing of TraceEvents to eg a JPA endpoint
super.process(exchange);
return;
@@ -137,9 +137,9 @@
protected void traceExchange(Exchange exchange) throws Exception {
// should we send a trace event to an optional destination?
- if (traceEventProducer != null) {
+ if (tracer.getDestinationUri() != null) {
// create event and add it as a property on the original exchange
- TraceEvent event = new TraceEvent(exchange);
+ TraceEventExchange event = new TraceEventExchange(exchange);
event.setNodeId(node.getId());
event.setTimestamp(new Date());
event.setTracedExchange(exchange);
@@ -151,12 +151,12 @@
// new Exchange instances is created during trace routing so we can check
// for this marker when interceptor also kickins in during routing of trace events
event.setProperty(TRACE_EVENT, Boolean.TRUE);
- // process the trace route
try {
- traceEventProducer.process(event);
+ // process the trace route
+ getTraceEventProducer(exchange).process(event);
} catch (Exception e) {
// log and ignore this as the original Exchange should be allowed to continue
- LOG.error("Error processing TraceEvent (original Exchange will be continued): " + event, e);
+ LOG.error("Error processing TraceEventExchange (original Exchange will be continued): " + event, e);
}
}
}
@@ -201,14 +201,19 @@
return true;
}
+ private synchronized Producer getTraceEventProducer(Exchange exchange) throws Exception {
+ if (traceEventProducer == null) {
+ // create producer when we have access the the camel context (we dont in doStart)
+ traceEventProducer = exchange.getContext().getEndpoint(tracer.getDestinationUri()).createProducer();
+ ServiceHelper.startService(traceEventProducer);
+ }
+ return traceEventProducer;
+ }
+
@Override
protected void doStart() throws Exception {
super.doStart();
- // in case of destination then create a producer to send the TraceEvent to
- if (tracer.getDestination() != null) {
- traceEventProducer = tracer.getDestination().createProducer();
- ServiceHelper.startService(traceEventProducer);
- }
+ traceEventProducer = null;
}
@Override
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java Mon Jan 12 00:06:10 2009
@@ -19,7 +19,6 @@
import java.util.List;
import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultCamelContext;
@@ -42,8 +41,8 @@
private boolean traceInterceptors;
private boolean traceExceptions = true;
private boolean traceOutExchanges;
- private Endpoint destination;
-
+ private String destinationUri;
+
/**
* A helper method to return the Tracer instance for a given {@link CamelContext} if one is enabled
*
@@ -153,19 +152,19 @@
return traceOutExchanges;
}
- public Endpoint getDestination() {
- return destination;
+ public String getDestinationUri() {
+ return destinationUri;
}
/**
- * Sets an optional destination to send the traced Exchange wrapped in a {@link TraceEvent}.
+ * Sets an optional destination to send the traced Exchange wrapped in a {@link TraceEventExchange}.
* <p/>
* Can be used to store tracing as files, in a database or whatever. The routing of the Exchange
* will happen synchronously and the original route will first continue when this destination routing
* has been compledted.
*/
- public void setDestination(Endpoint destination) {
- this.destination = destination;
+ public void setDestinationUri(String destinationUri) {
+ this.destinationUri = destinationUri;
}
}
\ No newline at end of file
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java Mon Jan 12 00:06:10 2009
@@ -330,7 +330,7 @@
* SendProcessor sendProcessor =
* assertIsInstanceOf(SendProcessor.class,
* filterProcessor.getProcessor()); assertEquals("Endpoint URI",
- * "seda:b", sendProcessor.getDestination().getEndpointUri());
+ * "seda:b", sendProcessor.getDestinationUri().getEndpointUri());
*/
}
}
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java Mon Jan 12 00:06:10 2009
@@ -69,7 +69,7 @@
// END SNIPPET: e1
// this is only for unit testing to use mock for assertion
- tracer.setDestination(context.getEndpoint("direct:traced"));
+ tracer.setDestinationUri("direct:traced");
from("direct:start")
.process(new MyProcessor("Hello World"))
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java Mon Jan 12 00:06:10 2009
@@ -36,10 +36,10 @@
public void testSendingSomeMessagesBeingTraced() throws Exception {
MockEndpoint result = getMockEndpoint("mock:result");
- result.expectedBodiesReceived("Bye World", "Foo World");
+ result.expectedBodiesReceived("Bye World", "Foo World", "Foo World");
MockEndpoint mock = getMockEndpoint("mock:traced");
- mock.expectedMessageCount(6);
+ mock.expectedMessageCount(8);
// should be in our CSV format (defined in bottom of this class)
mock.message(0).body().regex("^direct:start;.*;.*;Hello London");
mock.message(1).body().regex("^direct:start;.*;.*;Hello World");
@@ -47,9 +47,13 @@
mock.message(3).body().regex("^direct:start;.*;.*;Bye World");
mock.message(4).body().regex("^direct:foo;.*;.*;Hello Copenhagen");
mock.message(5).body().regex("^direct:foo;.*;.*;Foo World");
+ mock.message(6).body().regex("^direct:foo;.*;.*;Hello Beijing");
+ mock.message(7).body().regex("^direct:foo;.*;.*;Foo World");
template.sendBodyAndHeader("direct:start", "Hello London", "to", "James");
template.sendBody("direct:foo", "Hello Copenhagen");
+ // to test sending to same endpoint twice
+ template.sendBody("direct:foo", "Hello Beijing");
assertMockEndpointsSatisfied();
@@ -62,6 +66,8 @@
assertEquals("Bye World", tracedBodies.get(3));
assertEquals("Hello Copenhagen", tracedBodies.get(4));
assertEquals("Foo World", tracedBodies.get(5));
+ assertEquals("Hello Beijing", tracedBodies.get(6));
+ assertEquals("Foo World", tracedBodies.get(7));
// assert headers as well
assertEquals("{to=James}", tracedHeaders.get(0));
@@ -69,6 +75,7 @@
assertEquals("{to=Goodday}", tracedHeaders.get(2));
assertEquals("{to=Bye}", tracedHeaders.get(3));
assertEquals("{to=Foo}", tracedHeaders.get(4));
+ assertEquals("{to=Foo}", tracedHeaders.get(5));
}
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -79,7 +86,7 @@
// "direct:traced" where we can do some custom processing such as storing
// it in a file or a database
Tracer tracer = new Tracer();
- tracer.setDestination(context.getEndpoint("direct:traced"));
+ tracer.setDestinationUri("direct:traced");
// we disable regular trace logging in the log file. You can omit this and
// have both.
tracer.setLogLevel(LoggingLevel.OFF);
@@ -122,7 +129,7 @@
class MyTraveAssertProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
- TraceEvent event = (TraceEvent) exchange;
+ TraceEventExchange event = (TraceEventExchange) exchange;
assertNotNull(event);
assertEquals(event.getExchangeId(), exchange.getExchangeId());
assertNotNull(event.getNodeId());
Modified: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml Mon Jan 12 00:06:10 2009
@@ -23,7 +23,7 @@
">
<!-- SNIPPET START: e1 -->
- <bean id="traceFormatter" class="org.apache.camel.processor.interceptor.TraceFormatter">
+ <bean id="traceFormatter" class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
<property name="showBody" value="true"/>
<property name="showBodyType" value="false"/>
<property name="showBreadCrumb" value="false"/>
Modified: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml?rev=733646&r1=733645&r2=733646&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml Mon Jan 12 00:06:10 2009
@@ -40,7 +40,7 @@
<property name="traceOutExchanges" value="true" />
</bean>
- <bean id="traceFormatter" class="org.apache.camel.processor.interceptor.TraceFormatter">
+ <bean id="traceFormatter" class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
<property name="showOutBody" value="true" />
<property name="showOutBodyType" value="true" />
</bean>