This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 5a8152e8fda68aea05ce5c0e35d7e153220611ce Author: Otavio Rodolfo Piske <[email protected]> AuthorDate: Sat Apr 1 12:27:59 2023 +0200 CAMEL-15105: make the HealthCheckResolver a plugin of the context --- .../java/org/apache/camel/ExtendedCamelContext.java | 16 ---------------- .../org/apache/camel/health/HealthCheckHelper.java | 4 ++-- .../camel/impl/engine/AbstractCamelContext.java | 4 +--- .../impl/engine/DefaultCamelContextExtension.java | 18 ------------------ .../camel/impl/ExtendedCamelContextConfigurer.java | 6 ------ .../impl/lw/LightweightCamelContextExtension.java | 12 ------------ .../impl/health/HealthCheckResultStrategyTest.java | 7 +++---- .../camel/impl/health/MyFooHealthCheckTest.java | 7 +++---- .../camel/impl/health/DefaultHealthCheckRegistry.java | 5 +++-- .../camel/impl/health/DefaultHealthChecksLoader.java | 2 +- .../java/org/apache/camel/support/PluginHelper.java | 19 +++++++++++++++++++ 11 files changed, 32 insertions(+), 68 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java index 3cd1cc335be..e1f660b45f6 100644 --- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java +++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java @@ -23,7 +23,6 @@ import java.util.function.Supplier; import org.apache.camel.catalog.RuntimeCamelCatalog; import org.apache.camel.console.DevConsoleResolver; -import org.apache.camel.health.HealthCheckResolver; import org.apache.camel.spi.AnnotationBasedProcessorFactory; import org.apache.camel.spi.AsyncProcessorAwaitManager; import org.apache.camel.spi.BeanIntrospection; @@ -45,7 +44,6 @@ import org.apache.camel.spi.LogListener; import org.apache.camel.spi.ManagementMBeanAssembler; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.NormalizedEndpointUri; -import org.apache.camel.spi.PeriodTaskScheduler; import org.apache.camel.spi.PluginManager; import org.apache.camel.spi.ProcessorExchangeFactory; import org.apache.camel.spi.ProcessorFactory; @@ -277,20 +275,6 @@ public interface ExtendedCamelContext { */ void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory); - /** - * Gets the current health check resolver - * - * @return the resolver - */ - HealthCheckResolver getHealthCheckResolver(); - - /** - * Sets a custom health check resolver - * - * @param healthCheckResolver the resolver - */ - void setHealthCheckResolver(HealthCheckResolver healthCheckResolver); - /** * Gets the current dev console resolver * diff --git a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java index ae8451eb1df..581abc7d57d 100644 --- a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java +++ b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java @@ -226,7 +226,7 @@ public final class HealthCheckHelper { if (check.isEmpty()) { // use resolver to load from classpath if needed HealthCheckResolver resolver - = context.getCamelContextExtension().getHealthCheckResolver(); + = context.getCamelContextExtension().getContextPlugin(HealthCheckResolver.class); HealthCheck hc = resolver.resolveHealthCheck(id); if (hc != null) { check = Optional.of(hc); @@ -272,7 +272,7 @@ public final class HealthCheckHelper { if (repo.isEmpty()) { // use resolver to load from classpath if needed HealthCheckResolver resolver - = context.getCamelContextExtension().getHealthCheckResolver(); + = context.getCamelContextExtension().getContextPlugin(HealthCheckResolver.class); HealthCheckRepository hr = resolver.resolveHealthCheckRepository(id); if (hr != null) { repo = Optional.of(hr); 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 5fbee500fa4..e757fe2ce8b 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 @@ -211,7 +211,6 @@ public abstract class AbstractCamelContext extends BaseService volatile ProcessorExchangeFactory processorExchangeFactory; volatile ReactiveExecutor reactiveExecutor; volatile Registry registry; - volatile HealthCheckResolver healthCheckResolver; volatile DevConsoleResolver devConsoleResolver; volatile ManagementStrategy managementStrategy; volatile ManagementMBeanAssembler managementMBeanAssembler; @@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService camelContextExtension.addContextPlugin(DataFormatResolver.class, createDataFormatResolver()); camelContextExtension.lazyAddContextPlugin(PeriodTaskResolver.class, this::createPeriodTaskResolver); camelContextExtension.lazyAddContextPlugin(PeriodTaskScheduler.class, this::createPeriodTaskScheduler); + camelContextExtension.lazyAddContextPlugin(HealthCheckResolver.class, this::createHealthCheckResolver); if (build) { try { @@ -3263,8 +3263,6 @@ public abstract class AbstractCamelContext extends BaseService camelContextExtension.getDefaultFactoryFinder(); getPropertiesComponent(); - camelContextExtension.getHealthCheckResolver(); - getExecutorServiceManager(); camelContextExtension.getExchangeFactoryManager(); camelContextExtension.getExchangeFactory(); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java index 5d67e91d200..620cc38228c 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java @@ -37,7 +37,6 @@ import org.apache.camel.RuntimeCamelException; import org.apache.camel.Service; import org.apache.camel.catalog.RuntimeCamelCatalog; import org.apache.camel.console.DevConsoleResolver; -import org.apache.camel.health.HealthCheckResolver; import org.apache.camel.spi.AnnotationBasedProcessorFactory; import org.apache.camel.spi.AsyncProcessorAwaitManager; import org.apache.camel.spi.BeanIntrospection; @@ -64,7 +63,6 @@ import org.apache.camel.spi.ManagementStrategy; import org.apache.camel.spi.ManagementStrategyFactory; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.NormalizedEndpointUri; -import org.apache.camel.spi.PeriodTaskScheduler; import org.apache.camel.spi.PluginManager; import org.apache.camel.spi.ProcessorExchangeFactory; import org.apache.camel.spi.ProcessorFactory; @@ -460,22 +458,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext { this.basePackageScan = basePackageScan; } - public HealthCheckResolver getHealthCheckResolver() { - if (camelContext.healthCheckResolver == null) { - synchronized (camelContext.lock) { - if (camelContext.healthCheckResolver == null) { - setHealthCheckResolver(camelContext.createHealthCheckResolver()); - } - } - } - return camelContext.healthCheckResolver; - } - - @Override - public void setHealthCheckResolver(HealthCheckResolver healthCheckResolver) { - camelContext.healthCheckResolver = camelContext.getInternalServiceManager().addService(healthCheckResolver); - } - public DevConsoleResolver getDevConsoleResolver() { if (camelContext.devConsoleResolver == null) { synchronized (camelContext.lock) { diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java index 1d4595d1dd8..982cebd9d75 100644 --- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java +++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java @@ -47,8 +47,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com case "ExchangeFactoryManager": target.setExchangeFactoryManager(property(camelContext, org.apache.camel.spi.ExchangeFactoryManager.class, value)); return true; case "headersmapfactory": case "HeadersMapFactory": target.setHeadersMapFactory(property(camelContext, org.apache.camel.spi.HeadersMapFactory.class, value)); return true; - case "healthcheckresolver": - case "HealthCheckResolver": target.setHealthCheckResolver(property(camelContext, org.apache.camel.health.HealthCheckResolver.class, value)); return true; case "interceptendpointfactory": case "InterceptEndpointFactory": target.setInterceptEndpointFactory(property(camelContext, org.apache.camel.spi.InterceptEndpointFactory.class, value)); return true; case "internalprocessorfactory": @@ -114,8 +112,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com case "ExchangeFactoryManager": return org.apache.camel.spi.ExchangeFactoryManager.class; case "headersmapfactory": case "HeadersMapFactory": return org.apache.camel.spi.HeadersMapFactory.class; - case "healthcheckresolver": - case "HealthCheckResolver": return org.apache.camel.health.HealthCheckResolver.class; case "interceptendpointfactory": case "InterceptEndpointFactory": return org.apache.camel.spi.InterceptEndpointFactory.class; case "internalprocessorfactory": @@ -182,8 +178,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com case "ExchangeFactoryManager": return target.getExchangeFactoryManager(); case "headersmapfactory": case "HeadersMapFactory": return target.getHeadersMapFactory(); - case "healthcheckresolver": - case "HealthCheckResolver": return target.getHealthCheckResolver(); case "interceptendpointfactory": case "InterceptEndpointFactory": return target.getInterceptEndpointFactory(); case "internalprocessorfactory": diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java index 9257979aedd..35da047b4ee 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java @@ -38,7 +38,6 @@ import org.apache.camel.Service; import org.apache.camel.ServiceStatus; import org.apache.camel.catalog.RuntimeCamelCatalog; import org.apache.camel.console.DevConsoleResolver; -import org.apache.camel.health.HealthCheckResolver; import org.apache.camel.spi.AnnotationBasedProcessorFactory; import org.apache.camel.spi.AsyncProcessorAwaitManager; import org.apache.camel.spi.BeanIntrospection; @@ -59,7 +58,6 @@ import org.apache.camel.spi.LogListener; import org.apache.camel.spi.ManagementMBeanAssembler; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.NormalizedEndpointUri; -import org.apache.camel.spi.PeriodTaskScheduler; import org.apache.camel.spi.PluginManager; import org.apache.camel.spi.ProcessorExchangeFactory; import org.apache.camel.spi.ProcessorFactory; @@ -106,16 +104,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext { throw new UnsupportedOperationException(); } - @Override - public HealthCheckResolver getHealthCheckResolver() { - return camelContext.getCamelContextExtension().getHealthCheckResolver(); - } - - @Override - public void setHealthCheckResolver(HealthCheckResolver healthCheckResolver) { - throw new UnsupportedOperationException(); - } - @Override public DevConsoleResolver getDevConsoleResolver() { return camelContext.getCamelContextExtension().getDevConsoleResolver(); diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/health/HealthCheckResultStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/health/HealthCheckResultStrategyTest.java index ee327fb07e5..8aa633e8929 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/health/HealthCheckResultStrategyTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/health/HealthCheckResultStrategyTest.java @@ -25,6 +25,7 @@ import org.apache.camel.health.HealthCheckHelper; import org.apache.camel.health.HealthCheckRegistry; import org.apache.camel.health.HealthCheckResultBuilder; import org.apache.camel.health.HealthCheckResultStrategy; +import org.apache.camel.support.PluginHelper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -40,8 +41,7 @@ public class HealthCheckResultStrategyTest extends ContextTestSupport { context.getRegistry().bind("myStrategy", new MyResultStrategy()); context.start(); - HealthCheck hc - = context.getCamelContextExtension().getHealthCheckResolver().resolveHealthCheck("myfoo"); + HealthCheck hc = PluginHelper.getHealthCheckResolver(context).resolveHealthCheck("myfoo"); Assertions.assertNotNull(hc); Assertions.assertEquals("acme", hc.getGroup()); @@ -58,8 +58,7 @@ public class HealthCheckResultStrategyTest extends ContextTestSupport { context.getRegistry().bind("myStrategy", new MyResultStrategy()); context.start(); - HealthCheck hc - = context.getCamelContextExtension().getHealthCheckResolver().resolveHealthCheck("myfoo"); + HealthCheck hc = PluginHelper.getHealthCheckResolver(context).resolveHealthCheck("myfoo"); Assertions.assertNotNull(hc); HealthCheckRegistry hcr = context.getCamelContextExtension().getContextPlugin(HealthCheckRegistry.class); diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/health/MyFooHealthCheckTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/health/MyFooHealthCheckTest.java index 78af86ca0b7..1808736f25b 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/health/MyFooHealthCheckTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/health/MyFooHealthCheckTest.java @@ -22,6 +22,7 @@ import org.apache.camel.ContextTestSupport; import org.apache.camel.health.HealthCheck; import org.apache.camel.health.HealthCheckHelper; import org.apache.camel.health.HealthCheckRegistry; +import org.apache.camel.support.PluginHelper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -36,8 +37,7 @@ public class MyFooHealthCheckTest extends ContextTestSupport { public void testMyFoo() throws Exception { context.start(); - HealthCheck hc - = context.getCamelContextExtension().getHealthCheckResolver().resolveHealthCheck("myfoo"); + HealthCheck hc = PluginHelper.getHealthCheckResolver(context).resolveHealthCheck("myfoo"); Assertions.assertNotNull(hc); Assertions.assertEquals("acme", hc.getGroup()); @@ -53,8 +53,7 @@ public class MyFooHealthCheckTest extends ContextTestSupport { public void testAddToRegistry() throws Exception { context.start(); - HealthCheck hc - = context.getCamelContextExtension().getHealthCheckResolver().resolveHealthCheck("myfoo"); + HealthCheck hc = PluginHelper.getHealthCheckResolver(context).resolveHealthCheck("myfoo"); Assertions.assertNotNull(hc); HealthCheckRegistry hcr = context.getCamelContextExtension().getContextPlugin(HealthCheckRegistry.class); diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java index ea7dde4d017..c5d6869bc6b 100644 --- a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java +++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java @@ -30,6 +30,7 @@ import org.apache.camel.health.HealthCheckRegistry; import org.apache.camel.health.HealthCheckRepository; import org.apache.camel.health.HealthCheckResolver; import org.apache.camel.support.PatternHelper; +import org.apache.camel.support.PluginHelper; import org.apache.camel.support.service.ServiceHelper; import org.apache.camel.support.service.ServiceSupport; import org.apache.camel.util.ObjectHelper; @@ -177,7 +178,7 @@ public class DefaultHealthCheckRegistry extends ServiceSupport implements Health HealthCheck answer = checks.stream().filter(h -> h.getId().equals(id)).findFirst() .orElse(camelContext.getRegistry().findByTypeWithName(HealthCheck.class).get(id)); if (answer == null) { - HealthCheckResolver resolver = camelContext.getCamelContextExtension().getHealthCheckResolver(); + HealthCheckResolver resolver = PluginHelper.getHealthCheckResolver(camelContext); answer = resolver.resolveHealthCheck(id); } @@ -190,7 +191,7 @@ public class DefaultHealthCheckRegistry extends ServiceSupport implements Health .orElse(camelContext.getRegistry().findByTypeWithName(HealthCheckRepository.class).get(id)); if (answer == null) { // discover via classpath (try first via -health-check-repository and then id as-is) - HealthCheckResolver resolver = camelContext.getCamelContextExtension().getHealthCheckResolver(); + HealthCheckResolver resolver = PluginHelper.getHealthCheckResolver(camelContext); answer = resolver.resolveHealthCheckRepository(id); } 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 d9f6eb684f6..3457e6fec6b 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 @@ -44,7 +44,7 @@ public class DefaultHealthChecksLoader { public DefaultHealthChecksLoader(CamelContext camelContext) { this.camelContext = camelContext; this.resolver = PluginHelper.getPackageScanResourceResolver(camelContext); - this.healthCheckResolver = camelContext.getCamelContextExtension().getHealthCheckResolver(); + this.healthCheckResolver = PluginHelper.getHealthCheckResolver(camelContext); } public Collection<HealthCheck> loadHealthChecks() { diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java index 7e04519984b..9e2c84da612 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java @@ -21,6 +21,7 @@ import java.util.concurrent.ScheduledExecutorService; import org.apache.camel.CamelContext; import org.apache.camel.ExtendedCamelContext; +import org.apache.camel.health.HealthCheckResolver; import org.apache.camel.spi.CamelBeanPostProcessor; import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory; import org.apache.camel.spi.ComponentNameResolver; @@ -307,4 +308,22 @@ public final class PluginHelper { public static PeriodTaskScheduler getPeriodTaskScheduler(ExtendedCamelContext extendedCamelContext) { return extendedCamelContext.getContextPlugin(PeriodTaskScheduler.class); } + + /** + * Gets the current health check resolver + * + * @return the resolver + */ + public static HealthCheckResolver getHealthCheckResolver(CamelContext camelContext) { + return getHealthCheckResolver(camelContext.getCamelContextExtension()); + } + + /** + * Gets the current health check resolver + * + * @return the resolver + */ + public static HealthCheckResolver getHealthCheckResolver(ExtendedCamelContext extendedCamelContext) { + return extendedCamelContext.getContextPlugin(HealthCheckResolver.class); + } }
