Return-Path: X-Original-To: apmail-syncope-commits-archive@www.apache.org Delivered-To: apmail-syncope-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C7BAA18877 for ; Thu, 17 Dec 2015 15:46:48 +0000 (UTC) Received: (qmail 27637 invoked by uid 500); 17 Dec 2015 15:46:48 -0000 Delivered-To: apmail-syncope-commits-archive@syncope.apache.org Received: (qmail 27609 invoked by uid 500); 17 Dec 2015 15:46:48 -0000 Mailing-List: contact commits-help@syncope.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@syncope.apache.org Delivered-To: mailing list commits@syncope.apache.org Received: (qmail 27600 invoked by uid 99); 17 Dec 2015 15:46:48 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Dec 2015 15:46:48 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7F112E015B; Thu, 17 Dec 2015 15:46:48 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: ilgrosso@apache.org To: commits@syncope.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: syncope git commit: [SYNCOPE-743] Implementation provided Date: Thu, 17 Dec 2015 15:46:48 +0000 (UTC) Repository: syncope Updated Branches: refs/heads/master a12e60b15 -> 288179f26 [SYNCOPE-743] Implementation provided Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/288179f2 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/288179f2 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/288179f2 Branch: refs/heads/master Commit: 288179f2639cb13e1dfc7f7b5869f9d5cbd58861 Parents: a12e60b Author: Francesco Chicchiriccò Authored: Thu Dec 17 16:46:41 2015 +0100 Committer: Francesco Chicchiriccò Committed: Thu Dec 17 16:46:41 2015 +0100 ---------------------------------------------------------------------- .../apache/syncope/common/lib/to/ReportTO.java | 10 ++++ .../syncope/common/lib/to/SchedTaskTO.java | 11 +++++ .../apache/syncope/core/logic/ReportLogic.java | 6 +++ .../apache/syncope/core/logic/TaskLogic.java | 6 +++ .../core/logic/report/ReportJobDelegate.java | 5 ++ .../core/persistence/api/entity/Report.java | 3 ++ .../persistence/api/entity/task/SchedTask.java | 4 ++ .../core/persistence/jpa/entity/JPAReport.java | 20 ++++++++ .../jpa/entity/task/JPASchedTask.java | 19 ++++++++ .../core/persistence/jpa/inner/ReportTest.java | 1 + .../core/persistence/jpa/outer/ReportTest.java | 1 + .../core/persistence/jpa/outer/TaskTest.java | 2 + .../test/resources/domains/MasterContent.xml | 49 ++++++++++---------- .../java/data/TaskDataBinderImpl.java | 11 ++--- .../java/job/AbstractSchedTaskJobDelegate.java | 8 +++- .../fit/core/reference/MultitenancyITCase.java | 1 + .../fit/core/reference/PushTaskITCase.java | 2 + .../fit/core/reference/ReportITCase.java | 14 ++++++ .../fit/core/reference/SyncTaskITCase.java | 3 ++ 19 files changed, 141 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java index 533f8d1..920d198 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java @@ -51,6 +51,8 @@ public class ReportTO extends AbstractStartEndBean { private Date nextExec; + private boolean active; + public long getKey() { return key; } @@ -123,4 +125,12 @@ public class ReportTO extends AbstractStartEndBean { } } + public boolean isActive() { + return active; + } + + public void setActive(final boolean active) { + this.active = active; + } + } http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java index 08e4c53..0964579 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java @@ -43,6 +43,8 @@ public class SchedTaskTO extends AbstractTaskTO { private Date nextExec; + private boolean active; + public String getCronExpression() { return cronExpression; } @@ -101,4 +103,13 @@ public class SchedTaskTO extends AbstractTaskTO { public void setName(final String name) { this.name = name; } + + public boolean isActive() { + return active; + } + + public void setActive(final boolean active) { + this.active = active; + } + } http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java index 66954b0..f49ee91 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java @@ -236,6 +236,12 @@ public class ReportLogic extends AbstractJobLogic { throw new NotFoundException("Report " + reportKey); } + if (!report.isActive()) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Scheduling); + sce.getElements().add("Report " + reportKey + " is not active"); + throw sce; + } + try { jobInstanceLoader.registerJob(report); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java index 9386262..35697fa 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java @@ -207,6 +207,12 @@ public class TaskLogic extends AbstractJobLogic { case SCHEDULED: case SYNCHRONIZATION: case PUSH: + if (!((SchedTask) task).isActive()) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Scheduling); + sce.getElements().add("Task " + taskKey + " is not active"); + throw sce; + } + try { Map jobDataMap = jobInstanceLoader.registerJob( (SchedTask) task, http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java index 9d764ba..c3d2a36 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java @@ -81,6 +81,11 @@ public class ReportJobDelegate { throw new JobExecutionException("Report " + reportKey + " not found"); } + if (!report.isActive()) { + LOG.info("Report {} not active, aborting...", reportKey); + return; + } + // 1. create execution ReportExec execution = entityFactory.newEntity(ReportExec.class); execution.setStatus(ReportExecStatus.STARTED); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java index 30245d0..5b31063 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java @@ -43,4 +43,7 @@ public interface Report extends Entity { void setCronExpression(String cronExpression); + boolean isActive(); + + void setActive(boolean active); } http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java index 0913ee1..ed62ba4 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java @@ -35,4 +35,8 @@ public interface SchedTask extends Task { void setJobDelegateClassName(String jobDelegateClassName); void setName(String name); + + boolean isActive(); + + void setActive(boolean active); } http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReport.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReport.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReport.java index eeaf86d..8cf3d57 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReport.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReport.java @@ -20,6 +20,7 @@ package org.apache.syncope.core.persistence.jpa.entity; import java.util.ArrayList; import java.util.List; +import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -27,6 +28,9 @@ import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Transformer; import org.apache.syncope.common.lib.report.ReportletConf; @@ -57,6 +61,12 @@ public class JPAReport extends AbstractEntity implements Report { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER, mappedBy = "report") private List executions = new ArrayList<>(); + @NotNull + @Basic + @Min(0) + @Max(1) + private Integer active; + @Override public Long getKey() { return id; @@ -127,4 +137,14 @@ public class JPAReport extends AbstractEntity implements Report { public void setCronExpression(final String cronExpression) { this.cronExpression = cronExpression; } + + @Override + public boolean isActive() { + return isBooleanAsInteger(active); + } + + @Override + public void setActive(final boolean active) { + this.active = getBooleanAsInteger(active); + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java index d3c0c11..0be71fc 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java @@ -18,8 +18,11 @@ */ package org.apache.syncope.core.persistence.jpa.entity.task; +import javax.persistence.Basic; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import org.apache.syncope.common.lib.types.TaskType; import org.apache.syncope.core.persistence.api.entity.task.SchedTask; @@ -41,6 +44,12 @@ public class JPASchedTask extends AbstractTask implements SchedTask { protected String description; + @NotNull + @Basic + @Min(0) + @Max(1) + private Integer active; + public JPASchedTask() { super(); this.type = TaskType.SCHEDULED; @@ -85,4 +94,14 @@ public class JPASchedTask extends AbstractTask implements SchedTask { public void setName(final String name) { this.name = name; } + + @Override + public boolean isActive() { + return isBooleanAsInteger(active); + } + + @Override + public void setActive(final boolean active) { + this.active = getBooleanAsInteger(active); + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java index 8c419aa..1a67267 100644 --- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java +++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java @@ -59,6 +59,7 @@ public class ReportTest extends AbstractTest { Report report = entityFactory.newEntity(Report.class); report.setName("new report"); + report.setActive(true); report.add(new UserReportletConf("first")); report.add(new UserReportletConf("second")); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java index 36f275c..bdfa8f7 100644 --- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java +++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java @@ -63,6 +63,7 @@ public class ReportTest extends AbstractTest { report = entityFactory.newEntity(Report.class); report.setName(name); + report.setActive(true); reportDAO.save(report); reportDAO.flush(); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java index 8e08755..7378728 100644 --- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java +++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java @@ -220,6 +220,7 @@ public class TaskTest extends AbstractTest { SyncTask task = entityFactory.newEntity(SyncTask.class); task.setName("saveSyncTask"); task.setDescription("SyncTask description"); + task.setActive(true); task.setSyncMode(SyncMode.FULL_RECONCILIATION); task.add(template); task.setCronExpression("BLA BLA"); @@ -278,6 +279,7 @@ public class TaskTest extends AbstractTest { task.setResource(resource); task.setName("issueSYNCOPE144"); task.setDescription("issueSYNCOPE144 Description"); + task.setActive(true); task.setSyncMode(SyncMode.FULL_RECONCILIATION); task.getActionsClassNames().add(SyncActions.class.getName()); task.setMatchingRule(MatchingRule.UPDATE); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/persistence-jpa/src/test/resources/domains/MasterContent.xml ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml index 63f0878..da4b05f 100644 --- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml @@ -982,12 +982,12 @@ under the License. attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"type","value":["type"]}]'/> + syncMode="INCREMENTAL" unmatchingRule="ASSIGN" matchingRule="UPDATE" active="1"/> - + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + unmatchingRule="ASSIGN" matchingRule="IGNORE" active="1"/> + unmatchingRule="PROVISION" matchingRule="IGNORE" active="1"/> + unmatchingRule="UNLINK" matchingRule="IGNORE" active="1"/> + unmatchingRule="IGNORE" matchingRule="IGNORE" active="1"/> + unmatchingRule="ASSIGN" matchingRule="UPDATE" active="1"/> + unmatchingRule="IGNORE" matchingRule="DEPROVISION" active="1"/> + unmatchingRule="IGNORE" matchingRule="UNASSIGN" active="1"/> + unmatchingRule="IGNORE" matchingRule="LINK" active="1"/> + unmatchingRule="IGNORE" matchingRule="UNLINK" active="1"/> + performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" + unmatchingRule="IGNORE" matchingRule="UPDATE" active="1"/> + unmatchingRule="ASSIGN" matchingRule="UNLINK" active="1"/> + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + unmatchingRule="IGNORE" matchingRule="UNLINK" active="1"/> + unmatchingRule="ASSIGN" matchingRule="IGNORE" active="1"/> + unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> - + http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java index d3035a3..561bf68 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java @@ -103,7 +103,7 @@ public class TaskDataBinderImpl implements TaskDataBinder { private void fill(final ProvisioningTask task, final AbstractProvisioningTaskTO taskTO) { if (task instanceof PushTask && taskTO instanceof PushTaskTO) { - final PushTask pushTask = (PushTask) task; + PushTask pushTask = (PushTask) task; final PushTaskTO pushTaskTO = (PushTaskTO) taskTO; pushTask.setJobDelegateClassName(PushJobDelegate.class.getName()); @@ -137,7 +137,7 @@ public class TaskDataBinderImpl implements TaskDataBinder { } }); } else if (task instanceof SyncTask && taskTO instanceof SyncTaskTO) { - final SyncTask syncTask = (SyncTask) task; + SyncTask syncTask = (SyncTask) task; final SyncTaskTO syncTaskTO = (SyncTaskTO) taskTO; syncTask.setSyncMode(syncTaskTO.getSyncMode()); @@ -201,6 +201,7 @@ public class TaskDataBinderImpl implements TaskDataBinder { task.setCronExpression(taskTO.getCronExpression()); task.setName(taskTO.getName()); task.setDescription(taskTO.getDescription()); + task.setActive(taskTO.isActive()); if (taskUtils.getType() == TaskType.SCHEDULED) { task.setJobDelegateClassName(taskTO.getJobDelegateClassName()); @@ -313,8 +314,6 @@ public class TaskDataBinderImpl implements TaskDataBinder { + task.getClass().getName()); } setExecTime((SchedTaskTO) taskTO, task); - ((SchedTaskTO) taskTO).setName(((SchedTask) task).getName()); - ((SchedTaskTO) taskTO).setDescription(((SchedTask) task).getDescription()); break; case SYNCHRONIZATION: @@ -323,8 +322,6 @@ public class TaskDataBinderImpl implements TaskDataBinder { + task.getClass().getName()); } setExecTime((SchedTaskTO) taskTO, task); - ((SyncTaskTO) taskTO).setName(((SyncTask) task).getName()); - ((SyncTaskTO) taskTO).setDescription(((SyncTask) task).getDescription()); ((SyncTaskTO) taskTO).setDestinationRealm(((SyncTask) task).getDestinatioRealm().getFullPath()); ((SyncTaskTO) taskTO).setResource(((SyncTask) task).getResource().getKey()); ((SyncTaskTO) taskTO).setMatchingRule(((SyncTask) task).getMatchingRule() == null @@ -343,8 +340,6 @@ public class TaskDataBinderImpl implements TaskDataBinder { + task.getClass().getName()); } setExecTime((SchedTaskTO) taskTO, task); - ((PushTaskTO) taskTO).setName(((PushTask) task).getName()); - ((PushTaskTO) taskTO).setDescription(((PushTask) task).getDescription()); ((PushTaskTO) taskTO).setResource(((PushTask) task).getResource().getKey()); ((PushTaskTO) taskTO).setMatchingRule(((PushTask) task).getMatchingRule() == null ? MatchingRule.LINK : ((PushTask) task).getMatchingRule()); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java ---------------------------------------------------------------------- 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 e3b06b8..1daae7a 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 @@ -25,7 +25,7 @@ import org.apache.syncope.core.misc.utils.ExceptionUtils2; import org.apache.syncope.core.persistence.api.dao.TaskDAO; import org.apache.syncope.core.persistence.api.dao.TaskExecDAO; import org.apache.syncope.core.persistence.api.entity.EntityFactory; -import org.apache.syncope.core.persistence.api.entity.task.Task; +import org.apache.syncope.core.persistence.api.entity.task.SchedTask; import org.apache.syncope.core.persistence.api.entity.task.TaskExec; import org.apache.syncope.core.provisioning.api.job.SchedTaskJobDelegate; import org.apache.syncope.core.provisioning.api.notification.NotificationManager; @@ -42,7 +42,7 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega /** * The actual task to be executed. */ - protected Task task; + protected SchedTask task; /** * Task execution DAO. @@ -79,6 +79,10 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega throw new JobExecutionException("Task " + taskKey + " not found"); } + if (!task.isActive()) { + LOG.info("Task {} not active, aborting...", taskKey); + } + TaskExec execution = entityFactory.newEntity(TaskExec.class); execution.setStartDate(new Date()); execution.setTask(task); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java index bb56342..8458181 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java @@ -190,6 +190,7 @@ public class MultitenancyITCase extends AbstractITCase { // create sync task SyncTaskTO task = new SyncTaskTO(); task.setName("LDAP Sync Task"); + task.setActive(true); task.setDestinationRealm(SyncopeConstants.ROOT_REALM); task.setResource(resource.getKey()); task.setSyncMode(SyncMode.FULL_RECONCILIATION); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java index 2213f53..93f0139 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java @@ -312,6 +312,7 @@ public class PushTaskITCase extends AbstractTaskITCase { // create push task ad-hoc PushTaskTO task = new PushTaskTO(); task.setName("issueSYNCOPE598"); + task.setActive(true); task.setResource(resourceName); task.setPerformCreate(true); task.setPerformDelete(true); @@ -341,6 +342,7 @@ public class PushTaskITCase extends AbstractTaskITCase { // 1. Create Push Task PushTaskTO task = new PushTaskTO(); task.setName("Test create Push"); + task.setActive(true); task.setResource(RESOURCE_NAME_LDAP); task.getFilters().put(AnyTypeKind.USER.name(), SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo("_NO_ONE_").query()); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ReportITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ReportITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ReportITCase.java index 0360bd2..2bf2218 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ReportITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ReportITCase.java @@ -38,6 +38,7 @@ import org.apache.syncope.common.lib.report.UserReportletConf; import org.apache.syncope.common.lib.to.BulkActionResult; import org.apache.syncope.common.lib.to.ReportExecTO; import org.apache.syncope.common.lib.to.ReportTO; +import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.ReportExecExportFormat; import org.apache.syncope.common.lib.types.ReportExecStatus; import org.apache.syncope.common.rest.api.beans.BulkExecDeleteQuery; @@ -184,10 +185,22 @@ public class ReportITCase extends AbstractITCase { ReportTO reportTO = reportService.read(1L); reportTO.setKey(0); reportTO.setName("executeAndExport" + getUUIDString()); + reportTO.setActive(false); reportTO.getExecutions().clear(); reportTO = createReport(reportTO); assertNotNull(reportTO); + try { + execute(reportTO.getKey()); + fail(); + } catch (SyncopeClientException e) { + assertEquals(ClientExceptionType.Scheduling, e.getType()); + assertTrue(e.getElements().iterator().next().contains("active")); + } + + reportTO.setActive(true); + reportService.update(reportTO); + long execId = execute(reportTO.getKey()); checkExport(execId, ReportExecExportFormat.XML); @@ -234,6 +247,7 @@ public class ReportITCase extends AbstractITCase { public void issueSYNCOPE43() { ReportTO reportTO = new ReportTO(); reportTO.setName("issueSYNCOPE43" + getUUIDString()); + reportTO.setActive(true); reportTO = createReport(reportTO); assertNotNull(reportTO); http://git-wip-us.apache.org/repos/asf/syncope/blob/288179f2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java index b774bde..2385ebe 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java @@ -601,6 +601,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { SyncTaskTO task = new SyncTaskTO(); task.setDestinationRealm(SyncopeConstants.ROOT_REALM); task.setName("Test Sync Rule"); + task.setActive(true); task.setResource(RESOURCE_NAME_WS2); task.setSyncMode(SyncMode.FULL_RECONCILIATION); task.setPerformCreate(true); @@ -745,6 +746,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { SyncTaskTO syncTask = new SyncTaskTO(); syncTask.setDestinationRealm(SyncopeConstants.ROOT_REALM); syncTask.setName("DB Sync Task"); + syncTask.setActive(true); syncTask.setPerformCreate(true); syncTask.setPerformUpdate(true); syncTask.setSyncMode(SyncMode.FULL_RECONCILIATION); @@ -818,6 +820,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { SyncTaskTO syncTask = new SyncTaskTO(); syncTask.setDestinationRealm(SyncopeConstants.ROOT_REALM); syncTask.setName("LDAP Sync Task"); + syncTask.setActive(true); syncTask.setPerformCreate(true); syncTask.setPerformUpdate(true); syncTask.setSyncMode(SyncMode.FULL_RECONCILIATION);