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 {