This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-4.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.22.x by this push:
new 60304148ab10 [backport camel-4.22.x] CAMEL-24585: Fix catalog
validateLanguageExpression NPE for simple expressions using jsonpath/jq/xpath
functions
60304148ab10 is described below
commit 60304148ab10ee7b569841664d986cba8140f06a
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Sep 2 21:18:51 2026 +0200
[backport camel-4.22.x] CAMEL-24585: Fix catalog validateLanguageExpression
NPE for simple expressions using jsonpath/jq/xpath functions
Co-authored-by: Claude Opus 4.8 <[email protected]>
---
.../test/java/org/apache/camel/catalog/CamelCatalogTest.java | 12 ++++++++++++
.../main/java/org/apache/camel/support/LanguageSupport.java | 11 +++++++----
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index f5217b7dbe86..884f82ed94a2 100644
---
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -1242,6 +1242,18 @@ public class CamelCatalogTest {
assertEquals("$.store.book[?(@.price < 10)]", result.getText());
}
+ @Test
+ public void testValidateSimpleJSonPathFunction() {
+ // CAMEL-24585: a simple expression that delegates to the jsonpath
language must validate
+ // even though the tooling uses a bare CamelContext without a type
converter
+ LanguageValidationResult result =
catalog.validateLanguageExpression(null, "simple", "${jsonpath($.foo)}");
+ assertTrue(result.isSuccess());
+ assertEquals("${jsonpath($.foo)}", result.getText());
+
+ result = catalog.validateLanguagePredicate(null, "simple",
"${jsonpath($.store.book[?(@.price < 10)])} != null");
+ assertTrue(result.isSuccess());
+ }
+
@Test
public void testValidateJQLanguage() {
LanguageValidationResult result =
catalog.validateLanguagePredicate(null, "jq", ".foo == \"bar\"");
diff --git
a/core/camel-support/src/main/java/org/apache/camel/support/LanguageSupport.java
b/core/camel-support/src/main/java/org/apache/camel/support/LanguageSupport.java
index 0794b2d22d20..dd7125bd096f 100644
---
a/core/camel-support/src/main/java/org/apache/camel/support/LanguageSupport.java
+++
b/core/camel-support/src/main/java/org/apache/camel/support/LanguageSupport.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContextAware;
import org.apache.camel.ExpressionIllegalSyntaxException;
import org.apache.camel.IsSingleton;
import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.TypeConverter;
import org.apache.camel.spi.Language;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.TimeUtils;
@@ -176,11 +177,13 @@ public abstract class LanguageSupport implements
Language, IsSingleton, CamelCon
if (value == null) {
return null;
}
- if (camelContext != null) {
- return camelContext.getTypeConverter().convertTo(type, value);
- } else {
- return (T) value;
+ TypeConverter converter = camelContext != null ?
camelContext.getTypeConverter() : null;
+ if (converter != null) {
+ return converter.convertTo(type, value);
}
+ // no type converter is available (e.g. when using a bare CamelContext
for tooling/validation
+ // that has not been initialized) so return the value as-is
+ return (T) value;
}
}