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:01 UTC

[camel] 01/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 7dc9b6ea4be62af9eaadebee93fec7befac26e34
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Dec 26 10:30:42 2021 +0100

    CAMEL-17383: camel-management - Add operations to list the registered components, data formats and languages
---
 .../main/java/org/apache/camel/CamelContext.java   |  4 +---
 .../camel/impl/lw/LightweightCamelContext.java     |  1 -
 .../management/mbean/ManagedCamelContextMBean.java | 13 +++++++++++
 .../management/mbean/ManagedCamelContext.java      | 10 +++++++++
 .../camel/management/ManagedCamelContextTest.java  | 25 ++++++++++++++++++++++
 5 files changed, 49 insertions(+), 4 deletions(-)

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 c9116f4..ec39a5b 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
@@ -788,10 +788,8 @@ public interface CamelContext extends CamelContextLifecycle, RuntimeConfiguratio
     /**
      * Gets a readonly list with the names of the languages currently registered.
      *
-     * @return     a readonly list with the names of the languages
-     * @deprecated not in use
+     * @return a readonly list with the names of the languages
      */
-    @Deprecated
     Set<String> getLanguageNames();
 
     /**
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 5c1732c..a2b5772 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
@@ -665,7 +665,6 @@ public class LightweightCamelContext implements ExtendedCamelContext, CatalogCam
     }
 
     @Override
-    @Deprecated
     public Set<String> getLanguageNames() {
         return delegate.getLanguageNames();
     }
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 b2470b3..5cf1e17 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
@@ -17,6 +17,7 @@
 package org.apache.camel.api.management.mbean;
 
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.api.management.ManagedAttribute;
@@ -236,4 +237,16 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedOperation(description = "Reset counters")
     void reset(boolean includeRoutes) throws Exception;
 
+    /**
+     * The names of the components currently registered
+     */
+    @ManagedOperation(description = "The names of the components currently registered")
+    Set<String> componentNames() throws Exception;
+
+    /**
+     * The names of the languages currently registered
+     */
+    @ManagedOperation(description = "The names of the languages currently registered")
+    Set<String> languageNames() 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 e3808f5..49e0fac 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
@@ -731,6 +731,16 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
         }
     }
 
+    @Override
+    public Set<String> componentNames() throws Exception {
+        return context.getComponentNames();
+    }
+
+    @Override
+    public Set<String> languageNames() throws Exception {
+        return context.getLanguageNames();
+    }
+
     /**
      * 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 bc2d07b..576a0e5 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
@@ -18,6 +18,7 @@ package org.apache.camel.management;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -28,6 +29,7 @@ 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.engine.ExplicitCamelContextNameStrategy;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 import org.junit.jupiter.api.condition.OS;
@@ -212,6 +214,29 @@ public class ManagedCamelContextTest extends ManagementTestSupport {
         assertFalse(registered, "Should not be registered " + seda);
     }
 
+    @Test
+    public void testLanguageNames() throws Exception {
+        MBeanServer mbeanServer = getMBeanServer();
+        ObjectName on = getContextObjectName();
+
+        Set<String> names = (Set<String>) mbeanServer.invoke(on, "languageNames", null, null);
+        Assertions.assertEquals(2, names.size());
+        Assertions.assertTrue(names.contains("constant"));
+        Assertions.assertTrue(names.contains("simple"));
+    }
+
+    @Test
+    public void testComponentNames() throws Exception {
+        MBeanServer mbeanServer = getMBeanServer();
+        ObjectName on = getContextObjectName();
+
+        Set<String> names = (Set<String>) mbeanServer.invoke(on, "componentNames", null, null);
+        Assertions.assertEquals(3, names.size());
+        Assertions.assertTrue(names.contains("direct"));
+        Assertions.assertTrue(names.contains("mock"));
+        Assertions.assertTrue(names.contains("seda"));
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {