This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit a29bf5c5a43e5bb2eebf1f2fd6e7436a3a29522b Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Tue May 21 00:36:33 2019 +0200 [CAMEL-13371] Move languages to camel-base --- .../camel/language/constant/ConstantLanguage.java | 0 .../apache/camel/language/constant/package.html | 0 .../camel/language/header/HeaderLanguage.java | 0 .../org/apache/camel/language/header/package.html | 0 .../java/org/apache/camel/language/package.html | 0 .../property/ExchangePropertyLanguage.java | 0 .../apache/camel/language/property/package.html | 0 .../org/apache/camel/language/ref/RefLanguage.java | 0 .../org/apache/camel/language/ref/package.html | 0 .../camel/language/simple/BaseSimpleParser.java | 0 .../apache/camel/language/simple/FileLanguage.java | 0 .../org/apache/camel/language/simple/Simple.java | 0 .../language/simple/SimpleExpressionBuilder.java | 25 +- .../language/simple/SimpleExpressionParser.java | 0 .../camel/language/simple/SimpleLanguage.java | 2 +- .../language/simple/SimplePredicateParser.java | 0 .../camel/language/simple/SimpleTokenizer.java | 0 .../camel/language/simple/ast/BaseSimpleNode.java | 0 .../language/simple/ast/BinaryExpression.java | 2 +- .../apache/camel/language/simple/ast/Block.java | 0 .../apache/camel/language/simple/ast/BlockEnd.java | 0 .../camel/language/simple/ast/BlockStart.java | 0 .../camel/language/simple/ast/CompositeNodes.java | 2 +- .../camel/language/simple/ast/DoubleQuoteEnd.java | 0 .../language/simple/ast/DoubleQuoteStart.java | 2 +- .../language/simple/ast/LiteralExpression.java | 2 +- .../camel/language/simple/ast/LiteralNode.java | 0 .../language/simple/ast/LogicalExpression.java | 2 +- .../camel/language/simple/ast/NullExpression.java | 0 .../language/simple/ast/SimpleFunctionEnd.java | 0 .../simple/ast/SimpleFunctionExpression.java | 0 .../language/simple/ast/SimpleFunctionStart.java | 0 .../camel/language/simple/ast/SimpleNode.java | 0 .../camel/language/simple/ast/SingleQuoteEnd.java | 0 .../language/simple/ast/SingleQuoteStart.java | 2 +- .../camel/language/simple/ast/UnaryExpression.java | 0 .../apache/camel/language/simple/ast/package.html | 0 .../org/apache/camel/language/simple/package.html | 0 .../language/simple/types/BinaryOperatorType.java | 0 .../language/simple/types/LogicalOperatorType.java | 0 .../simple/types/SimpleIllegalSyntaxException.java | 0 .../simple/types/SimpleParserException.java | 0 .../camel/language/simple/types/SimpleToken.java | 0 .../language/simple/types/SimpleTokenType.java | 0 .../camel/language/simple/types/TokenType.java | 0 .../language/simple/types/UnaryOperatorType.java | 0 .../camel/language/simple/types/package.html | 0 .../apache/camel/builder/ExpressionBuilder.java | 12 - .../org/apache/camel/builder/ValueBuilder.java | 274 +-------------------- .../camel/support/builder/ExpressionBuilder.java | 24 ++ .../camel/support}/builder/ValueBuilder.java | 22 +- 51 files changed, 43 insertions(+), 328 deletions(-) diff --git a/core/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java rename to core/camel-base/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/constant/package.html b/core/camel-base/src/main/java/org/apache/camel/language/constant/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/constant/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/constant/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/header/HeaderLanguage.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java rename to core/camel-base/src/main/java/org/apache/camel/language/header/HeaderLanguage.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/header/package.html b/core/camel-base/src/main/java/org/apache/camel/language/header/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/header/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/header/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/package.html b/core/camel-base/src/main/java/org/apache/camel/language/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java rename to core/camel-base/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/property/package.html b/core/camel-base/src/main/java/org/apache/camel/language/property/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/property/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/property/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/ref/RefLanguage.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java rename to core/camel-base/src/main/java/org/apache/camel/language/ref/RefLanguage.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/ref/package.html b/core/camel-base/src/main/java/org/apache/camel/language/ref/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/ref/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/ref/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/FileLanguage.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/FileLanguage.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/Simple.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/Simple.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/Simple.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/Simple.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java similarity index 96% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java index 5be7afd..9a0cc77 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java @@ -35,7 +35,6 @@ import org.apache.camel.Expression; import org.apache.camel.InvalidPayloadException; import org.apache.camel.NoTypeConversionAvailableException; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.model.language.MethodCallExpression; import org.apache.camel.spi.ExchangeFormatter; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.ExpressionAdapter; @@ -534,12 +533,8 @@ public final class SimpleExpressionBuilder { } catch (InvalidPayloadException e) { throw CamelExecutionException.wrapCamelExecutionException(exchange, e); } - // ognl is able to evaluate method name if it contains nested functions - // so we should not eager evaluate ognl as a string - MethodCallExpression call = new MethodCallExpression(exchange, ognl); - // set the instance to use - call.setInstance(body); - return call.evaluate(exchange); + Expression exp = ExpressionBuilder.beanExpression(body, ognl); + return exp.evaluate(exchange, Object.class); } @Override @@ -595,10 +590,8 @@ public final class SimpleExpressionBuilder { if (body != null) { // ognl is able to evaluate method name if it contains nested functions // so we should not eager evaluate ognl as a string - MethodCallExpression call = new MethodCallExpression(exchange, ognl); - // set the instance to use - call.setInstance(body); - return call.evaluate(exchange); + return ExpressionBuilder.beanExpression(body, ognl) + .evaluate(exchange, Object.class); } else { return null; } @@ -622,7 +615,7 @@ public final class SimpleExpressionBuilder { public Object evaluate(Exchange exchange) { // ognl is able to evaluate method name if it contains nested functions // so we should not eager evaluate ognl as a string - return new MethodCallExpression(exchange, ognl).evaluate(exchange); + return ExpressionBuilder.beanExpression(exchange, ognl).evaluate(exchange, Object.class); } @Override @@ -647,7 +640,7 @@ public final class SimpleExpressionBuilder { } // ognl is able to evaluate method name if it contains nested functions // so we should not eager evaluate ognl as a string - return new MethodCallExpression(context, ognl).evaluate(exchange); + return ExpressionBuilder.beanExpression(context, ognl).evaluate(exchange, Object.class); } @Override @@ -672,7 +665,7 @@ public final class SimpleExpressionBuilder { } // ognl is able to evaluate method name if it contains nested functions // so we should not eager evaluate ognl as a string - return new MethodCallExpression(body, ognl).evaluate(exchange); + return ExpressionBuilder.beanExpression(body, ognl).evaluate(exchange, Object.class); } @Override @@ -781,7 +774,7 @@ public final class SimpleExpressionBuilder { // ognl is able to evaluate method name if it contains nested functions // so we should not eager evaluate ognl as a string - return new MethodCallExpression(exception, ognl).evaluate(exchange); + return ExpressionBuilder.beanExpression(exception, ognl).evaluate(exchange, Object.class); } @Override @@ -836,7 +829,7 @@ public final class SimpleExpressionBuilder { } // the remainder is the rest of the ognl without the key String remainder = StringHelper.after(ognl, key + keySuffix); - return new MethodCallExpression(property, remainder).evaluate(exchange); + return ExpressionBuilder.beanExpression(property, remainder).evaluate(exchange, Object.class); } @Override diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java similarity index 99% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java index cbe9310..36226a8 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java @@ -21,13 +21,13 @@ import java.util.Map; import org.apache.camel.Expression; import org.apache.camel.Predicate; import org.apache.camel.StaticService; -import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.spi.annotations.Language; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.LRUCache; import org.apache.camel.support.LRUCacheFactory; import org.apache.camel.support.LanguageSupport; import org.apache.camel.support.PredicateToExpressionAdapter; +import org.apache.camel.support.builder.ExpressionBuilder; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java similarity index 99% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java index 22ac34b..1c94763 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java @@ -25,7 +25,6 @@ import java.util.regex.Pattern; import org.apache.camel.Exchange; import org.apache.camel.Expression; import org.apache.camel.Predicate; -import org.apache.camel.builder.ValueBuilder; import org.apache.camel.language.simple.types.BinaryOperatorType; import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException; import org.apache.camel.language.simple.types.SimpleParserException; @@ -33,6 +32,7 @@ import org.apache.camel.language.simple.types.SimpleToken; import org.apache.camel.support.ObjectHelper; import org.apache.camel.support.builder.ExpressionBuilder; import org.apache.camel.support.builder.PredicateBuilder; +import org.apache.camel.support.builder.ValueBuilder; /** * Represents a binary expression in the AST. diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/Block.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/Block.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/Block.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/Block.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java similarity index 97% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java index 7318905..7a2cfb4 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java @@ -20,8 +20,8 @@ import java.util.ArrayList; import java.util.List; import org.apache.camel.Expression; -import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.language.simple.types.SimpleToken; +import org.apache.camel.support.builder.ExpressionBuilder; /** * A node which contains other {@link SimpleNode nodes}. diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java similarity index 97% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java index 6986ee7..3d6b23f 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java @@ -17,8 +17,8 @@ package org.apache.camel.language.simple.ast; import org.apache.camel.Expression; -import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.language.simple.types.SimpleToken; +import org.apache.camel.support.builder.ExpressionBuilder; /** * Starts a block enclosed by double quotes diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java similarity index 97% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java index de7fc3b..157668b 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java @@ -17,8 +17,8 @@ package org.apache.camel.language.simple.ast; import org.apache.camel.Expression; -import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.language.simple.types.SimpleToken; +import org.apache.camel.support.builder.ExpressionBuilder; /** * Represents literals in the AST. diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java similarity index 98% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java index 8177d25..d6599f1 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java @@ -19,11 +19,11 @@ package org.apache.camel.language.simple.ast; import org.apache.camel.Exchange; import org.apache.camel.Expression; import org.apache.camel.Predicate; -import org.apache.camel.builder.PredicateBuilder; import org.apache.camel.language.simple.types.LogicalOperatorType; import org.apache.camel.language.simple.types.SimpleParserException; import org.apache.camel.language.simple.types.SimpleToken; import org.apache.camel.support.ExpressionToPredicateAdapter; +import org.apache.camel.support.builder.PredicateBuilder; import org.apache.camel.util.ObjectHelper; /** diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java similarity index 97% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java index 9a04fb1..a1b4158 100644 --- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java @@ -17,8 +17,8 @@ package org.apache.camel.language.simple.ast; import org.apache.camel.Expression; -import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.language.simple.types.SimpleToken; +import org.apache.camel.support.builder.ExpressionBuilder; /** * Starts a block enclosed by single quotes diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/package.html b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/package.html b/core/camel-base/src/main/java/org/apache/camel/language/simple/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/simple/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/TokenType.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/TokenType.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/package.html b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/package.html similarity index 100% rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/package.html rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/package.html diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java index fe7ec30..3ee51ee 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java +++ b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java @@ -20,12 +20,9 @@ import org.apache.camel.Exchange; import org.apache.camel.Expression; import org.apache.camel.spi.Language; import org.apache.camel.support.ExpressionAdapter; -import org.apache.camel.support.IntrospectionSupport; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.util.StringHelper; -import static org.apache.camel.support.IntrospectionSupport.setProperty; - /** * A helper class for working with <a href="http://camel.apache.org/expression.html">expressions</a>. */ @@ -94,13 +91,4 @@ public final class ExpressionBuilder extends org.apache.camel.support.builder.Ex }; } - private static void setProperty(Object bean, String name, Object value) { - try { - IntrospectionSupport.setProperty(bean, name, value); - } catch (Exception e) { - throw new IllegalArgumentException("Failed to set property " + name + " on " + bean - + ". Reason: " + e, e); - } - } - } diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java index e10cd2b..377637d 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java +++ b/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java @@ -16,176 +16,21 @@ */ package org.apache.camel.builder; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; - -import org.apache.camel.Exchange; import org.apache.camel.Expression; -import org.apache.camel.Predicate; import org.apache.camel.support.builder.Namespaces; /** * A builder of expressions or predicates based on values. */ -public class ValueBuilder implements Expression, Predicate { - private Expression expression; - private boolean not; +public class ValueBuilder extends org.apache.camel.support.builder.ValueBuilder { public ValueBuilder(Expression expression) { - this.expression = expression; - } - - @Override - public <T> T evaluate(Exchange exchange, Class<T> type) { - return expression.evaluate(exchange, type); - } - - @Override - public boolean matches(Exchange exchange) { - return PredicateBuilder.toPredicate(getExpression()).matches(exchange); - } - - public Expression getExpression() { - return expression; - } - - @Override - public String toString() { - return expression.toString(); - } - - // Predicate builders - // ------------------------------------------------------------------------- - - public Predicate isNotEqualTo(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isNotEqualTo(expression, right)); - } - - public Predicate isEqualTo(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isEqualTo(expression, right)); - } - - public Predicate isEqualToIgnoreCase(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isEqualToIgnoreCase(expression, right)); - } - - public Predicate isLessThan(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isLessThan(expression, right)); - } - - public Predicate isLessThanOrEqualTo(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isLessThanOrEqualTo(expression, right)); - } - - public Predicate isGreaterThan(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isGreaterThan(expression, right)); - } - - public Predicate isGreaterThanOrEqualTo(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.isGreaterThanOrEqualTo(expression, right)); - } - - public Predicate isInstanceOf(Class<?> type) { - return onNewPredicate(PredicateBuilder.isInstanceOf(expression, type)); - } - - public Predicate isNull() { - return onNewPredicate(PredicateBuilder.isNull(expression)); - } - - public Predicate isNotNull() { - return onNewPredicate(PredicateBuilder.isNotNull(expression)); - } - - public Predicate not(Predicate predicate) { - return onNewPredicate(PredicateBuilder.not(predicate)); - } - - public Predicate in(Object... values) { - List<Predicate> predicates = new ArrayList<>(); - for (Object value : values) { - Expression right = asExpression(value); - right = ExpressionBuilder.convertToExpression(right, expression); - Predicate predicate = onNewPredicate(PredicateBuilder.isEqualTo(expression, right)); - predicates.add(predicate); - } - return in(predicates.toArray(new Predicate[predicates.size()])); - } - - public Predicate in(Predicate... predicates) { - return onNewPredicate(PredicateBuilder.in(predicates)); - } - - public Predicate startsWith(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.startsWith(expression, right)); - } - - public Predicate endsWith(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.endsWith(expression, right)); - } - - /** - * Create a predicate that the left hand expression contains the value of - * the right hand expression - * - * @param value the element which is compared to be contained within this - * expression - * @return a predicate which evaluates to true if the given value expression - * is contained within this expression value - */ - public Predicate contains(Object value) { - Expression right = asExpression(value); - return onNewPredicate(PredicateBuilder.contains(expression, right)); - } - - /** - * Creates a predicate which is true if this expression matches the given - * regular expression - * - * @param regex the regular expression to match - * @return a predicate which evaluates to true if the expression matches the - * regex - */ - public Predicate regex(String regex) { - return onNewPredicate(PredicateBuilder.regex(expression, regex)); + super(expression); } // Expression builders // ------------------------------------------------------------------------- - public ValueBuilder tokenize() { - return tokenize("\n"); - } - - public ValueBuilder tokenize(String token) { - Expression newExp = ExpressionBuilder.tokenizeExpression(expression, token); - return onNewValueBuilder(newExp); - } - - public ValueBuilder tokenize(String token, int group, boolean skipFirst) { - return tokenize(token, "" + group, skipFirst); - } - - public ValueBuilder tokenize(String token, String group, boolean skipFirst) { - Expression newExp = ExpressionBuilder.tokenizeExpression(expression, token); - if (group == null && skipFirst) { - // wrap in skip first (if group then it has its own skip first logic) - newExp = ExpressionBuilder.skipFirstExpression(newExp); - } - newExp = ExpressionBuilder.groupIteratorExpression(newExp, token, group, skipFirst); - return onNewValueBuilder(newExp); - } - public ValueBuilder tokenizeXML(String tagName, String inheritNamespaceTagName) { Expression newExp = ExpressionBuilder.tokenizeXMLExpression(tagName, inheritNamespaceTagName); return onNewValueBuilder(newExp); @@ -205,121 +50,6 @@ public class ValueBuilder implements Expression, Predicate { return onNewValueBuilder(newExp); } - /** - * Tokenizes the string conversion of this expression using the given - * regular expression - */ - public ValueBuilder regexTokenize(String regex) { - Expression newExp = ExpressionBuilder.regexTokenizeExpression(expression, regex); - return onNewValueBuilder(newExp); - } - - /** - * Replaces all occurrences of the regular expression with the given - * replacement - */ - public ValueBuilder regexReplaceAll(String regex, String replacement) { - Expression newExp = ExpressionBuilder.regexReplaceAll(expression, regex, replacement); - return onNewValueBuilder(newExp); - } - - /** - * Replaces all occurrences of the regular expression with the given - * replacement - */ - public ValueBuilder regexReplaceAll(String regex, Expression replacement) { - Expression newExp = ExpressionBuilder.regexReplaceAll(expression, regex, replacement); - return onNewValueBuilder(newExp); - } - - /** - * Converts the current value to the given type using the registered type - * converters - * - * @param type the type to convert the value to - * @return the current builder - */ - public ValueBuilder convertTo(Class<?> type) { - Expression newExp = ExpressionBuilder.convertToExpression(expression, type); - return onNewValueBuilder(newExp); - } - - /** - * Converts the current value to a String using the registered type converters - * - * @return the current builder - */ - public ValueBuilder convertToString() { - return convertTo(String.class); - } - - /** - * Appends the string evaluation of this expression with the given value - * - * @param value the value or expression to append - * @return the current builder - */ - public ValueBuilder append(Object value) { - Expression newExp = ExpressionBuilder.append(expression, asExpression(value)); - return onNewValueBuilder(newExp); - } - - /** - * Prepends the string evaluation of this expression with the given value - * - * @param value the value or expression to prepend - * @return the current builder - */ - public ValueBuilder prepend(Object value) { - Expression newExp = ExpressionBuilder.prepend(expression, asExpression(value)); - return onNewValueBuilder(newExp); - } - - /** - * Sorts the current value using the given comparator. The current value must be convertable - * to a {@link List} to allow sorting using the comparator. - * - * @param comparator the comparator used by sorting - * @return the current builder - */ - public ValueBuilder sort(Comparator<?> comparator) { - Expression newExp = ExpressionBuilder.sortExpression(expression, comparator); - return onNewValueBuilder(newExp); - } - - /** - * Negates the built expression. - * - * @return the current builder - */ - public ValueBuilder not() { - not = true; - return this; - } - - // Implementation methods - // ------------------------------------------------------------------------- - - /** - * A strategy method to allow derived classes to deal with the newly created - * predicate in different ways - */ - protected Predicate onNewPredicate(Predicate predicate) { - if (not) { - return PredicateBuilder.not(predicate); - } else { - return predicate; - } - } - - protected Expression asExpression(Object value) { - if (value instanceof Expression) { - return (Expression)value; - } else { - return ExpressionBuilder.constantExpression(value); - } - } - protected ValueBuilder onNewValueBuilder(Expression exp) { return new ValueBuilder(exp); } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java index b76ad9f..dd289d6 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java @@ -44,6 +44,7 @@ import org.apache.camel.support.ExchangeHelper; import org.apache.camel.support.ExpressionAdapter; import org.apache.camel.support.GroupIterator; import org.apache.camel.support.GroupTokenIterator; +import org.apache.camel.support.IntrospectionSupport; import org.apache.camel.support.LanguageSupport; import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; @@ -1520,6 +1521,21 @@ public class ExpressionBuilder { }; } + public static Expression beanExpression(final Object bean, final String expression) { + return new ExpressionAdapter() { + public Object evaluate(Exchange exchange) { + Language language = exchange.getContext().resolveLanguage("bean"); + setProperty(language, "bean", bean); + setProperty(language, "method", expression); + return language.createExpression(null).evaluate(exchange, Object.class); + } + + public String toString() { + return "bean(" + bean + ", " + expression + ")"; + } + }; + } + /** * Returns Simple expression or fallback to Constant expression if expression str is not Simple expression. */ @@ -1569,4 +1585,12 @@ public class ExpressionBuilder { }; } + protected static void setProperty(Object bean, String name, Object value) { + try { + IntrospectionSupport.setProperty(bean, name, value); + } catch (Exception e) { + throw new IllegalArgumentException("Failed to set property " + name + " on " + bean + ". Reason: " + e, e); + } + } + } diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ValueBuilder.java similarity index 91% copy from core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java copy to core/camel-support/src/main/java/org/apache/camel/support/builder/ValueBuilder.java index e10cd2b..833de82 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ValueBuilder.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.builder; +package org.apache.camel.support.builder; import java.util.ArrayList; import java.util.Comparator; @@ -23,7 +23,6 @@ import java.util.List; import org.apache.camel.Exchange; import org.apache.camel.Expression; import org.apache.camel.Predicate; -import org.apache.camel.support.builder.Namespaces; /** * A builder of expressions or predicates based on values. @@ -186,25 +185,6 @@ public class ValueBuilder implements Expression, Predicate { return onNewValueBuilder(newExp); } - public ValueBuilder tokenizeXML(String tagName, String inheritNamespaceTagName) { - Expression newExp = ExpressionBuilder.tokenizeXMLExpression(tagName, inheritNamespaceTagName); - return onNewValueBuilder(newExp); - } - - public ValueBuilder xtokenize(String path, Namespaces namespaces) { - return xtokenize(path, 'i', namespaces); - } - - public ValueBuilder xtokenize(String path, char mode, Namespaces namespaces) { - Expression newExp = ExpressionBuilder.tokenizeXMLAwareExpression(path, mode, 1, namespaces); - return onNewValueBuilder(newExp); - } - - public ValueBuilder tokenizePair(String startToken, String endToken, boolean includeTokens) { - Expression newExp = ExpressionBuilder.tokenizePairExpression(startToken, endToken, includeTokens); - return onNewValueBuilder(newExp); - } - /** * Tokenizes the string conversion of this expression using the given * regular expression