[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);

Reply via email to