aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-11-13 10:42:27 +0100
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-11-17 13:41:03 +0100
commit563fbccfafb8d7225b7fe3f98f87f415c805217a (patch)
tree225d90c98bf83503208b6dd4419cdd69bc2ae372
parentc40eb47f54f7cfe94bd5cf6a9856a731a1b4dfc6 (diff)
downloadsonarqube-563fbccfafb8d7225b7fe3f98f87f415c805217a.tar.gz
sonarqube-563fbccfafb8d7225b7fe3f98f87f415c805217a.zip
SONAR-6947 api/permissions/search_templates use SearchTemplatesWsRequest
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java32
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesDataLoader.java14
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsClient.java8
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/permission/SearchTemplatesWsRequest.java38
-rw-r--r--sonar-ws/src/main/protobuf/ws-permissions.proto2
5 files changed, 74 insertions, 20 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
index 81ac05f93a0..37d1eeef3da 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
@@ -24,16 +24,19 @@ import org.sonar.api.i18n.I18n;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
+import org.sonar.api.server.ws.WebService.Param;
import org.sonar.core.permission.ProjectPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.permission.PermissionTemplateDto;
import org.sonar.server.permission.ws.PermissionsWsAction;
import org.sonar.server.user.UserSession;
+import org.sonarqube.ws.WsPermissions;
import org.sonarqube.ws.WsPermissions.Permission;
import org.sonarqube.ws.WsPermissions.PermissionTemplate;
-import org.sonarqube.ws.WsPermissions.WsSearchTemplatesResponse;
-import org.sonarqube.ws.WsPermissions.WsSearchTemplatesResponse.TemplateIdQualifier;
+import org.sonarqube.ws.WsPermissions.SearchTemplatesWsResponse;
+import org.sonarqube.ws.WsPermissions.SearchTemplatesWsResponse.TemplateIdQualifier;
+import org.sonarqube.ws.client.permission.SearchTemplatesWsRequest;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser;
@@ -70,18 +73,26 @@ public class SearchTemplatesAction implements PermissionsWsAction {
public void handle(Request wsRequest, Response wsResponse) throws Exception {
checkGlobalAdminUser(userSession);
+ SearchTemplatesWsResponse searchTemplatesWsResponse = doHandle(toSearchTemplatesWsRequest(wsRequest));
+ writeProtobuf(searchTemplatesWsResponse, wsRequest, wsResponse);
+ }
+
+ private SearchTemplatesWsResponse doHandle(SearchTemplatesWsRequest wsRequest) {
DbSession dbSession = dbClient.openSession(false);
try {
SearchTemplatesData data = dataLoader.load(wsRequest);
- WsSearchTemplatesResponse response = buildResponse(data);
- writeProtobuf(response, wsRequest, wsResponse);
+ return buildResponse(data);
} finally {
dbClient.closeSession(dbSession);
}
}
- private WsSearchTemplatesResponse buildResponse(SearchTemplatesData data) {
- WsSearchTemplatesResponse.Builder response = WsSearchTemplatesResponse.newBuilder();
+ private static SearchTemplatesWsRequest toSearchTemplatesWsRequest(Request request) {
+ return new SearchTemplatesWsRequest().setQuery(request.param(Param.TEXT_QUERY));
+ }
+
+ private WsPermissions.SearchTemplatesWsResponse buildResponse(SearchTemplatesData data) {
+ SearchTemplatesWsResponse.Builder response = SearchTemplatesWsResponse.newBuilder();
buildTemplatesResponse(response, data);
buildDefaultTemplatesResponse(response, data);
@@ -90,7 +101,7 @@ public class SearchTemplatesAction implements PermissionsWsAction {
return response.build();
}
- private static void buildDefaultTemplatesResponse(WsSearchTemplatesResponse.Builder response, SearchTemplatesData data) {
+ private static void buildDefaultTemplatesResponse(SearchTemplatesWsResponse.Builder response, SearchTemplatesData data) {
TemplateIdQualifier.Builder templateUuidQualifierBuilder = TemplateIdQualifier.newBuilder();
for (DefaultPermissionTemplateFinder.TemplateUuidQualifier templateUuidQualifier : data.defaultTempltes()) {
response.addDefaultTemplates(templateUuidQualifierBuilder
@@ -100,7 +111,7 @@ public class SearchTemplatesAction implements PermissionsWsAction {
}
}
- private static void buildTemplatesResponse(WsSearchTemplatesResponse.Builder response, SearchTemplatesData data) {
+ private static void buildTemplatesResponse(WsPermissions.SearchTemplatesWsResponse.Builder response, SearchTemplatesData data) {
Permission.Builder permissionResponse = Permission.newBuilder();
PermissionTemplate.Builder templateBuilder = PermissionTemplate.newBuilder();
@@ -129,7 +140,7 @@ public class SearchTemplatesAction implements PermissionsWsAction {
}
}
- private void buildPermissionsResponse(WsSearchTemplatesResponse.Builder response) {
+ private void buildPermissionsResponse(SearchTemplatesWsResponse.Builder response) {
Permission.Builder permissionResponse = Permission.newBuilder();
for (String permissionKey : ProjectPermissions.ALL) {
response.addPermissions(
@@ -137,8 +148,7 @@ public class SearchTemplatesAction implements PermissionsWsAction {
.clear()
.setKey(permissionKey)
.setName(i18nName(permissionKey))
- .setDescription(i18nDescriptionMessage(permissionKey))
- );
+ .setDescription(i18nDescriptionMessage(permissionKey)));
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesDataLoader.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesDataLoader.java
index dd561143f2c..15c8543f7c0 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesDataLoader.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesDataLoader.java
@@ -28,14 +28,13 @@ import java.util.List;
import javax.annotation.Nonnull;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
-import org.sonar.api.server.ws.Request;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.permission.CountByTemplateAndPermissionDto;
import org.sonar.db.permission.PermissionTemplateDto;
import org.sonar.server.permission.ws.template.DefaultPermissionTemplateFinder.TemplateUuidQualifier;
+import org.sonarqube.ws.client.permission.SearchTemplatesWsRequest;
-import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
import static org.sonar.server.permission.ws.template.SearchTemplatesData.newBuilder;
public class SearchTemplatesDataLoader {
@@ -47,11 +46,11 @@ public class SearchTemplatesDataLoader {
this.defaultPermissionTemplateFinder = defaultPermissionTemplateFinder;
}
- public SearchTemplatesData load(Request wsRequest) {
+ public SearchTemplatesData load(SearchTemplatesWsRequest request) {
DbSession dbSession = dbClient.openSession(false);
try {
SearchTemplatesData.Builder data = newBuilder();
- List<PermissionTemplateDto> templates = searchTemplates(dbSession, wsRequest);
+ List<PermissionTemplateDto> templates = searchTemplates(dbSession, request);
List<Long> templateIds = Lists.transform(templates, TemplateToIdFunction.INSTANCE);
List<TemplateUuidQualifier> defaultTemplates = defaultPermissionTemplateFinder.getDefaultTemplatesByQualifier();
@@ -66,11 +65,10 @@ public class SearchTemplatesDataLoader {
}
}
- private List<PermissionTemplateDto> searchTemplates(DbSession dbSession, Request wsRequest) {
- String nameMatch = wsRequest.param(TEXT_QUERY);
+ private List<PermissionTemplateDto> searchTemplates(DbSession dbSession, SearchTemplatesWsRequest request) {
+ String nameMatch = request.getQuery();
- return nameMatch == null ?
- dbClient.permissionTemplateDao().selectAll(dbSession)
+ return nameMatch == null ? dbClient.permissionTemplateDao().selectAll(dbSession)
: dbClient.permissionTemplateDao().selectAll(dbSession, nameMatch);
}
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 d79ff4e6568..102e7351a96 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
@@ -23,6 +23,7 @@ package org.sonarqube.ws.client.permission;
import org.sonarqube.ws.WsPermissions;
import org.sonarqube.ws.WsPermissions.CreateTemplateWsResponse;
import org.sonarqube.ws.WsPermissions.SearchProjectPermissionsWsResponse;
+import org.sonarqube.ws.WsPermissions.SearchTemplatesWsResponse;
import org.sonarqube.ws.WsPermissions.WsSearchGlobalPermissionsResponse;
import org.sonarqube.ws.client.WsClient;
@@ -167,6 +168,13 @@ public class PermissionsWsClient {
SearchProjectPermissionsWsResponse.parser());
}
+ public SearchTemplatesWsResponse searchTemplates(SearchTemplatesWsRequest request) {
+ return wsClient.execute(
+ newGetRequest("search_templates")
+ .setParam("q", request.getQuery()),
+ SearchTemplatesWsResponse.parser());
+ }
+
private static String action(String action) {
return PermissionsWsParameters.ENDPOINT + "/" + action;
}
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/SearchTemplatesWsRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/SearchTemplatesWsRequest.java
new file mode 100644
index 00000000000..5159f80c19b
--- /dev/null
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/SearchTemplatesWsRequest.java
@@ -0,0 +1,38 @@
+/*
+ * 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 SearchTemplatesWsRequest {
+ private String query;
+
+ @CheckForNull
+ public String getQuery() {
+ return query;
+ }
+
+ public SearchTemplatesWsRequest setQuery(@Nullable String query) {
+ this.query = query;
+ return this;
+ }
+}
diff --git a/sonar-ws/src/main/protobuf/ws-permissions.proto b/sonar-ws/src/main/protobuf/ws-permissions.proto
index d4ed7629541..6f0c6243f0c 100644
--- a/sonar-ws/src/main/protobuf/ws-permissions.proto
+++ b/sonar-ws/src/main/protobuf/ws-permissions.proto
@@ -66,7 +66,7 @@ message WsUpdatePermissionTemplateResponse {
optional PermissionTemplate permissionTemplate = 1;
}
-message WsSearchTemplatesResponse {
+message SearchTemplatesWsResponse {
message TemplateIdQualifier {
optional string templateId = 1;
optional string qualifier = 2;