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 <claus.ib...@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 {