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 {

Reply via email to