This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch lang2
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 14bff244c716770ce5b993ba99cbe7f23b238c6f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Feb 2 10:48:15 2024 +0100

    CAMEL-20378: Languages should be thread-safe and be configured only via 
properties array, all in the same way.
---
 .../xtokenizer/XMLTokenExpressionIterator.java     |  8 +++++++
 .../language/xtokenizer/XMLTokenizeLanguage.java   | 28 ++++++----------------
 2 files changed, 15 insertions(+), 21 deletions(-)

diff --git 
a/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenExpressionIterator.java
 
b/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenExpressionIterator.java
index e1af4582123..2eb5a2f64e6 100644
--- 
a/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenExpressionIterator.java
+++ 
b/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenExpressionIterator.java
@@ -39,6 +39,7 @@ import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.converter.jaxp.StaxConverter;
 import org.apache.camel.spi.NamespaceAware;
@@ -72,6 +73,13 @@ public class XMLTokenExpressionIterator extends 
ExpressionAdapter implements Nam
         this.propertyName = propertyName;
         this.path = path;
         this.mode = mode;
+        this.group = group;
+    }
+
+    @Override
+    public void init(CamelContext context) {
+        super.init(context);
+        // group must be 1 or higher
         this.group = Math.max(group, 1);
     }
 
diff --git 
a/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
 
b/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
index a104cef90b5..dca18770abf 100644
--- 
a/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
+++ 
b/components/camel-stax/src/main/java/org/apache/camel/language/xtokenizer/XMLTokenizeLanguage.java
@@ -56,12 +56,14 @@ public class XMLTokenizeLanguage extends 
SingleInputLanguageSupport {
 
     @Override
     public Expression createExpression(String expression, Object[] properties) 
{
-        String headerName = property(String.class, properties, 0, 
getHeaderName());
         Character mode = property(Character.class, properties, 1, "i");
-        Integer group = property(Integer.class, properties, 2, null);
+
+        XMLTokenExpressionIterator answer = new 
XMLTokenExpressionIterator(expression, mode);
+        answer.setHeaderName(property(String.class, properties, 0, 
getHeaderName()));
+        answer.setGroup(property(int.class, properties, 2, 1));
         Object obj = properties[3];
-        Namespaces ns = null;
         if (obj != null) {
+            Namespaces ns;
             if (obj instanceof Namespaces) {
                 ns = (Namespaces) obj;
             } else if (obj instanceof Map) {
@@ -71,26 +73,10 @@ public class XMLTokenizeLanguage extends 
SingleInputLanguageSupport {
                 throw new IllegalArgumentException(
                         "Namespaces is not instance of java.util.Map or " + 
Namespaces.class.getName());
             }
-        }
-        String propertyName = property(String.class, properties, 4, null);
-        String variableName = property(String.class, properties, 5, null);
-
-        XMLTokenExpressionIterator answer = new 
XMLTokenExpressionIterator(expression, mode);
-        if (headerName != null) {
-            answer.setHeaderName(headerName);
-        }
-        if (group != null) {
-            answer.setGroup(group);
-        }
-        if (ns != null) {
             answer.setNamespaces(ns.getNamespaces());
         }
-        if (propertyName != null) {
-            answer.setPropertyName(propertyName);
-        }
-        if (variableName != null) {
-            answer.setVariableName(variableName);
-        }
+        answer.setPropertyName(property(String.class, properties, 4, null));
+        answer.setVariableName(property(String.class, properties, 5, null));
         if (getCamelContext() != null) {
             answer.init(getCamelContext());
         }

Reply via email to