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 2021/12/26 09:41:02 UTC

[camel] 02/02: CAMEL-17383: camel-management - Add operations to list the registered components, data formats and languages

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

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

commit c0a2cce909fe8ca7cfca8c480ee9e0190ada9254
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Dec 26 10:40:05 2021 +0100

    CAMEL-17383: camel-management - Add operations to list the registered components, data formats and languages
---
 .../src/main/java/org/apache/camel/CamelContext.java     |  7 +++++++
 .../apache/camel/impl/engine/AbstractCamelContext.java   |  5 +++++
 .../apache/camel/impl/lw/LightweightCamelContext.java    |  5 +++++
 .../camel/impl/lw/LightweightRuntimeCamelContext.java    |  5 +++++
 .../api/management/mbean/ManagedCamelContextMBean.java   |  6 ++++++
 .../camel/management/mbean/ManagedCamelContext.java      |  5 +++++
 .../apache/camel/management/ManagedCamelContextTest.java | 16 ++++++++++++++++
 7 files changed, 49 insertions(+)

diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
index ec39a5b..74138f6 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -917,6 +917,13 @@ public interface CamelContext extends CamelContextLifecycle, RuntimeConfiguratio
     DataFormat createDataFormat(String name);
 
     /**
+     * Gets a readonly list of names of the data formats currently registered
+     *
+     * @return a readonly list with the names of the data formats
+     */
+    Set<String> getDataFormatNames();
+
+    /**
      * Resolve a transformer given a scheme
      *
      * @param  model data model name.
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 47f50f8..df4e243 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -4345,6 +4345,11 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     @Override
+    public Set<String> getDataFormatNames() {
+        return Collections.unmodifiableSet(dataformats.keySet());
+    }
+
+    @Override
     public HealthCheckResolver getHealthCheckResolver() {
         if (healthCheckResolver == null) {
             synchronized (lock) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
index a2b5772..8fc20d9 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
@@ -710,6 +710,11 @@ public class LightweightCamelContext implements ExtendedCamelContext, CatalogCam
     }
 
     @Override
+    public Set<String> getDataFormatNames() {
+        return delegate.getDataFormatNames();
+    }
+
+    @Override
     public Transformer resolveTransformer(String model) {
         return delegate.resolveTransformer(model);
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index 0c6a135..55d7836 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -1011,6 +1011,11 @@ public class LightweightRuntimeCamelContext implements ExtendedCamelContext, Cat
     }
 
     @Override
+    public Set<String> getDataFormatNames() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public Transformer resolveTransformer(String model) {
         throw new UnsupportedOperationException();
     }
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
index 5cf1e17..ef78ac3 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
@@ -249,4 +249,10 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedOperation(description = "The names of the languages currently registered")
     Set<String> languageNames() throws Exception;
 
+    /**
+     * The names of the data formats currently registered
+     */
+    @ManagedOperation(description = "The names of the data formats currently registered")
+    Set<String> dataFormatNames() throws Exception;
+
 }
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
index 49e0fac..3ec68aa 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
@@ -741,6 +741,11 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
         return context.getLanguageNames();
     }
 
+    @Override
+    public Set<String> dataFormatNames() throws Exception {
+        return context.getDataFormatNames();
+    }
+
     /**
      * Used for sorting the processor mbeans accordingly to their index.
      */
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
index 576a0e5..457d2d0 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
@@ -28,7 +28,9 @@ import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.RefDataFormatTest;
 import org.apache.camel.impl.engine.ExplicitCamelContextNameStrategy;
+import org.apache.camel.spi.DataFormat;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
@@ -237,6 +239,20 @@ public class ManagedCamelContextTest extends ManagementTestSupport {
         Assertions.assertTrue(names.contains("seda"));
     }
 
+    @Test
+    public void testDataFormatNames() throws Exception {
+        context.getRegistry().bind("reverse", new RefDataFormatTest.MyReverseDataFormat());
+        DataFormat df = context.resolveDataFormat("reverse");
+        assertNotNull(df);
+
+        MBeanServer mbeanServer = getMBeanServer();
+        ObjectName on = getContextObjectName();
+
+        Set<String> names = (Set<String>) mbeanServer.invoke(on, "dataFormatNames", null, null);
+        Assertions.assertEquals(1, names.size());
+        Assertions.assertTrue(names.contains("reverse"));
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {