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 a0308861727f54a113e5eaa05f860436b1c044b6 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Dec 27 15:55:00 2021 +0100 CAMEL-17384: Developer Console SPI --- .../apache/camel/impl/engine/AbstractCamelContext.java | 16 ++++++++++++++++ .../org/apache/camel/impl/engine/SimpleCamelContext.java | 12 ++++++++++++ .../org/apache/camel/dev-console/default-registry | 2 ++ .../camel/impl/console/DefaultDevConsoleRegistry.java | 10 +++++----- 4 files changed, 35 insertions(+), 5 deletions(-) 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 1d9ff77..31306c3 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 @@ -80,6 +80,7 @@ import org.apache.camel.TypeConverter; import org.apache.camel.VetoCamelContextStartException; import org.apache.camel.api.management.JmxSystemPropertyKeys; import org.apache.camel.catalog.RuntimeCamelCatalog; +import org.apache.camel.console.DevConsoleRegistry; import org.apache.camel.console.DevConsoleResolver; import org.apache.camel.health.HealthCheckRegistry; import org.apache.camel.health.HealthCheckResolver; @@ -2687,6 +2688,19 @@ public abstract class AbstractCamelContext extends BaseService startupStepRecorder.endStep(step4); } + // setup dev-console registry as its needed this early phase for 3rd party to register custom consoles + DevConsoleRegistry dcr = getExtension(DevConsoleRegistry.class); + if (dcr == null) { + StartupStep step5 = startupStepRecorder.beginStep(CamelContext.class, null, "Setup DevConsoleRegistry"); + dcr = createDevConsoleRegistry(); + if (dcr != null) { + // install dev-console registry if it was discovered from classpath (camel-console) + dcr.setCamelContext(this); + setExtension(DevConsoleRegistry.class, dcr); + } + startupStepRecorder.endStep(step5); + } + // Call all registered trackers with this context // Note, this may use a partially constructed object CamelContextTracker.notifyContextCreated(this); @@ -5039,6 +5053,8 @@ public abstract class AbstractCamelContext extends BaseService protected abstract HealthCheckRegistry createHealthCheckRegistry(); + protected abstract DevConsoleRegistry createDevConsoleRegistry(); + protected abstract ReactiveExecutor createReactiveExecutor(); protected abstract StreamCachingStrategy createStreamCachingStrategy(); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java index d3a7ab1..cf7e0df 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java @@ -26,6 +26,7 @@ import org.apache.camel.Route; import org.apache.camel.RouteTemplateContext; import org.apache.camel.TypeConverter; import org.apache.camel.catalog.RuntimeCamelCatalog; +import org.apache.camel.console.DevConsoleRegistry; import org.apache.camel.console.DevConsoleResolver; import org.apache.camel.health.HealthCheckRegistry; import org.apache.camel.health.HealthCheckResolver; @@ -134,6 +135,17 @@ public class SimpleCamelContext extends AbstractCamelContext { } @Override + protected DevConsoleRegistry createDevConsoleRegistry() { + Optional<DevConsoleRegistry> result = ResolverHelper.resolveService( + getCamelContextReference(), + getBootstrapFactoryFinder(), + DevConsoleRegistry.FACTORY, + DevConsoleRegistry.class); + + return result.orElse(null); + } + + @Override protected TypeConverter createTypeConverter() { return new DefaultTypeConverter( getCamelContextReference(), getPackageScanClassResolver(), getInjector(), diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/default-registry b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/default-registry new file mode 100644 index 0000000..3fac031 --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/default-registry @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.DefaultDevConsoleRegistry diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java index 2fde33f..eeb2301 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java @@ -16,6 +16,11 @@ */ package org.apache.camel.impl.console; +import java.util.Collection; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; +import java.util.stream.Stream; + import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.DeferredContextBinding; @@ -29,11 +34,6 @@ import org.apache.camel.util.TimeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collection; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.stream.Stream; - /** * Default {@link org.apache.camel.console.DevConsoleRegistry}. */