Repository: camel
Updated Branches:
  refs/heads/camel-2.12.x a524500a1 -> d5e0389f3
  refs/heads/camel-2.13.x 7d1cf3d86 -> b3df68b63
  refs/heads/master 3a4822c19 -> b3377b16d


CAMEL-7568: OnComplete did not work with rollback


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b3377b16
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b3377b16
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b3377b16

Branch: refs/heads/master
Commit: b3377b16d76e86fd794cd32904d516584c5e1d4b
Parents: 3a4822c
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Sep 1 13:02:19 2014 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Sep 1 13:02:19 2014 +0200

----------------------------------------------------------------------
 .../camel/processor/OnCompletionProcessor.java   |  8 ++++++++
 .../camel/issues/OnCompletionIssueTest.java      | 19 +++++++++++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b3377b16/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
 
b/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
index abbdcd0..6575cb2 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
@@ -131,6 +131,8 @@ public class OnCompletionProcessor extends ServiceSupport 
implements AsyncProces
         Object failureHandled = 
exchange.removeProperty(Exchange.FAILURE_HANDLED);
         Object caught = exchange.removeProperty(Exchange.EXCEPTION_CAUGHT);
         Object errorhandlerHandled = 
exchange.removeProperty(Exchange.ERRORHANDLER_HANDLED);
+        Object rollbackOnly = exchange.removeProperty(Exchange.ROLLBACK_ONLY);
+        Object rollbackOnlyLast = 
exchange.removeProperty(Exchange.ROLLBACK_ONLY_LAST);
 
         Exception cause = exchange.getException();
         exchange.setException(null);
@@ -153,6 +155,12 @@ public class OnCompletionProcessor extends ServiceSupport 
implements AsyncProces
             if (errorhandlerHandled != null) {
                 exchange.setProperty(Exchange.ERRORHANDLER_HANDLED, 
errorhandlerHandled);
             }
+            if (rollbackOnly != null) {
+                exchange.setProperty(Exchange.ROLLBACK_ONLY, rollbackOnly);
+            }
+            if (rollbackOnlyLast != null) {
+                exchange.setProperty(Exchange.ROLLBACK_ONLY, rollbackOnlyLast);
+            }
             if (cause != null) {
                 exchange.setException(cause);
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/b3377b16/camel-core/src/test/java/org/apache/camel/issues/OnCompletionIssueTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/issues/OnCompletionIssueTest.java 
b/camel-core/src/test/java/org/apache/camel/issues/OnCompletionIssueTest.java
index 1509753..6f4dac0 100644
--- 
a/camel-core/src/test/java/org/apache/camel/issues/OnCompletionIssueTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/issues/OnCompletionIssueTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.issues;
 
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.RollbackExchangeException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 
@@ -28,15 +29,16 @@ public class OnCompletionIssueTest extends 
ContextTestSupport {
         end.expectedMessageCount(1);
 
         MockEndpoint complete = getMockEndpoint("mock:complete");
-        complete.expectedBodiesReceivedInAnyOrder("finish", "stop", "ile");
+        complete.expectedBodiesReceivedInAnyOrder("finish", "stop", "ile", 
"markRollback");
 
         MockEndpoint failed = getMockEndpoint("mock:failed");
-        failed.expectedBodiesReceivedInAnyOrder("faulted", "npe");
+        failed.expectedBodiesReceivedInAnyOrder("faulted", "npe", "rollback");
 
         template.sendBody("direct:input", "finish");
         template.sendBody("direct:input", "stop");
         template.sendBody("direct:input", "fault");
         template.sendBody("direct:input", "ile");
+        template.sendBody("direct:input", "markRollback");
 
         try {
             template.sendBody("direct:input", "npe");
@@ -45,6 +47,13 @@ public class OnCompletionIssueTest extends 
ContextTestSupport {
             assertEquals("Darn NPE", e.getCause().getMessage());
         }
 
+        try {
+            template.sendBody("direct:input", "rollback");
+            fail("Should have thrown exception");
+        } catch (CamelExecutionException e) {
+            assertIsInstanceOf(RollbackExchangeException.class, e.getCause());
+        }
+
         setAssertPeriod(2000);
 
         assertMockEndpointsSatisfied();
@@ -80,6 +89,12 @@ public class OnCompletionIssueTest extends 
ContextTestSupport {
                         .when(simple("${body} == 'npe'"))
                             .log("excepting")
                             .throwException(new NullPointerException("Darn 
NPE"))
+                        .when(simple("${body} == 'rollback'"))
+                            .log("rollback")
+                            .rollback()
+                        .when(simple("${body} == 'markRollback'"))
+                            .log("markRollback")
+                            .markRollbackOnly()
                         .end()
                         .log("finishing")
                         .to("mock:end");

Reply via email to