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


The following commit(s) were added to refs/heads/main by this push:
     new a5973da  CAMEL-17405: camel-xml-io - Add source location to parsed 
models
a5973da is described below

commit a5973da385abae78d80413dde8bc922934c8f0c0
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Jan 2 11:14:39 2022 +0100

    CAMEL-17405: camel-xml-io - Add source location to parsed models
---
 .../java/org/apache/camel/xml/in/ModelParser.java  | 11 ++++
 .../java/org/apache/camel/xml/in/BaseParser.java   | 15 ++++++
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   | 58 ++++++++--------------
 .../{log4j2-test.properties => log4j2.properties}  |  0
 .../packaging/ModelXmlParserGeneratorMojo.java     |  4 ++
 5 files changed, 51 insertions(+), 37 deletions(-)

diff --git 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
index 9d96ff3..820d9f9 100644
--- 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
+++ 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
@@ -44,6 +44,17 @@ import org.apache.camel.xml.io.XmlPullParserException;
 public class ModelParser extends BaseParser {
 
     public ModelParser(
+            org.apache.camel.spi.Resource input)
+            throws IOException, XmlPullParserException {
+        super(input);
+    }
+    public ModelParser(
+            org.apache.camel.spi.Resource input,
+            String namespace)
+            throws IOException, XmlPullParserException {
+        super(input, namespace);
+    }
+    public ModelParser(
             InputStream input)
             throws IOException, XmlPullParserException {
         super(input);
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 8a03b2c..b1f8274 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
@@ -34,6 +34,7 @@ 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.spi.Resource;
 import org.apache.camel.xml.io.MXParser;
 import org.apache.camel.xml.io.XmlPullParser;
 import org.apache.camel.xml.io.XmlPullParserException;
@@ -42,6 +43,17 @@ public class BaseParser {
 
     protected final MXParser parser;
     protected String namespace;
+    protected Resource resource;
+
+    public BaseParser(Resource resource) throws IOException, 
XmlPullParserException {
+        this(resource.getInputStream(), null);
+        this.resource = resource;
+    }
+
+    public BaseParser(Resource resource, String namespace) throws IOException, 
XmlPullParserException {
+        this(resource.getInputStream(), namespace);
+        this.resource = resource;
+    }
 
     public BaseParser(InputStream input) throws IOException, 
XmlPullParserException {
         this(input, null);
@@ -70,6 +82,9 @@ public class BaseParser {
             throws IOException, XmlPullParserException {
         if (definition instanceof LineNumberAware) {
             ((LineNumberAware) 
definition).setLineNumber(parser.getLineNumber());
+            if (resource != null) {
+                ((LineNumberAware) 
definition).setLocation(resource.getLocation());
+            }
         }
         if (definition instanceof NamespaceAware) {
             final Map<String, String> namespaces = new LinkedHashMap<>();
diff --git 
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
 
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
index 27cab1d..86c4e58 100644
--- 
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
+++ 
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.dsl.xml.io;
 
-import java.io.InputStream;
-
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
@@ -48,45 +46,31 @@ public class XmlRoutesBuilderLoader extends 
RouteBuilderLoaderSupport {
             @Override
             public void configure() throws Exception {
                 // we use configure to load the routes (with namespace and 
without namespace)
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is, NAMESPACE)
-                            .parseRouteTemplatesDefinition()
-                            .ifPresent(this::setRouteTemplateCollection);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is, NAMESPACE)
-                            .parseRestsDefinition()
-                            .ifPresent(this::setRestCollection);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is, NAMESPACE)
-                            .parseRoutesDefinition()
-                            .ifPresent(this::addRoutes);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is)
-                            .parseRouteTemplatesDefinition()
-                            .ifPresent(this::setRouteTemplateCollection);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is)
-                            .parseRestsDefinition()
-                            .ifPresent(this::setRestCollection);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is)
-                            .parseRoutesDefinition()
-                            .ifPresent(this::addRoutes);
-                }
+                new ModelParser(resource, NAMESPACE)
+                        .parseRouteTemplatesDefinition()
+                        .ifPresent(this::setRouteTemplateCollection);
+                new ModelParser(resource, NAMESPACE)
+                        .parseRestsDefinition()
+                        .ifPresent(this::setRestCollection);
+                new ModelParser(resource, NAMESPACE)
+                        .parseRoutesDefinition()
+                        .ifPresent(this::addRoutes);
+                new ModelParser(resource)
+                        .parseRouteTemplatesDefinition()
+                        .ifPresent(this::setRouteTemplateCollection);
+                new ModelParser(resource)
+                        .parseRestsDefinition()
+                        .ifPresent(this::setRestCollection);
+                new ModelParser(resource)
+                        .parseRoutesDefinition()
+                        .ifPresent(this::addRoutes);
             }
 
             @Override
             public void configuration() throws Exception {
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is)
-                            .parseRouteConfigurationsDefinition()
-                            .ifPresent(this::addConfigurations);
-                }
+                new ModelParser(resource)
+                        .parseRouteConfigurationsDefinition()
+                        .ifPresent(this::addConfigurations);
             }
 
             private void addRoutes(RoutesDefinition routes) {
diff --git a/dsl/camel-xml-io-dsl/src/test/resources/log4j2-test.properties 
b/dsl/camel-xml-io-dsl/src/test/resources/log4j2.properties
similarity index 100%
rename from dsl/camel-xml-io-dsl/src/test/resources/log4j2-test.properties
rename to dsl/camel-xml-io-dsl/src/test/resources/log4j2.properties
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
index e593627..79064bd 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
@@ -224,6 +224,10 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
         parser.addImport(ArrayList.class);
         
parser.addAnnotation(SuppressWarnings.class).setLiteralValue("\"unused\"");
         parser.addAnnotation(Generated.class).setLiteralValue("\"" + 
getClass().getName() + "\"");
+        
parser.addMethod().setConstructor(true).setPublic().setName("ModelParser").addParameter("org.apache.camel.spi.Resource",
 "input").addThrows(IOException.class)
+                .addThrows(XML_PULL_PARSER_EXCEPTION).setBody("super(input);");
+        
parser.addMethod().setConstructor(true).setPublic().setName("ModelParser").addParameter("org.apache.camel.spi.Resource",
 "input").addParameter(String.class, "namespace")
+                
.addThrows(IOException.class).addThrows(XML_PULL_PARSER_EXCEPTION).setBody("super(input,
 namespace);");
         
parser.addMethod().setConstructor(true).setPublic().setName("ModelParser").addParameter(InputStream.class,
 "input").addThrows(IOException.class)
             .addThrows(XML_PULL_PARSER_EXCEPTION).setBody("super(input);");
         
parser.addMethod().setConstructor(true).setPublic().setName("ModelParser").addParameter(Reader.class,
 "reader").addThrows(IOException.class)

Reply via email to