Author: bdaw
Date: 2011-10-20 08:33:14 -0400 (Thu, 20 Oct 2011)
New Revision: 7796
Modified:
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMMembershipListAccess.java
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMUserListAccess.java
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/UserDAOImpl.java
portal/trunk/pom.xml
Log:
GTNPORTAL-1913 Incorrect number of users returned by PersistenceManager.getUserCount()
when using both DB and LDAP
GTNPORTAL-1887 Inefficient search by atrributes (email) when create or update user
GTNPORTAL-2226 Unable to create new group when using LDAP
Modified:
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMMembershipListAccess.java
===================================================================
---
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMMembershipListAccess.java 2011-10-20
09:26:03 UTC (rev 7795)
+++
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMMembershipListAccess.java 2011-10-20
12:33:14 UTC (rev 7796)
@@ -53,6 +53,8 @@
private int size = -1;
+ private Membership lastExisting;
+
public IDMMembershipListAccess(Group group)
{
this.group = group;
@@ -95,9 +97,13 @@
roles = new
LinkedList<Role>(getIDMService().getIdentitySession().getRoleManager().findRoles(user,
null, crit));
}
- Membership[] memberships = new Membership[roles.size()];
- for (int i = 0; i < roles.size(); i++)
+ Membership[] memberships = new Membership[length];
+
+ //
+ int i = 0;
+
+ for (; i < roles.size(); i++)
{
Role role = roles.get(i);
@@ -108,11 +114,31 @@
MembershipImpl memb = new MembershipImpl();
memb.setGroupId(exoGroup.getId());
memb.setUserName(role.getUser().getId());
- memb.setMembershipType(role.getRoleType().getName());
+
+ // LDAP store may return raw membership type as role type
+ if(role.getRoleType().getName().equals("JBOSS_IDENTITY_MEMBERSHIP"))
+ {
+
memb.setMembershipType(getOrganizationService().getConfiguration().getAssociationMembershipType());
+ }
+ else
+ {
+ memb.setMembershipType(role.getRoleType().getName());
+ }
+
+ lastExisting = memb;
memberships[i] = memb;
}
+ // Size can be greater then number of existing memberships
+ if (length > roles.size())
+ {
+ for (; i < length; i++)
+ {
+ memberships[i] = lastExisting;
+ }
+ }
+
if (log.isTraceEnabled())
{
Tools.logMethodOut(
Modified:
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMUserListAccess.java
===================================================================
---
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMUserListAccess.java 2011-10-20
09:26:03 UTC (rev 7795)
+++
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/IDMUserListAccess.java 2011-10-20
12:33:14 UTC (rev 7796)
@@ -53,6 +53,8 @@
private int size = -1;
+ private User lastExisting;
+
public IDMUserListAccess(UserQueryBuilder userQueryBuilder, int pageSize, boolean
countAll)
{
this.userQueryBuilder = userQueryBuilder;
@@ -90,9 +92,11 @@
users = fullResults.subList(index, index + length);
}
- User[] exoUsers = new User[users.size()];
+ User[] exoUsers = new User[length];
- for (int i = 0; i < users.size(); i++)
+ int i = 0;
+
+ for (; i < users.size(); i++)
{
org.picketlink.idm.api.User user = users.get(i);
@@ -100,8 +104,18 @@
((UserDAOImpl)getOrganizationService().getUserHandler())
.populateUser(gtnUser, getIDMService().getIdentitySession());
exoUsers[i] = gtnUser;
+ lastExisting = gtnUser;
}
+ if (length > users.size())
+ {
+
+ for(; i < length; i++)
+ {
+ exoUsers[i] = lastExisting;
+ }
+ }
+
if (log.isTraceEnabled())
{
Tools.logMethodOut(
Modified:
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/UserDAOImpl.java
===================================================================
---
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/UserDAOImpl.java 2011-10-20
09:26:03 UTC (rev 7795)
+++
portal/trunk/component/identity/src/main/java/org/exoplatform/services/organization/idm/UserDAOImpl.java 2011-10-20
12:33:14 UTC (rev 7796)
@@ -491,6 +491,21 @@
}
};
}
+ else if (!q.getEmail().contains("*"))
+ {
+ return new ListAccess<User>()
+ {
+ public User[] load(int index, int length) throws Exception,
IllegalArgumentException
+ {
+ return new User[0];
+ }
+
+ public int getSize() throws Exception
+ {
+ return 0;
+ }
+ };
+ }
}
Modified: portal/trunk/pom.xml
===================================================================
--- portal/trunk/pom.xml 2011-10-20 09:26:03 UTC (rev 7795)
+++ portal/trunk/pom.xml 2011-10-20 12:33:14 UTC (rev 7796)
@@ -46,7 +46,7 @@
<org.gatein.common.version>2.0.4-GA</org.gatein.common.version>
<org.gatein.wci.version>2.1.0-GA</org.gatein.wci.version>
<org.gatein.pc.version>2.3.0-Beta06</org.gatein.pc.version>
- <org.picketlink.idm>1.3.0.Alpha08</org.picketlink.idm>
+ <org.picketlink.idm>1.3.0.Alpha09</org.picketlink.idm>
<org.gatein.wsrp.version>2.1.0-Beta07</org.gatein.wsrp.version>
<org.gatein.mop.version>1.1.0-Beta06</org.gatein.mop.version>
<org.gatein.mgmt.version>1.0.0-Beta04</org.gatein.mgmt.version>
Show replies by date