浏览代码

Revert "SONAR-19233 Drop deprecated paging response fields"

This reverts commit 9db233a378.
tags/10.2.0.77647
Jacek Poreda 9 个月前
父节点
当前提交
4f214cb379
共有 27 个文件被更改,包括 160 次插入37 次删除
  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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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;

正在加载...
取消
保存