Repository: syncope
Updated Branches:
  refs/heads/2_0_X 8b8d6df4a -> 7c18a3331


improvement for paged search of dynamic group members + fix for dynamic members 
table clearing before populate


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/7c18a333
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/7c18a333
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/7c18a333

Branch: refs/heads/2_0_X
Commit: 7c18a3331fe0a4a9c858a69ebe2e6476f9fcda85
Parents: 8b8d6df
Author: fmartelli <[email protected]>
Authored: Wed Dec 20 12:42:57 2017 +0100
Committer: fmartelli <[email protected]>
Committed: Wed Dec 20 12:42:57 2017 +0100

----------------------------------------------------------------------
 .../core/persistence/jpa/dao/JPAGroupDAO.java       | 16 ++++++++++------
 .../syncope/fit/core/ExceptionMapperITCase.java     |  7 +++++--
 2 files changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/7c18a333/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
index 23c7af6..797dd96 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
@@ -297,13 +297,15 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> 
implements GroupDAO {
         publisher.publishEvent(new AnyCreatedUpdatedEvent<>(this, merged, 
AuthContextUtils.getDomain()));
 
         // refresh dynamic memberships
+        clearUDynMembers(merged);
         if (merged.getUDynMembership() != null) {
-            clearUDynMembers(merged);
-            int count = countUDynMembers(group);
+            SearchCond cond = 
buildDynMembershipCond(merged.getUDynMembership().getFIQLCond(), 
merged.getRealm());
+            int count = searchDAO().count(
+                    
Collections.<String>singleton(merged.getRealm().getFullPath()), cond, 
AnyTypeKind.USER);
             for (int page = 1; page <= (count / AnyDAO.DEFAULT_PAGE_SIZE) + 1; 
page++) {
                 List<User> matching = searchDAO().search(
                         
Collections.<String>singleton(merged.getRealm().getFullPath()),
-                        
buildDynMembershipCond(merged.getUDynMembership().getFIQLCond(), 
merged.getRealm()),
+                        cond,
                         page,
                         AnyDAO.DEFAULT_PAGE_SIZE,
                         Collections.<OrderByClause>emptyList(),
@@ -319,13 +321,15 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> 
implements GroupDAO {
                 }
             }
         }
+        clearADynMembers(merged);
         for (ADynGroupMembership memb : merged.getADynMemberships()) {
-            clearADynMembers(merged);
-            int count = countADynMembers(group);
+            SearchCond cond = buildDynMembershipCond(memb.getFIQLCond(), 
merged.getRealm());
+            int count = searchDAO().count(
+                    
Collections.<String>singleton(merged.getRealm().getFullPath()), cond, 
AnyTypeKind.ANY_OBJECT);
             for (int page = 1; page <= (count / AnyDAO.DEFAULT_PAGE_SIZE) + 1; 
page++) {
                 List<AnyObject> matching = searchDAO().search(
                         
Collections.<String>singleton(merged.getRealm().getFullPath()),
-                        buildDynMembershipCond(memb.getFIQLCond(), 
merged.getRealm()),
+                        cond,
                         page,
                         AnyDAO.DEFAULT_PAGE_SIZE,
                         Collections.<OrderByClause>emptyList(),

http://git-wip-us.apache.org/repos/asf/syncope/blob/7c18a333/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
index a188e28..ac1cf5d 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
@@ -25,12 +25,14 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.BeforeClass;
@@ -118,9 +120,10 @@ public class ExceptionMapperITCase extends AbstractITCase {
         try {
             createGroup(groupTO2);
             fail();
-        } catch (Exception e) {
+        } catch (SyncopeClientException e) {
+            assertEquals(ClientExceptionType.EntityExists, e.getType());
             String message = 
ERROR_MESSAGES.getProperty("errMessage.UniqueConstraintViolation");
-            assertEquals("DataIntegrityViolation [" + message + "]", 
e.getMessage());
+            assertEquals("EntityExists [" + message + "]", e.getMessage());
         }
     }
 

Reply via email to