From ced3d6045c3fb584e8805af93d5fb409e66806d3 Mon Sep 17 00:00:00 2001 From: Alexander Tsvetkov Date: Thu, 1 Nov 2018 12:30:31 +0300 Subject: [PATCH] SYNCOPE-1390: Pull Realms: pull task with Unmatching Rules: PROVISION shouldn't create propagation task --- .../pushpull/DefaultRealmPullResultHandler.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java index fb29bd46846..2f0fd19f9c0 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java @@ -31,7 +31,6 @@ import org.apache.syncope.common.lib.types.AuditElements.Result; import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.MatchingRule; -import org.apache.syncope.core.provisioning.api.PropagationByResource; import org.apache.syncope.common.lib.types.PullMode; import org.apache.syncope.common.lib.types.ResourceOperation; import org.apache.syncope.common.lib.types.UnmatchingRule; @@ -42,6 +41,7 @@ import org.apache.syncope.core.persistence.api.entity.Realm; import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit; import org.apache.syncope.core.persistence.api.entity.task.PullTask; +import org.apache.syncope.core.provisioning.api.PropagationByResource; import org.apache.syncope.core.provisioning.api.propagation.PropagationException; import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException; import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport; @@ -160,7 +160,7 @@ private List assign(final SyncDelta delta, final OrgUnit org action.beforeAssign(profile, delta, realmTO); } - create(realmTO, delta, UnmatchingRule.toEventName(UnmatchingRule.ASSIGN), result); + create(realmTO, delta, UnmatchingRule.ASSIGN, result); } return Collections.singletonList(result); @@ -198,7 +198,7 @@ private List provision(final SyncDelta delta, final OrgUnit action.beforeProvision(profile, delta, realmTO); } - create(realmTO, delta, UnmatchingRule.toEventName(UnmatchingRule.PROVISION), result); + create(realmTO, delta, UnmatchingRule.PROVISION, result); } return Collections.singletonList(result); @@ -225,7 +225,7 @@ private void throwIgnoreProvisionException(final SyncDelta delta, final Exceptio private void create( final RealmTO realmTO, final SyncDelta delta, - final String operation, + final UnmatchingRule unmatchingRule, final ProvisioningReport result) throws JobExecutionException { @@ -239,8 +239,10 @@ private void create( for (String resource : realm.getResourceKeys()) { propByRes.add(ResourceOperation.CREATE, resource); } - List tasks = propagationManager.createTasks(realm, propByRes, null); - taskExecutor.execute(tasks, false); + if (unmatchingRule == UnmatchingRule.ASSIGN) { + List tasks = propagationManager.createTasks(realm, propByRes, null); + taskExecutor.execute(tasks, false); + } RealmTO actual = binder.getRealmTO(realm, true); @@ -271,7 +273,7 @@ private void create( resultStatus = Result.FAILURE; } - finalize(operation, resultStatus, null, output, delta); + finalize(UnmatchingRule.toEventName(unmatchingRule), resultStatus, null, output, delta); } private List update(final SyncDelta delta, final List keys)