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 {