Author: ningjiang
Date: Mon Jun 28 07:58:48 2010
New Revision: 958494

URL: http://svn.apache.org/viewvc?rev=958494&view=rev
Log:
CAMEL-2865 added xpath DSL for the RouteBuilder

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java?rev=958494&r1=958493&r2=958494&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java 
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java 
Mon Jun 28 07:58:48 2010
@@ -95,6 +95,14 @@ public final class Builder {
         Expression expression = ExpressionBuilder.simpleExpression(value);
         return new ValueBuilder(expression);
     }
+    
+    /**
+     * Returns a xpath expression
+     */
+    public static ValueBuilder xpath(String value) {
+        Expression expression = ExpressionBuilder.xpathExpression(value);
+        return new ValueBuilder(expression);
+    }
 
     /**
      * Returns a predicate and value builder for headers on an exchange

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java?rev=958494&r1=958493&r2=958494&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
 Mon Jun 28 07:58:48 2010
@@ -134,6 +134,13 @@ public abstract class BuilderSupport {
     public ValueBuilder simple(String value) {
         return Builder.simple(value);
     }
+    
+    /**
+     * Returns a xpath expression value builder
+     */
+    public ValueBuilder xpath(String value) {
+        return Builder.xpath(value);
+    }
 
     /**
      * Returns a <a href="http://camel.apache.org/bean-language.html";>bean 
expression</a>

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=958494&r1=958493&r2=958494&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
 Mon Jun 28 07:58:48 2010
@@ -1105,6 +1105,23 @@ public final class ExpressionBuilder {
             }
         };
     }
+    
+    public static Expression xpathExpression(final String expression) {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                // resolve language using context to have a clear separation 
of packages
+                // must call evaluate to return the nested language evaluate 
when evaluating
+                // stacked expressions
+                Language language = 
exchange.getContext().resolveLanguage("xpath");
+                return 
language.createExpression(expression).evaluate(exchange, Object.class);
+            }
+
+            @Override
+            public String toString() {
+                return "xpath(" + expression + ")";
+            }
+        };
+    }
 
     public static Expression beanExpression(final String expression) {
         return new ExpressionAdapter() {


Reply via email to