You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2007/09/04 09:25:04 UTC

svn commit: r572558 - in /activemq/camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ main/java/org/apache/camel/model/ test/java/org/apache/camel/

Author: gnodet
Date: Tue Sep  4 00:25:03 2007
New Revision: 572558

URL: http://svn.apache.org/viewvc?rev=572558&view=rev
Log:
Add methods for supporting faults

Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java?rev=572558&r1=572557&r2=572558&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java Tue Sep  4 00:25:03 2007
@@ -81,8 +81,26 @@
      * Returns a predicate and value builder for the outbound message body as a
      * specific type
      */
-    public static <E extends Exchange, T> ValueBuilder<E> outBody(Class<T> type) {
+    public static <E extends Exchange, T> ValueBuilder<E> outBodyAs(Class<T> type) {
         Expression<E> expression = ExpressionBuilder.<E, T> outBodyExpression(type);
+        return new ValueBuilder<E>(expression);
+    }
+
+    /**
+     * Returns a predicate and value builder for the fault body on an
+     * exchange
+     */
+    public static <E extends Exchange> ValueBuilder<E> faultBody() {
+        Expression<E> expression = ExpressionBuilder.faultBodyExpression();
+        return new ValueBuilder<E>(expression);
+    }
+
+    /**
+     * Returns a predicate and value builder for the fault message body as a
+     * specific type
+     */
+    public static <E extends Exchange, T> ValueBuilder<E> faultBodyAs(Class<T> type) {
+        Expression<E> expression = ExpressionBuilder.<E, T> faultBodyExpression(type);
         return new ValueBuilder<E>(expression);
     }
 

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java?rev=572558&r1=572557&r2=572558&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java Tue Sep  4 00:25:03 2007
@@ -71,7 +71,7 @@
      * Returns a predicate and value builder for the inbound message body as a
      * specific type
      */
-    public <T> ValueBuilder bodyAs(Class<T> type) {
+    public <T> ValueBuilder body(Class<T> type) {
         return Builder.bodyAs(type);
     }
 
@@ -88,8 +88,25 @@
      * specific type
      */
     public <T> ValueBuilder outBody(Class<T> type) {
-        return Builder.outBody(type);
+        return Builder.outBodyAs(type);
     }
+
+    /**
+     * Returns a predicate and value builder for the fault body on an
+     * exchange
+     */
+    public ValueBuilder faultBody() {
+        return Builder.faultBody();
+    }
+
+    /**
+     * Returns a predicate and value builder for the fault message body as a
+     * specific type
+     */
+    public <T> ValueBuilder faultBodyAs(Class<T> type) {
+        return Builder.faultBodyAs(type);
+    }
+
 
     /**
      * Returns a value builder for the given system property

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=572558&r1=572557&r2=572558&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Tue Sep  4 00:25:03 2007
@@ -261,6 +261,40 @@
             }
         };
     }
+
+    /**
+     * Returns the expression for the fault messages body
+     */
+    public static <E extends Exchange> Expression<E> faultBodyExpression() {
+        return new Expression<E>() {
+            public Object evaluate(E exchange) {
+                return exchange.getFault().getBody();
+            }
+
+            @Override
+            public String toString() {
+                return "faultBody";
+            }
+        };
+    }
+
+    /**
+     * Returns the expression for the exchanges fault message body converted
+     * to the given type
+     */
+    public static <E extends Exchange, T> Expression<E> faultBodyExpression(final Class<T> type) {
+        return new Expression<E>() {
+            public Object evaluate(E exchange) {
+                return exchange.getFault().getBody(type);
+            }
+
+            @Override
+            public String toString() {
+                return "faultBodyAs[" + type.getName() + "]";
+            }
+        };
+    }
+
     /**
      * Returns the expression for the exchange
      */

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java?rev=572558&r1=572557&r2=572558&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java Tue Sep  4 00:25:03 2007
@@ -51,7 +51,7 @@
     }
 
     /**
-     * Creates a processor which sets the body of the IN message to the value of the expression
+     * Creates a processor which sets the body of the OUT message to the value of the expression
      */
     public static Processor setOutBody(final Expression expression) {
         return new Processor() {
@@ -68,6 +68,23 @@
     }
 
     /**
+     * Creates a processor which sets the body of the FAULT message to the value of the expression
+     */
+    public static Processor setFaultBody(final Expression expression) {
+        return new Processor() {
+            public void process(Exchange exchange) {
+                Object newBody = expression.evaluate(exchange);
+                exchange.getFault().setBody(newBody);
+            }
+
+            @Override
+            public String toString() {
+                return "setFaultBody(" + expression + ")";
+            }
+        };
+    }
+
+    /**
      * Sets the header on the IN message
      */
     public static Processor setHeader(final String name, final Expression expression) {
@@ -102,6 +119,23 @@
     }
 
     /**
+     * Sets the header on the FAULT message
+     */
+    public static Processor setFaultHeader(final String name, final Expression expression) {
+        return new Processor() {
+            public void process(Exchange exchange) {
+                Object value = expression.evaluate(exchange);
+                exchange.getFault().setHeader(name, value);
+            }
+
+            @Override
+            public String toString() {
+                return "setFaultHeader(" + name + ", " + expression + ")";
+            }
+        };
+    }
+
+    /**
      * Sets the property on the exchange
      */
     public static Processor setProperty(final String name, final Expression expression) {
@@ -146,6 +180,22 @@
             @Override
             public String toString() {
                 return "removeOutHeader(" + name +  ")";
+            }
+        };
+    }
+
+    /**
+     * Removes the header on the FAULT message
+     */
+    public static Processor removeFaultHeader(final String name) {
+        return new Processor() {
+            public void process(Exchange exchange) {
+                exchange.getFault().removeHeader(name);
+            }
+
+            @Override
+            public String toString() {
+                return "removeFaultHeader(" + name +  ")";
             }
         };
     }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java?rev=572558&r1=572557&r2=572558&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java Tue Sep  4 00:25:03 2007
@@ -660,6 +660,13 @@
         return process(ProcessorBuilder.setOutBody(Builder.outBody().convertTo(type)));
     }
 
+    /**
+     * Converts the FAULT message body to the specified type
+     */
+    public ProcessorType convertFaultBodyTo(Class type) {
+        return process(ProcessorBuilder.setFaultBody(Builder.faultBody().convertTo(type)));
+    }
+
     // Properties
     // -------------------------------------------------------------------------
 

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java?rev=572558&r1=572557&r2=572558&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java Tue Sep  4 00:25:03 2007
@@ -76,12 +76,30 @@
     }
 
     /**
+     * Returns a predicate and value builder for the fault message body as a
+     * specific type
+     */
+
+    public <T> ValueBuilder faultBodyAs(Class<T> type) {
+        return Builder.faultBodyAs(type);
+    }
+
+    /**
+     * Returns a predicate and value builder for the fault body on an
+     * exchange
+     */
+
+    public ValueBuilder faultBody() {
+        return Builder.faultBody();
+    }
+
+    /**
      * Returns a predicate and value builder for the outbound message body as a
      * specific type
      */
 
-    public <T> ValueBuilder outBody(Class<T> type) {
-        return Builder.outBody(type);
+    public <T> ValueBuilder outBodyAs(Class<T> type) {
+        return Builder.outBodyAs(type);
     }
 
     /**