You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2026/10/01 06:26:33 UTC
(camel) 10/12: CAMEL-25208: camel-jbang - an XML file that is not well formed says so without the parser's position text
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 <cl...@gmail.com>
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) <no...@anthropic.com>
Signed-off-by: Claus Ibsen <cl...@gmail.com>
---
.../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 = """