[SYNCOPE-1354] Taking always enable into account when creating Propagation Tasks upon Push
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/5155e37c Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/5155e37c Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/5155e37c Branch: refs/heads/2_0_X Commit: 5155e37c4d6a45bd71c61fd8f7e6209b6665bd01 Parents: 02e90b8 Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Mon Aug 13 15:13:03 2018 +0200 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Mon Aug 13 15:36:02 2018 +0200 ---------------------------------------------------------------------- .../api/propagation/PropagationManager.java | 2 ++ .../DefaultAnyObjectProvisioningManager.java | 1 + .../java/DefaultGroupProvisioningManager.java | 2 ++ .../propagation/PropagationManagerImpl.java | 3 ++- .../pushpull/AbstractPushResultHandler.java | 28 ++++++++++++-------- .../camel/producer/CreateProducer.java | 2 ++ 6 files changed, 26 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/5155e37c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java index 6994a47..00c311b 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java @@ -36,6 +36,7 @@ public interface PropagationManager { * * @param kind any object type kind * @param key any object key + * @param enable whether any object should be enabled or not * @param propByRes operation to be performed per resource * @param vAttrs virtual attributes to be set * @param noPropResourceKeys external resources performing not to be considered for propagation @@ -44,6 +45,7 @@ public interface PropagationManager { List<PropagationTaskTO> getCreateTasks( AnyTypeKind kind, String key, + Boolean enable, PropagationByResource propByRes, Collection<AttrTO> vAttrs, Collection<String> noPropResourceKeys); http://git-wip-us.apache.org/repos/asf/syncope/blob/5155e37c/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java index e313ce3..a1b8b3f 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java @@ -78,6 +78,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin List<PropagationTaskTO> tasks = propagationManager.getCreateTasks( AnyTypeKind.ANY_OBJECT, created.getResult(), + null, created.getPropByRes(), anyObjectTO.getVirAttrs(), excludedResources); http://git-wip-us.apache.org/repos/asf/syncope/blob/5155e37c/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java index 8a9f330..941b588 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java @@ -75,6 +75,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager List<PropagationTaskTO> tasks = propagationManager.getCreateTasks( AnyTypeKind.GROUP, created.getResult(), + null, created.getPropByRes(), groupTO.getVirAttrs(), Collections.<String>emptySet()); @@ -102,6 +103,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager List<PropagationTaskTO> tasks = propagationManager.getCreateTasks( AnyTypeKind.GROUP, created.getResult(), + null, created.getPropByRes(), groupTO.getVirAttrs(), excludedResources); http://git-wip-us.apache.org/repos/asf/syncope/blob/5155e37c/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java index df4183a..0fee2cc 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java @@ -138,11 +138,12 @@ public class PropagationManagerImpl implements PropagationManager { public List<PropagationTaskTO> getCreateTasks( final AnyTypeKind kind, final String key, + final Boolean enable, final PropagationByResource propByRes, final Collection<AttrTO> vAttrs, final Collection<String> noPropResourceKeys) { - return getCreateTasks(dao(kind).authFind(key), null, null, propByRes, vAttrs, noPropResourceKeys); + return getCreateTasks(dao(kind).authFind(key), null, enable, propByRes, vAttrs, noPropResourceKeys); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/5155e37c/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java index 05c723d..798e2b7 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java @@ -97,7 +97,12 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan } } - protected void update(final Any<?> any, final ProvisioningReport result) { + protected void update( + final Any<?> any, + final Boolean enable, + final ConnectorObject beforeObj, + final ProvisioningReport result) { + boolean changepwd = any instanceof User; List<String> ownedResources = CollectionUtils.collect( getAnyUtils().getAllResources(any), EntityUtils.keyTransformer(), new ArrayList<String>()); @@ -112,7 +117,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan any.getType().getKind(), any.getKey(), changepwd, - null, + enable, propByRes, null, noPropResources), @@ -135,7 +140,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan reportPropagation(result, reporter); } - protected void provision(final Any<?> any, final Boolean enabled, final ProvisioningReport result) { + protected void provision(final Any<?> any, final Boolean enable, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); @@ -147,6 +152,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan PropagationReporter reporter = taskExecutor.execute(propagationManager.getCreateTasks( any.getType().getKind(), any.getKey(), + enable, propByRes, before.getVirAttrs(), noPropResources), @@ -254,10 +260,6 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan result.setAnyType(any.getType().getKey()); result.setName(getName(any)); - Boolean enabled = any instanceof User && profile.getTask().isSyncStatus() - ? ((User) any).isSuspended() ? Boolean.FALSE : Boolean.TRUE - : null; - LOG.debug("Propagating {} with key {} towards {}", anyUtils.anyTypeKind(), any.getKey(), profile.getTask().getResource()); @@ -280,7 +282,11 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan provision.getMapping().getItems().iterator()); } - Boolean status = profile.getTask().isSyncStatus() ? enabled : null; + Boolean enable = any instanceof User && profile.getTask().isSyncStatus() + ? ((User) any).isSuspended() + ? Boolean.FALSE + : Boolean.TRUE + : null; if (profile.isDryRun()) { if (beforeObj == null) { @@ -318,7 +324,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan LOG.debug("PushTask not configured for create"); result.setStatus(ProvisioningReport.Status.IGNORE); } else { - assign(any, status, result); + assign(any, enable, result); } break; @@ -331,7 +337,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan LOG.debug("PushTask not configured for create"); result.setStatus(ProvisioningReport.Status.IGNORE); } else { - provision(any, status, result); + provision(any, enable, result); } break; @@ -368,7 +374,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan LOG.debug("PushTask not configured for update"); result.setStatus(ProvisioningReport.Status.IGNORE); } else { - update(any, result); + update(any, enable, beforeObj, result); } break; http://git-wip-us.apache.org/repos/asf/syncope/blob/5155e37c/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java index c616a21..c58590b 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java @@ -79,6 +79,7 @@ public class CreateProducer extends AbstractProducer { List<PropagationTaskTO> tasks = getPropagationManager().getCreateTasks( AnyTypeKind.GROUP, created.getResult(), + null, created.getPropByRes(), ((AnyTO) actual).getVirAttrs(), excludedResources); @@ -89,6 +90,7 @@ public class CreateProducer extends AbstractProducer { List<PropagationTaskTO> tasks = getPropagationManager().getCreateTasks( actual instanceof AnyObjectTO ? AnyTypeKind.ANY_OBJECT : AnyTypeKind.GROUP, created.getResult(), + null, created.getPropByRes(), ((AnyTO) actual).getVirAttrs(), excludedResources);