]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-19233 Drop deprecated paging response fields
authorEric Giffon <eric.giffon@sonarsource.com>
Wed, 26 Jul 2023 13:52:00 +0000 (15:52 +0200)
committersonartech <sonartech@sonarsource.com>
Mon, 31 Jul 2023 20:03:31 +0000 (20:03 +0000)
27 files changed:
server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java
server/sonar-webserver-webapi/src/it/java/org/sonar/server/rule/ws/SearchActionIT.java
server/sonar-webserver-webapi/src/it/java/org/sonar/server/usergroups/ws/UsersActionIT.java
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionComponentsIT/no_issue.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/apply_paging_with_one_component.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/default_page_size_is_100.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/empty_result.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_leak_period.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_leak_period_has_no_effect_on_prs.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_main_scope.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_main_scope_2.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/filter_by_test_scope.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/no_issue.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/paging.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/result_for_rule_search.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/issue/ws/SearchActionIT/search_by_variants_with_facets.json
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/qualityprofile/ws/ChangelogActionIT/changelog_example.json [deleted file]
server/sonar-webserver-webapi/src/it/resources/org/sonar/server/rule/ws/SearchActionIT/paging.json
server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/rule/ws/SearchAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/DefaultActiveRulesLoader.java
sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/DefaultActiveRulesLoaderTest.java
sonar-ws/src/main/protobuf/ws-issues.proto
sonar-ws/src/main/protobuf/ws-rules.proto

index 7d282d04319ecba8e211c0f79df4b9fce87d50d7..d47b9957a4ef1e9b22882a69dc37e56555d55995 100644 (file)
@@ -80,9 +80,6 @@ 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" +
@@ -179,7 +176,7 @@ public class ChangelogActionIT {
       .execute()
       .getInput();
 
-    assertJson(response).isSimilarTo("{\"total\":0,\"p\":1,\"ps\":50,\"paging\":{\"pageIndex\":1,\"pageSize\":50,\"total\":0},\"events\":[]}");
+    assertJson(response).isSimilarTo("{\"paging\":{\"pageIndex\":1,\"pageSize\":50,\"total\":0},\"events\":[]}");
   }
 
   @Test
@@ -347,13 +344,14 @@ public class ChangelogActionIT {
       .setChangeType(ActiveRuleChange.Type.ACTIVATED.name())
       .setData(ImmutableMap.of("severity", "MAJOR", "param_format", "^[A-Z][a-zA-Z0-9]*$", "ruleUuid", rule3.getUuid())));
 
-    ws.newRequest()
+    String result = ws.newRequest()
       .setMethod("GET")
       .setParam(PARAM_LANGUAGE, profile.getLanguage())
       .setParam(PARAM_QUALITY_PROFILE, profile.getName())
       .setParam("ps", "10")
       .execute()
-      .assertJson(this.getClass(), "changelog_example.json");
+      .getInput();
+    assertJson(result).isSimilarTo(ws.getDef().responseExampleAsString());
   }
 
   @Test
index a99e9d26800240a950a93cfe6a486e2bc3d14fd9..96ffd6534a73b9ed9fa6b2774492101c5c86b1c5 100644 (file)
@@ -163,8 +163,6 @@ 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();
@@ -558,7 +556,6 @@ 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();
@@ -583,7 +580,6 @@ 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();
@@ -617,7 +613,6 @@ 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();
@@ -651,7 +646,6 @@ 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();
@@ -683,7 +677,6 @@ 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();
@@ -707,7 +700,6 @@ 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();
@@ -725,7 +717,6 @@ 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();
@@ -744,7 +735,6 @@ 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();
@@ -789,7 +779,6 @@ 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();
@@ -846,7 +835,6 @@ 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();
@@ -1060,14 +1048,12 @@ 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);
   }
index 3888e144b20cc0656a09ed3ce2d1f9bd5e0bea9e..c0aa16ed73a7f2bfda73cbea3263f8e403ab8901 100644 (file)
@@ -71,6 +71,7 @@ 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."),
@@ -115,8 +116,6 @@ public class UsersActionIT {
 
     assertJson(result).isSimilarTo("""
       {
-        "p": 1,
-        "total": 0,
         "paging": {
           "pageIndex": 1,
           "pageSize": 25,
@@ -255,9 +254,6 @@ public class UsersActionIT {
       .execute()
       .getInput()).isSimilarTo("""
       {
-        "p": 1,
-        "ps": 1,
-        "total": 2,
         "paging": {
           "pageIndex": 1,
           "pageSize": 1,
@@ -275,9 +271,6 @@ public class UsersActionIT {
       .execute()
       .getInput()).isSimilarTo("""
       {
-        "p": 2,
-        "ps": 1,
-        "total": 2,
         "paging": {
           "pageIndex": 2,
           "pageSize": 1,
diff --git a/server/sonar-webserver-webapi/src/it/resources/org/sonar/server/qualityprofile/ws/ChangelogActionIT/changelog_example.json b/server/sonar-webserver-webapi/src/it/resources/org/sonar/server/qualityprofile/ws/ChangelogActionIT/changelog_example.json
deleted file mode 100644 (file)
index c40c1bb..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "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]*$"
-      }
-    }
-  ]
-}
index 674c74cca2e549fac635434621a562572c92c499..e09c0347ba45e4e090405fbc47775612d0325143 100644 (file)
@@ -194,6 +194,7 @@ 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"),
index 3622343ea1bba97c548c89b11b8f119f97f13f3c..1e769addf39c68862fc78abf20febfedc1bc12bb 100644 (file)
@@ -101,7 +101,7 @@ public class SearchResponseFormat {
   SearchWsResponse formatSearch(Set<SearchAdditionalField> fields, SearchResponseData data, Paging paging, Facets facets) {
     SearchWsResponse.Builder response = SearchWsResponse.newBuilder();
 
-    formatPaging(paging, response);
+    response.setPaging(formatPaging(paging));
     ofNullable(data.getEffortTotal()).ifPresent(response::setEffortTotal);
     response.addAllIssues(createIssues(fields, data));
     response.addAllComponents(formatComponents(data));
@@ -142,13 +142,6 @@ 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())
index 57b3a8b902b30fc6cb3a112e51fa906f24fd110f..d04088c192b679dd5cb704dd3138455c4e00f1c5 100644 (file)
@@ -70,6 +70,7 @@ 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)
@@ -144,11 +145,6 @@ 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();
@@ -183,14 +179,12 @@ 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.prop("total", total);
-    json.prop(Param.PAGE, page);
-    json.prop(Param.PAGE_SIZE, pageSize);
+    json.name("paging").beginObject()
+      .prop("pageIndex", page)
+      .prop("pageSize", pageSize)
+      .prop("total", total)
+      .endObject();
   }
 
   /**
index 8f52faa0822dbadc2b47ddb4be3eddab52c6c439..2e406da2d2f730ff9343917ee20609012947891d 100644 (file)
@@ -165,7 +165,8 @@ 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.0", "Parameter 'sansTop25' is deprecated"),
+        new Change("10.2", "Response fields 'total', 's', 'ps' dropped")
       );
 
     action.createParam(FACETS)
@@ -203,7 +204,7 @@ public class SearchAction implements RulesWsAction {
 
   private SearchResponse buildResponse(DbSession dbSession, SearchRequest request, SearchOptions context, SearchResult result, RuleQuery query) {
     SearchResponse.Builder responseBuilder = SearchResponse.newBuilder();
-    writeStatistics(responseBuilder, result, context);
+    writePaging(responseBuilder, result, context);
     doContextResponse(dbSession, request, result, responseBuilder, query);
     if (!context.getFacets().isEmpty()) {
       writeFacets(responseBuilder, request, context, result);
@@ -211,10 +212,7 @@ public class SearchAction implements RulesWsAction {
     return responseBuilder.build();
   }
 
-  private static void writeStatistics(SearchResponse.Builder response, SearchResult searchResult, SearchOptions context) {
-    response.setTotal(searchResult.total);
-    response.setP(context.getPage());
-    response.setPs(context.getLimit());
+  private static void writePaging(SearchResponse.Builder response, SearchResult searchResult, SearchOptions context) {
     response.setPaging(formatPaging(searchResult.total, context.getPage(), context.getLimit()));
   }
 
index 01fc9477cfd907dd08fa3af468abce734004096f..b08e76f25963a60431467e0ebfdc950d96c9bbd0 100644 (file)
@@ -76,6 +76,7 @@ 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."),
@@ -111,11 +112,6 @@ 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();
       }
     }
@@ -138,14 +134,12 @@ 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.prop(Param.PAGE, paging.pageIndex())
-      .prop(Param.PAGE_SIZE, paging.pageSize())
-      .prop("total", paging.total());
+    json.name("paging").beginObject()
+      .prop("pageIndex", paging.pageIndex())
+      .prop("pageSize", paging.pageSize())
+      .prop("total", paging.total())
+      .endObject();
   }
 
   private static String getMembership(String selected) {
index 5768377de8e01ed37bd36aef3b9accc6ce4a1d15..6c1766f54e32519d1edfa865e0790c91bd3f6ad1 100644 (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.getPs();
+      loaded += response.getPaging().getPageSize();
 
-      if (response.getTotal() <= loaded) {
+      if (response.getPaging().getTotal() <= loaded) {
         break;
       }
       page++;
index 60b19337d23d40b69429b2a681d09388f38794c3..059a0efbe8d261fcad70032380003b574e8ab303 100644 (file)
@@ -33,6 +33,7 @@ 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;
@@ -137,8 +138,7 @@ public class DefaultActiveRulesLoaderTest {
       });
 
     rules.setActives(actives);
-    rules.setPs(numberOfRules);
-    rules.setTotal(total);
+    rules.setPaging(Common.Paging.newBuilder().setPageSize(numberOfRules).setTotal(total));
     return new ByteArrayInputStream(rules.build().toByteArray());
   }
 
@@ -156,8 +156,7 @@ public class DefaultActiveRulesLoaderTest {
       });
 
     rules.setActives(actives);
-    rules.setPs(3);
-    rules.setTotal(3);
+    rules.setPaging(Common.Paging.newBuilder().setPageSize(3).setTotal(3));
     return new ByteArrayInputStream(rules.build().toByteArray());
   }
 }
index d545fe7e75d71422ac9622c29809a9afc69ba867..aa88ec340839080328fb613a97251a1896d39b65 100644 (file)
@@ -29,9 +29,9 @@ option optimize_for = SPEED;
 // Response of GET api/issues/search
 message SearchWsResponse {
   reserved 5;
-  optional int64 total = 1 [deprecated=true];
-  optional int64 p = 2 [deprecated=true];
-  optional int32 ps = 3 [deprecated=true];
+  reserved 1;
+  reserved 2;
+  reserved 3;
   optional sonarqube.ws.commons.Paging paging = 4;
 
   // Total amount of effort, only when the facet "total" is enabled
index e1e242b8b81b818c1fa48d61c63447010486ba34..2e68e4c07661da2bd853dbb60a3e2c488f659da3 100644 (file)
@@ -41,10 +41,9 @@ message ListResponse {
 
 // WS api/rules/search
 message SearchResponse {
-  optional int64 total = 1 [deprecated=true];
-  optional int32 p = 2 [deprecated=true];
-  optional int64 ps = 3 [deprecated=true];
-
+  reserved 1;
+  reserved 2;
+  reserved 3;
   repeated Rule rules = 4;
   optional Actives actives = 5;
   optional QProfiles qProfiles = 6;