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

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

commit 0cb31eba150f03cd5f34ab98c513fc09361264ac
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Feb 10 13:51:05 2024 +0100

    CAMEL-20406: Route scoped variables
---
 .../camel/impl/console/VariablesDevConsole.java    |  2 +-
 .../language/simple/SimpleExpressionBuilder.java   |  3 ++-
 .../camel/main/MainSupportModelConfigurer.java     |  8 +++++--
 .../jbang/core/commands/process/ListVariable.java  | 27 +++++++++++-----------
 4 files changed, 23 insertions(+), 17 deletions(-)

diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
index 4f1e95415ac..3769cd57a8e 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
@@ -39,8 +39,8 @@ public class VariablesDevConsole extends AbstractDevConsole {
 
         Set<BrowsableVariableRepository> repos = 
getCamelContext().getRegistry().findByType(BrowsableVariableRepository.class);
         for (BrowsableVariableRepository repo : repos) {
-            sb.append(String.format("Repository: %s (size: %d)", repo.getId(), 
repo.size()));
             sb.append("\n");
+            sb.append(String.format("Repository: %s (size: %d)", repo.getId(), 
repo.size()));
             for (Map.Entry<String, Object> entry : 
repo.getVariables().entrySet()) {
                 String k = entry.getKey();
                 Object v = entry.getValue();
diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
index 47fa8d95fb7..eb1e8c0ddb0 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
@@ -39,6 +39,7 @@ import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ClassicUuidGenerator;
 import org.apache.camel.support.DefaultUuidGenerator;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ExpressionAdapter;
 import org.apache.camel.support.LanguageHelper;
 import org.apache.camel.support.MessageHelper;
@@ -86,7 +87,7 @@ public final class SimpleExpressionBuilder {
                 ognl, "variableOgnl(" + ognl + ")",
                 (exchange, exp) -> {
                     String text = exp.evaluate(exchange, String.class);
-                    return exchange.getVariable(text);
+                    return ExchangeHelper.getVariable(exchange, text);
                 });
     }
 
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/MainSupportModelConfigurer.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/MainSupportModelConfigurer.java
index d6e5a91a5ad..361cacb66cb 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/MainSupportModelConfigurer.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/MainSupportModelConfigurer.java
@@ -96,8 +96,12 @@ public final class MainSupportModelConfigurer {
 
         for (String key : variableProperties.stringPropertyNames()) {
             String value = variableProperties.getProperty(key);
-            String id = StringHelper.before(key, ":", "global");
-            key = StringHelper.after(key, ":", key);
+            String id = "global";
+            if (key.startsWith("route.")) {
+                id = "route";
+                key = key.substring(6);
+                key = StringHelper.replaceFirst(key, ".", ":");
+            }
             VariableRepository repo = 
camelContext.getCamelContextExtension().getContextPlugin(VariableRepositoryFactory.class)
                     .getVariableRepository(id);
             // it may be a resource to load from disk then
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
index b19927f1bfa..177dff83302 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
@@ -81,18 +81,19 @@ public class ListVariable extends ProcessWatchCommand {
                         }
                         row.pid = Long.toString(ph.pid());
 
-                        // platform-http is special
-                        JsonObject jo = (JsonObject) root.get("variables");
-                        for (String id : jo.keySet()) {
-                            JsonArray arr = jo.getCollection(id);
-                            for (int i = 0; i < arr.size(); i++) {
-                                row = row.copy();
-                                jo = (JsonObject) arr.get(i);
-                                row.id = id;
-                                row.key = jo.getString("key");
-                                row.className = jo.getString("className");
-                                row.value = jo.get("value");
-                                rows.add(row);
+                        JsonObject jv = (JsonObject) root.get("variables");
+                        for (String id : jv.keySet()) {
+                            JsonArray arr = jv.getCollection(id);
+                            if (arr != null) {
+                                for (int i = 0; i < arr.size(); i++) {
+                                    row = row.copy();
+                                    JsonObject jo = (JsonObject) arr.get(i);
+                                    row.id = id;
+                                    row.key = jo.getString("key");
+                                    row.className = jo.getString("className");
+                                    row.value = jo.get("value");
+                                    rows.add(row);
+                                }
                             }
                         }
                     }
@@ -112,7 +113,7 @@ public class ListVariable extends ProcessWatchCommand {
                     new 
Column().header("KEY").dataAlign(HorizontalAlign.LEFT).maxWidth(50, 
OverflowBehaviour.ELLIPSIS_RIGHT)
                             .with(r -> r.key),
                     new 
Column().header("VALUE").headerAlign(HorizontalAlign.RIGHT).maxWidth(80, 
OverflowBehaviour.NEWLINE)
-                            .with(r -> r.value.toString()))));
+                            .with(this::getValue))));
         }
 
         return 0;

Reply via email to