From adbd2225938741dfbec9f91460fc0871c3b11356 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Fri, 21 Apr 2017 16:06:56 +0200 Subject: [PATCH] =?utf8?q?SONAR=E2=88=929105=20add=20ProjectsService#chang?= =?utf8?q?eVisibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../project/ws/UpdateVisibilityAction.java | 2 +- .../ws/client/project/ProjectsService.java | 8 ++++ .../project/UpdateVisibilityRequest.java | 42 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 sonar-ws/src/main/java/org/sonarqube/ws/client/project/UpdateVisibilityRequest.java diff --git a/server/sonar-server/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java b/server/sonar-server/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java index 6f37b1f70e0..df819ed4de5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java @@ -119,7 +119,7 @@ public class UpdateVisibilityAction implements ProjectsWsAction { private void updatePermissionsToPrivate(DbSession dbSession, ComponentDto component) { // delete project permissions for group AnyOne dbClient.groupPermissionDao().deleteByRootComponentIdAndGroupId(dbSession, component.getId(), null); - // grant UserRole.CODEVIEWER and UserRole.USER + // grant UserRole.CODEVIEWER and UserRole.USER to any group or user with at least one permission on project PUBLIC_PERMISSIONS.forEach(permission -> { dbClient.groupPermissionDao().selectGroupIdsWithPermissionOnProjectBut(dbSession, component.getId(), permission) .forEach(groupId -> insertProjectPermissionOnGroup(dbSession, component, permission, groupId)); diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java index 72b3fed9e55..42659383338 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java @@ -106,4 +106,12 @@ public class ProjectsService extends BaseService { .setParam(PAGE_SIZE, request.getPageSize()); return call(get, SearchWsResponse.parser()); } + + public void updateVisibility(UpdateVisibilityRequest request) { + PostRequest post = new PostRequest(path("update_visibility")) + .setParam(PARAM_PROJECT, request.getProject()) + .setParam("visibility", request.getVisibility()); + + call(post); + } } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/UpdateVisibilityRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/UpdateVisibilityRequest.java new file mode 100644 index 00000000000..804ccdcf93f --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/UpdateVisibilityRequest.java @@ -0,0 +1,42 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program 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. + * + * This program 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.project; + +public class UpdateVisibilityRequest { + private final String project; + private final String visibility; + + public enum Visibility { + PUBLIC, PRIVATE + } + + public UpdateVisibilityRequest(String project, Visibility visibility) { + this.project = project; + this.visibility = visibility == Visibility.PUBLIC ? "public" : "private"; + } + + public String getProject() { + return project; + } + + public String getVisibility() { + return visibility; + } +} -- 2.39.5