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;