You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/03/28 10:59:19 UTC

[syncope] branch master updated: [SYNCOPE-1453] Moving hasMustChangePassword() under @Transactional, for safety

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


The following commit(s) were added to refs/heads/master by this push:
     new 5f13c73  [SYNCOPE-1453] Moving hasMustChangePassword() under @Transactional, for safety
5f13c73 is described below

commit 5f13c73f2132fd0413c84aed0855da49711eee7d
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Mar 28 10:26:03 2019 +0100

    [SYNCOPE-1453] Moving hasMustChangePassword() under @Transactional, for safety
---
 .../org/apache/syncope/core/provisioning/api/MappingManager.java  | 8 ++++++++
 .../apache/syncope/core/provisioning/java/MappingManagerImpl.java | 8 ++++++++
 .../syncope/core/provisioning/java/data/UserDataBinderImpl.java   | 3 +--
 .../syncope/core/provisioning/java/utils/ConnObjectUtils.java     | 2 +-
 .../apache/syncope/core/provisioning/java/utils/MappingUtils.java | 6 ------
 5 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
index a662e58..1e00c38 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
@@ -119,4 +119,12 @@ public interface MappingManager {
      * @param realmTO realm
      */
     void setIntValues(Item orgUnitItem, Attribute attr, RealmTO realmTO);
+
+    /**
+     * Checks if there is a mapping item in the given {@link Provision} for {@code mustChangePassword}.
+     *
+     * @param provision provision
+     * @return if there is a mapping item in the given provision for {@code mustChangePassword}
+     */
+    boolean hasMustChangePassword(Provision provision);
 }
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
index c7bf964..2bee73a 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
@@ -858,4 +858,12 @@ public class MappingManagerImpl implements MappingManager {
             }
         }
     }
+
+    @Transactional(readOnly = true)
+    @Override
+    public boolean hasMustChangePassword(final Provision provision) {
+        return provision != null && provision.getMapping() != null
+                && provision.getMapping().getItems().stream().
+                        anyMatch(mappingItem -> "mustChangePassword".equals(mappingItem.getIntAttrName()));
+    }
 }
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index e211ddc..37b67cd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -71,7 +71,6 @@ import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.URelationship;
-import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -336,7 +335,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
                     ResourceOperation.UPDATE,
                     anyUtils.getAllResources(toBeUpdated).stream().
                             filter(resource -> resource.getProvision(toBeUpdated.getType()).isPresent()).
-                            filter(resource -> MappingUtils.hasMustChangePassword(
+                            filter(resource -> mappingManager.hasMustChangePassword(
                             resource.getProvision(toBeUpdated.getType()).get())).
                             map(Entity::getKey).
                             collect(Collectors.toSet()));
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
index 5b3f3f5..5f9e561 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
@@ -255,7 +255,7 @@ public class ConnObjectUtils {
 
                     updatedUser.setSecurityQuestion(originalUser.getSecurityQuestion());
 
-                    if (!MappingUtils.hasMustChangePassword(provision)) {
+                    if (!mappingManager.hasMustChangePassword(provision)) {
                         updatedUser.setMustChangePassword(originalUser.isMustChangePassword());
                     }
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java
index d4d096e..5d0c9d2 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java
@@ -214,12 +214,6 @@ public final class MappingUtils {
         return builder.build();
     }
 
-    public static boolean hasMustChangePassword(final Provision provision) {
-        return provision != null && provision.getMapping() != null
-                && provision.getMapping().getItems().stream().
-                        anyMatch(mappingItem -> "mustChangePassword".equals(mappingItem.getIntAttrName()));
-    }
-
     /**
      * Private default constructor, for static-only classes.
      */