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/06/26 02:43:43 UTC
[1/2] james-project git commit: JAMES-2321 Review error messages on
MailRepository routes
Repository: james-project
Updated Branches:
refs/heads/master 83649fc34 -> 5a4c0ded9
JAMES-2321 Review error messages on MailRepository routes
- Avoid implicit toString calls
- Avoid a weird Optional not working trick
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e21b78b4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e21b78b4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e21b78b4
Branch: refs/heads/master
Commit: e21b78b48f74665864f8d98e32c33ec3be511b4c
Parents: 83649fc
Author: benwa <bt...@linagora.com>
Authored: Mon Jun 25 10:02:50 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Jun 26 09:41:02 2018 +0700
----------------------------------------------------------------------
.../webadmin/routes/MailRepositoriesRoutes.java | 20 ++++++++++----------
.../service/MailRepositoryStoreService.java | 6 +++---
.../routes/MailRepositoriesRoutesTest.java | 7 ++++---
3 files changed, 17 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/e21b78b4/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 53d7a2a..c69f599 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
@@ -181,11 +181,7 @@ public class MailRepositoriesRoutes implements Routes {
MailRepositoryUrl url = MailRepositoryUrl.fromEncoded(encodedUrl);
try {
return repositoryStoreService.listMails(url, offset, limit)
- .orElseThrow(() -> ErrorResponder.builder()
- .statusCode(HttpStatus.NOT_FOUND_404)
- .type(ErrorType.NOT_FOUND)
- .message("The repository " + encodedUrl + "(decoded value: '" + url + "') does not exist")
- .haltError());
+ .orElseThrow(() -> repositoryNotFound(encodedUrl, url));
} catch (MailRepositoryStore.MailRepositoryStoreException | MessagingException e) {
throw ErrorResponder.builder()
@@ -294,6 +290,14 @@ public class MailRepositoriesRoutes implements Routes {
.haltError();
}
+ private HaltException repositoryNotFound(String encodedUrl, MailRepositoryUrl url) {
+ return ErrorResponder.builder()
+ .statusCode(HttpStatus.NOT_FOUND_404)
+ .type(ErrorType.NOT_FOUND)
+ .message("The repository '" + encodedUrl + "' (decoded value: '" + url.asString() + "') does not exist")
+ .haltError();
+ }
+
private HaltException internalServerError(Exception e) {
return ErrorResponder.builder()
.statusCode(HttpStatus.INTERNAL_SERVER_ERROR_500)
@@ -317,11 +321,7 @@ public class MailRepositoriesRoutes implements Routes {
MailRepositoryUrl url = MailRepositoryUrl.fromEncoded(encodedUrl);
try {
long size = repositoryStoreService.size(url)
- .orElseThrow(() -> ErrorResponder.builder()
- .statusCode(HttpStatus.NOT_FOUND_404)
- .type(ErrorType.NOT_FOUND)
- .message("The repository " + encodedUrl + "(decoded value: '" + url + "') does not exist")
- .haltError());
+ .orElseThrow(() -> repositoryNotFound(encodedUrl, url));
return new ExtendedMailRepositoryResponse(url, size);
} catch (MailRepositoryStore.MailRepositoryStoreException e) {
throw ErrorResponder.builder()
http://git-wip-us.apache.org/repos/asf/james-project/blob/e21b78b4/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
index 6c7ed64..6efce69 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
@@ -67,7 +67,7 @@ public class MailRepositoryStoreService {
}
public Optional<List<MailKeyDTO>> listMails(MailRepositoryUrl url, Offset offset, Limit limit) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {
- Optional<MailRepository> mailRepository = Optional.ofNullable(getRepository(url));
+ Optional<MailRepository> mailRepository = mailRepositoryStore.get(url);
ThrowingFunction<MailRepository, List<MailKeyDTO>> list = repository -> list(repository, offset, limit);
return mailRepository.map(Throwing.function(list).sneakyThrow());
}
@@ -81,7 +81,7 @@ public class MailRepositoryStoreService {
}
public Optional<Long> size(MailRepositoryUrl url) throws MailRepositoryStore.MailRepositoryStoreException {
- Optional<MailRepository> mailRepository = Optional.ofNullable(getRepository(url));
+ Optional<MailRepository> mailRepository = mailRepositoryStore.get(url);
return mailRepository.map(Throwing.function(MailRepository::size).sneakyThrow());
}
@@ -113,7 +113,7 @@ public class MailRepositoryStoreService {
.orElseThrow(() -> ErrorResponder.builder()
.statusCode(HttpStatus.NOT_FOUND_404)
.type(ErrorResponder.ErrorType.NOT_FOUND)
- .message(url + "does not exist")
+ .message(url.asString() + " does not exist")
.haltError());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/e21b78b4/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 6ea3072..4f752c9 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
@@ -246,7 +246,8 @@ public class MailRepositoriesRoutesTest {
when()
.get(MY_REPO_MAILS)
.then()
- .statusCode(HttpStatus.NOT_FOUND_404);
+ .statusCode(HttpStatus.NOT_FOUND_404)
+ .body("message", is("The repository 'url%3A%2F%2FmyRepo' (decoded value: 'url://myRepo') does not exist"));
}
@Test
@@ -947,7 +948,7 @@ public class MailRepositoriesRoutesTest {
.statusCode(HttpStatus.NOT_FOUND_404)
.body("statusCode", is(404))
.body("type", is(ErrorResponder.ErrorType.NOT_FOUND.getType()))
- .body("message", is(URL_MY_REPO + "does not exist"));
+ .body("message", is(URL_MY_REPO.asString() + " does not exist"));
}
@Test
@@ -960,7 +961,7 @@ public class MailRepositoriesRoutesTest {
.statusCode(HttpStatus.NOT_FOUND_404)
.body("statusCode", is(404))
.body("type", is(ErrorResponder.ErrorType.NOT_FOUND.getType()))
- .body("message", is(URL_MY_REPO + "does not exist"));
+ .body("message", is(URL_MY_REPO.asString() + " does not exist"));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/2] james-project git commit: JAMES-2279 Add WithPriority mailet
Posted by bt...@apache.org.
JAMES-2279 Add WithPriority mailet
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5a4c0ded
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5a4c0ded
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5a4c0ded
Branch: refs/heads/master
Commit: 5a4c0ded9f68565afa1c357c1a680389bc75a231
Parents: e21b78b
Author: clitetailor <du...@gmail.com>
Authored: Wed Jun 20 19:41:20 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Jun 26 09:42:48 2018 +0700
----------------------------------------------------------------------
.../james/transport/mailets/WithPriority.java | 63 +++++++++
.../transport/mailets/WithPriorityTest.java | 133 +++++++++++++++++++
2 files changed, 196 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/5a4c0ded/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithPriority.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithPriority.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithPriority.java
new file mode 100644
index 0000000..5e5218c
--- /dev/null
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithPriority.java
@@ -0,0 +1,63 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.transport.mailets;
+
+import java.util.Optional;
+
+import javax.mail.MessagingException;
+
+import org.apache.james.queue.api.MailPrioritySupport;
+import org.apache.mailet.Mail;
+import org.apache.mailet.base.GenericMailet;
+
+/**
+ * This mailet sets the priority of the incoming mail.
+ *
+ * Example configuration:
+ *
+ * <mailet match="All" class="WithPriority">
+ * <priority>7</priority>
+ * </mailet>
+ */
+public class WithPriority extends GenericMailet {
+
+ private int priority;
+
+ @Override
+ public String getMailetInfo() {
+ return "With Priority Mailet";
+ }
+
+ @Override
+ public void init() throws MessagingException {
+ priority = Optional.ofNullable(getInitParameter("priority", null))
+ .map(Integer::valueOf)
+ .orElseThrow(() -> new IllegalArgumentException("'priority' init parameter is compulsory"));
+
+ if (priority < 0 || priority > 9) {
+ throw new IllegalArgumentException("Invalid priority: Priority should be from 0 to 9");
+ }
+ }
+
+ @Override
+ public void service(Mail mail) throws MessagingException {
+ mail.setAttribute(MailPrioritySupport.MAIL_PRIORITY, priority);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/5a4c0ded/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/WithPriorityTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/WithPriorityTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/WithPriorityTest.java
new file mode 100644
index 0000000..620964a
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/WithPriorityTest.java
@@ -0,0 +1,133 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.transport.mailets;
+
+import org.apache.james.queue.api.MailPrioritySupport;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailetConfig;
+import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMailContext;
+import org.apache.mailet.base.test.FakeMailetConfig;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.*;
+
+public class WithPriorityTest {
+
+ private WithPriority mailet;
+
+ @Before
+ public void setup() throws Exception {
+ mailet = new WithPriority();
+ }
+
+ @Test
+ public void getMailetInfoShouldReturnExpectedContent() {
+ String expected = "With Priority Mailet";
+
+ String actual = mailet.getMailetInfo();
+
+ assertThat(actual).isEqualTo(expected);
+ }
+
+ @Test
+ public void initShouldNotThrowWhenValidPriority() {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .setProperty("priority", "7")
+ .build();
+
+ assertThatCode(() -> mailet.init(mockedMailetConfig))
+ .doesNotThrowAnyException();
+ }
+
+ @Test
+ public void initShouldThrowWhenInvalidPriority() {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .setProperty("priority", "-1")
+ .build();
+
+ assertThatThrownBy(() -> mailet.init(mockedMailetConfig))
+ .isInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ public void initShouldThrowWhenPriorityIsNotANumber() {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .setProperty("priority", "k")
+ .build();
+
+ assertThatThrownBy(() -> mailet.init(mockedMailetConfig))
+ .isInstanceOf(NumberFormatException.class);
+ }
+
+ @Test
+ public void initShouldThrowWhenPriorityIsEmpty() {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .setProperty("priority", "")
+ .build();
+
+ assertThatThrownBy(() -> mailet.init(mockedMailetConfig))
+ .isInstanceOf(NumberFormatException.class);
+ }
+
+ @Test
+ public void initShouldThrowWhenNoPriority() {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .build();
+
+ assertThatThrownBy(() -> mailet.init(mockedMailetConfig))
+ .isInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ public void serviceShouldSetMailPriorityWhenNone() throws Exception {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .setProperty("priority", "7")
+ .build();
+
+ mailet.init(mockedMailetConfig);
+ Mail mail = FakeMail.builder().build();
+ mailet.service(mail);
+
+ assertThat(mail.getAttribute(MailPrioritySupport.MAIL_PRIORITY)).isEqualTo(7);
+ }
+
+ @Test
+ public void serviceShouldSetMailPriorityWhenPriorityExists() throws Exception {
+ MailetConfig mockedMailetConfig = FakeMailetConfig.builder()
+ .mailetContext(FakeMailContext.defaultContext())
+ .setProperty("priority", "7")
+ .build();
+
+ mailet.init(mockedMailetConfig);
+ Mail mail = FakeMail.builder()
+ .attribute(MailPrioritySupport.MAIL_PRIORITY, 5)
+ .build();
+ mailet.service(mail);
+
+ assertThat(mail.getAttribute(MailPrioritySupport.MAIL_PRIORITY)).isEqualTo(7);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org