Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserNamesAction.java→projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserIDsAction.java +11 −10 Original line number Diff line number Diff line Loading @@ -67,21 +67,22 @@ ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.Writer; import java.util.Collection; import org.apache.log4j.Logger; import ca.nrc.cadc.ac.server.GroupPersistence; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.auth.HttpPrincipal; public class GetGroupNamesAction extends GroupsAction public class GetUserIDsAction extends UsersAction { private static final Logger log = Logger.getLogger(GetGroupNamesAction.class); private static final Logger log = Logger.getLogger(GetUserIDsAction.class); GetGroupNamesAction(GroupLogInfo logInfo) GetUserIDsAction(UserLogInfo logInfo) { super(logInfo); } Loading @@ -89,20 +90,20 @@ public class GetGroupNamesAction extends GroupsAction public Object run() throws Exception { GroupPersistence groupPersistence = getGroupPersistence(); Collection<String> groups = groupPersistence.getGroupNames(); log.debug("Found " + groups.size() + " group names"); UserPersistence userPersistence = getUserPersistence(); Collection<HttpPrincipal> userIDs = userPersistence.getCadcIDs(); log.debug("Found " + userIDs.size() + " user IDs"); response.setContentType("text/plain"); log.debug("Set content-type to text/plain"); Writer writer = response.getWriter(); boolean start = true; for (final String group : groups) for (final HttpPrincipal userID : userIDs) { if (!start) { writer.write("\r\n"); } writer.write(group); writer.write(userID.getName()); start = false; } Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserLogInfo.java +3 −3 Original line number Diff line number Diff line Loading @@ -66,19 +66,19 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import ca.nrc.cadc.log.ServletLogInfo; import java.util.List; import javax.servlet.http.HttpServletRequest; public class GroupLogInfo extends ServletLogInfo public class UserLogInfo extends ServletLogInfo { public String groupID; public List<String> addedMembers; public List<String> deletedMembers; public GroupLogInfo(HttpServletRequest request) public UserLogInfo(HttpServletRequest request) { super(request); } Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UsersAction.java +5 −5 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.IOException; import java.security.AccessControlException; Loading @@ -90,14 +90,14 @@ import ca.nrc.cadc.ac.server.PluginFactory; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.net.TransientException; public abstract class GroupsAction public abstract class UsersAction implements PrivilegedExceptionAction<Object> { private static final Logger log = Logger.getLogger(GroupsAction.class); protected GroupLogInfo logInfo; private static final Logger log = Logger.getLogger(UsersAction.class); protected UserLogInfo logInfo; protected HttpServletResponse response; GroupsAction(GroupLogInfo logInfo) UsersAction(UserLogInfo logInfo) { this.logInfo = logInfo; } Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UsersActionFactory.java +16 −70 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.IOException; import java.net.URL; Loading @@ -76,16 +76,23 @@ import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import ca.nrc.cadc.ac.server.web.AddGroupMemberAction; import ca.nrc.cadc.ac.server.web.AddUserMemberAction; import ca.nrc.cadc.ac.server.web.DeleteGroupAction; import ca.nrc.cadc.ac.server.web.GetGroupAction; import ca.nrc.cadc.ac.server.web.ModifyGroupAction; import ca.nrc.cadc.ac.server.web.RemoveGroupMemberAction; import ca.nrc.cadc.ac.server.web.RemoveUserMemberAction; import ca.nrc.cadc.util.StringUtil; public class GroupsActionFactory public class UsersActionFactory { private static final Logger log = Logger.getLogger(GroupsActionFactory.class); private static final Logger log = Logger.getLogger(UsersActionFactory.class); static GroupsAction getGroupsAction(HttpServletRequest request, GroupLogInfo logInfo) static UsersAction getUsersAction(HttpServletRequest request, UserLogInfo logInfo) throws IOException { GroupsAction action = null; UsersAction action = null; String method = request.getMethod(); String path = request.getPathInfo(); log.debug("method: " + method); Loading Loading @@ -116,78 +123,17 @@ public class GroupsActionFactory { if (method.equals("GET")) { action = new GetGroupNamesAction(logInfo); action = new GetUserIDsAction(logInfo); } else if (method.equals("PUT")) { action = new CreateGroupAction(logInfo, request.getInputStream()); throw new UnsupportedOperationException("TODO"); } } else if (segments.length == 1) else { String groupName = segments[0]; if (method.equals("GET")) { action = new GetGroupAction(logInfo, groupName); } else if (method.equals("DELETE")) { action = new DeleteGroupAction(logInfo, groupName); } else if (method.equals("POST")) { final URL requestURL = new URL(request.getRequestURL().toString()); final StringBuilder sb = new StringBuilder(); sb.append(requestURL.getProtocol()); sb.append("://"); sb.append(requestURL.getHost()); if (requestURL.getPort() > 0) { sb.append(":"); sb.append(requestURL.getPort()); } sb.append(request.getContextPath()); sb.append(request.getServletPath()); sb.append("/"); sb.append(path); action = new ModifyGroupAction(logInfo, groupName, sb.toString(), request.getInputStream()); } } else if (segments.length == 3) { String groupName = segments[0]; String memberCategory = segments[1]; if (method.equals("PUT")) { if (memberCategory.equals("groupMembers")) { String groupMemberName = segments[2]; action = new AddGroupMemberAction(logInfo, groupName, groupMemberName); } else if (memberCategory.equals("userMembers")) { String userMemberID = URLDecoder.decode(segments[2], "UTF-8"); String userMemberIDType = request.getParameter("idType"); action = new AddUserMemberAction(logInfo, groupName, userMemberID, userMemberIDType); } } else if (method.equals("DELETE")) { if (memberCategory.equals("groupMembers")) { String groupMemberName = segments[2]; action = new RemoveGroupMemberAction(logInfo, groupName, groupMemberName); } else if (memberCategory.equals("userMembers")) { String memberUserID = URLDecoder.decode(segments[2], "UTF-8"); String memberUserIDType = request.getParameter("idType"); action = new RemoveUserMemberAction(logInfo, groupName, memberUserID, memberUserIDType); } } throw new UnsupportedOperationException("TODO"); } if (action != null) Loading projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UsersServlet.java +6 −6 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.IOException; Loading @@ -79,24 +79,24 @@ import org.apache.log4j.Logger; import ca.nrc.cadc.auth.AuthenticationUtil; public class GroupsServlet extends HttpServlet public class UsersServlet extends HttpServlet { private static final Logger log = Logger.getLogger(GroupsServlet.class); private static final Logger log = Logger.getLogger(UsersServlet.class); /** * Create a GroupAction and run the action safely. * Create a UserAction and run the action safely. */ private void doAction(HttpServletRequest request, HttpServletResponse response) throws IOException { long start = System.currentTimeMillis(); GroupLogInfo logInfo = new GroupLogInfo(request); UserLogInfo logInfo = new UserLogInfo(request); try { log.info(logInfo.start()); Subject subject = AuthenticationUtil.getSubject(request); logInfo.setSubject(subject); GroupsAction action = GroupsActionFactory.getGroupsAction(request, logInfo); UsersAction action = UsersActionFactory.getUsersAction(request, logInfo); action.doAction(subject, response); } catch (IllegalArgumentException e) Loading Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserNamesAction.java→projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserIDsAction.java +11 −10 Original line number Diff line number Diff line Loading @@ -67,21 +67,22 @@ ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.Writer; import java.util.Collection; import org.apache.log4j.Logger; import ca.nrc.cadc.ac.server.GroupPersistence; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.auth.HttpPrincipal; public class GetGroupNamesAction extends GroupsAction public class GetUserIDsAction extends UsersAction { private static final Logger log = Logger.getLogger(GetGroupNamesAction.class); private static final Logger log = Logger.getLogger(GetUserIDsAction.class); GetGroupNamesAction(GroupLogInfo logInfo) GetUserIDsAction(UserLogInfo logInfo) { super(logInfo); } Loading @@ -89,20 +90,20 @@ public class GetGroupNamesAction extends GroupsAction public Object run() throws Exception { GroupPersistence groupPersistence = getGroupPersistence(); Collection<String> groups = groupPersistence.getGroupNames(); log.debug("Found " + groups.size() + " group names"); UserPersistence userPersistence = getUserPersistence(); Collection<HttpPrincipal> userIDs = userPersistence.getCadcIDs(); log.debug("Found " + userIDs.size() + " user IDs"); response.setContentType("text/plain"); log.debug("Set content-type to text/plain"); Writer writer = response.getWriter(); boolean start = true; for (final String group : groups) for (final HttpPrincipal userID : userIDs) { if (!start) { writer.write("\r\n"); } writer.write(group); writer.write(userID.getName()); start = false; } Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserLogInfo.java +3 −3 Original line number Diff line number Diff line Loading @@ -66,19 +66,19 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import ca.nrc.cadc.log.ServletLogInfo; import java.util.List; import javax.servlet.http.HttpServletRequest; public class GroupLogInfo extends ServletLogInfo public class UserLogInfo extends ServletLogInfo { public String groupID; public List<String> addedMembers; public List<String> deletedMembers; public GroupLogInfo(HttpServletRequest request) public UserLogInfo(HttpServletRequest request) { super(request); } Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UsersAction.java +5 −5 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.IOException; import java.security.AccessControlException; Loading @@ -90,14 +90,14 @@ import ca.nrc.cadc.ac.server.PluginFactory; import ca.nrc.cadc.ac.server.UserPersistence; import ca.nrc.cadc.net.TransientException; public abstract class GroupsAction public abstract class UsersAction implements PrivilegedExceptionAction<Object> { private static final Logger log = Logger.getLogger(GroupsAction.class); protected GroupLogInfo logInfo; private static final Logger log = Logger.getLogger(UsersAction.class); protected UserLogInfo logInfo; protected HttpServletResponse response; GroupsAction(GroupLogInfo logInfo) UsersAction(UserLogInfo logInfo) { this.logInfo = logInfo; } Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UsersActionFactory.java +16 −70 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.IOException; import java.net.URL; Loading @@ -76,16 +76,23 @@ import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import ca.nrc.cadc.ac.server.web.AddGroupMemberAction; import ca.nrc.cadc.ac.server.web.AddUserMemberAction; import ca.nrc.cadc.ac.server.web.DeleteGroupAction; import ca.nrc.cadc.ac.server.web.GetGroupAction; import ca.nrc.cadc.ac.server.web.ModifyGroupAction; import ca.nrc.cadc.ac.server.web.RemoveGroupMemberAction; import ca.nrc.cadc.ac.server.web.RemoveUserMemberAction; import ca.nrc.cadc.util.StringUtil; public class GroupsActionFactory public class UsersActionFactory { private static final Logger log = Logger.getLogger(GroupsActionFactory.class); private static final Logger log = Logger.getLogger(UsersActionFactory.class); static GroupsAction getGroupsAction(HttpServletRequest request, GroupLogInfo logInfo) static UsersAction getUsersAction(HttpServletRequest request, UserLogInfo logInfo) throws IOException { GroupsAction action = null; UsersAction action = null; String method = request.getMethod(); String path = request.getPathInfo(); log.debug("method: " + method); Loading Loading @@ -116,78 +123,17 @@ public class GroupsActionFactory { if (method.equals("GET")) { action = new GetGroupNamesAction(logInfo); action = new GetUserIDsAction(logInfo); } else if (method.equals("PUT")) { action = new CreateGroupAction(logInfo, request.getInputStream()); throw new UnsupportedOperationException("TODO"); } } else if (segments.length == 1) else { String groupName = segments[0]; if (method.equals("GET")) { action = new GetGroupAction(logInfo, groupName); } else if (method.equals("DELETE")) { action = new DeleteGroupAction(logInfo, groupName); } else if (method.equals("POST")) { final URL requestURL = new URL(request.getRequestURL().toString()); final StringBuilder sb = new StringBuilder(); sb.append(requestURL.getProtocol()); sb.append("://"); sb.append(requestURL.getHost()); if (requestURL.getPort() > 0) { sb.append(":"); sb.append(requestURL.getPort()); } sb.append(request.getContextPath()); sb.append(request.getServletPath()); sb.append("/"); sb.append(path); action = new ModifyGroupAction(logInfo, groupName, sb.toString(), request.getInputStream()); } } else if (segments.length == 3) { String groupName = segments[0]; String memberCategory = segments[1]; if (method.equals("PUT")) { if (memberCategory.equals("groupMembers")) { String groupMemberName = segments[2]; action = new AddGroupMemberAction(logInfo, groupName, groupMemberName); } else if (memberCategory.equals("userMembers")) { String userMemberID = URLDecoder.decode(segments[2], "UTF-8"); String userMemberIDType = request.getParameter("idType"); action = new AddUserMemberAction(logInfo, groupName, userMemberID, userMemberIDType); } } else if (method.equals("DELETE")) { if (memberCategory.equals("groupMembers")) { String groupMemberName = segments[2]; action = new RemoveGroupMemberAction(logInfo, groupName, groupMemberName); } else if (memberCategory.equals("userMembers")) { String memberUserID = URLDecoder.decode(segments[2], "UTF-8"); String memberUserIDType = request.getParameter("idType"); action = new RemoveUserMemberAction(logInfo, groupName, memberUserID, memberUserIDType); } } throw new UnsupportedOperationException("TODO"); } if (action != null) Loading
projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UsersServlet.java +6 −6 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ * ************************************************************************ */ package ca.nrc.cadc.ac.server.web; package ca.nrc.cadc.ac.server.web.users; import java.io.IOException; Loading @@ -79,24 +79,24 @@ import org.apache.log4j.Logger; import ca.nrc.cadc.auth.AuthenticationUtil; public class GroupsServlet extends HttpServlet public class UsersServlet extends HttpServlet { private static final Logger log = Logger.getLogger(GroupsServlet.class); private static final Logger log = Logger.getLogger(UsersServlet.class); /** * Create a GroupAction and run the action safely. * Create a UserAction and run the action safely. */ private void doAction(HttpServletRequest request, HttpServletResponse response) throws IOException { long start = System.currentTimeMillis(); GroupLogInfo logInfo = new GroupLogInfo(request); UserLogInfo logInfo = new UserLogInfo(request); try { log.info(logInfo.start()); Subject subject = AuthenticationUtil.getSubject(request); logInfo.setSubject(subject); GroupsAction action = GroupsActionFactory.getGroupsAction(request, logInfo); UsersAction action = UsersActionFactory.getUsersAction(request, logInfo); action.doAction(subject, response); } catch (IllegalArgumentException e) Loading