You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/01/24 08:04:14 UTC
[05/11] james-project git commit: JAMES-2295 A zeroed limit should be
invalid
JAMES-2295 A zeroed limit should be invalid
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/452183a1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/452183a1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/452183a1
Branch: refs/heads/master
Commit: 452183a17e39d7df8b20b018204f2d967a6ec452
Parents: d423ef0
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Jan 22 17:36:12 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Wed Jan 24 14:58:37 2018 +0700
----------------------------------------------------------------------
.../webadmin/routes/MailRepositoriesRoutes.java | 21 ++++++++++++++++----
.../routes/MailRepositoriesRoutesTest.java | 10 ++++++++++
2 files changed, 27 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/452183a1/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
index 1cc7a06..529dfd5 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
@@ -91,9 +91,9 @@ public class MailRepositoriesRoutes implements Routes {
required = false,
paramType = "query parameter",
dataType = "Integer",
- defaultValue = "0",
+ defaultValue = "absent",
example = "?limit=100",
- value = "If present, fixes the maximal number of key returned in that call.")
+ value = "If present, fixes the maximal number of key returned in that call. Must be more than zero if specified.")
})
@ApiResponses(value = {
@ApiResponse(code = HttpStatus.OK_200, message = "The list of all mails in a repository", response = List.class),
@@ -103,8 +103,10 @@ public class MailRepositoriesRoutes implements Routes {
public void defineListMails() {
service.get(MAIL_REPOSITORIES + "/:encodedUrl/mails", (request, response) -> {
int offset = asInteger(request, "offset").orElse(NO_OFFSET);
- Limit limit = Limit.from(asInteger(request, "limit"));
- String url = URLDecoder.decode(request.params("encodedUrl"), StandardCharsets.UTF_8.displayName());
+ Limit limit = Limit.from(asInteger(request, "limit")
+ .map(value -> keepNotZero(value, "limit")));
+ String encodedUrl = request.params("encodedUrl");
+ String url = URLDecoder.decode(encodedUrl, StandardCharsets.UTF_8.displayName());
try {
return repositoryStoreService.listMails(url, offset, limit);
} catch (MailRepositoryStore.MailRepositoryStoreException| MessagingException e) {
@@ -157,4 +159,15 @@ public class MailRepositoriesRoutes implements Routes {
}
return value;
}
+
+ private int keepNotZero(int value, String parameterName) {
+ if (value == 0) {
+ throw ErrorResponder.builder()
+ .statusCode(HttpStatus.BAD_REQUEST_400)
+ .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
+ .message(parameterName + " can not be equal to zero")
+ .haltError();
+ }
+ return value;
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/452183a1/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
index ddac73d..d318715 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
@@ -267,4 +267,14 @@ public class MailRepositoriesRoutesTest {
.body("mailKey", containsInAnyOrder("name1", "name2"));
}
+ @Test
+ public void zeroLimitShouldNotBeValid() throws Exception {
+ when()
+ .get(MY_REPO_MAILS + "?limit=0")
+ .then()
+ .statusCode(HttpStatus.BAD_REQUEST_400)
+ .body("statusCode", is(400))
+ .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
+ .body("message", is("limit can not be equal to zero"));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org