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

[camel] 08/30: CAMEL-17384: Developer Console SPI

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

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

commit d075e06f8a525308675ff7513832db877dc05ad9
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 27 14:45:29 2021 +0100

    CAMEL-17384: Developer Console SPI
---
 .../impl/console/DefaultDevConsolesLoader.java}    | 55 +++++++++-------------
 .../impl/console/DefaultDevConsolesLoaderTest.java | 44 +++++++++++++++++
 .../impl/health/DefaultHealthChecksLoader.java     |  2 +-
 3 files changed, 67 insertions(+), 34 deletions(-)

diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
similarity index 58%
copy from core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
copy to core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
index c9efaa8..0226551 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.health;
+package org.apache.camel.impl.console;
 
 import java.util.ArrayList;
 import java.util.Collection;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.health.HealthCheck;
-import org.apache.camel.health.HealthCheckResolver;
+import org.apache.camel.console.DevConsole;
+import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.util.StringHelper;
@@ -30,47 +30,47 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * To load custom health-checks by classpath scanning.
+ * To load custom {@link org.apache.camel.console.DevConsole} by classpath scanning.
  */
-public class DefaultHealthChecksLoader {
+public class DefaultDevConsolesLoader {
 
-    public static final String META_INF_SERVICES = "META-INF/services/org/apache/camel/health-check";
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultHealthChecksLoader.class);
+    public static final String META_INF_SERVICES = "META-INF/services/org/apache/camel/dev-console";
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultDevConsolesLoader.class);
 
     protected final CamelContext camelContext;
     protected final PackageScanResourceResolver resolver;
-    protected final HealthCheckResolver healthCheckResolver;
+    protected final DevConsoleResolver devConsoleResolver;
 
-    public DefaultHealthChecksLoader(CamelContext camelContext) {
+    public DefaultDevConsolesLoader(CamelContext camelContext) {
         this.camelContext = camelContext;
         this.resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
-        this.healthCheckResolver = camelContext.adapt(ExtendedCamelContext.class).getHealthCheckResolver();
+        this.devConsoleResolver = camelContext.adapt(ExtendedCamelContext.class).getDevConsoleResolver();
     }
 
-    public Collection<HealthCheck> loadHealthChecks() {
-        Collection<HealthCheck> answer = new ArrayList<>();
+    public Collection<DevConsole> loadDevConsoles() {
+        Collection<DevConsole> answer = new ArrayList<>();
 
-        LOG.trace("Searching for {} health checks", META_INF_SERVICES);
+        LOG.trace("Searching for {} dev consoles", META_INF_SERVICES);
 
         try {
-            Collection<Resource> resources = resolver.findResources(META_INF_SERVICES + "/*-check");
+            Collection<Resource> resources = resolver.findResources(META_INF_SERVICES + "/*");
             if (LOG.isDebugEnabled()) {
-                LOG.debug("Discovered {} health checks from classpath scanning", resources.size());
+                LOG.debug("Discovered {} dev consoles from classpath scanning", resources.size());
             }
             for (Resource resource : resources) {
                 LOG.trace("Resource: {}", resource);
                 if (acceptResource(resource)) {
                     String id = extractId(resource);
-                    LOG.trace("Loading HealthCheck: {}", id);
-                    HealthCheck hc = healthCheckResolver.resolveHealthCheck(id);
-                    if (hc != null) {
-                        LOG.debug("Loaded HealthCheck: {}/{}", hc.getGroup(), hc.getId());
-                        answer.add(hc);
+                    LOG.trace("Loading DevConsole: {}", id);
+                    DevConsole dc = devConsoleResolver.resolveDevConsole(id);
+                    if (dc != null) {
+                        LOG.debug("Loaded DevConsole: {}/{}", dc.getGroup(), dc.getId());
+                        answer.add(dc);
                     }
                 }
             }
         } catch (Exception e) {
-            LOG.warn("Error during scanning for custom health-checks on classpath due to: " + e.getMessage()
+            LOG.warn("Error during scanning for custom dev-consoles on classpath due to: " + e.getMessage()
                      + ". This exception is ignored.");
         }
 
@@ -82,23 +82,12 @@ public class DefaultHealthChecksLoader {
         if (loc == null) {
             return false;
         }
-
-        // this is an out of the box health-check
-        if (loc.endsWith("context-check")) {
-            return false;
-        }
-
         return true;
     }
 
     protected String extractId(Resource resource) {
         String loc = resource.getLocation();
-        loc = StringHelper.after(loc, META_INF_SERVICES + "/");
-        // remove -check suffix
-        if (loc != null && loc.endsWith("-check")) {
-            loc = loc.substring(0, loc.length() - 6);
-        }
-        return loc;
+        return StringHelper.after(loc, META_INF_SERVICES + "/");
     }
 
 }
diff --git a/core/camel-console/src/test/java/org/apache/camel/impl/console/DefaultDevConsolesLoaderTest.java b/core/camel-console/src/test/java/org/apache/camel/impl/console/DefaultDevConsolesLoaderTest.java
new file mode 100644
index 0000000..759a868
--- /dev/null
+++ b/core/camel-console/src/test/java/org/apache/camel/impl/console/DefaultDevConsolesLoaderTest.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.impl.console;
+
+import java.util.Collection;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.console.DevConsole;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class DefaultDevConsolesLoaderTest extends ContextTestSupport {
+
+    @Test
+    public void testLoader() throws Exception {
+        DefaultDevConsolesLoader loader = new DefaultDevConsolesLoader(context);
+        Collection<DevConsole> col = loader.loadDevConsoles();
+        Assertions.assertEquals(1, col.size());
+
+        DevConsole con = col.iterator().next();
+        Assertions.assertNotNull(con);
+        Assertions.assertEquals("camel", con.getGroup());
+        Assertions.assertEquals("context", con.getId());
+
+        String out = (String) con.call(DevConsole.MediaType.TEXT);
+        Assertions.assertNotNull(out);
+        log.info(out);
+        Assertions.assertTrue(out.contains(context.getName()));
+    }
+}
diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
index c9efaa8..069f838 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
+++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
@@ -30,7 +30,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * To load custom health-checks by classpath scanning.
+ * To load custom {@link HealthCheck} by classpath scanning.
  */
 public class DefaultHealthChecksLoader {