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/03/23 07:59:34 UTC

svn commit: r757330 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/ 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/came...

Author: davsclaus
Date: Mon Mar 23 06:59:33 2009
New Revision: 757330

URL: http://svn.apache.org/viewvc?rev=757330&view=rev
Log:
CAMEL-1478: Added optional message attribute to rollback DSL.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RollbackTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/rollback.xml

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java?rev=757330&r1=757329&r2=757330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java Mon Mar 23 06:59:33 2009
@@ -24,11 +24,19 @@
 public class RollbackExchangeException extends Exception {
 
     public RollbackExchangeException(Exchange exchange) {
-        super("Intended rollback on exchange: " + exchange);
+        this("Intended rollback on exchange", exchange);
     }
 
     public RollbackExchangeException(Exchange exchange, Throwable cause) {
-        super("Intended rollback on exchange: " + exchange, cause);
+        this("Intended rollback on exchange", exchange, cause);
+    }
+
+    public RollbackExchangeException(String message, Exchange exchange) {
+        super(message + ": " + exchange);
+    }
+
+    public RollbackExchangeException(String message, Exchange exchange, Throwable cause) {
+        super(message + ": " + exchange, cause);
     }
 
 }

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=757330&r1=757329&r2=757330&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 Mar 23 06:59:33 2009
@@ -1079,7 +1079,21 @@
      */
     @SuppressWarnings("unchecked")
     public Type rollback() {
-        RollbackDefinition answer = new RollbackDefinition();
+        return rollback(null);
+    }
+
+    /**
+     * Marks the exchange for rollback only.
+     * <p/>
+     * This is done by setting a {@link org.apache.camel.RollbackExchangeException} on the Exchange
+     * and mark it for rollback.
+     *
+     * @param message an optional message used for logging purpose why the rollback was triggered
+     * @return the builder
+     */
+    @SuppressWarnings("unchecked")
+    public Type rollback(String message) {
+        RollbackDefinition answer = new RollbackDefinition(message);
         addOutput(answer);
         return (Type) this;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java?rev=757330&r1=757329&r2=757330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java Mon Mar 23 06:59:33 2009
@@ -38,9 +38,16 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 public class RollbackDefinition extends ProcessorDefinition<RollbackDefinition> {
 
+    @XmlAttribute(required = false)
+    private String message;
+
     public RollbackDefinition() {
     }
 
+    public RollbackDefinition(String message) {
+        this.message = message;
+    }
+
     @Override
     public String getShortName() {
         return "rollback";
@@ -48,12 +55,16 @@
 
     @Override
     public String toString() {
-        return "Rollback";
+        if (message != null) {
+            return "Rollback[" + message + "]";
+        } else {
+            return "Rollback";
+        }
     }
 
     @Override
     public Processor createProcessor(RouteContext routeContext) {
-        return new RollbackProcessor();
+        return new RollbackProcessor(message);
     }
 
     @Override

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=757330&r1=757329&r2=757330&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 Mon Mar 23 06:59:33 2009
@@ -441,7 +441,11 @@
         }
         if (exchange.isRollbackOnly()) {
             // log intented rollback on WARN level
-            logger.log("Intended rollback on exchange: " + exchange, LoggingLevel.WARN);
+            String msg = "Rollback exchange";
+            if (exchange.getException() != null) {
+                msg = msg + " due: " + exchange.getException().getMessage();
+            }
+            logger.log(msg, LoggingLevel.WARN);
         } else if (data.currentRedeliveryPolicy.isLogStackTrace() && e != null) {
             logger.log(message, e, newLogLevel);
         } else {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java?rev=757330&r1=757329&r2=757330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RollbackProcessor.java Mon Mar 23 06:59:33 2009
@@ -27,10 +27,19 @@
  */
 public class RollbackProcessor implements Processor {
 
+    private String message;
+
+    public RollbackProcessor() {
+    }
+
+    public RollbackProcessor(String message) {
+        this.message = message;
+    }
+
     public void process(Exchange exchange) throws Exception {
         // mark the exchange for rollback
         exchange.setProperty(Exchange.ROLLBACK_ONLY, Boolean.TRUE);
-        exchange.setException(new RollbackExchangeException(exchange));
+        exchange.setException(new RollbackExchangeException(message, exchange));
     }
 
 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RollbackTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RollbackTest.java?rev=757330&r1=757329&r2=757330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RollbackTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RollbackTest.java Mon Mar 23 06:59:33 2009
@@ -88,7 +88,7 @@
                             }
                         })
                         .to("mock:rollback")
-                        .rollback()
+                        .rollback("That do not work")
                     .otherwise()
                         .to("mock:result")
                     .end();

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/rollback.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/rollback.xml?rev=757330&r1=757329&r2=757330&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/rollback.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/rollback.xml Mon Mar 23 06:59:33 2009
@@ -33,14 +33,14 @@
     </bean>
 
     <!-- START SNIPPET: e1 -->
-    <camelContext trace="true" id="camel" xmlns="http://camel.apache.org/schema/spring">
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <route errorHandlerRef="errorHandler">
             <from uri="direct:start"/>
             <choice>
                 <when>
                     <simple>${body} != 'ok'</simple>
                     <to uri="mock:rollback"/>
-                    <rollback/>
+                    <rollback message="This is an optional message"/>
                 </when>
                 <otherwise>
                     <to uri="mock:result"/>