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:30 UTC
[camel] 01/02: CAMEL-15105: make the PeriodicTaskScheduler 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 6f216ea59bcf9588c36e40a4915f9834aee3069b
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 11:49:31 2023 +0200
CAMEL-15105: make the PeriodicTaskScheduler a plugin of the context
---
.../component/aws/secretsmanager/SecretsDevConsole.java | 3 ++-
.../azure/key/vault/AzureKeyVaultManagerDevConsole.java | 3 ++-
.../secret/manager/GoogleSecretManagerDevConsole.java | 3 ++-
.../main/java/org/apache/camel/ExtendedCamelContext.java | 10 ----------
.../apache/camel/impl/engine/AbstractCamelContext.java | 2 +-
.../camel/impl/engine/DefaultCamelContextExtension.java | 15 ---------------
.../apache/camel/impl/ExtendedCamelContextConfigurer.java | 6 ------
.../camel/impl/lw/LightweightCamelContextExtension.java | 10 ----------
.../apache/camel/impl/engine/PeriodTaskSchedulerTest.java | 5 +++--
.../main/java/org/apache/camel/main/BaseMainSupport.java | 6 +++---
.../main/java/org/apache/camel/support/PluginHelper.java | 15 +++++++++++++++
11 files changed, 28 insertions(+), 50 deletions(-)
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
index 45962b8adb4..c632c9b8f69 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
@@ -26,6 +26,7 @@ import org.apache.camel.component.aws.secretsmanager.vault.CloudTrailReloadTrigg
import org.apache.camel.spi.PeriodTaskScheduler;
import org.apache.camel.spi.PropertiesFunction;
import org.apache.camel.spi.annotations.DevConsole;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.support.console.AbstractDevConsole;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
@@ -54,7 +55,7 @@ public class SecretsDevConsole extends AbstractDevConsole {
}
AwsVaultConfiguration aws = getCamelContext().getVaultConfiguration().getAwsVaultConfiguration();
if (aws != null && aws.isRefreshEnabled()) {
- PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(getCamelContext());
secretsRefreshTask = scheduler.getTaskByType(CloudTrailReloadTriggerTask.class);
}
}
diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
index a46a4d18efc..e995b197927 100644
--- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
+++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.camel.spi.PeriodTaskScheduler;
import org.apache.camel.spi.PropertiesFunction;
import org.apache.camel.spi.annotations.DevConsole;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.support.console.AbstractDevConsole;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
@@ -53,7 +54,7 @@ public class AzureKeyVaultManagerDevConsole extends AbstractDevConsole {
}
AzureVaultConfiguration azure = getCamelContext().getVaultConfiguration().getAzureVaultConfiguration();
if (azure != null && azure.isRefreshEnabled()) {
- PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(getCamelContext());
secretsRefreshTask = scheduler.getTaskByType(EventhubsReloadTriggerTask.class);
}
}
diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
index 0cef8350354..89072482f2f 100644
--- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
+++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
@@ -26,6 +26,7 @@ import org.apache.camel.component.google.secret.manager.vault.PubsubReloadTrigge
import org.apache.camel.spi.PeriodTaskScheduler;
import org.apache.camel.spi.PropertiesFunction;
import org.apache.camel.spi.annotations.DevConsole;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.support.console.AbstractDevConsole;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
@@ -54,7 +55,7 @@ public class GoogleSecretManagerDevConsole extends AbstractDevConsole {
}
GcpVaultConfiguration gcp = getCamelContext().getVaultConfiguration().getGcpVaultConfiguration();
if (gcp != null && gcp.isRefreshEnabled()) {
- PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(getCamelContext());
secretsRefreshTask = scheduler.getTaskByType(PubsubReloadTriggerTask.class);
}
}
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 e3ff1eb98f7..3cd1cc335be 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
@@ -682,16 +682,6 @@ public interface ExtendedCamelContext {
*/
byte getStatusPhase();
- /**
- * Gets the period task scheduler
- */
- PeriodTaskScheduler getPeriodTaskScheduler();
-
- /**
- * To use a custom period task scheduler
- */
- void setPeriodTaskScheduler(PeriodTaskScheduler periodTaskScheduler);
-
/**
* Gets access to the internal plugin manager
*
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 463ff7bf548..5fbee500fa4 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
@@ -224,7 +224,6 @@ public abstract class AbstractCamelContext extends BaseService
volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
volatile RuntimeCamelCatalog runtimeCamelCatalog;
volatile ProcessorFactory processorFactory;
- volatile PeriodTaskScheduler periodTaskScheduler;
volatile InternalProcessorFactory internalProcessorFactory;
volatile InterceptEndpointFactory interceptEndpointFactory;
volatile RouteFactory routeFactory;
@@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService
camelContextExtension.lazyAddContextPlugin(ModelJAXBContextFactory.class, this::createModelJAXBContextFactory);
camelContextExtension.addContextPlugin(DataFormatResolver.class, createDataFormatResolver());
camelContextExtension.lazyAddContextPlugin(PeriodTaskResolver.class, this::createPeriodTaskResolver);
+ camelContextExtension.lazyAddContextPlugin(PeriodTaskScheduler.class, this::createPeriodTaskScheduler);
if (build) {
try {
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 35514f8e210..5d67e91d200 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
@@ -365,21 +365,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
return factories.computeIfAbsent(path, camelContext::createFactoryFinder);
}
- public PeriodTaskScheduler getPeriodTaskScheduler() {
- if (camelContext.periodTaskScheduler == null) {
- synchronized (camelContext.lock) {
- if (camelContext.periodTaskScheduler == null) {
- setPeriodTaskScheduler(camelContext.createPeriodTaskScheduler());
- }
- }
- }
- return camelContext.periodTaskScheduler;
- }
-
- public void setPeriodTaskScheduler(PeriodTaskScheduler periodTaskScheduler) {
- camelContext.periodTaskScheduler = camelContext.getInternalServiceManager().addService(periodTaskScheduler);
- }
-
@Override
public void setupManagement(Map<String, Object> options) {
LOG.trace("Setting up management");
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 1abc1508172..1d4595d1dd8 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
@@ -59,8 +59,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "ModelToXMLDumper": target.setModelToXMLDumper(property(camelContext, org.apache.camel.spi.ModelToXMLDumper.class, value)); return true;
case "name":
case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
- case "periodtaskscheduler":
- case "PeriodTaskScheduler": target.setPeriodTaskScheduler(property(camelContext, org.apache.camel.spi.PeriodTaskScheduler.class, value)); return true;
case "processorexchangefactory":
case "ProcessorExchangeFactory": target.setProcessorExchangeFactory(property(camelContext, org.apache.camel.spi.ProcessorExchangeFactory.class, value)); return true;
case "processorfactory":
@@ -128,8 +126,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "ModelToXMLDumper": return org.apache.camel.spi.ModelToXMLDumper.class;
case "name":
case "Name": return java.lang.String.class;
- case "periodtaskscheduler":
- case "PeriodTaskScheduler": return org.apache.camel.spi.PeriodTaskScheduler.class;
case "processorexchangefactory":
case "ProcessorExchangeFactory": return org.apache.camel.spi.ProcessorExchangeFactory.class;
case "processorfactory":
@@ -198,8 +194,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "ModelToXMLDumper": return target.getModelToXMLDumper();
case "name":
case "Name": return target.getName();
- case "periodtaskscheduler":
- case "PeriodTaskScheduler": return target.getPeriodTaskScheduler();
case "processorexchangefactory":
case "ProcessorExchangeFactory": return target.getProcessorExchangeFactory();
case "processorfactory":
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 f805740ed97..9257979aedd 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
@@ -693,16 +693,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
throw new UnsupportedOperationException();
}
- @Override
- public void setPeriodTaskScheduler(PeriodTaskScheduler periodTaskScheduler) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public PeriodTaskScheduler getPeriodTaskScheduler() {
- return camelContext.getCamelContextExtension().getPeriodTaskScheduler();
- }
-
@Override
public PluginManager getPluginManager() {
return camelContext.getCamelContextExtension().getPluginManager();
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/PeriodTaskSchedulerTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/PeriodTaskSchedulerTest.java
index 4d218f97eab..462d43bd8b9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/PeriodTaskSchedulerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/PeriodTaskSchedulerTest.java
@@ -21,6 +21,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.spi.PeriodTaskScheduler;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.support.TimerListenerManager;
import org.apache.camel.support.service.ServiceSupport;
import org.awaitility.Awaitility;
@@ -40,7 +41,7 @@ public class PeriodTaskSchedulerTest extends ContextTestSupport {
public void testScheduler() throws Exception {
counter.set(0);
- PeriodTaskScheduler scheduler = context.getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(context);
if (scheduler instanceof TimerListenerManager) {
// speedup unit test
((TimerListenerManager) scheduler).setInterval(10);
@@ -57,7 +58,7 @@ public class PeriodTaskSchedulerTest extends ContextTestSupport {
MyTask task = new MyTask();
- PeriodTaskScheduler scheduler = context.getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(context);
if (scheduler instanceof TimerListenerManager) {
// speedup unit test
((TimerListenerManager) scheduler).setInterval(10);
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index 2eb09f00fc8..800799dcc75 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -411,7 +411,7 @@ public abstract class BaseMainSupport extends BaseService {
ContextReloadStrategy reloader = new DefaultContextReloadStrategy();
camelContext.addService(reloader);
}
- PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(getCamelContext());
scheduler.schedulePeriodTask(r, period);
}
}
@@ -430,7 +430,7 @@ public abstract class BaseMainSupport extends BaseService {
ContextReloadStrategy reloader = new DefaultContextReloadStrategy();
camelContext.addService(reloader);
}
- PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(getCamelContext());
scheduler.schedulePeriodTask(r, period);
}
}
@@ -449,7 +449,7 @@ public abstract class BaseMainSupport extends BaseService {
ContextReloadStrategy reloader = new DefaultContextReloadStrategy();
camelContext.addService(reloader);
}
- PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
+ PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(getCamelContext());
scheduler.schedulePeriodTask(r, period);
}
}
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 3db96cee8c9..7e04519984b 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
@@ -34,6 +34,7 @@ import org.apache.camel.spi.ModelineFactory;
import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.PackageScanResourceResolver;
import org.apache.camel.spi.PeriodTaskResolver;
+import org.apache.camel.spi.PeriodTaskScheduler;
import org.apache.camel.spi.UriFactoryResolver;
public final class PluginHelper {
@@ -292,4 +293,18 @@ public final class PluginHelper {
public static PeriodTaskResolver getPeriodTaskResolver(ExtendedCamelContext extendedCamelContext) {
return extendedCamelContext.getContextPlugin(PeriodTaskResolver.class);
}
+
+ /**
+ * Gets the period task scheduler
+ */
+ public static PeriodTaskScheduler getPeriodTaskScheduler(CamelContext camelContext) {
+ return getPeriodTaskScheduler(camelContext.getCamelContextExtension());
+ }
+
+ /**
+ * Gets the period task scheduler
+ */
+ public static PeriodTaskScheduler getPeriodTaskScheduler(ExtendedCamelContext extendedCamelContext) {
+ return extendedCamelContext.getContextPlugin(PeriodTaskScheduler.class);
+ }
}