This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch java-dsl-linenumber in repository https://gitbox.apache.org/repos/asf/camel.git
commit 289088c7eb15b9a8f4ce60694c1c1caa216362c5 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Dec 30 17:42:02 2021 +0100 CAMEL-17400: camel-java-dsl - Add source line number to loaded model. WIP --- .../java/org/apache/camel/maven/GenerateMojo.java | 18 ++++++++++++++++-- .../apache/camel/model/RouteDefinitionHelper.java | 17 +++-------------- .../org/apache/camel/support/ResourceHelper.java | 20 ++++++++++++++++++++ 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/catalog/camel-java-dsl-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java b/catalog/camel-java-dsl-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java index 4faa002..70f237d 100644 --- a/catalog/camel-java-dsl-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java +++ b/catalog/camel-java-dsl-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java @@ -21,8 +21,10 @@ import java.io.IOError; import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; +import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Set; import org.apache.camel.language.csimple.CSimpleCodeGenerator; @@ -140,11 +142,23 @@ public class GenerateMojo extends AbstractExecMojo { if (!nodes.isEmpty()) { getLog().info("Discovered " + classes + " Java DSL classes"); + Map<String, String> data = new HashMap<>(); + for (CamelNodeDetails node : nodes) { String fqn = node.getClassName(); - String tree = node.dump(0); - String text = "# " + GENERATED_MSG + "\n" + tree; String fileName = fqn + ".dump"; + String text = node.dump(0); + if (data.containsKey(fileName)) { + String old = data.get(fileName); + text = old + "\n" + text; + } + data.put(fileName, text); + } + + for (Map.Entry<String, String> entry : data.entrySet()) { + String fileName = entry.getKey(); + String text = entry.getValue(); + text = "# " + GENERATED_MSG + "\n" + text; outputResourceDir.mkdirs(); boolean saved = updateResource(outputResourceDir.toPath().resolve(fileName), text); if (saved) { diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java index cca3a7a..4da054d 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java @@ -41,6 +41,7 @@ import org.apache.camel.model.rest.VerbDefinition; import org.apache.camel.spi.Resource; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.EndpointHelper; +import org.apache.camel.support.ResourceHelper; import org.apache.camel.support.ResourceSupport; import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; @@ -775,7 +776,7 @@ public final class RouteDefinitionHelper { try { String lines = IOHelper.loadText(is); Iterator<String> it = Arrays.stream(lines.split("\n")).iterator(); - // skip first two lines + // skip first line it.next(); String first = it.next(); @@ -787,19 +788,7 @@ public final class RouteDefinitionHelper { } } if (route.getResource() == null) { - // build a pseudo resource (TODO: make as inner class) - Resource res = new ResourceSupport("class", builder.getName()) { - @Override - public boolean exists() { - return false; - } - - @Override - public InputStream getInputStream() throws IOException { - return null; - } - }; - route.setResource(res); + route.setResource(ResourceHelper.fromClass(builder)); } Iterator<ProcessorDefinition> col = ProcessorDefinitionHelper diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java index 30a1585..b8f0727 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java @@ -290,4 +290,24 @@ public final class ResourceHelper { public static Resource fromString(String location, String content) { return fromBytes(location, content.getBytes(StandardCharsets.UTF_8)); } + + /** + * Create a dummy {@link Resource} from an existing class. + * + * @param clazz the class + * @return a resource wrapping the given class. + */ + public static Resource fromClass(Class<?> clazz) { + return new ResourceSupport("class", clazz.getName()) { + @Override + public boolean exists() { + return false; + } + + @Override + public InputStream getInputStream() throws IOException { + return null; + } + }; + } }
