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;
+ }
+ };
+ }
}