This is an automated email from the ASF dual-hosted git repository.

luigidemasi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 03d215da95cf3119035e0a58c77195e12b6394f4
Author: Luigi De Masi <[email protected]>
AuthorDate: Wed Oct 7 20:10:37 2026 +0200

    CAMEL-25382: Address semantic validation review nits
    
    Recognize the stable missing-dependency phrase in JBang diagnostics instead
    of requiring the entire error message. Cover changed surrounding wording
    through the source validator while preserving malformed-argument checks.
    
    Explain why the concurrent registry test returns no lazy plugin: it allows
    SemanticEvaluations.get() to create and register the instance under test.
    
    Co-authored-by: Codex <[email protected]>
    Signed-off-by: Luigi De Masi <[email protected]>
---
 .../camel/semantic/SemanticInitializationTest.java |  1 +
 .../dsl/jbang/core/commands/ai/SimpleChecks.java   |  2 +-
 .../commands/ai/SourceValidatorSimpleTest.java     | 23 +++++++++++++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git 
a/components/camel-ai/camel-semantic/src/test/java/org/apache/camel/semantic/SemanticInitializationTest.java
 
b/components/camel-ai/camel-semantic/src/test/java/org/apache/camel/semantic/SemanticInitializationTest.java
index 12ccaabcd399..ef47233e353f 100644
--- 
a/components/camel-ai/camel-semantic/src/test/java/org/apache/camel/semantic/SemanticInitializationTest.java
+++ 
b/components/camel-ai/camel-semantic/src/test/java/org/apache/camel/semantic/SemanticInitializationTest.java
@@ -91,6 +91,7 @@ class SemanticInitializationTest {
                     Thread.currentThread().interrupt();
                     throw new IllegalStateException(e);
                 }
+                // Leave the plugin absent so get() creates and registers it 
after this lookup is released.
                 return null;
             });
             var creation = callers.submit(() -> 
SemanticEvaluations.get(creating));
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/SimpleChecks.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/SimpleChecks.java
index 5d71ae876aab..77425ddd647c 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/SimpleChecks.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/SimpleChecks.java
@@ -223,7 +223,7 @@ final class SimpleChecks {
 
     static boolean isMissingDependency(String error) {
         return error.startsWith("No language could be found for:")
-                || error.equals("The semantic function requires camel-semantic 
on the classpath")
+                || error.contains("requires camel-semantic")
                 || error.startsWith("No " + 
SimpleLanguageFunctionFactory.FACTORY + "/")
                         && error.contains("service could be found in the 
classpath");
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/SourceValidatorSimpleTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/SourceValidatorSimpleTest.java
index 13a0917d8020..9a16a68d2368 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/SourceValidatorSimpleTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/SourceValidatorSimpleTest.java
@@ -20,6 +20,7 @@ import java.util.List;
 
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
+import org.apache.camel.catalog.LanguageValidationResult;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
@@ -255,10 +256,30 @@ class SourceValidatorSimpleTest {
         assertThat(msgs).isEmpty();
     }
 
+    @Test
+    void semanticDependencyDetectionToleratesSurroundingDiagnosticChanges() {
+        CamelCatalog changedDiagnostic = new DefaultCamelCatalog() {
+            @Override
+            public LanguageValidationResult 
validateLanguageExpression(ClassLoader classLoader, String language, String 
text) {
+                LanguageValidationResult result = new 
LanguageValidationResult(text);
+                result.setError("Semantic evaluation requires camel-semantic; 
add the dependency to use this function");
+                return result;
+            }
+        };
+        List<String> msgs = SourceValidator.validateYamlSimple("""
+                - from:
+                    uri: direct:start
+                    steps:
+                      - setBody:
+                          simple: "${semantic('department')}"
+                """, changedDiagnostic);
+        assertThat(msgs).isEmpty();
+    }
+
     @Test
     void semanticExpressionsAndPredicatesDoNotRequireTheRuntimeDependency() {
         assertThat(catalog.validateLanguageExpression(null, "simple", 
"${semantic('department')}").getShortError())
-                .isEqualTo("The semantic function requires camel-semantic on 
the classpath");
+                .contains("requires camel-semantic");
         List<String> msgs = SourceValidator.validateYamlSimple("""
                 - from:
                     uri: direct:start

Reply via email to