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