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()); }