This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new d6ca5fca99d CAMEL-19014 - Fixing issue about concurrence on the
SimpleLanguage (#9333)
d6ca5fca99d is described below
commit d6ca5fca99d528b5394113433c5f4e9a1b0b5296
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Mar 11 09:25:30 2023 +0100
CAMEL-19014 - Fixing issue about concurrence on the SimpleLanguage (#9333)
---
.../builder/ExpressionBuilderConcurrencyTest.java | 2 +-
.../camel/support/builder/ExpressionBuilder.java | 20 +++++++-------------
2 files changed, 8 insertions(+), 14 deletions(-)
diff --git
a/core/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderConcurrencyTest.java
b/core/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderConcurrencyTest.java
index f800d19705d..273d18245fe 100644
---
a/core/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderConcurrencyTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderConcurrencyTest.java
@@ -94,4 +94,4 @@ public class ExpressionBuilderConcurrencyTest extends
ContextTestSupport {
return simpleExpression.evaluate(exchange, String.class);
}
-}
\ No newline at end of file
+}
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 312dfbf6aee..c514185dc68 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
@@ -1642,12 +1642,11 @@ public class ExpressionBuilder {
*/
public static Expression concatExpression(final Collection<Expression>
expressions, final String description) {
for (Expression expression : expressions) {
- if(expression instanceof ConstantExpressionAdapter){
+ if (expression instanceof ConstantExpressionAdapter) {
return concatExpressionOptimized(expressions, description);
}
}
-
- return concatExpressionUnoptimized(expressions,description);
+ return concatExpressionUnoptimized(expressions, description);
}
/**
@@ -1700,15 +1699,13 @@ public class ExpressionBuilder {
* @return an expression which when evaluated will return the concatenated
values
*/
private static Expression concatExpressionOptimized(final
Collection<Expression> expressions, final String description) {
-
-
return new ExpressionAdapter() {
-
- private Collection<Object> col;
+ private Collection<Object> optimized;
@Override
public Object evaluate(Exchange exchange) {
StringBuilder buffer = new StringBuilder();
+ Collection<?> col = optimized != null ? optimized :
expressions;
for (Object obj : col) {
if (obj instanceof Expression) {
Expression expression = (Expression) obj;
@@ -1725,7 +1722,7 @@ public class ExpressionBuilder {
@Override
public void init(CamelContext context) {
- if(col == null) {
+ if (optimized == null) {
Collection<Object> preprocessedExpression = new
ArrayList<>(expressions.size());
for (Expression expression : expressions) {
expression.init(context);
@@ -1736,14 +1733,12 @@ public class ExpressionBuilder {
preprocessedExpression.add(expression);
}
}
- col =
Collections.unmodifiableCollection(preprocessedExpression);
- }
- else{
+ optimized = preprocessedExpression;
+ } else {
for (Expression expression : expressions) {
expression.init(context);
}
}
-
}
@Override
@@ -1757,7 +1752,6 @@ public class ExpressionBuilder {
};
}
-
/**
* Returns an Expression for the inbound message id
*/