Author: tmortagne
Date: 2007-10-30 10:31:56 +0100 (Tue, 30 Oct 2007)
New Revision: 5566
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiGroupServiceImpl.java
Log:
XWIKI-1826: modify XWikiGroupServiceImpl.removeUserOrGroupFromGroup to be based
on "one member a XWiki.XWikiGroups object".
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiGroupServiceImpl.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiGroupServiceImpl.java
2007-10-29 23:50:27 UTC (rev 5565)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiGroupServiceImpl.java
2007-10-30 09:31:56 UTC (rev 5566)
@@ -51,7 +51,6 @@
import java.util.Vector;
import org.apache.commons.lang.NotImplementedException;
-import org.apache.commons.lang.StringUtils;
/**
* Default implementation of [EMAIL PROTECTED] XWikiGroupService} users and
groups manager.
@@ -82,11 +81,6 @@
private static final String FIELD_XWIKIGROUPS_MEMBER = "member";
/**
- * Separator between members names in XWiki.XWikiGroups class "member"
field.
- */
- private static final String FIELD_XWIKIGROUPS_MEMBER_SEP = " ,";
-
- /**
* Default space name for a group or a user.
*/
private static final String DEFAULT_MEMBER_SPACE = "XWiki";
@@ -208,38 +202,37 @@
}
/**
- * Remove a user or group name from a list of string used in
XWiki.XWikiGroups class "member"
- * field.
+ * Check if provided member is equal to member name found in
XWiki.XWikiGroups object.
*
- * @param list the list of members names where to find the one to remove.
+ * @param currentMember the member name found in XWiki.XWikiGroups object.
* @param memberWiki the name of the wiki of the member.
* @param memberSpace the name of the space of the member.
* @param memberName the name of the member.
* @param context the XWiki context.
- * @return true if at least one member has been removed from the list.
+ * @return true if equals, false if not.
*/
- private boolean removeMemberFromList(List list, String memberWiki, String
memberSpace,
+ private boolean isMemberEquals(String currentMember, String memberWiki,
String memberSpace,
String memberName, XWikiContext context)
{
- boolean needUpdate = false;
+ boolean equals = false;
if (memberWiki != null) {
- needUpdate |= list.remove(memberWiki + WIKI_FULLNAME_SEP +
memberName);
+ equals |= currentMember.equals(memberWiki + WIKI_FULLNAME_SEP +
memberName);
if (memberSpace == null ||
memberSpace.equals(DEFAULT_MEMBER_SPACE)) {
- needUpdate |= list.remove(memberSpace + SAME_NAME_SEP +
memberName);
+ equals |= currentMember.equals(memberSpace + SAME_NAME_SEP +
memberName);
}
}
if (context.getDatabase() == null ||
context.getDatabase().equalsIgnoreCase(memberWiki)) {
- needUpdate |= list.remove(memberName);
+ equals |= currentMember.equals(memberName);
if (memberSpace == null ||
memberSpace.equals(DEFAULT_MEMBER_SPACE)) {
- needUpdate |= list.remove(memberSpace + SAME_NAME_SEP +
memberName);
+ equals |= currentMember.equals(memberSpace + SAME_NAME_SEP +
memberName);
}
}
- return needUpdate;
+ return equals;
}
/**
@@ -263,21 +256,10 @@
for (Iterator itGroups = groupVector.iterator();
itGroups.hasNext();) {
BaseObject bobj = (BaseObject) itGroups.next();
if (bobj != null) {
- String members =
bobj.getStringValue(FIELD_XWIKIGROUPS_MEMBER);
- List memberList =
- ListClass.getListFromString(members,
FIELD_XWIKIGROUPS_MEMBER_SEP, false);
+ String member =
bobj.getStringValue(FIELD_XWIKIGROUPS_MEMBER);
- needUpdate |=
- removeMemberFromList(memberList, memberWiki,
memberSpace, memberName,
- context);
-
- if (needUpdate) {
- if (memberList.size() > 0) {
- bobj.setStringValue(FIELD_XWIKIGROUPS_MEMBER,
StringUtils.join(
- memberList.toArray(),
FIELD_XWIKIGROUPS_MEMBER_SEP.charAt(0)));
- } else {
- groupDocument.removeObject(bobj);
- }
+ if (isMemberEquals(member, memberWiki, memberSpace,
memberName, context)) {
+ groupDocument.removeObject(bobj);
}
}
}
@@ -660,8 +642,9 @@
/**
* [EMAIL PROTECTED]
- *
- * @see
com.xpn.xwiki.user.api.XWikiGroupService#countAllMatchedGroups(java.lang.Object[][],
com.xpn.xwiki.XWikiContext)
+ *
+ * @see
com.xpn.xwiki.user.api.XWikiGroupService#countAllMatchedGroups(java.lang.Object[][],
+ * com.xpn.xwiki.XWikiContext)
*/
public int countAllMatchedGroups(Object[][] matchFields, XWikiContext
context)
throws XWikiException
@@ -741,7 +724,7 @@
{
if (group == null)
return 0;
-
+
// TODO: improve using real request
return getAllMembersNamesForGroup(group, 0, 0, context).size();
}
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications