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

davsclaus pushed a commit to branch feature/CAMEL-25208-code-assist
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 523be67ca1f8b6b8af9ad2daf6fba9dd2678240a
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Sep 30 23:18:29 2026 +0200

    CAMEL-25208: camel-jbang - an XML file that is not well formed says so 
without the parser's position text
    
    Found testing in the TUI: the message of an XML route file that does not
    parse ended with the parser's "(position: TEXT seen ... @11:9)", which
    the line of the diagnostic already says.
    
    Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../camel/dsl/jbang/core/commands/ai/RouteModel.java      |  5 ++++-
 .../camel/dsl/jbang/core/commands/ai/RouteAssistTest.java | 15 +++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteModel.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteModel.java
index bce759548ada..57c60bf10132 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteModel.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteModel.java
@@ -238,7 +238,10 @@ public final class RouteModel {
     private static String firstLine(Throwable e) {
         String msg = String.valueOf(e.getMessage());
         int nl = msg.indexOf('\n');
-        return nl > 0 ? msg.substring(0, nl).trim() : msg.trim();
+        msg = nl > 0 ? msg.substring(0, nl).trim() : msg.trim();
+        // the parser appends where it is ("(position: TEXT seen 
...</roues>... @11:9)"), which the line already says
+        int position = msg.indexOf(" (position:");
+        return position > 0 ? msg.substring(0, position) : msg;
     }
 
     /** The local name and the default namespace of the root element; null 
when there is none. */
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteAssistTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteAssistTest.java
index 015e7ac22f5c..94acb8b75f63 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteAssistTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ai/RouteAssistTest.java
@@ -342,6 +342,21 @@ class RouteAssistTest {
         assertThat(errors.get(0).message()).contains("fitler");
     }
 
+    @Test
+    void anXmlFileThatIsNotWellFormed() {
+        String xml = """
+                <routes xmlns="http://camel.apache.org/schema/xml-io";>
+                    <route>
+                        <from uri="timer:tick"/>
+                    </route>
+                </roues>
+                """;
+        List<Diagnostic> errors = errors("routes.xml", xml);
+        assertThat(errors).hasSize(1);
+        assertThat(errors.get(0).line()).isEqualTo(5);
+        
assertThat(errors.get(0).message()).contains("</roues>").doesNotContain("position:");
+    }
+
     @Test
     void aSpringXmlFileIsNotRead() {
         String xml = """

Reply via email to