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;