merge with branch issue-439

This commit is contained in:
Sebastian Sdorra
2013-09-13 16:20:03 +02:00
2 changed files with 32 additions and 9 deletions

View File

@@ -56,6 +56,8 @@ import javax.xml.bind.annotation.XmlRootElement;
/** /**
* Organizes users into a group for easier permissions management. * Organizes users into a group for easier permissions management.
* *
* TODO for 2.0: Use a set instead of a list for members
*
* @author Sebastian Sdorra * @author Sebastian Sdorra
*/ */
@XmlRootElement(name = "groups") @XmlRootElement(name = "groups")

View File

@@ -35,6 +35,8 @@ package sonia.scm.group;
//~--- non-JDK imports -------------------------------------------------------- //~--- non-JDK imports --------------------------------------------------------
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
@@ -140,6 +142,7 @@ public class DefaultGroupManager extends AbstractGroupManager
throw new GroupAllreadyExistExeption(); throw new GroupAllreadyExistExeption();
} }
removeDuplicateMembers(group);
group.setCreationDate(System.currentTimeMillis()); group.setCreationDate(System.currentTimeMillis());
fireEvent(group, HandlerEvent.BEFORE_CREATE); fireEvent(group, HandlerEvent.BEFORE_CREATE);
groupDAO.add(group); groupDAO.add(group);
@@ -221,6 +224,7 @@ public class DefaultGroupManager extends AbstractGroupManager
if (groupDAO.contains(name)) if (groupDAO.contains(name))
{ {
removeDuplicateMembers(group);
group.setLastModified(System.currentTimeMillis()); group.setLastModified(System.currentTimeMillis());
fireEvent(group, HandlerEvent.BEFORE_MODIFY); fireEvent(group, HandlerEvent.BEFORE_MODIFY);
groupDAO.modify(group); groupDAO.modify(group);
@@ -439,6 +443,23 @@ public class DefaultGroupManager extends AbstractGroupManager
return groupDAO.getLastModified(); return groupDAO.getLastModified();
} }
//~--- methods --------------------------------------------------------------
/**
* Remove duplicate members from group.
* Have a look at issue #439
*
*
* @param group group
*/
private void removeDuplicateMembers(Group group)
{
List<String> members =
Lists.newArrayList(ImmutableSet.copyOf(group.getMembers()));
group.setMembers(members);
}
//~--- fields --------------------------------------------------------------- //~--- fields ---------------------------------------------------------------
/** Field description */ /** Field description */