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
      */

Reply via email to