You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/04/01 11:30:31 UTC
[camel] 02/02: CAMEL-15105: make the HealthCheckResolver a plugin of the context
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 <an...@gmail.com>
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);
+ }
}