diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-08-19 15:10:38 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-08-19 15:10:47 +0200 |
commit | 82564709cf06447b8a7e5fcadc609d892fc85509 (patch) | |
tree | 1d8e4c289b67dda92639a1e7d088947625078035 /server | |
parent | b59537c890314a22a1fa44c41fea1b1bdcc726eb (diff) | |
download | sonarqube-82564709cf06447b8a7e5fcadc609d892fc85509.tar.gz sonarqube-82564709cf06447b8a7e5fcadc609d892fc85509.zip |
SONAR-6485 WS permissions/search_project_permissions add paging field in response
Diffstat (limited to 'server')
5 files changed, 32 insertions, 11 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsAction.java index 3ae75eb7e1e..d55be8594f3 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsAction.java @@ -24,6 +24,7 @@ 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.utils.Paging; import org.sonar.api.web.UserRole; import org.sonar.core.permission.ComponentPermissions; import org.sonar.core.permission.GlobalPermissions; @@ -31,6 +32,7 @@ import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.server.user.UserSession; +import org.sonarqube.ws.Common; import org.sonarqube.ws.Permissions.Permission; import org.sonarqube.ws.Permissions.SearchProjectPermissionsResponse; import org.sonarqube.ws.Permissions.SearchProjectPermissionsResponse.Project; @@ -147,6 +149,14 @@ public class SearchProjectPermissionsAction implements PermissionsWsAction { ); } + Paging paging = data.paging(); + response.setPaging( + Common.Paging.newBuilder() + .setPageIndex(paging.pageIndex()) + .setPageSize(paging.pageSize()) + .setTotal(paging.total()) + ); + return response.build(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsData.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsData.java index 951428cf2a7..fd3308b3db7 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsData.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsData.java @@ -26,6 +26,7 @@ import com.google.common.collect.Ordering; import com.google.common.collect.Table; import java.util.List; import java.util.Set; +import org.sonar.api.utils.Paging; import org.sonar.db.component.ComponentDto; import static com.google.common.base.Objects.firstNonNull; @@ -35,13 +36,13 @@ import static com.google.common.collect.ImmutableTable.copyOf; public class SearchProjectPermissionsData { private final List<ComponentDto> rootComponents; - private final int total; + private final Paging paging; private final Table<Long, String, Integer> userCountByProjectIdAndPermission; private final Table<Long, String, Integer> groupCountByProjectIdAndPermission; private SearchProjectPermissionsData(Builder builder) { this.rootComponents = copyOf(builder.projects); - this.total = builder.total; + this.paging = builder.paging; this.userCountByProjectIdAndPermission = copyOf(builder.userCountByProjectIdAndPermission); this.groupCountByProjectIdAndPermission = copyOf(builder.groupCountByProjectIdAndPermission); } @@ -54,8 +55,8 @@ public class SearchProjectPermissionsData { return rootComponents; } - public int total() { - return total; + public Paging paging() { + return paging; } public int userCount(long rootComponentId, String permission) { @@ -77,7 +78,7 @@ public class SearchProjectPermissionsData { public static class Builder { private List<ComponentDto> projects; - private int total; + private Paging paging; private Table<Long, String, Integer> userCountByProjectIdAndPermission; private Table<Long, String, Integer> groupCountByProjectIdAndPermission; @@ -98,8 +99,8 @@ public class SearchProjectPermissionsData { return this; } - public Builder total(int total) { - this.total = total; + public Builder paging(Paging paging) { + this.paging = paging; return this; } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java index 1337c93fe86..8a787adf15b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java @@ -69,7 +69,7 @@ public class SearchProjectPermissionsDataLoader { List<Long> rootComponentIds = Lists.transform(rootComponents, ComponentToIdFunction.INSTANCE); data.rootComponents(rootComponents) - .total(countRootComponents) + .paging(paging(wsRequest, countRootComponents)) .userCountByProjectIdAndPermission(userCountByRootComponentIdAndPermission(dbSession, rootComponentIds)) .groupCountByProjectIdAndPermission(groupCountByRootComponentIdAndPermission(dbSession, rootComponentIds)); @@ -79,7 +79,7 @@ public class SearchProjectPermissionsDataLoader { } } - private Paging paging(Request wsRequest, int total) { + private static Paging paging(Request wsRequest, int total) { return forPageIndex(wsRequest.mandatoryParamAsInt(PAGE)) .withPageSize(wsRequest.mandatoryParamAsInt(PAGE_SIZE)) .andTotal(total); diff --git a/server/sonar-server/src/main/resources/org/sonar/server/permission/ws/search_project_permissions-example.json b/server/sonar-server/src/main/resources/org/sonar/server/permission/ws/search_project_permissions-example.json index 935f1521901..c51b2594521 100644 --- a/server/sonar-server/src/main/resources/org/sonar/server/permission/ws/search_project_permissions-example.json +++ b/server/sonar-server/src/main/resources/org/sonar/server/permission/ws/search_project_permissions-example.json @@ -85,5 +85,10 @@ "name": "See Source Code", "description": "Ability to view the project\u0027s source code. (Users will also need \"Browse\" permission)" } - ] + ], + "paging": { + "pageIndex": 1, + "pageSize": 25, + "total": 4 + } } diff --git a/server/sonar-server/src/test/resources/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest/empty.json b/server/sonar-server/src/test/resources/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest/empty.json index 1b677af4e96..5789d2975ed 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest/empty.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest/empty.json @@ -21,5 +21,10 @@ "name": "See Source Code", "description": "Ability to view the project's source code. (Users will also need \"Browse\" permission)" } - ] + ], + "paging": { + "pageIndex": 1, + "pageSize": 25, + "total": 0 + } } |