This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


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

commit a152e564afbbe1d5daffce7a8b4cb85ee08f91eb
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Thu Mar 28 10:26:03 2019 +0100

    [SYNCOPE-1453] Moving hasMustChangePassword() under @Transactional, for 
safety
---
 .../syncope/core/provisioning/api/MappingManager.java      |  8 ++++++++
 .../syncope/core/provisioning/java/MappingManagerImpl.java | 14 ++++++++++++++
 .../core/provisioning/java/data/UserDataBinderImpl.java    |  3 +--
 .../core/provisioning/java/utils/ConnObjectUtils.java      |  2 +-
 .../syncope/core/provisioning/java/utils/MappingUtils.java | 12 ------------
 5 files changed, 24 insertions(+), 15 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 a9f7cf3..c0d6ccc 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
@@ -107,4 +107,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 f3f7201..37bb46b 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
@@ -26,6 +26,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.BooleanUtils;
@@ -851,4 +852,17 @@ public class MappingManagerImpl implements MappingManager {
             }
         }
     }
+
+    @Transactional(readOnly = true)
+    @Override
+    public boolean hasMustChangePassword(final Provision provision) {
+        return provision != null && provision.getMapping() != null
+                && IterableUtils.matchesAny(provision.getMapping().getItems(), 
new Predicate<MappingItem>() {
+
+                    @Override
+                    public boolean evaluate(final MappingItem mappingItem) {
+                        return 
"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 593ff8c..3594ec0 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
@@ -60,7 +60,6 @@ import 
org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.BeanUtils;
 import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
@@ -352,7 +351,7 @@ public class UserDataBinderImpl extends 
AbstractAnyDataBinder implements UserDat
             
user.setMustChangePassword(userPatch.getMustChangePassword().getValue());
 
             for (ExternalResource resource : 
anyUtils.getAllResources(toBeUpdated)) {
-                if 
(MappingUtils.hasMustChangePassword(resource.getProvision(toBeUpdated.getType())))
 {
+                if 
(mappingManager.hasMustChangePassword(resource.getProvision(toBeUpdated.getType())))
 {
                     propByRes.add(ResourceOperation.UPDATE, resource.getKey());
                 }
             }
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 a564e75..c41578f 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
@@ -267,7 +267,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 6f1dd33..f0b2551 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
@@ -23,7 +23,6 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.jexl3.JexlContext;
@@ -245,17 +244,6 @@ public final class MappingUtils {
         return builder.build();
     }
 
-    public static boolean hasMustChangePassword(final Provision provision) {
-        return provision != null && provision.getMapping() != null
-                && IterableUtils.matchesAny(provision.getMapping().getItems(), 
new Predicate<MappingItem>() {
-
-                    @Override
-                    public boolean evaluate(final MappingItem mappingItem) {
-                        return 
"mustChangePassword".equals(mappingItem.getIntAttrName());
-                    }
-                });
-    }
-
     /**
      * Private default constructor, for static-only classes.
      */

Reply via email to