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 eb304a1cce5 CAMEL-22204: Fix iif expression parsing for Strings
(#18483)
eb304a1cce5 is described below
commit eb304a1cce5777e0f2827e4ff9e549f27ef92954
Author: Benjamin Graf <[email protected]>
AuthorDate: Sat Jun 28 11:51:18 2025 +0200
CAMEL-22204: Fix iif expression parsing for Strings (#18483)
---
.../camel/language/simple/ast/SimpleFunctionExpression.java | 4 ++--
.../java/org/apache/camel/language/simple/SimpleTest.java | 13 +++++++++----
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index 851c2443d72..d67b2472f02 100644
---
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -902,7 +902,7 @@ public class SimpleFunctionExpression extends
LiteralExpression {
throw new SimpleParserException(
"Valid syntax:
${iif(predicate,trueExpression,falseExpression)} was: " + function,
token.getIndex());
}
- String[] tokens = StringQuoteHelper.splitSafeQuote(values, ',');
+ String[] tokens = StringQuoteHelper.splitSafeQuote(values, ',',
true, true);
if (tokens.length > 3) {
throw new SimpleParserException(
"Valid syntax:
${iif(predicate,trueExpression,falseExpression)} was: " + function,
token.getIndex());
@@ -916,7 +916,7 @@ public class SimpleFunctionExpression extends
LiteralExpression {
String values = StringHelper.beforeLast(remainder, ")");
String[] tokens = null;
if (ObjectHelper.isNotEmpty(values)) {
- tokens = StringQuoteHelper.splitSafeQuote(values, ',');
+ tokens = StringQuoteHelper.splitSafeQuote(values, ',', true,
true);
}
return SimpleExpressionBuilder.listExpression(tokens);
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index c6a2d27650a..9350ff2261e 100644
---
a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -2116,16 +2116,21 @@ public class SimpleTest extends LanguageTestSupport {
@Test
public void testIif() {
exchange.getIn().setHeader("foo", 44);
- assertExpression("${iif(${header.foo} > 0,'positive','negative')}",
"positive");
+ assertExpression("${iif(${header.foo} > 0,positive,negative)}",
"positive");
exchange.getIn().setHeader("foo", -123);
- assertExpression("${iif(${header.foo} > 0,'positive','negative')}",
"negative");
+ assertExpression("${iif(${header.foo} > 0,positive,negative)}",
"negative");
exchange.getIn().setBody("Hello World");
exchange.getIn().setHeader("foo", 44);
- assertExpression("${iif(${header.foo} > 0,${body},'Bye World')}",
"Hello World");
+ assertExpression("${iif(${header.foo} > 0,${body},Bye World)}", "Hello
World");
exchange.getIn().setHeader("foo", -123);
- assertExpression("${iif(${header.foo} > 0,${body},'Bye World')}", "Bye
World");
+ assertExpression("${iif(${header.foo} > 0,${body},Bye World)}", "Bye
World");
assertExpression("${iif(${header.foo} > 0,${body},${null})}", null);
+
+ exchange.getIn().setHeader("CamelFileName", "testfile.txt");
+ assertExpression("${iif(${file:name} startsWith 'test',foo,bar)}",
"foo");
+ exchange.getIn().setHeader("CamelFileName", "dummy.txt");
+ assertExpression("${iif(${file:name} startsWith 'test',foo,bar)}",
"bar");
}
@Test