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/12/30 15:15:15 UTC

(camel) 18/25: CAMEL-19749: Add variables as concept to Camel

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

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

commit 7e55671cd8bbd55fae43e7b80a0edd077b8a4b0d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Dec 30 13:21:32 2023 +0100

    CAMEL-19749: Add variables as concept to Camel
---
 .../java/org/apache/camel/spi/VariableRepositoryFactory.java     | 4 ++--
 .../camel/impl/engine/DefaultVariableRepositoryFactory.java      | 3 ++-
 .../java/org/apache/camel/impl/console/VariablesDevConsole.java  | 9 +++++++--
 .../org/apache/camel/processor/CustomGlobalVariableTest.java     | 4 ++--
 4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/VariableRepositoryFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/VariableRepositoryFactory.java
index 6928e343f84..00344d23f3c 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/VariableRepositoryFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/VariableRepositoryFactory.java
@@ -22,9 +22,9 @@ package org.apache.camel.spi;
 public interface VariableRepositoryFactory {
 
     /**
-     * ID for custom global {@link VariableRepository}.
+     * Registry bean id for global {@link VariableRepository}.
      */
-    String GLOBAL_VARIABLE_FACTORY_ID = "global-variable-repository";
+    String GLOBAL_VARIABLE_REPOSITORY_ID = "global-variable-repository";
 
     /**
      * Gets the {@link VariableRepository} for the given id
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultVariableRepositoryFactory.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultVariableRepositoryFactory.java
index 1c4a65569b4..5353c4ac3fd 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultVariableRepositoryFactory.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultVariableRepositoryFactory.java
@@ -79,12 +79,13 @@ public class DefaultVariableRepositoryFactory extends ServiceSupport implements
     protected void doStart() throws Exception {
         super.doStart();
 
-        VariableRepository repo = CamelContextHelper.lookup(camelContext, GLOBAL_VARIABLE_FACTORY_ID, VariableRepository.class);
+        VariableRepository repo = CamelContextHelper.lookup(camelContext, GLOBAL_VARIABLE_REPOSITORY_ID, VariableRepository.class);
         if (repo != null) {
             LOG.info("Using VariableRepository: {} as global repository", repo.getId());
             global = repo;
         } else {
             global = new GlobalVariableRepository();
+            camelContext.getRegistry().bind(GLOBAL_VARIABLE_REPOSITORY_ID, global);
         }
 
         if (!camelContext.hasService(global)) {
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 a25e0a103eb..87018f3bf9a 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,12 +39,13 @@ public class VariablesDevConsole extends AbstractDevConsole {
 
         Set<BrowsableVariableRepository> repos = getCamelContext().getRegistry().findByType(BrowsableVariableRepository.class);
         for (BrowsableVariableRepository repo : repos) {
-            sb.append(String.format("Variable repository: %s (size: %n)", repo.getId(), repo.size()));
+            sb.append(String.format("Repository: %s (size: %d)", repo.getId(), repo.size()));
             sb.append("\n");
             for (Map.Entry<String, Object> entry : repo.getVariables().entrySet()) {
                 String k = entry.getKey();
                 Object v = entry.getValue();
-                sb.append(String.format("\n    %s = %s", k, v));
+                String t = v != null ? v.getClass().getName() : "<null>";
+                sb.append(String.format("\n    %s (%s) = %s", k, t, v));
             }
             sb.append("\n");
         }
@@ -66,9 +67,13 @@ public class VariablesDevConsole extends AbstractDevConsole {
             for (Map.Entry<String, Object> entry : repo.getVariables().entrySet()) {
                 String k = entry.getKey();
                 Object v = entry.getValue();
+                String t = v != null ? v.getClass().getName() : null;
                 JsonObject e = new JsonObject();
                 e.put("key", k);
                 e.put("value", v);
+                if (t != null) {
+                    e.put("className", t);
+                }
                 arr.add(e);
             }
             if (!arr.isEmpty()) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/CustomGlobalVariableTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/CustomGlobalVariableTest.java
index ad5b4a0a8d4..609ed161d27 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/CustomGlobalVariableTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/CustomGlobalVariableTest.java
@@ -28,7 +28,7 @@ import org.apache.camel.support.service.ServiceSupport;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.apache.camel.spi.VariableRepositoryFactory.GLOBAL_VARIABLE_FACTORY_ID;
+import static org.apache.camel.spi.VariableRepositoryFactory.GLOBAL_VARIABLE_REPOSITORY_ID;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
@@ -40,7 +40,7 @@ public class CustomGlobalVariableTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getRegistry().bind(GLOBAL_VARIABLE_FACTORY_ID, new MyGlobalRepo());
+        context.getRegistry().bind(GLOBAL_VARIABLE_REPOSITORY_ID, new MyGlobalRepo());
         return context;
     }