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/30 16:43:38 UTC

[camel] 01/02: CAMEL-17400: camel-java-dsl - Add source line number to loaded model. WIP

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 <cl...@gmail.com>
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;
+            }
+        };
+    }
 }