aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-08-19 15:10:38 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-08-19 15:10:47 +0200
commit82564709cf06447b8a7e5fcadc609d892fc85509 (patch)
tree1d8e4c289b67dda92639a1e7d088947625078035 /server
parentb59537c890314a22a1fa44c41fea1b1bdcc726eb (diff)
downloadsonarqube-82564709cf06447b8a7e5fcadc609d892fc85509.tar.gz
sonarqube-82564709cf06447b8a7e5fcadc609d892fc85509.zip
SONAR-6485 WS permissions/search_project_permissions add paging field in response
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsAction.java10
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsData.java15
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java4
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/permission/ws/search_project_permissions-example.json7
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest/empty.json7
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
+ }
}