mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 23:15:43 +01:00
merge with branch issue-439
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
Reference in New Issue
Block a user