diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-11-11 15:46:18 +0100 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-11-17 13:40:58 +0100 |
commit | e0d34a5e31b7038daa354607c0995a6f2a76e54e (patch) | |
tree | 3d9d834f4400096a14ef0328ea343449fab91847 /server/sonar-server | |
parent | 1a0fdb1c93d6e0ebd01bdbaa3994b7bc04406f00 (diff) | |
download | sonarqube-e0d34a5e31b7038daa354607c0995a6f2a76e54e.tar.gz sonarqube-e0d34a5e31b7038daa354607c0995a6f2a76e54e.zip |
SONAR-6947 Add and use AddGroupWsRequest
Diffstat (limited to 'server/sonar-server')
15 files changed, 71 insertions, 26 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java index a2a8c4c747b..37797db2803 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java @@ -27,12 +27,19 @@ import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.server.permission.PermissionChange; import org.sonar.server.permission.PermissionUpdater; -import org.sonar.server.permission.ws.PermissionRequest.Builder; +import org.sonarqube.ws.client.permission.AddGroupWsRequest; +import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_GROUP_ID; +import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_GROUP_NAME; +import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_PERMISSION; +import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_PROJECT_ID; +import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_PROJECT_KEY; import static org.sonar.server.permission.ws.PermissionsWsParameters.createGroupIdParameter; import static org.sonar.server.permission.ws.PermissionsWsParameters.createGroupNameParameter; import static org.sonar.server.permission.ws.PermissionsWsParameters.createPermissionParameter; import static org.sonar.server.permission.ws.PermissionsWsParameters.createProjectParameter; +import static org.sonar.server.permission.ws.WsProjectRef.newOptionalWsProjectRef; +import static org.sonar.server.usergroups.ws.WsGroupRef.newWsGroupRef; public class AddGroupAction implements PermissionsWsAction { @@ -67,15 +74,32 @@ public class AddGroupAction implements PermissionsWsAction { @Override public void handle(Request request, Response response) throws Exception { + AddGroupWsRequest addGroupWsRequest = toAddGroupWsRequest(request); + doHandle(addGroupWsRequest); + + response.noContent(); + } + + private void doHandle(AddGroupWsRequest request) throws Exception { DbSession dbSession = dbClient.openSession(false); try { - PermissionRequest permissionRequest = new Builder(request).withGroup().build(); - PermissionChange permissionChange = permissionChangeBuilder.buildGroupPermissionChange(dbSession, permissionRequest); + PermissionChange permissionChange = permissionChangeBuilder.buildGroupPermissionChange( + dbSession, + request.getPermission(), + newOptionalWsProjectRef(request.getProjectId(), request.getProjectKey()), + newWsGroupRef(request.getGroupId(), request.getGroupName())); permissionUpdater.addPermission(permissionChange); } finally { dbClient.closeSession(dbSession); } + } - response.noContent(); + private static AddGroupWsRequest toAddGroupWsRequest(Request request) { + return new AddGroupWsRequest() + .setPermission(request.mandatoryParam(PARAM_PERMISSION)) + .setGroupId(request.paramAsLong(PARAM_GROUP_ID)) + .setGroupName(request.param(PARAM_GROUP_NAME)) + .setProjectId(request.param(PARAM_PROJECT_ID)) + .setProjectKey(request.param(PARAM_PROJECT_KEY)); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java index 5bdb246ac2a..0a98ce631b4 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java @@ -109,7 +109,7 @@ public class GroupsAction implements PermissionsWsAction { } } - private GroupsWsRequest toGroupsWsRequest(Request request) { + private static GroupsWsRequest toGroupsWsRequest(Request request) { String permission = request.mandatoryParam(PARAM_PERMISSION); String projectUuid = request.param(PARAM_PROJECT_ID); String projectKey = request.param(PARAM_PROJECT_KEY); diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java index d3e47832542..12d86ca11f8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java @@ -24,6 +24,9 @@ import com.google.common.base.Optional; import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.server.permission.PermissionChange; +import org.sonar.server.usergroups.ws.WsGroupRef; + +import static org.sonar.server.permission.ws.PermissionRequestValidator.validatePermission; public class PermissionChangeBuilder { @@ -37,24 +40,25 @@ public class PermissionChangeBuilder { PermissionChange permissionChange = new PermissionChange() .setPermission(request.permission()) .setUserLogin(request.userLogin()); - addProjectToPermissionChange(dbSession, permissionChange, request); + addProjectToPermissionChange(dbSession, permissionChange, request.project()); return permissionChange; } - public PermissionChange buildGroupPermissionChange(DbSession dbSession, PermissionRequest request) { - String groupName = dependenciesFinder.getGroupName(dbSession, request); + public PermissionChange buildGroupPermissionChange(DbSession dbSession, String permission, Optional<WsProjectRef> projectRef, WsGroupRef groupRef) { + validatePermission(permission, projectRef); + String groupName = dependenciesFinder.getGroupName(dbSession, groupRef); PermissionChange permissionChange = new PermissionChange() - .setPermission(request.permission()) + .setPermission(permission) .setGroupName(groupName); - addProjectToPermissionChange(dbSession, permissionChange, request); + addProjectToPermissionChange(dbSession, permissionChange, projectRef); return permissionChange; } - private void addProjectToPermissionChange(DbSession dbSession, PermissionChange permissionChange, PermissionRequest request) { - Optional<ComponentDto> project = dependenciesFinder.searchProject(dbSession, request.project()); + private void addProjectToPermissionChange(DbSession dbSession, PermissionChange permissionChange, Optional<WsProjectRef> projectRef) { + Optional<ComponentDto> project = dependenciesFinder.searchProject(dbSession, projectRef); if (project.isPresent()) { permissionChange.setComponentKey(project.get().key()); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java index 44429626dc2..2ed96662e5f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java @@ -66,8 +66,8 @@ public class PermissionDependenciesFinder { return componentFinder.getRootComponentOrModuleByUuidOrKey(dbSession, projectRef.uuid(), projectRef.key(), resourceTypes); } - public String getGroupName(DbSession dbSession, PermissionRequest request) { - GroupDto group = getGroup(dbSession, request.group()); + public String getGroupName(DbSession dbSession, WsGroupRef groupRef) { + GroupDto group = getGroup(dbSession, groupRef); return group == null ? ANYONE : group.getName(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequest.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequest.java index a11a8adbeae..4650889c0f9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequest.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequest.java @@ -135,7 +135,7 @@ class PermissionRequest { private void setGroup(Request request) { if (withGroup) { - this.group = WsGroupRef.fromPermissionRequest(request); + this.group = WsGroupRef.newWsGroupRefFromPermissionRequest(request); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequestValidator.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequestValidator.java index adac2aa7e3b..3a6cf38249d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequestValidator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequestValidator.java @@ -20,6 +20,7 @@ package org.sonar.server.permission.ws; +import com.google.common.base.Optional; import java.util.Set; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -32,9 +33,9 @@ import static com.google.common.base.Strings.isNullOrEmpty; import static java.lang.String.format; import static org.apache.commons.lang.StringUtils.isBlank; import static org.sonar.api.security.DefaultGroups.isAnyone; +import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_PATTERN; import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_PERMISSION; import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_QUALIFIER; -import static org.sonar.server.permission.ws.PermissionsWsParameters.PARAM_PATTERN; import static org.sonar.server.ws.WsUtils.checkRequest; public class PermissionRequestValidator { @@ -45,6 +46,14 @@ public class PermissionRequestValidator { // static methods only } + public static void validatePermission(String permission, Optional<WsProjectRef> projectRef) { + if (projectRef.isPresent()) { + validateProjectPermission(permission); + } else { + validateGlobalPermission(permission); + } + } + public static String validateProjectPermission(String permission) { checkRequest(ProjectPermissions.ALL.contains(permission), format("The '%s' parameter for project permissions must be one of %s. '%s' was passed.", PARAM_PERMISSION, ProjectPermissions.ALL_ON_ONE_LINE, permission)); diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java index 91c3e2637d1..2a9b0ee5711 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java @@ -70,7 +70,11 @@ public class RemoveGroupAction implements PermissionsWsAction { DbSession dbSession = dbClient.openSession(false); try { PermissionRequest permissionRequest = new Builder(request).withGroup().build(); - PermissionChange permissionChange = permissionChangeBuilder.buildGroupPermissionChange(dbSession, permissionRequest); + PermissionChange permissionChange = permissionChangeBuilder.buildGroupPermissionChange( + dbSession, + permissionRequest.permission(), + permissionRequest.project(), + permissionRequest.group()); permissionUpdater.removePermission(permissionChange); } finally { dbClient.closeSession(dbSession); diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java index 4aa2269fd75..54372f30fe1 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java @@ -79,7 +79,7 @@ public class AddGroupToTemplateAction implements PermissionsWsAction { checkGlobalAdminUser(userSession); String permission = wsRequest.mandatoryParam(PARAM_PERMISSION); - WsGroupRef group = WsGroupRef.fromPermissionRequest(wsRequest); + WsGroupRef group = WsGroupRef.newWsGroupRefFromPermissionRequest(wsRequest); DbSession dbSession = dbClient.openSession(false); try { diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java index 766bd03f2e7..5f1387757d9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java @@ -74,7 +74,7 @@ public class RemoveGroupFromTemplateAction implements PermissionsWsAction { checkGlobalAdminUser(userSession); String permission = wsRequest.mandatoryParam(PARAM_PERMISSION); - WsGroupRef group = WsGroupRef.fromPermissionRequest(wsRequest); + WsGroupRef group = WsGroupRef.newWsGroupRefFromPermissionRequest(wsRequest); DbSession dbSession = dbClient.openSession(false); try { diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java index a08ef160041..f817124343b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java @@ -70,7 +70,7 @@ public class AddUserAction implements UserGroupsWsAction { public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn().checkGlobalPermission(GlobalPermissions.SYSTEM_ADMIN); - WsGroupRef wsGroupRef = WsGroupRef.fromUserGroupsRequest(request); + WsGroupRef wsGroupRef = WsGroupRef.newWsGroupRefFromUserGroupRequest(request); String login = request.mandatoryParam(PARAM_LOGIN); DbSession dbSession = dbClient.openSession(false); diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java index 6306c32f3bd..7a4dfc8d649 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java @@ -69,7 +69,7 @@ public class DeleteAction implements UserGroupsWsAction { public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn().checkGlobalPermission(GlobalPermissions.SYSTEM_ADMIN); - WsGroupRef groupRef = WsGroupRef.fromUserGroupsRequest(request); + WsGroupRef groupRef = WsGroupRef.newWsGroupRefFromUserGroupRequest(request); DbSession dbSession = dbClient.openSession(false); try { diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java index 401135556a3..05f47eaee5e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java @@ -70,7 +70,7 @@ public class RemoveUserAction implements UserGroupsWsAction { public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn().checkGlobalPermission(GlobalPermissions.SYSTEM_ADMIN); - WsGroupRef wsGroupRef = WsGroupRef.fromUserGroupsRequest(request); + WsGroupRef wsGroupRef = WsGroupRef.newWsGroupRefFromUserGroupRequest(request); String login = request.mandatoryParam(PARAM_LOGIN); DbSession dbSession = dbClient.openSession(false); diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java index 2903a385058..9bfeb58326d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java @@ -75,7 +75,7 @@ public class UsersAction implements UserGroupsWsAction { public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn().checkGlobalPermission(GlobalPermissions.SYSTEM_ADMIN); - WsGroupRef wsGroupRef = WsGroupRef.fromUserGroupsRequest(request); + WsGroupRef wsGroupRef = WsGroupRef.newWsGroupRefFromUserGroupRequest(request); int pageSize = request.mandatoryParamAsInt(Param.PAGE_SIZE); int page = request.mandatoryParamAsInt(Param.PAGE); String queryString = request.param(Param.TEXT_QUERY); diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/WsGroupRef.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/WsGroupRef.java index 4eed536b0ee..153d0637417 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/WsGroupRef.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/WsGroupRef.java @@ -42,14 +42,18 @@ public class WsGroupRef { this.name = name; } - public static WsGroupRef fromPermissionRequest(Request wsRequest) { + public static WsGroupRef newWsGroupRefFromPermissionRequest(Request wsRequest) { Long id = wsRequest.paramAsLong(PermissionsWsParameters.PARAM_GROUP_ID); String name = wsRequest.param(PermissionsWsParameters.PARAM_GROUP_NAME); return new WsGroupRef(id, name); } - public static WsGroupRef fromUserGroupsRequest(Request wsRequest) { + public static WsGroupRef newWsGroupRef(@Nullable Long id, @Nullable String name) { + return new WsGroupRef(id, name); + } + + public static WsGroupRef newWsGroupRefFromUserGroupRequest(Request wsRequest) { Long id = wsRequest.paramAsLong(UserGroupsWsParameters.PARAM_GROUP_ID); String name = wsRequest.param(UserGroupsWsParameters.PARAM_GROUP_NAME); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java index 9bc4b51fc4f..63fc66fb51b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java @@ -190,7 +190,7 @@ public class AddGroupActionTest { } @Test - public void fail_if_project_permission_withou_project() throws Exception { + public void fail_if_project_permission_without_project() throws Exception { expectedException.expect(BadRequestException.class); insertGroup("sonar-administrators"); |