[
https://issues.jboss.org/browse/GTNPORTAL-3495?page=com.atlassian.jira.pl...
]
Marek Posolda commented on GTNPORTAL-3495:
------------------------------------------
Few comments about this:
1) Your test is not correct as it always read just page1 (memberships.load(0, 5);), so it
return it always same results for both call, hence it's not surprising that results
are duplicated. I've changed the code of the method "testMembership" like
this:
{code}
@Test
public void testMembership() throws Exception {
ExoContainer container = PortalContainer.getInstance();
OrganizationService service = (OrganizationService)
container.getComponentInstance(OrganizationService.class);
MembershipHandler handler = service.getMembershipHandler();
Group group = service.getGroupHandler().findGroupById("/test/developers");
ListAccess<Membership> memberships = handler.findAllMembershipsByGroup(group);
Set<String> identities = new HashSet<String>();
int counter = 0;
int pageNumber = 0;
while (counter < memberships.getSize()) {
int remaining = memberships.getSize() - counter;
int currentPageCount = Math.min(remaining, 5);
Membership[] membershipsPage = memberships.load(counter, currentPageCount);
counter += currentPageCount;
for (Membership membership : membershipsPage) {
identities.add(membership.getUserName());
}
System.out.println("Loaded page: " + ++pageNumber + " with " +
currentPageCount + " records.");
}
System.out.println("All loaded members: " + identities);
// Assert same count, so no identities has been filtered
assertEquals(identities.size(), memberships.getSize());
}
{code}
And now there are 11 memberships in LDAP and all those are properly read in 3 pages (page1
has 5 items, page2 has 5 items and last page just remaining 1 item) and displayed.
2) Parameter "skipPaginationInMembershipQuery" already has default value
"true" as you can see here:
https://github.com/gatein/gatein-portal/blob/master/web/portal/src/main/w...
. I don't think that it should be removed because for DB-only setup, it can be used to
improve performance as with non-mixed (DB only) setup, it's safe to use paginated
query in IDM. Unfortunately for mixed DB+LDAP setup, pagination can't be safely used
due to reasons, which Bolek already mentioned by email.
Membership Pagination don't work
--------------------------------
Key: GTNPORTAL-3495
URL:
https://issues.jboss.org/browse/GTNPORTAL-3495
Project: GateIn Portal
Issue Type: Enhancement
Security Level: Public(Everyone can see)
Affects Versions: 3.5.9.Final
Reporter: Boubaker Khanfir
Assignee: Marek Posolda
Attachments: plidm-ldap-membership-pagination.zip
I attach a new unit test for a bug that I met in PL IDM 1.4.4.
Test case description:
1/ add about 10 users in an LDAP group
2/ use SearchCriteria to paginate on the Members of this group
=> Problem: pagination doesn't work
Why does it fails:
Because in this method
"org.picketlink.idm.impl.store.ldap.LDAPIdentityStoreImpl.resolveRelationships(IdentityStoreInvocationContext,
IdentityObject, IdentityObjectRelationshipType, boolean, boolean, String,
IdentityObjectSearchCriteria)" the attribute "IdentityObjectSearchCriteria"
isn't used for pagination.
To workaround this bug I had to use (skipPaginationInMembershipQuery=true). If the UI is
buggy without this parameter to "true", I think it has to be *by default
"true" in Config class* and may be even delete this option to not use pagination
in Membership at all.
--
This message was sent by Atlassian JIRA
(v6.2.3#6260)