diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-09-25 17:55:00 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-09-26 11:02:37 +0200 |
commit | 0c86e50379487869b62bc070f21a69d905731b36 (patch) | |
tree | db5e196862aa96d5d4dd2d9216147d89115ee8b7 /server/sonar-server | |
parent | 9f70316fe1902e7013b59c4faebd21e135d8bbf5 (diff) | |
download | sonarqube-0c86e50379487869b62bc070f21a69d905731b36.tar.gz sonarqube-0c86e50379487869b62bc070f21a69d905731b36.zip |
SONAR-5531 Set max limit when page size is < 1
Diffstat (limited to 'server/sonar-server')
5 files changed, 20 insertions, 15 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java index d57cd5eb1bd..5e09f9b957f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java @@ -67,7 +67,7 @@ public class IssueNormalizer extends BaseNormalizer<IssueDto, String> { public static final IndexField STATUS = addSortable(IndexField.Type.STRING, "status"); public static final IndexField SEVERITY = add(IndexField.Type.STRING, "severity"); public static final IndexField LANGUAGE = add(IndexField.Type.STRING, "language"); - public static final IndexField RULE_KEY = addSearchable(IndexField.Type.STRING, "ruleKey"); + public static final IndexField RULE_KEY = add(IndexField.Type.STRING, "ruleKey"); public static final Set<IndexField> ALL_FIELDS = getAllFields(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java b/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java index 80600912b15..50d936d265a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java +++ b/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java @@ -75,7 +75,7 @@ public abstract class SearchRequestHandler<QUERY, DOMAIN> implements RequestHand action .createParam(PARAM_PAGE_SIZE) .setDeprecatedKey("pageSize") - .setDescription("Page size. Must be greater than 0.") + .setDescription(String.format("Page size (-1 return up to %s).", QueryContext.MAX_LIMIT)) .setExampleValue("20") .setDefaultValue("100"); @@ -112,10 +112,15 @@ public abstract class SearchRequestHandler<QUERY, DOMAIN> implements RequestHand } private QueryContext getQueryContext(Request request) { - return new QueryContext().addFieldsToReturn(request.paramAsStrings(PARAM_FIELDS)) - .setFacet(request.mandatoryParamAsBoolean(PARAM_FACETS)) - .setPage(request.mandatoryParamAsInt(PARAM_PAGE), - request.mandatoryParamAsInt(PARAM_PAGE_SIZE)); + int pageSize = request.mandatoryParamAsInt(PARAM_PAGE_SIZE); + QueryContext queryContext = new QueryContext().addFieldsToReturn(request.paramAsStrings(PARAM_FIELDS)) + .setFacet(request.mandatoryParamAsBoolean(PARAM_FACETS)); + if (pageSize < 1) { + queryContext.setPage(request.mandatoryParamAsInt(PARAM_PAGE), 0).setMaxLimit(); + } else { + queryContext.setPage(request.mandatoryParamAsInt(PARAM_PAGE), pageSize); + } + return queryContext; } protected void writeStatistics(JsonWriter json, Result searchResult, QueryContext context) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java index 99a8f221463..e099cb17191 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java @@ -288,7 +288,7 @@ public class SearchActionMediumTest { } @Test - public void paging_with_page_size_to_zero() throws Exception { + public void paging_with_page_size_to_minus_one() throws Exception { for (int i = 0; i < 12; i++) { IssueDto issue = IssueTesting.newDto(rule, file, project); tester.get(IssueDao.class).insert(session, issue); @@ -296,11 +296,11 @@ public class SearchActionMediumTest { session.commit(); WsTester.TestRequest request = wsTester.newGetRequest(IssuesWs.API_ENDPOINT, SearchAction.SEARCH_ACTION); - request.setParam(SearchAction.PARAM_PAGE, "2"); - request.setParam(SearchAction.PARAM_PAGE_SIZE, "0"); + request.setParam(SearchAction.PARAM_PAGE, "1"); + request.setParam(SearchAction.PARAM_PAGE_SIZE, "-1"); WsTester.Result result = request.execute(); - result.assertJson(this.getClass(), "paging_with_page_size_to_zero.json", false); + result.assertJson(this.getClass(), "paging_with_page_size_to_minus_one.json", false); } @Test diff --git a/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_minus_one.json b/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_minus_one.json new file mode 100644 index 00000000000..04e89e27fc3 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_minus_one.json @@ -0,0 +1,5 @@ +{ + "total": 12, + "p": 1, + "ps": 500 +} diff --git a/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_zero.json b/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_zero.json deleted file mode 100644 index 1bef37ba86f..00000000000 --- a/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_zero.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "total": 12, - "p": 0, - "ps": 0 -} |