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()); } }
