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 ad...@apache.org on 2017/11/15 11:15:58 UTC
[17/19] james-project git commit: JAMES-2214 Add an AttachmentManager
exist method
JAMES-2214 Add an AttachmentManager exist method
- More fluent API
- Avoid retrieving full attachment content for existence checks
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/90f3fb78
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/90f3fb78
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/90f3fb78
Branch: refs/heads/master
Commit: 90f3fb78a9319dd8cda03edd2452739c993551bf
Parents: 264ffd7
Author: benwa <bt...@linagora.com>
Authored: Mon Nov 13 16:14:46 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Nov 15 18:05:45 2017 +0700
----------------------------------------------------------------------
.../java/org/apache/james/mailbox/AttachmentManager.java | 2 ++
.../james/mailbox/store/StoreAttachmentManager.java | 5 +++++
.../org/apache/james/jmap/methods/AttachmentChecker.java | 11 ++---------
.../apache/james/jmap/methods/AttachmentCheckerTest.java | 7 +++----
4 files changed, 12 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f3fb78/mailbox/api/src/main/java/org/apache/james/mailbox/AttachmentManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/AttachmentManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/AttachmentManager.java
index fb2bc21..aabc4ed 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/AttachmentManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/AttachmentManager.java
@@ -30,6 +30,8 @@ import org.apache.james.mailbox.model.MessageId;
public interface AttachmentManager {
+ boolean exists(AttachmentId attachmentId, MailboxSession session) throws MailboxException;
+
Attachment getAttachment(AttachmentId attachmentId, MailboxSession mailboxSession) throws MailboxException, AttachmentNotFoundException;
List<Attachment> getAttachments(List<AttachmentId> attachmentIds, MailboxSession mailboxSession) throws MailboxException;
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f3fb78/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreAttachmentManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreAttachmentManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreAttachmentManager.java
index 6708d67..7552580 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreAttachmentManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreAttachmentManager.java
@@ -53,6 +53,11 @@ public class StoreAttachmentManager implements AttachmentManager {
}
@Override
+ public boolean exists(AttachmentId attachmentId, MailboxSession session) throws MailboxException {
+ return userHasAccessToAttachment(attachmentId, session);
+ }
+
+ @Override
public Attachment getAttachment(AttachmentId attachmentId, MailboxSession mailboxSession) throws MailboxException, AttachmentNotFoundException {
if (!userHasAccessToAttachment(attachmentId, mailboxSession)) {
throw new AttachmentNotFoundException(attachmentId.getId());
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f3fb78/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
index 77bbd62..24771b9 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
@@ -28,7 +28,6 @@ import org.apache.james.jmap.model.Attachment;
import org.apache.james.jmap.model.BlobId;
import org.apache.james.mailbox.AttachmentManager;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.exception.AttachmentNotFoundException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.AttachmentId;
@@ -53,14 +52,8 @@ public class AttachmentChecker {
}
private List<BlobId> listAttachmentsNotFound(List<Attachment> attachments, MailboxSession session) throws MailboxException {
- ThrowingPredicate<Attachment> notExists = attachment -> {
- try {
- attachmentManager.getAttachment(getAttachmentId(attachment), session);
- return false;
- } catch (AttachmentNotFoundException e) {
- return true;
- }
- };
+ ThrowingPredicate<Attachment> notExists =
+ attachment -> !attachmentManager.exists(getAttachmentId(attachment), session);
return attachments.stream()
.filter(Throwing.predicate(notExists).sneakyThrow())
.map(Attachment::getBlobId)
http://git-wip-us.apache.org/repos/asf/james-project/blob/90f3fb78/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
index dca2a44..c9df8e9 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
@@ -30,7 +30,6 @@ import org.apache.james.jmap.model.CreationMessage;
import org.apache.james.jmap.model.CreationMessageId;
import org.apache.james.mailbox.AttachmentManager;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.exception.AttachmentNotFoundException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.AttachmentId;
@@ -66,7 +65,7 @@ public class AttachmentCheckerTest {
public void assertAttachmentsExistShouldThrowWhenUnknownBlobId() throws MailboxException {
BlobId unknownBlobId = BlobId.of("unknownBlobId");
AttachmentId unknownAttachmentId = AttachmentId.from(unknownBlobId.getRawValue());
- when(attachmentManager.getAttachment(unknownAttachmentId, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId.getRawValue()));
+ when(attachmentManager.exists(unknownAttachmentId, session)).thenReturn(false);
assertThatThrownBy(() -> sut.assertAttachmentsExist(
new ValueWithId.CreationMessageEntry(
@@ -86,8 +85,8 @@ public class AttachmentCheckerTest {
AttachmentId unknownAttachmentId1 = AttachmentId.from(unknownBlobId1.getRawValue());
AttachmentId unknownAttachmentId2 = AttachmentId.from(unknownBlobId2.getRawValue());
- when(attachmentManager.getAttachment(unknownAttachmentId1, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId1.getRawValue()));
- when(attachmentManager.getAttachment(unknownAttachmentId2, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId2.getRawValue()));
+ when(attachmentManager.exists(unknownAttachmentId1, session)).thenReturn(false);
+ when(attachmentManager.exists(unknownAttachmentId2, session)).thenReturn(false);
assertThatThrownBy(() -> sut.assertAttachmentsExist(
new ValueWithId.CreationMessageEntry(
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org