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:")) {