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 2010/04/19 09:58:58 UTC

svn commit: r935469 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/model/ camel-core/src/main/java/org/apache/camel/processor/ camel-core/src/test/java/org/apache/camel/processor/ components/camel-spring/src/test/java/org/apache/camel/spr...

Author: davsclaus
Date: Mon Apr 19 07:58:58 2010
New Revision: 935469

URL: http://svn.apache.org/viewvc?rev=935469&view=rev
Log:
CAMEL-2555: WireTap when sending new Exchange uses a copy of the original Exchange as input to the Expression or Processor. You can use the new copy option to change the behavior.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java   (with props)
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java
      - copied, changed from r935446, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.java
      - copied, changed from r935446, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.xml
      - copied, changed from r935446, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.xml
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java?rev=935469&r1=935468&r2=935469&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java Mon Apr 19 07:58:58 2010
@@ -1684,6 +1684,9 @@ public abstract class ProcessorDefinitio
      * <a href="http://camel.apache.org/wiretap.html">WireTap EIP:</a>
      * Sends a new {@link org.apache.camel.Exchange} to the destination
      * using {@link ExchangePattern#InOnly}.
+     * <p/>
+     * Will use a copy of the original Exchange which is passed in as argument
+     * to the given expression
      *
      * @param uri  the destination
      * @param body expression that creates the body to send
@@ -1691,8 +1694,24 @@ public abstract class ProcessorDefinitio
      */
     @SuppressWarnings("unchecked")
     public Type wireTap(String uri, Expression body) {
+        return wireTap(uri, true, body);
+    }
+
+    /**
+     * <a href="http://camel.apache.org/wiretap.html">WireTap EIP:</a>
+     * Sends a new {@link org.apache.camel.Exchange} to the destination
+     * using {@link ExchangePattern#InOnly}.
+     *
+     * @param uri  the destination
+     * @param copy whether or not use a copy of the original exchange or a new empty exchange
+     * @param body expression that creates the body to send
+     * @return the builder
+     */
+    @SuppressWarnings("unchecked")
+    public Type wireTap(String uri, boolean copy, Expression body) {
         WireTapDefinition answer = new WireTapDefinition();
         answer.setUri(uri);
+        answer.setCopy(copy);
         answer.setNewExchangeExpression(body);
         addOutput(answer);
         return (Type) this;
@@ -1702,15 +1721,33 @@ public abstract class ProcessorDefinitio
      * <a href="http://camel.apache.org/wiretap.html">WireTap EIP:</a>
      * Sends a new {@link org.apache.camel.Exchange} to the destination
      * using {@link ExchangePattern#InOnly}.
+     * <p/>
+     * Will use a copy of the original Exchange which is passed in as argument
+     * to the given processor
      *
      * @param uri  the destination
      * @param processor  processor preparing the new exchange to send
      * @return the builder
      */
-    @SuppressWarnings("unchecked")
     public Type wireTap(String uri, Processor processor) {
+        return wireTap(uri, true, processor);
+    }
+
+    /**
+     * <a href="http://camel.apache.org/wiretap.html">WireTap EIP:</a>
+     * Sends a new {@link org.apache.camel.Exchange} to the destination
+     * using {@link ExchangePattern#InOnly}.
+     *
+     * @param uri  the destination
+     * @param copy whether or not use a copy of the original exchange or a new empty exchange
+     * @param processor  processor preparing the new exchange to send
+     * @return the builder
+     */
+    @SuppressWarnings("unchecked")
+    public Type wireTap(String uri, boolean copy, Processor processor) {
         WireTapDefinition answer = new WireTapDefinition();
         answer.setUri(uri);
+        answer.setCopy(copy);
         answer.setNewExchangeProcessor(processor);
         addOutput(answer);
         return (Type) this;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java?rev=935469&r1=935468&r2=935469&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java Mon Apr 19 07:58:58 2010
@@ -43,14 +43,16 @@ public class WireTapDefinition extends S
 
     @XmlTransient
     private Processor newExchangeProcessor;
-    @XmlAttribute(name = "processorRef", required = false)
+    @XmlAttribute(name = "processorRef")
     private String newExchangeProcessorRef;
-    @XmlElement(name = "body", required = false)
+    @XmlElement(name = "body")
     private ExpressionSubElementDefinition newExchangeExpression;
     @XmlTransient
     private ExecutorService executorService;
-    @XmlAttribute(required = false)
+    @XmlAttribute
     private String executorServiceRef;
+    @XmlAttribute
+    private Boolean copy = Boolean.TRUE;
 
     public WireTapDefinition() {
     }
@@ -72,6 +74,7 @@ public class WireTapDefinition extends S
             executorService = routeContext.getCamelContext().getExecutorServiceStrategy().newDefaultThreadPool(this, "WireTap");
         }
         WireTapProcessor answer = new WireTapProcessor(endpoint, getPattern(), executorService);
+        answer.setCopy(isCopy());
 
         if (newExchangeProcessorRef != null) {
             newExchangeProcessor = routeContext.lookup(newExchangeProcessorRef, Processor.class);
@@ -81,7 +84,6 @@ public class WireTapDefinition extends S
             answer.setNewExchangeExpression(newExchangeExpression.createExpression(routeContext));
         }
 
-
         return answer;
     }
 
@@ -156,4 +158,12 @@ public class WireTapDefinition extends S
     public void setExecutorServiceRef(String executorServiceRef) {
         this.executorServiceRef = executorServiceRef;
     }
+
+    public Boolean isCopy() {
+        return copy != null && copy;
+    }
+
+    public void setCopy(Boolean copy) {
+        this.copy = copy;
+    }
 }

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=935469&r1=935468&r2=935469&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 Mon Apr 19 07:58:58 2010
@@ -42,6 +42,7 @@ public class WireTapProcessor extends Se
     // as opposed to traditional wiretap that sends a copy of the original exchange
     private Expression newExchangeExpression;
     private Processor newExchangeProcessor;
+    private boolean copy;
 
     public WireTapProcessor(Endpoint destination, ExecutorService executorService) {
         super(destination);
@@ -99,30 +100,16 @@ public class WireTapProcessor extends Se
     @Override
     protected Exchange configureExchange(Exchange exchange, ExchangePattern pattern) {
         Exchange answer;
-        if (newExchangeProcessor == null && newExchangeExpression == null) {
+        if (copy) {
             // use a copy of the original exchange
             answer = configureCopyExchange(exchange);
         } else {
             // use a new exchange
             answer = configureNewExchange(exchange);
         }
+
         // set property which endpoint we send to
         answer.setProperty(Exchange.TO_ENDPOINT, destination.getEndpointUri());
-        return answer;
-    }
-
-    private Exchange configureCopyExchange(Exchange exchange) {
-        // must use a copy as we dont want it to cause side effects of the original exchange
-        Exchange copy = ExchangeHelper.createCorrelatedCopy(exchange, false);
-        // set MEP to InOnly as this wire tap is a fire and forget
-        copy.setPattern(ExchangePattern.InOnly);
-        return copy;
-    }
-
-    private Exchange configureNewExchange(Exchange exchange) {
-        Exchange answer = new DefaultExchange(exchange.getContext(), ExchangePattern.InOnly);
-        // use destination os origin of this new exchange
-        answer.setFromEndpoint(getDestination());
 
         // prepare the exchange
         if (newExchangeProcessor != null) {
@@ -131,7 +118,7 @@ public class WireTapProcessor extends Se
             } catch (Exception e) {
                 throw ObjectHelper.wrapRuntimeCamelException(e);
             }
-        } else {
+        } else if (newExchangeExpression != null) {
             Object body = newExchangeExpression.evaluate(answer, Object.class);
             if (body != null) {
                 answer.getIn().setBody(body);
@@ -141,6 +128,18 @@ public class WireTapProcessor extends Se
         return answer;
     }
 
+    private Exchange configureCopyExchange(Exchange exchange) {
+        // must use a copy as we dont want it to cause side effects of the original exchange
+        Exchange copy = ExchangeHelper.createCorrelatedCopy(exchange, false);
+        // set MEP to InOnly as this wire tap is a fire and forget
+        copy.setPattern(ExchangePattern.InOnly);
+        return copy;
+    }
+
+    private Exchange configureNewExchange(Exchange exchange) {
+        return new DefaultExchange(exchange.getFromEndpoint(), ExchangePattern.InOnly);
+    }
+
     public Processor getNewExchangeProcessor() {
         return newExchangeProcessor;
     }
@@ -156,4 +155,12 @@ public class WireTapProcessor extends Se
     public void setNewExchangeExpression(Expression newExchangeExpression) {
         this.newExchangeExpression = newExchangeExpression;
     }
+
+    public boolean isCopy() {
+        return copy;
+    }
+
+    public void setCopy(boolean copy) {
+        this.copy = copy;
+    }
 }

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java?rev=935469&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java Mon Apr 19 07:58:58 2010
@@ -0,0 +1,114 @@
+/**
+ * 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;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+import static org.apache.camel.language.simple.SimpleLanguage.simple;
+
+/**
+ * @version $Revision$
+ */
+public class WireTapUsingFireAndForgetCopyAsDefaultTest extends ContextTestSupport {
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
+
+    public void testFireAndForgetUsingProcessor() throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                // START SNIPPET: e1
+                from("direct:start")
+                    .wireTap("direct:foo", new Processor() {
+                        public void process(Exchange exchange) throws Exception {
+                            String body = exchange.getIn().getBody(String.class);
+                            exchange.getIn().setBody("Bye " + body);
+                            exchange.getIn().setHeader("foo", "bar");
+                        }
+                    }).to("mock:result");
+
+
+                from("direct:foo").to("mock:foo");
+                // END SNIPPET: e1
+            }
+        });
+        context.start();
+
+        MockEndpoint result = getMockEndpoint("mock:result");
+        result.expectedBodiesReceived("World");
+
+        MockEndpoint foo = getMockEndpoint("mock:foo");
+        foo.expectedBodiesReceived("Bye World");
+        foo.expectedHeaderReceived("foo", "bar");
+
+        template.sendBody("direct:start", "World");
+
+        assertMockEndpointsSatisfied();
+
+        // should be different exchange instances
+        Exchange e1 = result.getReceivedExchanges().get(0);
+        Exchange e2 = foo.getReceivedExchanges().get(0);
+        assertNotSame("Should not be same Exchange", e1, e2);
+
+        // should have same from endpoint
+        assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
+    }
+
+    public void testFireAndForgetUsingExpression() throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                // START SNIPPET: e2
+                from("direct:start")
+                    .wireTap("direct:foo", simple("Bye ${body}"))
+                    .to("mock:result");
+
+                from("direct:foo").to("mock:foo");
+                // END SNIPPET: e2
+            }
+        });
+        context.start();
+
+        MockEndpoint result = getMockEndpoint("mock:result");
+        result.expectedBodiesReceived("World");
+
+        MockEndpoint foo = getMockEndpoint("mock:foo");
+        foo.expectedBodiesReceived("Bye World");
+
+        template.sendBody("direct:start", "World");
+
+        assertMockEndpointsSatisfied();
+
+        // should be different exchange instances
+        Exchange e1 = result.getReceivedExchanges().get(0);
+        Exchange e2 = foo.getReceivedExchanges().get(0);
+        assertNotSame("Should not be same Exchange", e1, e2);
+
+        // should have same from endpoint
+        assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
+    }
+
+}
\ No newline at end of file

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

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

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java (from r935446, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java&r1=935446&r2=935469&rev=935469&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java Mon Apr 19 07:58:58 2010
@@ -22,10 +22,12 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 
+import static org.apache.camel.language.simple.SimpleLanguage.simple;
+
 /**
  * @version $Revision$
  */
-public class WireTapUsingFireAndForgetTest extends ContextTestSupport {
+public class WireTapUsingFireAndForgetCopyTest extends ContextTestSupport {
 
     @Override
     public boolean isUseRouteBuilder() {
@@ -38,9 +40,10 @@ public class WireTapUsingFireAndForgetTe
             public void configure() throws Exception {
                 // START SNIPPET: e1
                 from("direct:start")
-                    .wireTap("direct:foo", new Processor() {
+                    .wireTap("direct:foo", true, new Processor() {
                         public void process(Exchange exchange) throws Exception {
-                            exchange.getIn().setBody("Bye World");
+                            String body = exchange.getIn().getBody(String.class);
+                            exchange.getIn().setBody("Bye " + body);
                             exchange.getIn().setHeader("foo", "bar");
                         }
                     }).to("mock:result");
@@ -53,13 +56,13 @@ public class WireTapUsingFireAndForgetTe
         context.start();
 
         MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Hello World");
+        result.expectedBodiesReceived("World");
 
         MockEndpoint foo = getMockEndpoint("mock:foo");
         foo.expectedBodiesReceived("Bye World");
         foo.expectedHeaderReceived("foo", "bar");
 
-        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "World");
 
         assertMockEndpointsSatisfied();
 
@@ -68,9 +71,9 @@ public class WireTapUsingFireAndForgetTe
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
     }
 
     public void testFireAndForgetUsingExpression() throws Exception {
@@ -79,7 +82,7 @@ public class WireTapUsingFireAndForgetTe
             public void configure() throws Exception {
                 // START SNIPPET: e2
                 from("direct:start")
-                    .wireTap("direct:foo", constant("Bye World"))
+                    .wireTap("direct:foo", true, simple("Bye ${body}"))
                     .to("mock:result");
 
                 from("direct:foo").to("mock:foo");
@@ -89,12 +92,12 @@ public class WireTapUsingFireAndForgetTe
         context.start();
 
         MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Hello World");
+        result.expectedBodiesReceived("World");
 
         MockEndpoint foo = getMockEndpoint("mock:foo");
         foo.expectedBodiesReceived("Bye World");
 
-        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "World");
 
         assertMockEndpointsSatisfied();
 
@@ -103,9 +106,9 @@ public class WireTapUsingFireAndForgetTe
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
     }
 
-}
+}
\ No newline at end of file

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java?rev=935469&r1=935468&r2=935469&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java Mon Apr 19 07:58:58 2010
@@ -38,7 +38,7 @@ public class WireTapUsingFireAndForgetTe
             public void configure() throws Exception {
                 // START SNIPPET: e1
                 from("direct:start")
-                    .wireTap("direct:foo", new Processor() {
+                    .wireTap("direct:foo", false, new Processor() {
                         public void process(Exchange exchange) throws Exception {
                             exchange.getIn().setBody("Bye World");
                             exchange.getIn().setHeader("foo", "bar");
@@ -68,9 +68,9 @@ public class WireTapUsingFireAndForgetTe
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
     }
 
     public void testFireAndForgetUsingExpression() throws Exception {
@@ -79,7 +79,7 @@ public class WireTapUsingFireAndForgetTe
             public void configure() throws Exception {
                 // START SNIPPET: e2
                 from("direct:start")
-                    .wireTap("direct:foo", constant("Bye World"))
+                    .wireTap("direct:foo", false, constant("Bye World"))
                     .to("mock:result");
 
                 from("direct:foo").to("mock:foo");
@@ -103,9 +103,9 @@ public class WireTapUsingFireAndForgetTe
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
     }
 
 }

Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.java (from r935446, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java&r1=935446&r2=935469&rev=935469&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.java Mon Apr 19 07:58:58 2010
@@ -21,22 +21,23 @@ import org.apache.camel.ContextTestSuppo
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.mock.MockEndpoint;
+
 import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
 
-public class SpringWireTapUsingFireAndForgetTest extends ContextTestSupport {
+public class SpringWireTapUsingFireAndForgetCopyTest extends ContextTestSupport {
 
     protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.xml");
+        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.xml");
     }
 
     public void testFireAndForgetUsingExpression() throws Exception {
         MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Hello World");
+        result.expectedBodiesReceived("World");
 
         MockEndpoint foo = getMockEndpoint("mock:foo");
         foo.expectedBodiesReceived("Bye World");
 
-        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "World");
 
         assertMockEndpointsSatisfied();
 
@@ -45,20 +46,20 @@ public class SpringWireTapUsingFireAndFo
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
     }
 
     public void testFireAndForgetUsingProcessor() throws Exception {
         MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Hello World");
+        result.expectedBodiesReceived("World");
 
         MockEndpoint foo = getMockEndpoint("mock:foo");
         foo.expectedBodiesReceived("Bye World");
         foo.expectedHeaderReceived("foo", "bar");
 
-        template.sendBody("direct:start2", "Hello World");
+        template.sendBody("direct:start2", "World");
 
         assertMockEndpointsSatisfied();
 
@@ -67,18 +68,19 @@ public class SpringWireTapUsingFireAndFo
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start2", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start2", e2.getFromEndpoint().getEndpointUri());
     }
 
     // START SNIPPET: e1
     public static class MyProcessor implements Processor {
 
         public void process(Exchange exchange) throws Exception {
+            String body = exchange.getIn().getBody(String.class);
             // here we prepare the new exchange by setting the payload on the exchange
-            // on the IN messege.
-            exchange.getIn().setBody("Bye World");
+            // on the IN message.
+            exchange.getIn().setBody("Bye " + body);
             exchange.getIn().setHeader("foo", "bar");
         }
     }

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java?rev=935469&r1=935468&r2=935469&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.java Mon Apr 19 07:58:58 2010
@@ -45,9 +45,9 @@ public class SpringWireTapUsingFireAndFo
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start", e2.getFromEndpoint().getEndpointUri());
     }
 
     public void testFireAndForgetUsingProcessor() throws Exception {
@@ -67,9 +67,9 @@ public class SpringWireTapUsingFireAndFo
         Exchange e2 = foo.getReceivedExchanges().get(0);
         assertNotSame("Should not be same Exchange", e1, e2);
 
-        // should have different from endpoint
+        // should have same from endpoint
         assertEquals("direct://start2", e1.getFromEndpoint().getEndpointUri());
-        assertEquals("direct://foo", e2.getFromEndpoint().getEndpointUri());
+        assertEquals("direct://start2", e2.getFromEndpoint().getEndpointUri());
     }
 
     // START SNIPPET: e1
@@ -77,7 +77,7 @@ public class SpringWireTapUsingFireAndFo
 
         public void process(Exchange exchange) throws Exception {
             // here we prepare the new exchange by setting the payload on the exchange
-            // on the IN messege.
+            // on the IN message.
             exchange.getIn().setBody("Bye World");
             exchange.getIn().setHeader("foo", "bar");
         }

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.xml (from r935446, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.xml&r1=935446&r2=935469&rev=935469&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringWireTapUsingFireAndForgetCopyTest.xml Mon Apr 19 07:58:58 2010
@@ -28,7 +28,7 @@
         <route>
             <from uri="direct:start"/>
             <wireTap uri="direct:foo">
-                <body><constant>Bye World</constant></body>
+                <body><simple>Bye ${body}</simple></body>
             </wireTap>
             <to uri="mock:result"/>
         </route>
@@ -49,6 +49,6 @@
 
     </camelContext>
 
-    <bean id="myProcessor" class="org.apache.camel.spring.processor.SpringWireTapUsingFireAndForgetTest$MyProcessor"/>
+    <bean id="myProcessor" class="org.apache.camel.spring.processor.SpringWireTapUsingFireAndForgetCopyTest$MyProcessor"/>
 
 </beans>