Browse Source

Revert "SONAR-19233 Drop deprecated paging response fields"

This reverts commit 9db233a378.
tags/10.2.0.77647
Jacek Poreda 9 months ago
parent
commit
4f214cb379
27 changed files with 160 additions and 37 deletions
  1. 6
    4
      server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java
  2. 14
    0
      server/sonar-webserver-webapi/src/it/java/org/sonar/server/rule/ws/SearchActionIT.java
  3. 8
    1
      server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/UsersActionIT.java
  4. 1
    3
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionComponentsIT/no_issue.json
  5. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/apply_paging_with_one_component.json
  6. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/default_page_size_is_100.json
  7. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/empty_result.json
  8. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_leak_period.json
  9. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_leak_period_has_no_effect_on_prs.json
  10. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_main_scope.json
  11. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_main_scope_2.json
  12. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_test_scope.json
  13. 1
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/no_issue.json
  14. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/paging.json
  15. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/result_for_rule_search.json
  16. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/search_by_variants_with_facets.json
  17. 43
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/qualityprofile/ws/ChangelogActionIT/changelog_example.json
  18. 3
    0
      server/sonar-webserver-webapi/src/it/resources/org/sonar/server/rule/ws/SearchActionIT/paging.json
  19. 0
    1
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchAction.java
  20. 8
    1
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java
  21. 12
    6
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java
  22. 6
    4
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/rule/ws/SearchAction.java
  23. 12
    6
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
  24. 2
    2
      sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/DefaultActiveRulesLoader.java
  25. 4
    3
      sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/DefaultActiveRulesLoaderTest.java
  26. 3
    3
      sonar-ws/src/main/protobuf/ws-issues.proto
  27. 4
    3
      sonar-ws/src/main/protobuf/ws-rules.proto

+ 6
- 4
server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java View File

@@ -80,6 +80,9 @@ public class ChangelogActionIT {
.getInput();

assertJson(response).isSimilarTo("{\n" +
" \"total\": 1,\n" +
" \"p\": 1,\n" +
" \"ps\": 50,\n" +
" \"paging\": {\n" +
" \"pageIndex\": 1,\n" +
" \"pageSize\": 50,\n" +
@@ -176,7 +179,7 @@ public class ChangelogActionIT {
.execute()
.getInput();

assertJson(response).isSimilarTo("{\"paging\":{\"pageIndex\":1,\"pageSize\":50,\"total\":0},\"events\":[]}");
assertJson(response).isSimilarTo("{\"total\":0,\"p\":1,\"ps\":50,\"paging\":{\"pageIndex\":1,\"pageSize\":50,\"total\":0},\"events\":[]}");
}

@Test
@@ -344,14 +347,13 @@ public class ChangelogActionIT {
.setChangeType(ActiveRuleChange.Type.ACTIVATED.name())
.setData(ImmutableMap.of("severity", "MAJOR", "param_format", "^[A-Z][a-zA-Z0-9]*$", "ruleUuid", rule3.getUuid())));

String result = ws.newRequest()
ws.newRequest()
.setMethod("GET")
.setParam(PARAM_LANGUAGE, profile.getLanguage())
.setParam(PARAM_QUALITY_PROFILE, profile.getName())
.setParam("ps", "10")
.execute()
.getInput();
assertJson(result).isSimilarTo(ws.getDef().responseExampleAsString());
.assertJson(this.getClass(), "changelog_example.json");
}

@Test

+ 14
- 0
server/sonar-webserver-webapi/src/it/java/org/sonar/server/rule/ws/SearchActionIT.java View File

@@ -163,6 +163,8 @@ public class SearchActionIT {
.setParam(WebService.Param.FIELDS, "actives")
.executeProtobuf(Rules.SearchResponse.class);

assertThat(response.getTotal()).isZero();
assertThat(response.getP()).isOne();
assertThat(response.getPaging().getTotal()).isZero();
assertThat(response.getPaging().getPageIndex()).isOne();
assertThat(response.getPaging().getPageSize()).isNotZero();
@@ -556,6 +558,7 @@ public class SearchActionIT {
SearchResponse result = ws.newRequest()
.setParam("f", "langName")
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -580,6 +583,7 @@ public class SearchActionIT {
SearchResponse result = ws.newRequest()
.setParam("f", "debtRemFn,remFnOverloaded,defaultDebtRemFn")
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -613,6 +617,7 @@ public class SearchActionIT {
SearchResponse result = ws.newRequest()
.setParam("f", "debtRemFn,remFnOverloaded,defaultDebtRemFn")
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -646,6 +651,7 @@ public class SearchActionIT {
SearchResponse result = ws.newRequest()
.setParam("f", "debtRemFn,remFnOverloaded,defaultDebtRemFn")
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -677,6 +683,7 @@ public class SearchActionIT {
.setParam("f", "isTemplate")
.setParam("is_template", "true")
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -700,6 +707,7 @@ public class SearchActionIT {
.setParam("f", "templateKey")
.setParam("template_key", templateRule.getRepositoryKey() + ":" + templateRule.getRuleKey())
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -717,6 +725,7 @@ public class SearchActionIT {

SearchResponse result = ws.newRequest().executeProtobuf(SearchResponse.class);

assertThat(result.getTotal()).isZero();
assertThat(result.getPaging().getTotal()).isZero();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isZero();
@@ -735,6 +744,7 @@ public class SearchActionIT {
.setParam("q", rule.getName())
.setParam("activation", "true")
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -779,6 +789,7 @@ public class SearchActionIT {
.setParam("activation", "true")
.setParam("qprofile", profile.getKee())
.executeProtobuf(SearchResponse.class);
assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -835,6 +846,7 @@ public class SearchActionIT {
.setParam("qprofile", profile.getKee())
.executeProtobuf(SearchResponse.class);

assertThat(result.getTotal()).isOne();
assertThat(result.getPaging().getTotal()).isOne();
assertThat(result.getPaging().getPageIndex()).isOne();
assertThat(result.getRulesCount()).isOne();
@@ -1048,12 +1060,14 @@ public class SearchActionIT {
requestPopulator.accept(request);
Rules.SearchResponse response = request.executeProtobuf(Rules.SearchResponse.class);

assertThat(response.getP()).isOne();
assertThat(response.getPaging().getPageIndex()).isOne();
assertThat(response.getPaging().getPageSize()).isNotZero();
RuleKey[] expectedRuleKeys = stream(expectedRules).map(RuleDto::getKey).toList().toArray(new RuleKey[0]);
assertThat(response.getRulesList())
.extracting(r -> RuleKey.parse(r.getKey()))
.containsExactlyInAnyOrder(expectedRuleKeys);
assertThat(response.getTotal()).isEqualTo(expectedRules.length);
assertThat(response.getPaging().getTotal()).isEqualTo(expectedRules.length);
assertThat(response.getRulesCount()).isEqualTo(expectedRules.length);
}

+ 8
- 1
server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/UsersActionIT.java View File

@@ -71,7 +71,6 @@ public class UsersActionIT {
assertThat(wsDef.since()).isEqualTo("5.2");
assertThat(wsDef.isPost()).isFalse();
assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
tuple("10.2", "Response fields 'total', 's', 'ps' dropped"),
tuple("10.0", "Field 'managed' added to the payload."),
tuple("10.0", "Parameter 'id' is removed. Use 'name' instead."),
tuple("9.8", "response fields 'total', 's', 'ps' have been deprecated, please use 'paging' object instead."),
@@ -116,6 +115,8 @@ public class UsersActionIT {

assertJson(result).isSimilarTo("""
{
"p": 1,
"total": 0,
"paging": {
"pageIndex": 1,
"pageSize": 25,
@@ -254,6 +255,9 @@ public class UsersActionIT {
.execute()
.getInput()).isSimilarTo("""
{
"p": 1,
"ps": 1,
"total": 2,
"paging": {
"pageIndex": 1,
"pageSize": 1,
@@ -271,6 +275,9 @@ public class UsersActionIT {
.execute()
.getInput()).isSimilarTo("""
{
"p": 2,
"ps": 1,
"total": 2,
"paging": {
"pageIndex": 2,
"pageSize": 1,

+ 1
- 3
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionComponentsIT/no_issue.json View File

@@ -1,6 +1,4 @@
{
"paging": {
"total": 0
},
"total": 0,
"issues": []
}

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/apply_paging_with_one_component.json View File

@@ -1,4 +1,7 @@
{
"total": 501,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/default_page_size_is_100.json View File

@@ -1,4 +1,7 @@
{
"total": 0,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/empty_result.json View File

@@ -1,4 +1,7 @@
{
"total": 0,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_leak_period.json View File

@@ -1,4 +1,7 @@
{
"total": 1,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_leak_period_has_no_effect_on_prs.json View File

@@ -1,4 +1,7 @@
{
"total": 2,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_main_scope.json View File

@@ -1,4 +1,7 @@
{
"total": 2,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_main_scope_2.json View File

@@ -1,4 +1,7 @@
{
"total": 2,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_test_scope.json View File

@@ -1,4 +1,7 @@
{
"total": 1,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 1
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/no_issue.json View File

@@ -1,4 +1,5 @@
{
"total": 0,
"issues": [],
"paging": {
"pageIndex": 1,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/paging.json View File

@@ -1,4 +1,7 @@
{
"total": 12,
"p": 2,
"ps": 9,
"paging": {
"pageIndex": 2,
"pageSize": 9,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/result_for_rule_search.json View File

@@ -1,4 +1,7 @@
{
"total": 1,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/search_by_variants_with_facets.json View File

@@ -1,4 +1,7 @@
{
"total": 3,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,

+ 43
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/qualityprofile/ws/ChangelogActionIT/changelog_example.json View File

@@ -0,0 +1,43 @@
{
"total": 3,
"ps": 10,
"p": 1,
"paging": {
"pageSize": 10,
"total": 3,
"pageIndex": 1
},
"events": [
{
"date" : "2015-02-23T17:58:39+0100",
"action" : "ACTIVATED",
"authorLogin" : "anakin.skywalker",
"authorName" : "Anakin Skywalker",
"ruleKey" : "java:S2438",
"ruleName" : "\"Threads\" should not be used where \"Runnables\" are expected",
"params" : {
"severity" : "CRITICAL"
}
},
{
"date" : "2015-02-23T17:58:18+0100",
"action" : "DEACTIVATED",
"authorLogin" : "padme.amidala",
"authorName" : "Padme Amidala",
"ruleKey" : "java:S2162",
"ruleName" : "\"equals\" methods should be symmetric and work for subclasses"
},
{
"action" : "ACTIVATED",
"authorLogin" : "obiwan.kenobi",
"authorName" : "Obiwan Kenobi",
"ruleKey" : "java:S00101",
"ruleName" : "Class names should comply with a naming convention",
"date" : "2014-09-12T15:20:46+0200",
"params" : {
"severity" : "MAJOR",
"format" : "^[A-Z][a-zA-Z0-9]*$"
}
}
]
}

+ 3
- 0
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/rule/ws/SearchActionIT/paging.json View File

@@ -1,4 +1,7 @@
{
"total": 12,
"p": 2,
"ps": 9,
"paging": {
"pageIndex": 2,
"pageSize": 9,

+ 0
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchAction.java View File

@@ -194,7 +194,6 @@ public class SearchAction implements IssuesWsAction {
+ "<br/>When issue indexation is in progress returns 503 service unavailable HTTP code.")
.setSince("3.6")
.setChangelog(
new Change("10.2", "Response fields 'total', 's', 'ps' dropped"),
new Change("10.2", format("Parameter '%s' renamed to '%s'", PARAM_COMPONENT_KEYS, PARAM_COMPONENTS)),
new Change("10.1", "Add the 'codeVariants' parameter, facet and response field"),
new Change("10.0", "Parameter 'sansTop25' is deprecated"),

+ 8
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java View File

@@ -101,7 +101,7 @@ public class SearchResponseFormat {
SearchWsResponse formatSearch(Set<SearchAdditionalField> fields, SearchResponseData data, Paging paging, Facets facets) {
SearchWsResponse.Builder response = SearchWsResponse.newBuilder();

response.setPaging(formatPaging(paging));
formatPaging(paging, response);
ofNullable(data.getEffortTotal()).ifPresent(response::setEffortTotal);
response.addAllIssues(createIssues(fields, data));
response.addAllComponents(formatComponents(data));
@@ -142,6 +142,13 @@ public class SearchResponseFormat {
return response.build();
}

private static void formatPaging(Paging paging, SearchWsResponse.Builder response) {
response.setP(paging.pageIndex());
response.setPs(paging.pageSize());
response.setTotal(paging.total());
response.setPaging(formatPaging(paging));
}

private static Common.Paging.Builder formatPaging(Paging paging) {
return Common.Paging.newBuilder()
.setPageIndex(paging.pageIndex())

+ 12
- 6
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java View File

@@ -70,7 +70,6 @@ public class ChangelogAction implements QProfileWsAction {
.setDescription("Get the history of changes on a quality profile: rule activation/deactivation, change in parameters/severity. " +
"Events are ordered by date in descending order (most recent first).")
.setChangelog(
new org.sonar.api.server.ws.Change("10.2", "Response fields 'total', 's', 'ps' dropped"),
new org.sonar.api.server.ws.Change("9.8", "response fields 'total', 's', 'ps' have been deprecated, please use 'paging' object instead"),
new org.sonar.api.server.ws.Change("9.8", "The field 'paging' has been added to the response"))
.setHandler(this)
@@ -145,6 +144,11 @@ public class ChangelogAction implements QProfileWsAction {
Map<String, UserDto> usersByUuid, Map<String, RuleDto> rulesByRuleUuids) {
json.beginObject();
writePaging(json, total, page, pageSize);
json.name("paging").beginObject()
.prop("pageIndex", page)
.prop("pageSize", pageSize)
.prop("total", total)
.endObject();
json.name("events").beginArray();
changelogs.forEach(change -> {
JsonWriter changeWriter = json.beginObject();
@@ -179,12 +183,14 @@ public class ChangelogAction implements QProfileWsAction {
json.endObject();
}

/**
* @deprecated since 9.8 - replaced by 'paging' object structure.
*/
@Deprecated(since = "9.8")
private static void writePaging(JsonWriter json, int total, int page, int pageSize) {
json.name("paging").beginObject()
.prop("pageIndex", page)
.prop("pageSize", pageSize)
.prop("total", total)
.endObject();
json.prop("total", total);
json.prop(Param.PAGE, page);
json.prop(Param.PAGE_SIZE, pageSize);
}

/**

+ 6
- 4
server/sonar-webserver-webapi/src/main/java/org/sonar/server/rule/ws/SearchAction.java View File

@@ -165,8 +165,7 @@ public class SearchAction implements RulesWsAction {
new Change("10.0", "The value 'debtRemFn' for the 'f' parameter has been deprecated, use 'remFn' instead"),
new Change("10.0", "The value 'defaultDebtRemFn' for the 'f' parameter has been deprecated, use 'defaultRemFn' instead"),
new Change("10.0", "The value 'sansTop25' for the parameter 'facets' has been deprecated"),
new Change("10.0", "Parameter 'sansTop25' is deprecated"),
new Change("10.2", "Response fields 'total', 's', 'ps' dropped")
new Change("10.0", "Parameter 'sansTop25' is deprecated")
);

action.createParam(FACETS)
@@ -204,7 +203,7 @@ public class SearchAction implements RulesWsAction {

private SearchResponse buildResponse(DbSession dbSession, SearchRequest request, SearchOptions context, SearchResult result, RuleQuery query) {
SearchResponse.Builder responseBuilder = SearchResponse.newBuilder();
writePaging(responseBuilder, result, context);
writeStatistics(responseBuilder, result, context);
doContextResponse(dbSession, request, result, responseBuilder, query);
if (!context.getFacets().isEmpty()) {
writeFacets(responseBuilder, request, context, result);
@@ -212,7 +211,10 @@ public class SearchAction implements RulesWsAction {
return responseBuilder.build();
}

private static void writePaging(SearchResponse.Builder response, SearchResult searchResult, SearchOptions context) {
private static void writeStatistics(SearchResponse.Builder response, SearchResult searchResult, SearchOptions context) {
response.setTotal(searchResult.total);
response.setP(context.getPage());
response.setPs(context.getLimit());
response.setPaging(formatPaging(searchResult.total, context.getPage(), context.getLimit()));
}


+ 12
- 6
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java View File

@@ -76,7 +76,6 @@ public class UsersAction implements UserGroupsWsAction {
.addSearchQuery("freddy", "names", "logins")
.addPagingParams(25)
.setChangelog(
new Change("10.2", "Response fields 'total', 's', 'ps' dropped"),
new Change("10.0", "Field 'managed' added to the payload."),
new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
new Change("9.8", "response fields 'total', 's', 'ps' have been deprecated, please use 'paging' object instead."),
@@ -112,6 +111,11 @@ public class UsersAction implements UserGroupsWsAction {
json.beginObject();
writeMembers(json, users, userUuidToIsManaged);
writePaging(json, paging);
json.name("paging").beginObject()
.prop("pageIndex", page)
.prop("pageSize", pageSize)
.prop("total", total)
.endObject();
json.endObject();
}
}
@@ -134,12 +138,14 @@ public class UsersAction implements UserGroupsWsAction {
json.endArray();
}

/**
* @deprecated since 9.8 - replaced by 'paging' object structure.
*/
@Deprecated(since = "9.8")
private static void writePaging(JsonWriter json, Paging paging) {
json.name("paging").beginObject()
.prop("pageIndex", paging.pageIndex())
.prop("pageSize", paging.pageSize())
.prop("total", paging.total())
.endObject();
json.prop(Param.PAGE, paging.pageIndex())
.prop(Param.PAGE_SIZE, paging.pageSize())
.prop("total", paging.total());
}

private static String getMembership(String selected) {

+ 2
- 2
sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/DefaultActiveRulesLoader.java View File

@@ -63,9 +63,9 @@ public class DefaultActiveRulesLoader implements ActiveRulesLoader {
SearchResponse response = loadFromStream(wsClient.call(getRequest).contentStream());
List<LoadedActiveRule> pageRules = readPage(response);
ruleList.addAll(pageRules);
loaded += response.getPaging().getPageSize();
loaded += response.getPs();

if (response.getPaging().getTotal() <= loaded) {
if (response.getTotal() <= loaded) {
break;
}
page++;

+ 4
- 3
sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/DefaultActiveRulesLoaderTest.java View File

@@ -33,7 +33,6 @@ import org.sonar.api.utils.MessageException;
import org.sonar.scanner.WsTestUtil;
import org.sonar.scanner.bootstrap.DefaultScannerWsClient;
import org.sonar.scanner.scan.branch.BranchConfiguration;
import org.sonarqube.ws.Common;
import org.sonarqube.ws.Rules;
import org.sonarqube.ws.Rules.Active;
import org.sonarqube.ws.Rules.ActiveList;
@@ -138,7 +137,8 @@ public class DefaultActiveRulesLoaderTest {
});

rules.setActives(actives);
rules.setPaging(Common.Paging.newBuilder().setPageSize(numberOfRules).setTotal(total));
rules.setPs(numberOfRules);
rules.setTotal(total);
return new ByteArrayInputStream(rules.build().toByteArray());
}

@@ -156,7 +156,8 @@ public class DefaultActiveRulesLoaderTest {
});

rules.setActives(actives);
rules.setPaging(Common.Paging.newBuilder().setPageSize(3).setTotal(3));
rules.setPs(3);
rules.setTotal(3);
return new ByteArrayInputStream(rules.build().toByteArray());
}
}

+ 3
- 3
sonar-ws/src/main/protobuf/ws-issues.proto View File

@@ -29,9 +29,9 @@ option optimize_for = SPEED;
// Response of GET api/issues/search
message SearchWsResponse {
reserved 5;
reserved 1;
reserved 2;
reserved 3;
optional int64 total = 1 [deprecated=true];
optional int64 p = 2 [deprecated=true];
optional int32 ps = 3 [deprecated=true];
optional sonarqube.ws.commons.Paging paging = 4;

// Total amount of effort, only when the facet "total" is enabled

+ 4
- 3
sonar-ws/src/main/protobuf/ws-rules.proto View File

@@ -41,9 +41,10 @@ message ListResponse {

// WS api/rules/search
message SearchResponse {
reserved 1;
reserved 2;
reserved 3;
optional int64 total = 1 [deprecated=true];
optional int32 p = 2 [deprecated=true];
optional int64 ps = 3 [deprecated=true];

repeated Rule rules = 4;
optional Actives actives = 5;
optional QProfiles qProfiles = 6;

Loading…
Cancel
Save