This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch pr/CAMEL-24698-catalog-bean-function in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7c3476cb20ce2ddb664aff76d8e84a07e67a432e Author: Claus Ibsen <[email protected]> AuthorDate: Sun Sep 13 15:09:08 2026 +0200 CAMEL-24698: camel-catalog - the Simple bean function validates without a registry Squash of the 1 commits on fix/CAMEL-24698-catalog-bean-function (the run-by-run history is on bench/after-run). camel-core-catalog - validating a simple expression must not report a ${bean:...} lookup as an error Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01Bp3538HRBPMQkb5ta9xRaj --- .../test/java/org/apache/camel/catalog/CamelCatalogTest.java | 12 ++++++++++++ .../org/apache/camel/catalog/impl/AbstractCamelCatalog.java | 7 +++++++ 2 files changed, 19 insertions(+) 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 06f7114c03f4..e3a682bc4068 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 @@ -1233,6 +1233,18 @@ public class CamelCatalogTest { assertEquals(22, result.getIndex()); } + @Test + public void testSimpleBeanFunctionIsNotALookupAtValidationTime() { + // the bean is only known at runtime; the validator has no registry and must not report it as missing + LanguageValidationResult result = catalog.validateLanguageExpression(null, "simple", "${bean:myBean.count}"); + assertTrue(result.isSuccess(), result.getError()); + result = catalog.validateLanguagePredicate(null, "simple", "${bean:myBean?method=isReady} == true"); + assertTrue(result.isSuccess(), result.getError()); + // a real syntax error next to it is still reported + result = catalog.validateLanguageExpression(null, "simple", "${bean:myBean.count"); + assertFalse(result.isSuccess()); + } + @Test public void testPredicatePlaceholder() { LanguageValidationResult result = catalog.validateLanguagePredicate(null, "simple", "${body} contains '{{danger}}'"); diff --git a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java index a03a189e4553..a92b4c9d9590 100644 --- a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java +++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java @@ -1493,6 +1493,13 @@ public abstract class AbstractCamelCatalog { cause = e; } + if (cause != null && cause.getMessage() != null + && cause.getMessage().contains("No bean could be found in the registry")) { + // ${bean:name...} looks the bean up when the expression is created; there is no registry here, so + // the lookup cannot say anything about the syntax, which is what this validates (CAMEL-24698) + cause = null; + } + if (cause != null) { // reverse the dummy placeholders back to {{XXX}}
