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 2021/12/14 13:25:25 UTC

[camel] 04/07: CAMEL-17331: add line number to model with camel-xml-io

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

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

commit 97d1566e7fedc1ff4a3768f6e1ddab70c6849fc2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 14 13:59:14 2021 +0100

    CAMEL-17331: add line number to model with camel-xml-io
---
 .../src/main/java/org/apache/camel/xml/in/BaseParser.java |  8 ++++----
 .../java/org/apache/camel/xml/in/ModelParserTest.java     | 15 +++++++++++++++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java
index 639c13c..8a03b2c 100644
--- a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java
+++ b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java
@@ -31,18 +31,15 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.function.Consumer;
 
+import org.apache.camel.LineNumberAware;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.xml.io.MXParser;
 import org.apache.camel.xml.io.XmlPullParser;
 import org.apache.camel.xml.io.XmlPullParserException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class BaseParser {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BaseParser.class);
-
     protected final MXParser parser;
     protected String namespace;
 
@@ -71,6 +68,9 @@ public class BaseParser {
     protected <T> T doParse(
             T definition, AttributeHandler<T> attributeHandler, ElementHandler<T> elementHandler, ValueHandler<T> valueHandler)
             throws IOException, XmlPullParserException {
+        if (definition instanceof LineNumberAware) {
+            ((LineNumberAware) definition).setLineNumber(parser.getLineNumber());
+        }
         if (definition instanceof NamespaceAware) {
             final Map<String, String> namespaces = new LinkedHashMap<>();
             for (int i = 0; i < parser.getNamespaceCount(parser.getDepth()); i++) {
diff --git a/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java b/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java
index fa80a30..61a5c26 100644
--- a/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java
+++ b/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.xml.in;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.StringReader;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -32,6 +33,7 @@ import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.model.language.XPathExpression;
 import org.apache.camel.model.rest.RestsDefinition;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -116,6 +118,19 @@ public class ModelParserTest {
         assertEquals("http://camel.apache.org/foo", namespaces.get("foo"));
     }
 
+    @Test
+    public void testLineNumber() throws Exception {
+        Path dir = getResourceFolder();
+        File file = new File(dir.toFile(), "setHeader.xml");
+        ModelParser parser = new ModelParser(new FileInputStream(file), NAMESPACE);
+        RoutesDefinition routes = parser.parseRoutesDefinition().orElse(null);
+        assertNotNull(routes);
+        RouteDefinition route = routes.getRoutes().get(0);
+        Assertions.assertEquals(22, route.getInput().getLineNumber());
+        Assertions.assertEquals(23, route.getOutputs().get(0).getLineNumber());
+        Assertions.assertEquals(26, route.getOutputs().get(1).getLineNumber());
+    }
+
     private Path getResourceFolder() {
         String url = getClass().getClassLoader().getResource("barInterceptorRoute.xml").toString();
         if (url.startsWith("file:")) {