From e0d34a5e31b7038daa354607c0995a6f2a76e54e Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Wed, 11 Nov 2015 15:46:18 +0100 Subject: [PATCH] SONAR-6947 Add and use AddGroupWsRequest --- .../server/permission/ws/AddGroupAction.java | 32 +++++++- .../server/permission/ws/GroupsAction.java | 2 +- .../ws/PermissionChangeBuilder.java | 18 +++-- .../ws/PermissionDependenciesFinder.java | 4 +- .../permission/ws/PermissionRequest.java | 2 +- .../ws/PermissionRequestValidator.java | 11 ++- .../permission/ws/RemoveGroupAction.java | 6 +- .../ws/template/AddGroupToTemplateAction.java | 2 +- .../RemoveGroupFromTemplateAction.java | 2 +- .../server/usergroups/ws/AddUserAction.java | 2 +- .../server/usergroups/ws/DeleteAction.java | 2 +- .../usergroups/ws/RemoveUserAction.java | 2 +- .../server/usergroups/ws/UsersAction.java | 2 +- .../server/usergroups/ws/WsGroupRef.java | 8 +- .../permission/ws/AddGroupActionTest.java | 2 +- .../org/sonarqube/ws/client/WsConnector.java | 31 ++++--- .../client/permission/AddGroupWsRequest.java | 81 +++++++++++++++++++ .../ws/client/permission/GroupsWsRequest.java | 19 +++++ .../permission/PermissionsWsClient.java | 40 ++++++++- sonar-ws/src/main/protobuf/ws-batch.proto | 2 +- 20 files changed, 223 insertions(+), 47 deletions(-) create mode 100644 sonar-ws/src/main/java/org/sonarqube/ws/client/permission/AddGroupWsRequest.java 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 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 project = dependenciesFinder.searchProject(dbSession, request.project()); + private void addProjectToPermissionChange(DbSession dbSession, PermissionChange permissionChange, Optional projectRef) { + Optional 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 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"); diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/WsConnector.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/WsConnector.java index 0f55b0dcc2a..c4f282744ed 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/WsConnector.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/WsConnector.java @@ -1,30 +1,27 @@ /* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com * - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.sonarqube.ws.client; import com.google.protobuf.Message; import com.google.protobuf.Parser; -import org.sonarqube.ws.client.WsRequest; public interface WsConnector { String execute(WsRequest wsRequest); diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/AddGroupWsRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/AddGroupWsRequest.java new file mode 100644 index 00000000000..975580862fb --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/AddGroupWsRequest.java @@ -0,0 +1,81 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonarqube.ws.client.permission; + +import javax.annotation.CheckForNull; +import javax.annotation.Nullable; + +public class AddGroupWsRequest { + private String permission; + private Long groupId; + private String groupName; + private String projectId; + private String projectKey; + + public String getPermission() { + return permission; + } + + public AddGroupWsRequest setPermission(String permission) { + this.permission = permission; + return this; + } + + @CheckForNull + public Long getGroupId() { + return groupId; + } + + public AddGroupWsRequest setGroupId(@Nullable Long groupId) { + this.groupId = groupId; + return this; + } + + @CheckForNull + public String getGroupName() { + return groupName; + } + + public AddGroupWsRequest setGroupName(@Nullable String groupName) { + this.groupName = groupName; + return this; + } + + @CheckForNull + public String getProjectId() { + return projectId; + } + + public AddGroupWsRequest setProjectId(@Nullable String projectId) { + this.projectId = projectId; + return this; + } + + @CheckForNull + public String getProjectKey() { + return projectKey; + } + + public AddGroupWsRequest setProjectKey(@Nullable String projectKey) { + this.projectKey = projectKey; + return this; + } +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/GroupsWsRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/GroupsWsRequest.java index e43fb445862..535ed11ce37 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/GroupsWsRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/GroupsWsRequest.java @@ -1,3 +1,22 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ package org.sonarqube.ws.client.permission; import javax.annotation.CheckForNull; diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsClient.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsClient.java index 2f84930e96f..ecbb68a06b6 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsClient.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsClient.java @@ -1,9 +1,30 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + package org.sonarqube.ws.client.permission; import org.sonarqube.ws.WsPermissions; import org.sonarqube.ws.client.WsClient; import static org.sonarqube.ws.client.WsRequest.newGetRequest; +import static org.sonarqube.ws.client.WsRequest.newPostRequest; public class PermissionsWsClient { private final WsClient wsClient; @@ -14,9 +35,22 @@ public class PermissionsWsClient { public WsPermissions.WsGroupsResponse groups(GroupsWsRequest request) { return wsClient.execute(newGetRequest("api/permissions/groups") - .setParam("permission", request.getPermission()) - .setParam("projectId", request.getProjectId()) - .setParam("projectKey", request.getProjectKey()), + .setParam("permission", request.getPermission()) + .setParam("projectId", request.getProjectId()) + .setParam("projectKey", request.getProjectKey()) + .setParam("p", request.getPage()) + .setParam("ps", request.getPageSize()) + .setParam("selected", request.getSelected()) + .setParam("q", request.getQuery()), WsPermissions.WsGroupsResponse.parser()); } + + public void addGroup(AddGroupWsRequest request) { + wsClient.execute(newPostRequest("api/permissions/add_group") + .setParam("permission", request.getPermission()) + .setParam("projectId", request.getProjectId()) + .setParam("projectKey", request.getProjectKey()) + .setParam("groupId", request.getGroupId()) + .setParam("groupName", request.getGroupName())); + } } diff --git a/sonar-ws/src/main/protobuf/ws-batch.proto b/sonar-ws/src/main/protobuf/ws-batch.proto index d6d050668a0..2885f2f5c55 100644 --- a/sonar-ws/src/main/protobuf/ws-batch.proto +++ b/sonar-ws/src/main/protobuf/ws-batch.proto @@ -25,7 +25,7 @@ option java_outer_classname = "WsBatch"; option optimize_for = SPEED; -// WS api/batch/project +// WS batch/project message WsProjectResponse { optional int64 timestamp = 1; map settingsByModule = 2; -- 2.39.5