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 2023/11/28 11:43:52 UTC

(camel) 05/10: CAMEL-20153: camel-jbang - Transform message command

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch tm3
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 148a67ec6f0ca61e0407ce629fa52757df2d4493
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Nov 28 09:34:55 2023 +0100

    CAMEL-20153: camel-jbang - Transform message command
---
 .../camel/cli/connector/LocalCliConnector.java     | 16 +++++++++++--
 .../apache/camel/cli/connector/LoggerHelper.java   | 27 ++++++++++++++++++++++
 2 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index 23437a49d8a..05fd8cfe7f5 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -303,6 +303,12 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
         Exchange out = camelContext.getCamelContextExtension().getExchangeFactory().create(false);
         try {
             if (source != null) {
+                LOG.warn("Source: {}", source);
+
+                Integer line = LoggerHelper.extractSourceLocationLineNumber(source);
+                source = LoggerHelper.stripSourceLocationLineNumber(source);
+                LOG.warn("Source: {} line: {}", source, line);
+
                 boolean update = true;
                 File f = new File(source);
                 if (f.isFile() && f.exists()) {
@@ -330,7 +336,6 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
 
                     LOG.info("Updated routes: {}", ids);
 
-                    // TODO: find line location that matches, or use last expression
                     Model mcc = camelContext.getCamelContextExtension().getContextPlugin(Model.class);
                     ExpressionDefinition found = null;
                     for (String id : ids) {
@@ -340,7 +345,14 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
                                         ProcessorDefinition.class);
                         for (ProcessorDefinition p : defs) {
                             if (p instanceof HasExpressionType et) {
-                                found = et.getExpressionType();
+                                if (line == null) {
+                                    found = et.getExpressionType();
+                                } else {
+                                    LOG.warn("Candidate at line {} target line: {}", p.getLineNumber(), line);
+                                    if (p.getLineNumber() == -1 || p.getLineNumber() <= line) {
+                                        found = et.getExpressionType();
+                                    }
+                                }
                             }
                         }
                     }
diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LoggerHelper.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LoggerHelper.java
index 82e899238e3..05c6a6fd6ef 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LoggerHelper.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LoggerHelper.java
@@ -23,6 +23,8 @@ import javax.management.Attribute;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
+import org.apache.camel.util.StringHelper;
+
 /**
  * Helper for logger action.
  *
@@ -70,4 +72,29 @@ public final class LoggerHelper {
         }
     }
 
+    public static String stripSourceLocationLineNumber(String location) {
+        int cnt = StringHelper.countChar(location, ':');
+        if (cnt >= 1) {
+            int pos = location.lastIndexOf(':');
+            return location.substring(0, pos);
+        } else {
+            return location;
+        }
+    }
+
+    public static Integer extractSourceLocationLineNumber(String location) {
+        int cnt = StringHelper.countChar(location, ':');
+        if (cnt >= 1) {
+            int pos = location.lastIndexOf(':');
+            String num = location.substring(pos + 1);
+            try {
+                return Integer.valueOf(num);
+            } catch (Exception var5) {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+
 }