Commit e30b8c55 authored by Brian Major's avatar Brian Major
Browse files

s1885 - users no longer sorted in groups

parent d1ebc41c
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -199,11 +199,11 @@ public abstract class AbstractGroupAction implements PrivilegedExceptionAction<O
        }
        }
        catch (Throwable t)
        catch (Throwable t)
        {
        {
            log.error("Internal Error", t);
            String message = "Internal Error: " + t.getMessage();
            String message = "Internal Error: " + t.getMessage();
            this.logInfo.setSuccess(false);
            this.logInfo.setSuccess(false);
            this.logInfo.setMessage(message);
            log.error(message, t);
            sendError(500, message);
            sendError(500, message);
            this.logInfo.setMessage(message);
        }
        }
        return null;
        return null;
    }
    }
+6 −1
Original line number Original line Diff line number Diff line
@@ -72,6 +72,8 @@ import java.security.Principal;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;


import org.apache.log4j.Logger;

import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.MemberAlreadyExistsException;
import ca.nrc.cadc.ac.MemberAlreadyExistsException;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.User;
@@ -79,6 +81,8 @@ import ca.nrc.cadc.auth.AuthenticationUtil;


public class AddUserMemberAction extends AbstractGroupAction
public class AddUserMemberAction extends AbstractGroupAction
{
{
    private static final Logger log = Logger.getLogger(AddUserMemberAction.class);

    private final String groupName;
    private final String groupName;
    private final String userID;
    private final String userID;
    private final String userIDType;
    private final String userIDType;
@@ -92,12 +96,13 @@ public class AddUserMemberAction extends AbstractGroupAction
        this.userIDType = userIDType;
        this.userIDType = userIDType;
    }
    }


    @SuppressWarnings("unchecked")
    @Override
    public void doAction() throws Exception
    public void doAction() throws Exception
    {
    {
        Group group = groupPersistence.getGroup(this.groupName);
        Group group = groupPersistence.getGroup(this.groupName);
        Principal userPrincipal = AuthenticationUtil.createPrincipal(this.userID, this.userIDType);
        Principal userPrincipal = AuthenticationUtil.createPrincipal(this.userID, this.userIDType);
        User toAdd = new User();
        User toAdd = new User();

        toAdd.getIdentities().add(userPrincipal);
        toAdd.getIdentities().add(userPrincipal);
        if (!group.getUserMembers().add(toAdd))
        if (!group.getUserMembers().add(toAdd))
        {
        {
+4 −8
Original line number Original line Diff line number Diff line
@@ -78,7 +78,6 @@ import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.server.PluginFactory;
import ca.nrc.cadc.ac.server.PluginFactory;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.util.ObjectUtil;


public class RemoveUserMemberAction extends AbstractGroupAction
public class RemoveUserMemberAction extends AbstractGroupAction
{
{
@@ -86,7 +85,7 @@ public class RemoveUserMemberAction extends AbstractGroupAction
    private final String userID;
    private final String userID;
    private final String userIDType;
    private final String userIDType;


    RemoveUserMemberAction(String groupName, String userID, String userIDType)
    public RemoveUserMemberAction(String groupName, String userID, String userIDType)
    {
    {
        super();
        super();
        this.groupName = groupName;
        this.groupName = groupName;
@@ -94,7 +93,7 @@ public class RemoveUserMemberAction extends AbstractGroupAction
        this.userIDType = userIDType;
        this.userIDType = userIDType;
    }
    }


    @SuppressWarnings("unchecked")
    @Override
    public void doAction() throws Exception
    public void doAction() throws Exception
    {
    {
        Group group = groupPersistence.getGroup(this.groupName);
        Group group = groupPersistence.getGroup(this.groupName);
@@ -102,18 +101,15 @@ public class RemoveUserMemberAction extends AbstractGroupAction
        Principal userPrincipal = AuthenticationUtil.createPrincipal(this.userID, this.userIDType);
        Principal userPrincipal = AuthenticationUtil.createPrincipal(this.userID, this.userIDType);


        User user = getUserPersistence().getAugmentedUser(userPrincipal);
        User user = getUserPersistence().getAugmentedUser(userPrincipal);
        User toRemove = new User();
        ObjectUtil.setField(toRemove, user.getID(), "id");
        toRemove.getIdentities().addAll(user.getIdentities());


        if (!group.getUserMembers().remove(toRemove))
        if (!group.getUserMembers().remove(user))
        {
        {
            throw new MemberNotFoundException();
            throw new MemberNotFoundException();
        }
        }
        groupPersistence.modifyGroup(group);
        groupPersistence.modifyGroup(group);


        List<String> deletedMembers = new ArrayList<String>();
        List<String> deletedMembers = new ArrayList<String>();
        deletedMembers.add(getUseridForLogging(toRemove));
        deletedMembers.add(getUseridForLogging(user));
        logGroupInfo(group.getID(), deletedMembers, null);
        logGroupInfo(group.getID(), deletedMembers, null);
    }
    }


+3 −13
Original line number Original line Diff line number Diff line
@@ -72,7 +72,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.fail;


import java.security.Principal;
import java.security.PrivilegedExceptionAction;
import java.security.PrivilegedExceptionAction;
import java.util.Collection;
import java.util.Collection;


@@ -118,14 +117,6 @@ public class LdapGroupDAOTest extends AbstractLdapDAOTest
                    getGroupDAO().addGroup(expectGroup);
                    getGroupDAO().addGroup(expectGroup);
                    Group actualGroup = getGroupDAO().getGroup(expectGroup.getID(), true);
                    Group actualGroup = getGroupDAO().getGroup(expectGroup.getID(), true);
                    log.info("addGroup: " + expectGroup.getID());
                    log.info("addGroup: " + expectGroup.getID());
                    for (Principal p : expectGroup.getOwner().getIdentities())
                    {
                        log.info("ep: " + p);
                    }
                    for (Principal p : actualGroup.getOwner().getIdentities())
                    {
                        log.info("ap: " + p);
                    }
                    assertGroupsEqual(expectGroup, actualGroup);
                    assertGroupsEqual(expectGroup, actualGroup);


                    Group otherGroup = new Group(getGroupID());
                    Group otherGroup = new Group(getGroupID());
@@ -446,7 +437,8 @@ public class LdapGroupDAOTest extends AbstractLdapDAOTest
        }
        }


        assertEquals(gr1.getUserMembers().size(), gr2.getUserMembers().size());
        assertEquals(gr1.getUserMembers().size(), gr2.getUserMembers().size());
        assertEquals(gr1.getUserMembers(), gr2.getUserMembers());
        assertTrue(gr1.getUserMembers().containsAll(gr2.getUserMembers()));
        assertTrue(gr2.getUserMembers().containsAll(gr1.getUserMembers()));
        for (User user : gr1.getUserMembers())
        for (User user : gr1.getUserMembers())
        {
        {
            assertTrue(gr2.getUserMembers().contains(user));
            assertTrue(gr2.getUserMembers().contains(user));
@@ -459,9 +451,7 @@ public class LdapGroupDAOTest extends AbstractLdapDAOTest
            assertTrue(gr2.getGroupAdmins().contains(gr));
            assertTrue(gr2.getGroupAdmins().contains(gr));
        }
        }


        assertEquals(gr1.getUserAdmins(), gr2.getUserAdmins());
        assertEquals(gr1.getUserAdmins().size(), gr2.getUserAdmins().size());
        assertEquals(gr1.getUserAdmins().size(), gr2.getUserAdmins()
                .size());
        for (User user : gr1.getUserAdmins())
        for (User user : gr1.getUserAdmins())
        {
        {
            assertTrue(gr2.getUserAdmins().contains(user));
            assertTrue(gr2.getUserAdmins().contains(user));
+8 −6
Original line number Original line Diff line number Diff line
@@ -71,7 +71,6 @@ package ca.nrc.cadc.ac;
import java.util.Date;
import java.util.Date;
import java.util.HashSet;
import java.util.HashSet;
import java.util.Set;
import java.util.Set;
import java.util.TreeSet;


public class Group
public class Group
{
{
@@ -83,13 +82,13 @@ public class Group
    protected Set<GroupProperty> properties = new HashSet<GroupProperty>();
    protected Set<GroupProperty> properties = new HashSet<GroupProperty>();


    // group's user members
    // group's user members
    private Set<User> userMembers = new TreeSet<User>();
    private UserSet userMembers = new UserSet();


    // group's group members
    // group's group members
    private Set<Group> groupMembers = new HashSet<Group>();
    private Set<Group> groupMembers = new HashSet<Group>();


    // group's user admins
    // group's user admins
    private Set<User> userAdmins = new TreeSet<User>();
    private UserSet userAdmins = new UserSet();


    // group's group admins
    // group's group admins
    private Set<Group> groupAdmins = new HashSet<Group>();
    private Set<Group> groupAdmins = new HashSet<Group>();
@@ -97,7 +96,9 @@ public class Group
    public String description;
    public String description;
    public Date lastModified;
    public Date lastModified;


    public Group() {}
    public Group()
    {
    }


    /**
    /**
     * Ctor.
     * Ctor.
@@ -153,7 +154,7 @@ public class Group
     *
     *
     * @return individual user members of this group
     * @return individual user members of this group
     */
     */
    public Set<User> getUserMembers()
    public UserSet getUserMembers()
    {
    {
        return userMembers;
        return userMembers;
    }
    }
@@ -171,7 +172,7 @@ public class Group
     *
     *
     * @return individual user admins of this group
     * @return individual user admins of this group
     */
     */
    public Set<User> getUserAdmins()
    public UserSet getUserAdmins()
    {
    {
        return userAdmins;
        return userAdmins;
    }
    }
@@ -225,4 +226,5 @@ public class Group
    {
    {
        return getClass().getSimpleName() + "[" + groupID + "]";
        return getClass().getSimpleName() + "[" + groupID + "]";
    }
    }

}
}
Loading