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>