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:19 UTC
(camel) 22/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 64febd93924dc0d18ff9c930e4634271c36422e0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Dec 30 14:18:08 2023 +0100
CAMEL-19749: Add variables as concept to Camel
---
.../api/management/mbean/CamelOpenMBeanTypes.java | 13 ++++++
.../mbean/ManagedVariableRepositoryMBean.java | 5 +++
.../mbean/ManagedVariableRepository.java | 47 ++++++++++++++++++++++
3 files changed, 65 insertions(+)
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
index 93b01ebd60d..a89c5100773 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
@@ -295,4 +295,17 @@ public final class CamelOpenMBeanTypes {
SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING });
}
+ public static CompositeType camelVariablesCompositeType() throws OpenDataException {
+ return new CompositeType(
+ "variables", "Variables",
+ new String[] { "id", "key", "className", "value" },
+ new String[] { "Id", "Key", "className", "Value" },
+ new OpenType[] { SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING });
+ }
+
+ public static TabularType camelVariablesTabularType() throws OpenDataException {
+ CompositeType ct = camelVariablesCompositeType();
+ return new TabularType("variables", "Variables", ct, new String[] { "id", "key" });
+ }
+
}
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedVariableRepositoryMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedVariableRepositoryMBean.java
index afcd503e8ee..8614f2b812c 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedVariableRepositoryMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedVariableRepositoryMBean.java
@@ -21,6 +21,8 @@ import java.util.Set;
import org.apache.camel.api.management.ManagedAttribute;
import org.apache.camel.api.management.ManagedOperation;
+import javax.management.openmbean.TabularData;
+
public interface ManagedVariableRepositoryMBean extends ManagedServiceMBean {
@ManagedAttribute(description = "Repository ID")
@@ -35,4 +37,7 @@ public interface ManagedVariableRepositoryMBean extends ManagedServiceMBean {
@ManagedOperation(description = "Variable names")
Set<String> names();
+ @ManagedOperation(description = "List all variables")
+ TabularData variables();
+
}
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedVariableRepository.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedVariableRepository.java
index eef3e4c8306..ecf42907f5e 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedVariableRepository.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedVariableRepository.java
@@ -16,14 +16,23 @@
*/
package org.apache.camel.management.mbean;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.camel.CamelContext;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
import org.apache.camel.api.management.mbean.ManagedVariableRepositoryMBean;
import org.apache.camel.spi.BrowsableVariableRepository;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+
@ManagedResource(description = "Managed VariableRepository")
public class ManagedVariableRepository extends ManagedService implements ManagedVariableRepositoryMBean {
private final BrowsableVariableRepository variableRepository;
@@ -56,4 +65,42 @@ public class ManagedVariableRepository extends ManagedService implements Managed
public Set<String> names() {
return variableRepository.names().collect(Collectors.toSet());
}
+
+ @Override
+ public TabularData variables() {
+ try {
+ final TabularData answer = new TabularDataSupport(CamelOpenMBeanTypes.camelVariablesTabularType());
+ final CompositeType type = CamelOpenMBeanTypes.camelVariablesCompositeType();
+
+ for (Map.Entry<String, Object> entry : variableRepository.getVariables().entrySet()) {
+ String key = entry.getKey();
+ String className = entry.getValue() != null ? entry.getValue().getClass().getName() : "";
+ String value = entry.getValue() != null ? entry.getValue().toString() : "";
+ if (value.length() > 1000) {
+ value = value.substring(0, 1000) + "...";
+ }
+
+ CompositeData data = new CompositeDataSupport(
+ type,
+ new String[] {
+ "id",
+ "key",
+ "className",
+ "value",
+ },
+ new Object[] {
+ getId(),
+ key,
+ className,
+ value
+ });
+ answer.put(data);
+ }
+
+ return answer;
+ } catch (Exception e) {
+ throw RuntimeCamelException.wrapRuntimeCamelException(e);
+ }
+ }
+
}