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 17:02:59 UTC
[camel] branch java-dsl-linenumber updated: 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
The following commit(s) were added to refs/heads/java-dsl-linenumber by this push:
new 70a3a3e CAMEL-17400: camel-java-dsl - Add source line number to loaded model. WIP
70a3a3e is described below
commit 70a3a3e7b086dd4a04280c7fdc311fe960deae6e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Dec 30 18:02:20 2021 +0100
CAMEL-17400: camel-java-dsl - Add source line number to loaded model. WIP
---
.../main/java/org/apache/camel/builder/AdviceWith.java | 2 +-
.../main/java/org/apache/camel/builder/RouteBuilder.java | 16 +++++++++-------
.../org/apache/camel/model/RouteDefinitionHelper.java | 15 +++++++++++----
.../java/org/apache/camel/model/RoutesDefinition.java | 4 ++--
4 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java
index 72a99e8..87ebd6c 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java
@@ -229,7 +229,7 @@ public final class AdviceWith {
// must re-prepare the merged route before it can be used
merged.markUnprepared();
- routes.prepareRoute(merged, builder.getClass());
+ routes.prepareRoute(merged, builder.getClass(), 0);
// add the new merged route
model.getRouteDefinitions().add(0, merged);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
index d6ee6f0..c203394 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -497,8 +497,9 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
populateRouteTemplates();
// ensure routes are prepared before being populated
- for (RouteDefinition route : routeCollection.getRoutes()) {
- routeCollection.prepareRoute(route, this.getClass());
+ for (int i = 0; i < routeCollection.getRoutes().size(); i++) {
+ RouteDefinition route = routeCollection.getRoutes().get(i);
+ routeCollection.prepareRoute(route, this.getClass(), i);
}
populateRoutes();
@@ -522,8 +523,9 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
populateRouteTemplates();
// ensure routes are prepared before being populated
- for (RouteDefinition route : routeCollection.getRoutes()) {
- routeCollection.prepareRoute(route, this.getClass());
+ for (int i = 0; i < routeCollection.getRoutes().size(); i++) {
+ RouteDefinition route = routeCollection.getRoutes().get(i);
+ routeCollection.prepareRoute(route, this.getClass(), i);
}
// trigger update of the routes
@@ -609,9 +611,9 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
// remember the source resource
getRouteCollection().setResource(getResource());
- for (RouteDefinition route : getRouteCollection().getRoutes()) {
- // ensure the route is prepared after configure method is complete
- getRouteCollection().prepareRoute(route, this.getClass());
+ for (int i = 0; i < routeCollection.getRoutes().size(); i++) {
+ RouteDefinition route = routeCollection.getRoutes().get(i);
+ routeCollection.prepareRoute(route, this.getClass(), i);
}
for (RouteBuilderLifecycleStrategy interceptor : lifecycleInterceptors) {
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 9a8fabf..4413ecf 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
@@ -764,7 +764,7 @@ public final class RouteDefinitionHelper {
}
}
- public static void prepareJavaDslRoute(CamelContext camelContext, RouteDefinition route, Class<?> builder) {
+ public static void prepareJavaDslRoute(CamelContext camelContext, RouteDefinition route, Class<?> builder, int index) {
String fqn = builder != null ? builder.getName() : null;
if (fqn != null) {
String name = "META-INF/services/org/apache/camel/java-dsl/" + fqn + ".dump";
@@ -773,9 +773,16 @@ public final class RouteDefinitionHelper {
try {
String lines = IOHelper.loadText(is);
Iterator<String> it = Arrays.stream(lines.split("\n")).iterator();
- // skip first line
- it.next();
- String first = it.next();
+
+ // spool forward to the route index we want
+ int pos = -1;
+ String first = "";
+ while (it.hasNext() && pos < index) {
+ first = it.next();
+ if (first.contains("\tfrom")) {
+ pos++;
+ }
+ }
if (route.getInput().getLineNumber() < 0) {
String digit = StringHelper.before(first, "\t");
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
index 1d7c873..389dd38 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
@@ -225,7 +225,7 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
return route;
}
- public void prepareRoute(RouteDefinition route, Class<?> builder) {
+ public void prepareRoute(RouteDefinition route, Class<?> builder, int index) {
if (route.isPrepared()) {
return;
}
@@ -279,7 +279,7 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
RouteDefinitionHelper.prepareRoute(getCamelContext(), route, oe, icp, ifrom, ito, oc);
// enrich the route with line number details if we have metadata when using Java compiled routes
- RouteDefinitionHelper.prepareJavaDslRoute(camelContext, route, builder);
+ RouteDefinitionHelper.prepareJavaDslRoute(camelContext, route, builder, index);
if (LOG.isDebugEnabled() && route.getAppliedRouteConfigurationIds() != null) {
LOG.debug("Route: {} is using route configurations ids: {}", route.getId(),