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 2020/10/08 15:58:50 UTC
[camel] branch master updated: CAMEL-15659: Add back manually coded
configurers for the languages
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new eba825c CAMEL-15659: Add back manually coded configurers for the languages
eba825c is described below
commit eba825c392bc78800f180a3825600395a7e45347
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Oct 8 17:40:08 2020 +0200
CAMEL-15659: Add back manually coded configurers for the languages
---
.../apache/camel/language/bean/BeanLanguage.java | 32 ++++++++++++-
.../apache/camel/jsonpath/JsonPathLanguage.java | 43 ++++++++++++++++-
.../camel/language/xquery/XQueryLanguage.java | 24 +++++++++-
.../apache/camel/language/xpath/XPathLanguage.java | 56 +++++++++++++++++++++-
.../org/apache/camel/builder/ExpressionClause.java | 6 +--
.../camel/builder/ExpressionClauseSupport.java | 6 +--
.../camel/language/tokenizer/TokenizeLanguage.java | 54 ++++++++++++++++++++-
.../language/xtokenizer/XMLTokenizeLanguage.java | 28 ++++++++++-
8 files changed, 236 insertions(+), 13 deletions(-)
diff --git a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
index abb2bec..65b8146 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
@@ -20,6 +20,7 @@ import java.net.URISyntaxException;
import java.util.Map;
import org.apache.camel.BeanScope;
+import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.RuntimeCamelException;
@@ -28,8 +29,10 @@ import org.apache.camel.component.bean.BeanComponent;
import org.apache.camel.component.bean.ParameterMappingStrategy;
import org.apache.camel.component.bean.ParameterMappingStrategyHelper;
import org.apache.camel.spi.Language;
+import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.support.ExpressionToPredicateAdapter;
import org.apache.camel.support.LanguageSupport;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
import org.apache.camel.util.StringHelper;
import org.apache.camel.util.URISupport;
@@ -45,7 +48,7 @@ import org.apache.camel.util.URISupport;
* As of Camel 1.5 the bean language also supports invoking a provided bean by its classname or the bean itself.
*/
@org.apache.camel.spi.annotations.Language("bean")
-public class BeanLanguage extends LanguageSupport implements StaticService {
+public class BeanLanguage extends LanguageSupport implements PropertyConfigurer, StaticService {
private volatile BeanComponent beanComponent;
private volatile ParameterMappingStrategy parameterMappingStrategy;
@@ -101,6 +104,33 @@ public class BeanLanguage extends LanguageSupport implements StaticService {
}
@Override
+ public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
+ if (target != this) {
+ throw new IllegalStateException("Can only configure our own instance !");
+ }
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "bean":
+ setBean(PropertyConfigurerSupport.property(camelContext, Object.class, value));
+ return true;
+ case "beantype":
+ case "beanType":
+ setBeanType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
+ return true;
+ case "ref":
+ setRef(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "method":
+ setMethod(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "scope":
+ setScope(PropertyConfigurerSupport.property(camelContext, BeanScope.class, value));
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
public Predicate createPredicate(String expression) {
return ExpressionToPredicateAdapter.toPredicate(createExpression(expression));
}
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
index ea071dc..02dfcb8 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
@@ -20,13 +20,16 @@ import java.util.ArrayList;
import java.util.List;
import com.jayway.jsonpath.Option;
+import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.spi.annotations.Language;
import org.apache.camel.support.LanguageSupport;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
@Language("jsonpath")
-public class JsonPathLanguage extends LanguageSupport {
+public class JsonPathLanguage extends LanguageSupport implements PropertyConfigurer {
private Class<?> resultType;
private boolean suppressExceptions;
@@ -142,4 +145,42 @@ public class JsonPathLanguage extends LanguageSupport {
return answer;
}
+ @Override
+ public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
+ if (target != this) {
+ throw new IllegalStateException("Can only configure our own instance !");
+ }
+
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "resulttype":
+ case "resultType":
+ setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
+ return true;
+ case "suppressexceptions":
+ case "suppressExceptions":
+ setSuppressExceptions(PropertyConfigurerSupport.property(camelContext, boolean.class, value));
+ return true;
+ case "allowsimple":
+ case "allowSimple":
+ setAllowSimple(PropertyConfigurerSupport.property(camelContext, boolean.class, value));
+ return true;
+ case "alloweasypredicate":
+ case "allowEasyPredicate":
+ setAllowEasyPredicate(PropertyConfigurerSupport.property(camelContext, boolean.class, value));
+ return true;
+ case "headername":
+ case "headerName":
+ setHeaderName(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "writeasstring":
+ case "writeAsString":
+ setWriteAsString(PropertyConfigurerSupport.property(camelContext, boolean.class, value));
+ return true;
+ case "options":
+ setOptions(PropertyConfigurerSupport.property(camelContext, Option[].class, value));
+ return true;
+ default:
+ return false;
+ }
+ }
}
diff --git a/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java b/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
index ced414c..e278823 100644
--- a/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
+++ b/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
@@ -16,14 +16,17 @@
*/
package org.apache.camel.language.xquery;
+import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.component.xquery.XQueryBuilder;
+import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.spi.annotations.Language;
import org.apache.camel.support.LanguageSupport;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
@Language("xquery")
-public class XQueryLanguage extends LanguageSupport {
+public class XQueryLanguage extends LanguageSupport implements PropertyConfigurer {
private Class<?> resultType;
private String headerName;
@@ -91,4 +94,23 @@ public class XQueryLanguage extends LanguageSupport {
}
}
+ @Override
+ public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
+ if (target != this) {
+ throw new IllegalStateException("Can only configure our own instance !");
+ }
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "resulttype":
+ case "resultType":
+ setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
+ return true;
+ case "headername":
+ case "headerName":
+ setHeaderName(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ default:
+ return false;
+ }
+ }
+
}
diff --git a/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java b/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
index 4caa22b..17548cf 100644
--- a/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
+++ b/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
@@ -19,16 +19,19 @@ package org.apache.camel.language.xpath;
import javax.xml.namespace.QName;
import javax.xml.xpath.XPathFactory;
+import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.spi.annotations.Language;
import org.apache.camel.support.LanguageSupport;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
/**
* XPath language.
*/
@Language("xpath")
-public class XPathLanguage extends LanguageSupport {
+public class XPathLanguage extends LanguageSupport implements PropertyConfigurer {
private Class<?> resultType;
private QName resultQName;
private Class<?> documentType;
@@ -215,4 +218,55 @@ public class XPathLanguage extends LanguageSupport {
}
}
+ @Override
+ public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
+ if (target != this) {
+ throw new IllegalStateException("Can only configure our own instance !");
+ }
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "resulttype":
+ case "resultType":
+ setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
+ return true;
+ case "resultqname":
+ case "resultQName":
+ setResultQName(PropertyConfigurerSupport.property(camelContext, QName.class, value));
+ return true;
+ case "documenttype":
+ case "documentType":
+ setDocumentType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
+ return true;
+ case "xpathfactory":
+ case "xpathFactory":
+ setXpathFactory(PropertyConfigurerSupport.property(camelContext, XPathFactory.class, value));
+ return true;
+ case "usesaxon":
+ case "useSaxon":
+ setUseSaxon(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ case "objectmodeluri":
+ case "objectModelUri":
+ setObjectModelUri(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "threadsafety":
+ case "threadSafety":
+ setThreadSafety(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ case "lognamespaces":
+ case "logNamespaces":
+ setLogNamespaces(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ case "headername":
+ case "headerName":
+ setHeaderName(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "preCompile":
+ case "precompile":
+ setPreCompile(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ default:
+ return false;
+ }
+ }
+
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClause.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClause.java
index 6bf04de..8c97230 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -249,9 +249,9 @@ public class ExpressionClause<T> implements Expression, Predicate {
* Evaluates an expression using the <a href="http://camel.apache.org/bean-language.html">bean language</a> which
* basically means the bean is invoked to determine the expression value.
*
- * @param bean the name of the bean looked up the registry
- * @param scope the scope of the bean
- * @return the builder to continue processing the DSL
+ * @param bean the name of the bean looked up the registry
+ * @param scope the scope of the bean
+ * @return the builder to continue processing the DSL
*/
public T method(String bean, BeanScope scope) {
return delegate.method(bean, scope);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
index 7577674..37970f7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
@@ -211,9 +211,9 @@ public class ExpressionClauseSupport<T> {
* Evaluates an expression using the <a href="http://camel.apache.org/bean-language.html>bean language</a> which
* basically means the bean is invoked to determine the expression value.
*
- * @param bean the name of the bean looked up the registry
- * @param scope the scope of the bean
- * @return the builder to continue processing the DSL
+ * @param bean the name of the bean looked up the registry
+ * @param scope the scope of the bean
+ * @return the builder to continue processing the DSL
*/
public T method(String bean, BeanScope scope) {
MethodCallExpression exp = new MethodCallExpression(bean);
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
index e804b18..dfd4b63 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
@@ -16,11 +16,14 @@
*/
package org.apache.camel.language.tokenizer;
+import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.support.ExpressionToPredicateAdapter;
import org.apache.camel.support.LanguageSupport;
import org.apache.camel.support.builder.ExpressionBuilder;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
import org.apache.camel.util.ObjectHelper;
/**
@@ -36,7 +39,7 @@ import org.apache.camel.util.ObjectHelper;
* <tt>token</tt> and <tt>endToken</tt>. And the <tt>xml</tt> mode supports the <tt>inheritNamespaceTagName</tt> option.
*/
@org.apache.camel.spi.annotations.Language("tokenize")
-public class TokenizeLanguage extends LanguageSupport {
+public class TokenizeLanguage extends LanguageSupport implements PropertyConfigurer {
private String token;
private String endToken;
@@ -91,7 +94,54 @@ public class TokenizeLanguage extends LanguageSupport {
language.setToken(tagName);
language.setInheritNamespaceTagName(inheritNamespaceTagName);
language.setXml(true);
- return language.createExpression((String) null);
+ return language.createExpression(null);
+ }
+
+ @Override
+ public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
+ if (target != this) {
+ throw new IllegalStateException("Can only configure our own instance !");
+ }
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "token":
+ setToken(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "endtoken":
+ case "endToken":
+ setEndToken(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "inheritnamespacetagname":
+ case "inheritNamespaceTagName":
+ setInheritNamespaceTagName(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "headername":
+ case "headerName":
+ setHeaderName(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "regex":
+ setRegex(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ case "xml":
+ setXml(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ case "includetokens":
+ case "includeTokens":
+ setIncludeTokens(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ case "group":
+ setGroup(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "groupdelimiter":
+ case "groupDelimiter":
+ setGroupDelimiter(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "skipfirst":
+ case "skipFirst":
+ setSkipFirst(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
+ return true;
+ default:
+ return false;
+ }
}
@Override
diff --git a/core/camel-xml-jaxp/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java b/core/camel-xml-jaxp/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
index 7c31f2b..6ad908c 100644
--- a/core/camel-xml-jaxp/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
+++ b/core/camel-xml-jaxp/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
@@ -18,12 +18,15 @@ package org.apache.camel.language.xtokenizer;
import java.util.Map;
+import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.spi.annotations.Language;
import org.apache.camel.support.ExpressionToPredicateAdapter;
import org.apache.camel.support.LanguageSupport;
import org.apache.camel.support.builder.Namespaces;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
import org.apache.camel.util.ObjectHelper;
/**
@@ -38,7 +41,7 @@ import org.apache.camel.util.ObjectHelper;
* </ul>
*/
@Language("xtokenize")
-public class XMLTokenizeLanguage extends LanguageSupport {
+public class XMLTokenizeLanguage extends LanguageSupport implements PropertyConfigurer {
private String headerName;
private String path;
@@ -160,4 +163,27 @@ public class XMLTokenizeLanguage extends LanguageSupport {
this.namespaces = namespaces;
}
+ @Override
+ public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
+ if (target != this) {
+ throw new IllegalStateException("Can only configure our own instance !");
+ }
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "headername":
+ case "headerName":
+ setHeaderName(PropertyConfigurerSupport.property(camelContext, String.class, value));
+ return true;
+ case "mode":
+ setMode(PropertyConfigurerSupport.property(camelContext, char.class, value));
+ return true;
+ case "group":
+ setGroup(PropertyConfigurerSupport.property(camelContext, int.class, value));
+ return true;
+ case "namespaces":
+ setNamespaces(PropertyConfigurerSupport.property(camelContext, Namespaces.class, value));
+ return true;
+ default:
+ return false;
+ }
+ }
}