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

Reply via email to