Author: davsclaus
Date: Fri Mar  8 08:21:09 2013
New Revision: 1454273

URL: http://svn.apache.org/r1454273
Log:
CAMEL-6145: Added lenient option to jxpath language.

Added:
    
camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathFilterLenientTest.java
      - copied unchanged from r1454269, 
camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathFilterLenientTest.java
    
camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathFilterNotLenientTest.java
      - copied unchanged from r1454269, 
camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/JXPathFilterNotLenientTest.java
    
camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java
      - copied, changed from r1454269, 
camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java
    
camel/branches/camel-2.10.x/components/camel-jxpath/src/test/resources/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest-context.xml
      - copied unchanged from r1454269, 
camel/trunk/components/camel-jxpath/src/test/resources/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest-context.xml
Modified:
    camel/branches/camel-2.10.x/   (props changed)
    
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
    
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
    
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/language/JXPathExpression.java
    
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathExpression.java
    
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1454269

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java?rev=1454273&r1=1454272&r2=1454273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
 (original)
+++ 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
 Fri Mar  8 08:21:09 2013
@@ -287,6 +287,17 @@ public class ExpressionClause<T> extends
     }
 
     /**
+     * Evaluates a <a href="http://commons.apache.org/jxpath/";>JXPath 
expression</a>
+     *
+     * @param text the expression to be evaluated
+     * @param lenient to configure whether lenient is in use or not
+     * @return the builder to continue processing the DSL
+     */
+    public T jxpath(String text, boolean lenient) {
+        return delegate.jxpath(text, lenient);
+    }
+
+    /**
      * Evaluates an <a href="http://camel.apache.org/ognl.html";>OGNL
      * expression</a>
      * 

Modified: 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java?rev=1454273&r1=1454272&r2=1454273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
 (original)
+++ 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
 Fri Mar  8 08:21:09 2013
@@ -317,7 +317,20 @@ public class ExpressionClauseSupport<T> 
      * @return the builder to continue processing the DSL
      */
     public T jxpath(String text) {
-        return expression(new JXPathExpression(text));
+        return jxpath(text, false);
+    }
+
+    /**
+     * Evaluates a <a href="http://commons.apache.org/jxpath/";>JXPath 
expression</a>
+     *
+     * @param text the expression to be evaluated
+     * @param lenient to configure whether lenient is in use or not
+     * @return the builder to continue processing the DSL
+     */
+    public T jxpath(String text, boolean lenient) {
+        JXPathExpression answer = new JXPathExpression(text);
+        answer.setLenient(lenient);
+        return expression(answer);
     }
 
     /**

Modified: 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/language/JXPathExpression.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/language/JXPathExpression.java?rev=1454273&r1=1454272&r2=1454273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/language/JXPathExpression.java
 (original)
+++ 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/language/JXPathExpression.java
 Fri Mar  8 08:21:09 2013
@@ -18,8 +18,13 @@ package org.apache.camel.model.language;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+
 /**
  * For <a href="http://commons.apache.org/jxpath/";>JXPath</a> expressions and 
predicates
  *
@@ -29,6 +34,9 @@ import javax.xml.bind.annotation.XmlRoot
 @XmlAccessorType(XmlAccessType.FIELD)
 public class JXPathExpression extends ExpressionDefinition {
 
+    @XmlAttribute
+    private Boolean lenient;
+
     public JXPathExpression() {
     }
 
@@ -39,4 +47,28 @@ public class JXPathExpression extends Ex
     public String getLanguage() {
         return "jxpath";
     }
+
+    public Boolean getLenient() {
+        return lenient;
+    }
+
+    public void setLenient(Boolean lenient) {
+        this.lenient = lenient;
+    }
+
+    @Override
+    protected void configureExpression(CamelContext camelContext, Expression 
expression) {
+        if (lenient != null) {
+            setProperty(expression, "lenient", lenient);
+        }
+        super.configureExpression(camelContext, expression);
+    }
+
+    @Override
+    protected void configurePredicate(CamelContext camelContext, Predicate 
predicate) {
+        if (lenient != null) {
+            setProperty(predicate, "lenient", lenient);
+        }
+        super.configurePredicate(camelContext, predicate);
+    }
 }

Modified: 
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathExpression.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathExpression.java?rev=1454273&r1=1454272&r2=1454273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathExpression.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathExpression.java
 Fri Mar  8 08:21:09 2013
@@ -31,21 +31,43 @@ public class JXPathExpression extends Ex
     private final String expression;
     private CompiledExpression compiledExpression;
     private final Class<?> type;
+    private boolean lenient;
 
     /**
-     * Creates a new JXPathExpression instance
+     * Creates a new JXPathExpression instance (lenient is disabled)
      * 
      * @param expression the JXPath expression to be evaluated
      * @param type the expected result type
      */
     public JXPathExpression(String expression, Class<?> type) {
+        this(expression, type, false);
+    }
+
+    /**
+     * Creates a new JXPathExpression instance
+     *
+     * @param expression the JXPath expression to be evaluated
+     * @param type the expected result type
+     * @param lenient to configure lenient
+     */
+    public JXPathExpression(String expression, Class<?> type, boolean lenient) 
{
         this.expression = expression;
         this.type = type;
+        this.lenient = lenient;
+    }
+
+    public boolean isLenient() {
+        return lenient;
+    }
+
+    public void setLenient(boolean lenient) {
+        this.lenient = lenient;
     }
 
     public <T> T evaluate(Exchange exchange, Class<T> tClass) {
         try {
             JXPathContext context = JXPathContext.newContext(exchange);
+            context.setLenient(lenient);
             Object result = getJXPathExpression().getValue(context, type);
             assertResultType(exchange, result);
             return exchange.getContext().getTypeConverter().convertTo(tClass, 
result);

Modified: 
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java?rev=1454273&r1=1454272&r2=1454273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-jxpath/src/main/java/org/apache/camel/language/jxpath/JXPathLanguage.java
 Fri Mar  8 08:21:09 2013
@@ -27,15 +27,27 @@ import org.apache.camel.spi.Language;
  */
 public class JXPathLanguage implements Language, IsSingleton {
 
+    private boolean lenient;
+
+    public boolean isLenient() {
+        return lenient;
+    }
+
+    public void setLenient(boolean lenient) {
+        this.lenient = lenient;
+    }
+
     public Expression createExpression(String expression) {
-        return new JXPathExpression(expression, Object.class);
+        return new JXPathExpression(expression, Object.class, lenient);
     }
 
     public Predicate createPredicate(String predicate) {
-        return new JXPathExpression(predicate, Boolean.class);
+        return new JXPathExpression(predicate, Boolean.class, lenient);
     }
 
+    @Override
     public boolean isSingleton() {
-        return true;
+        // cannot be singleton due lenient option
+        return false;
     }
 }

Copied: 
camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java
 (from r1454269, 
camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java)
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java?p2=camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java&p1=camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java&r1=1454269&r2=1454273&rev=1454273&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-jxpath/src/test/java/org/apache/camel/language/jxpath/SpringJXPathFilterLenientTest.java
 Fri Mar  8 08:21:09 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.language.jxpath;
 
-import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.apache.camel.test.junit4.CamelSpringTestSupport;
 import org.junit.Test;
 import org.springframework.context.support.AbstractApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;


Reply via email to