aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-09-25 17:55:00 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-09-26 11:02:37 +0200
commit0c86e50379487869b62bc070f21a69d905731b36 (patch)
treedb5e196862aa96d5d4dd2d9216147d89115ee8b7 /server/sonar-server
parent9f70316fe1902e7013b59c4faebd21e135d8bbf5 (diff)
downloadsonarqube-0c86e50379487869b62bc070f21a69d905731b36.tar.gz
sonarqube-0c86e50379487869b62bc070f21a69d905731b36.zip
SONAR-5531 Set max limit when page size is < 1
Diffstat (limited to 'server/sonar-server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueNormalizer.java2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java15
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java8
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_minus_one.json5
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionMediumTest/paging_with_page_size_to_zero.json5
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
-}