This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
commit cb5ad48f787a8c685e0f1dd666879e67b66f4401 Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Fri May 14 12:51:51 2021 +0200 Passing JobExecutionContext to AbstractSchedTaskJobDelegate#doExecute to allow for additional parameters --- .../core/provisioning/api/job/SchedTaskJobDelegate.java | 8 ++++++++ .../provisioning/java/job/AbstractSchedTaskJobDelegate.java | 6 ++++-- .../core/provisioning/java/job/ExpiredAccessTokenCleanup.java | 5 ++++- .../core/provisioning/java/job/ExpiredBatchCleanup.java | 5 ++++- .../java/job/GroupMemberProvisionTaskJobDelegate.java | 4 +++- .../java/pushpull/AbstractProvisioningJobDelegate.java | 10 +++++++--- .../core/provisioning/java/pushpull/PullJobDelegate.java | 4 +++- .../core/provisioning/java/pushpull/PushJobDelegate.java | 4 +++- .../core/provisioning/java/job/ElasticsearchReindex.java | 5 ++++- .../syncope/fit/core/reference/TestSampleJobDelegate.java | 5 ++++- 10 files changed, 44 insertions(+), 12 deletions(-) diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java index bb69b10..ddb6fe4 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java @@ -23,5 +23,13 @@ import org.quartz.JobExecutionException; public interface SchedTaskJobDelegate extends JobDelegate { + /** + * Executes a Quartz Job to run the given Task. + * + * @param taskKey Task key to run + * @param dryRun indicates if execution shall be simulated with no actual changes + * @param context Quartz' execution context, can be used to pass parameters to the job + * @throws JobExecutionException if anything goes wrong + */ void execute(String taskKey, boolean dryRun, JobExecutionContext context) throws JobExecutionException; } diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java index bdc510f..e8aac13 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java @@ -128,7 +128,7 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega AuditElements.Result result; try { - execution.setMessage(doExecute(dryRun, executor)); + execution.setMessage(doExecute(dryRun, executor, context)); execution.setStatus(TaskJob.Status.SUCCESS.name()); result = AuditElements.Result.SUCCESS; } catch (JobExecutionException e) { @@ -173,10 +173,12 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega * * @param dryRun whether to actually touch the data * @param executor the user executing this task + * @param context Quartz' execution context, can be used to pass parameters to the job * @return the task execution status to be set * @throws JobExecutionException if anything goes wrong */ - protected abstract String doExecute(boolean dryRun, String executor) throws JobExecutionException; + protected abstract String doExecute(boolean dryRun, String executor, JobExecutionContext context) + throws JobExecutionException; /** * Template method to determine whether this job's task execution has to be persisted or not. diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredAccessTokenCleanup.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredAccessTokenCleanup.java index 0ae54fc..532ff52 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredAccessTokenCleanup.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredAccessTokenCleanup.java @@ -19,6 +19,7 @@ package org.apache.syncope.core.provisioning.java.job; import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO; +import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; @@ -28,7 +29,9 @@ public class ExpiredAccessTokenCleanup extends AbstractSchedTaskJobDelegate { private AccessTokenDAO accessTokenDAO; @Override - protected String doExecute(final boolean dryRun, final String executor) throws JobExecutionException { + protected String doExecute(final boolean dryRun, final String executor, final JobExecutionContext context) + throws JobExecutionException { + if (!dryRun) { int deleted = accessTokenDAO.deleteExpired(); LOG.debug("Successfully deleted {} expired access tokens", deleted); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredBatchCleanup.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredBatchCleanup.java index 74379e4..aee90ed 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredBatchCleanup.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ExpiredBatchCleanup.java @@ -19,6 +19,7 @@ package org.apache.syncope.core.provisioning.java.job; import org.apache.syncope.core.persistence.api.dao.BatchDAO; +import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; @@ -28,7 +29,9 @@ public class ExpiredBatchCleanup extends AbstractSchedTaskJobDelegate { private BatchDAO batchDAO; @Override - protected String doExecute(final boolean dryRun, final String executor) throws JobExecutionException { + protected String doExecute(final boolean dryRun, final String executor, final JobExecutionContext context) + throws JobExecutionException { + if (!dryRun) { int deleted = batchDAO.deleteExpired(); LOG.debug("Successfully deleted {} expired batch requests", deleted); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java index f7b12f2..2a815c6 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java @@ -73,7 +73,9 @@ public class GroupMemberProvisionTaskJobDelegate extends AbstractSchedTaskJobDel } @Override - protected String doExecute(final boolean dryRun, final String executor) throws JobExecutionException { + protected String doExecute(final boolean dryRun, final String executor, final JobExecutionContext context) + throws JobExecutionException { + Group group = groupDAO.authFind(groupKey); StringBuilder result = new StringBuilder("Group ").append(group.getName()).append(" members "); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java index 0bcfe1b..7fec620 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java @@ -39,6 +39,7 @@ import org.apache.syncope.core.provisioning.api.ConnectorFactory; import org.apache.syncope.common.lib.to.ProvisioningReport; import org.apache.syncope.core.provisioning.java.job.AbstractSchedTaskJobDelegate; import org.apache.syncope.core.provisioning.java.job.TaskJob; +import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; @@ -626,7 +627,9 @@ public abstract class AbstractProvisioningJobDelegate<T extends ProvisioningTask } @Override - protected String doExecute(final boolean dryRun, final String executor) throws JobExecutionException { + protected String doExecute(final boolean dryRun, final String executor, final JobExecutionContext context) + throws JobExecutionException { + try { Class<T> clazz = getTaskClassReference(); if (!clazz.isAssignableFrom(task.getClass())) { @@ -661,14 +664,15 @@ public abstract class AbstractProvisioningJobDelegate<T extends ProvisioningTask return "No provisions nor orgUnit available: aborting..."; } - return doExecuteProvisioning(provisioningTask, connector, dryRun, executor); + return doExecuteProvisioning(provisioningTask, connector, dryRun, executor, context); } catch (Throwable t) { LOG.error("While executing provisioning job {}", getClass().getName(), t); throw t; } } - protected abstract String doExecuteProvisioning(T task, Connector connector, boolean dryRun, String executor) + protected abstract String doExecuteProvisioning( + T task, Connector connector, boolean dryRun, String executor, JobExecutionContext context) throws JobExecutionException; @Override diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java index ebd847c..e056751 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java @@ -66,6 +66,7 @@ import org.identityconnectors.framework.common.objects.SyncToken; import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder; import org.apache.syncope.core.provisioning.java.DefaultProvisionSorter; import org.apache.syncope.core.spring.ImplementationManager; +import org.quartz.JobExecutionContext; public class PullJobDelegate extends AbstractProvisioningJobDelegate<PullTask> implements SyncopePullExecutor { @@ -188,7 +189,8 @@ public class PullJobDelegate extends AbstractProvisioningJobDelegate<PullTask> i final PullTask pullTask, final Connector connector, final boolean dryRun, - final String executor) throws JobExecutionException { + final String executor, + final JobExecutionContext context) throws JobExecutionException { LOG.debug("Executing pull on {}", pullTask.getResource()); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java index f115233..4e7c895 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java @@ -57,6 +57,7 @@ import org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandle import org.apache.syncope.core.provisioning.api.pushpull.UserPushResultHandler; import org.apache.syncope.core.provisioning.java.DefaultProvisionSorter; import org.apache.syncope.core.spring.ImplementationManager; +import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.support.AbstractBeanDefinition; @@ -155,7 +156,8 @@ public class PushJobDelegate extends AbstractProvisioningJobDelegate<PushTask> { final PushTask pushTask, final Connector connector, final boolean dryRun, - final String executor) throws JobExecutionException { + final String executor, + final JobExecutionContext context) throws JobExecutionException { LOG.debug("Executing push on {}", pushTask.getResource()); diff --git a/ext/elasticsearch/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ElasticsearchReindex.java b/ext/elasticsearch/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ElasticsearchReindex.java index 1981775..3423279 100644 --- a/ext/elasticsearch/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ElasticsearchReindex.java +++ b/ext/elasticsearch/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/ElasticsearchReindex.java @@ -31,6 +31,7 @@ import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; +import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; @@ -58,7 +59,9 @@ public class ElasticsearchReindex extends AbstractSchedTaskJobDelegate { private AnyObjectDAO anyObjectDAO; @Override - protected String doExecute(final boolean dryRun, final String executor) throws JobExecutionException { + protected String doExecute(final boolean dryRun, final String executor, final JobExecutionContext context) + throws JobExecutionException { + if (!dryRun) { LOG.debug("Start rebuilding indexes"); diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestSampleJobDelegate.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestSampleJobDelegate.java index 223873c..6f95f0c 100644 --- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestSampleJobDelegate.java +++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestSampleJobDelegate.java @@ -21,6 +21,7 @@ package org.apache.syncope.fit.core.reference; import java.util.Date; import org.apache.syncope.core.persistence.api.entity.task.TaskExec; import org.apache.syncope.core.provisioning.java.job.AbstractSchedTaskJobDelegate; +import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** @@ -29,7 +30,9 @@ import org.quartz.JobExecutionException; public class TestSampleJobDelegate extends AbstractSchedTaskJobDelegate { @Override - protected String doExecute(final boolean dryRun, final String executor) throws JobExecutionException { + protected String doExecute(final boolean dryRun, final String executor, final JobExecutionContext context) + throws JobExecutionException { + for (int i = 0; i < 2; i++) { LOG.debug("TestSampleJob#doExecute round {} time {}", i, new Date().toString()); try {
