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/05/13 07:17:14 UTC

svn commit: r774207 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ main/java/org/apache/camel/impl/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/spi/ test/java/org/apache/camel/processor/

Author: davsclaus
Date: Wed May 13 05:17:14 2009
New Revision: 774207

URL: http://svn.apache.org/viewvc?rev=774207&view=rev
Log:
CAMEL-1600: only the original IN body is copied to avoid problem with camel-jms and the fact that its only the IN body we really need to copy

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyTest.java   (contents, props changed)
      - copied, changed from r774185, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyWithFileTest.java   (contents, props changed)
      - copied, changed from r774185, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeWithFileTest.java
Removed:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeWithFileTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=774207&r1=774206&r2=774207&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java Wed May 13 05:17:14 2009
@@ -50,7 +50,7 @@
     private Endpoint deadLetter;
     private String deadLetterUri;
     private Predicate handledPolicy;
-    private boolean useOriginalExchange;
+    private boolean useOriginalInBody;
 
     /**
      * Creates a default DeadLetterChannel with a default endpoint
@@ -79,7 +79,7 @@
 
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
         DeadLetterChannel answer = new DeadLetterChannel(processor, getFailureProcessor(), deadLetterUri, onRedelivery,
-                getRedeliveryPolicy(), getLogger(), getExceptionPolicyStrategy(), getHandledPolicy(), isUseOriginalExchange());
+                getRedeliveryPolicy(), getLogger(), getExceptionPolicyStrategy(), getHandledPolicy(), isUseOriginalInBody());
         // must enable stream cache as DeadLetterChannel can do redeliveries and
         // thus it needs to be able to read the stream again
         configure(answer);
@@ -261,7 +261,7 @@
     }
 
     /**
-     * Will use the original input {@link Exchange} when an {@link Exchange} is moved to the dead letter queue.
+     * Will use the original input body when an {@link Exchange} is moved to the dead letter queue.
      * <p/>
      * <b>Notice:</b> this only applies when all redeliveries attempt have failed and the {@link Exchange} is doomed for failure.
      * <br/>
@@ -275,8 +275,8 @@
      *
      * @return the builder
      */
-    public DeadLetterChannelBuilder useOriginalExchange() {
-        setUseOriginalExchange(true);
+    public DeadLetterChannelBuilder useOriginalInBody() {
+        setUseOriginalInBody(true);
         return this;
     }
 
@@ -379,12 +379,12 @@
         handled(handled);
     }
 
-    public boolean isUseOriginalExchange() {
-        return useOriginalExchange;
+    public boolean isUseOriginalInBody() {
+        return useOriginalInBody;
     }
 
-    public void setUseOriginalExchange(boolean useOriginalExchange) {
-        this.useOriginalExchange = useOriginalExchange;
+    public void setUseOriginalInBody(boolean useOriginalInBody) {
+        this.useOriginalInBody = useOriginalInBody;
     }
 
     @Override

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java?rev=774207&r1=774206&r2=774207&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java Wed May 13 05:17:14 2009
@@ -38,10 +38,10 @@
     private String id;
     private List<Synchronization> synchronizations;
     private List<ProcessorDefinition> routeList;
-    private Exchange originalExchange;
+    private Object originalInBody;
 
     public DefaultUnitOfWork(Exchange exchange) {
-        this.originalExchange = exchange.copy();
+        this.originalInBody = exchange.getIn().getBody();
     }
 
     public void start() throws Exception {
@@ -57,7 +57,7 @@
             routeList.clear();
         }
 
-        originalExchange = null;
+        originalInBody = null;
     }
 
     public synchronized void addSynchronization(Synchronization synchronization) {
@@ -111,7 +111,7 @@
         return Collections.unmodifiableList(routeList);
     }
 
-    public Exchange getOriginalExchange() {
-        return originalExchange;
+    public Object getOriginalInBody() {
+        return originalInBody;
     }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java?rev=774207&r1=774206&r2=774207&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java Wed May 13 05:17:14 2009
@@ -55,7 +55,7 @@
     private final RedeliveryPolicy redeliveryPolicy;
     private final Predicate handledPolicy;
     private final Logger logger;
-    private final boolean useOriginalExchangePolicy;
+    private final boolean useOriginalInBodyPolicy;
 
     private class RedeliveryData {
         int redeliveryCounter;
@@ -67,7 +67,7 @@
         Processor deadLetterQueue = deadLetter;
         Processor onRedeliveryProcessor = redeliveryProcessor;
         Predicate handledPredicate = handledPolicy;
-        boolean useOriginalExchange = useOriginalExchangePolicy;
+        boolean useOriginalInBody = useOriginalInBodyPolicy;
     }
     
     /**
@@ -81,11 +81,11 @@
      * @param logger                    logger to use for logging failures and redelivery attempts
      * @param exceptionPolicyStrategy   strategy for onException handling
      * @param handledPolicy             policy for handling failed exception that are moved to the dead letter queue
-     * @param useOriginalExchangePolicy should the original exchange be moved to the dead letter queue or the most recent exchange?
+     * @param useOriginalInBodyPolicy   should the original IN body be moved to the dead letter queue or the current exchange IN body?
      */
     public DeadLetterChannel(Processor output, Processor deadLetter, String deadLetterUri, Processor redeliveryProcessor,
                              RedeliveryPolicy redeliveryPolicy, Logger logger, ExceptionPolicyStrategy exceptionPolicyStrategy,
-                             Predicate handledPolicy, boolean useOriginalExchangePolicy) {
+                             Predicate handledPolicy, boolean useOriginalInBodyPolicy) {
         this.output = output;
         this.deadLetter = deadLetter;
         this.deadLetterUri = deadLetterUri;
@@ -93,7 +93,7 @@
         this.redeliveryPolicy = redeliveryPolicy;
         this.logger = logger;
         this.handledPolicy = handledPolicy;
-        this.useOriginalExchangePolicy = useOriginalExchangePolicy;
+        this.useOriginalInBodyPolicy = useOriginalInBodyPolicy;
         setExceptionPolicy(exceptionPolicyStrategy);
     }
 
@@ -239,7 +239,7 @@
             data.currentRedeliveryPolicy = exceptionPolicy.createRedeliveryPolicy(exchange.getContext(), data.currentRedeliveryPolicy);
             data.handledPredicate = exceptionPolicy.getHandledPolicy();
             data.retryUntilPredicate = exceptionPolicy.getRetryUntilPolicy();
-            data.useOriginalExchange = exceptionPolicy.getUseOriginalExchangePolicy();
+            data.useOriginalInBody = exceptionPolicy.getUseOriginalExchangePolicy();
 
             // route specific failure handler?
             Processor processor = exceptionPolicy.getErrorHandler();
@@ -297,20 +297,14 @@
         // reset cached streams so they can be read again
         MessageHelper.resetStreamCache(exchange.getIn());
 
-        // prepare original exchange if it should be moved instead of most recent
-        if (data.useOriginalExchange) {
+        // prepare original IN body if it should be moved instead of current body
+        if (data.useOriginalInBody) {
             if (log.isTraceEnabled()) {
-                log.trace("Using the original exchange bodies in the DedLetterQueue instead of the current exchange bodies");
+                log.trace("Using the original IN body in the DedLetterQueue instead of the current IN body");
             }
 
-            Exchange original = exchange.getUnitOfWork().getOriginalExchange();
-            // replace exchange IN/OUT with from original
-            exchange.setIn(original.getIn());
-            if (original.hasOut()) {
-                exchange.setOut(original.getOut());
-            } else {
-                exchange.setOut(null);
-            }
+            Object original = exchange.getUnitOfWork().getOriginalInBody();
+            exchange.getIn().setBody(original);
         }
 
         if (log.isTraceEnabled()) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java?rev=774207&r1=774206&r2=774207&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java Wed May 13 05:17:14 2009
@@ -56,9 +56,9 @@
     String getId();
 
     /**
-     * Gets the original {@link org.apache.camel.Exchange} this Unit of Work was started with.
+     * Gets the original IN body this Unit of Work was started with.
      *
-     * @return the original exchange
+     * @return the original IN body
      */
-    Exchange getOriginalExchange();
+    Object getOriginalInBody();
 }

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyTest.java (from r774185, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeTest.java&r1=774185&r2=774207&rev=774207&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyTest.java Wed May 13 05:17:14 2009
@@ -24,13 +24,13 @@
 import org.apache.camel.component.mock.MockEndpoint;
 
 /**
- * Unit test for useOriginalExchange option on DeadLetterChannel
+ * Unit test for useOriginalnBody option on DeadLetterChannel
  *
  * @version $Revision$
  */
-public class DeadLetterChannelUseOriginalExchangeTest extends ContextTestSupport {
+public class DeadLetterChannelUseOriginalInBodyTest extends ContextTestSupport {
 
-    public void testUseOriginalExchange() throws Exception {
+    public void testUseOriginalnBody() throws Exception {
         MockEndpoint dead = getMockEndpoint("mock:a");
         dead.expectedBodiesReceived("Hello");
 
@@ -39,7 +39,7 @@
         assertMockEndpointsSatisfied();
     }
 
-    public void testDoNotUseOriginalExchange() throws Exception {
+    public void testDoNotUseOriginalInBody() throws Exception {
         MockEndpoint dead = getMockEndpoint("mock:b");
         dead.expectedBodiesReceived("Hello World");
 
@@ -55,7 +55,7 @@
             public void configure() throws Exception {
                 // will use original
                 DeadLetterChannelBuilder a = deadLetterChannel("mock:a")
-                    .maximumRedeliveries(2).delay(0).logStackTrace(false).useOriginalExchange().handled(true);
+                    .maximumRedeliveries(2).delay(0).logStackTrace(false).useOriginalInBody().handled(true);
 
                 // will NOT use original
                 DeadLetterChannelBuilder b = deadLetterChannel("mock:b")

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

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

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyWithFileTest.java (from r774185, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeWithFileTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyWithFileTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyWithFileTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeWithFileTest.java&r1=774185&r2=774207&rev=774207&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalExchangeWithFileTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUseOriginalInBodyWithFileTest.java Wed May 13 05:17:14 2009
@@ -26,9 +26,9 @@
 /**
  * @version $Revision$
  */
-public class DeadLetterChannelUseOriginalExchangeWithFileTest extends ContextTestSupport {
+public class DeadLetterChannelUseOriginalInBodyWithFileTest extends ContextTestSupport {
 
-    public void testOriginalExchangeIsFile() throws Exception {
+    public void testOriginalInBodyIsFile() throws Exception {
         MockEndpoint dead = getMockEndpoint("mock:dead");
         dead.expectedMessageCount(1);
         dead.message(0).body().isInstanceOf(GenericFile.class);
@@ -50,7 +50,7 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                errorHandler(deadLetterChannel("mock:dead").disableRedelivery().logStackTrace(false).useOriginalExchange().handled(true));
+                errorHandler(deadLetterChannel("mock:dead").disableRedelivery().logStackTrace(false).useOriginalInBody().handled(true));
 
                 from("file://target/originalexchange?noop=true")
                     .transform(body().append(" World"))

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

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