You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2021/05/14 11:28:23 UTC
[syncope] 02/02: Passing JobExecutionContext to
AbstractSchedTaskJobDelegate#doExecute to allow for additional parameters
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ò <il...@apache.org>
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 {