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)