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 ro...@apache.org on 2016/08/29 13:28:05 UTC

[08/17] james-project git commit: JAMES-1818 Use AttachmentManager in upload servlet

JAMES-1818 Use AttachmentManager in upload servlet


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/49b3ba33
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/49b3ba33
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/49b3ba33

Branch: refs/heads/master
Commit: 49b3ba33b0828b568aa1f677effc6974d5ec9582
Parents: 6e81f25
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Thu Aug 18 15:49:47 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Aug 29 15:15:43 2016 +0200

----------------------------------------------------------------------
 .../org/apache/james/jmap/UploadHandler.java     | 19 ++++++++-----------
 .../org/apache/james/jmap/UploadServlet.java     |  8 +++++++-
 2 files changed, 15 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/49b3ba33/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadHandler.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadHandler.java
index 4ec90b3..ff1ec90 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadHandler.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadHandler.java
@@ -28,38 +28,35 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.james.jmap.json.ObjectMapperFactory;
 import org.apache.james.jmap.model.UploadResponse;
+import org.apache.james.mailbox.AttachmentManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Attachment;
-import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.io.ByteStreams;
 
 public class UploadHandler {
-    private final MailboxSessionMapperFactory mailboxSessionMapperFactory;
+    private final AttachmentManager attachmentManager;
     private final ObjectMapper objectMapper;
 
     @Inject
-    private UploadHandler(MailboxSessionMapperFactory mailboxSessionMapperFactory, ObjectMapperFactory objectMapperFactory) {
-        this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
+    private UploadHandler(AttachmentManager attachmentManager, ObjectMapperFactory objectMapperFactory) {
+        this.attachmentManager = attachmentManager;
         this.objectMapper = objectMapperFactory.forWriting();
     }
 
-    public void handle(String contentType, InputStream content, HttpServletResponse response) throws IOException, MailboxException {
-        UploadResponse storedContent = uploadContent(contentType, content);
+    public void handle(String contentType, InputStream content, MailboxSession mailboxSession, HttpServletResponse response) throws IOException, MailboxException {
+        UploadResponse storedContent = uploadContent(contentType, content, mailboxSession);
         buildResponse(response, storedContent);
     }
 
-    private UploadResponse uploadContent(String contentType, InputStream inputStream) throws IOException, MailboxException {
-        MailboxSession session = null;
-        AttachmentMapper attachmentMapper = mailboxSessionMapperFactory.createAttachmentMapper(session);
+    private UploadResponse uploadContent(String contentType, InputStream inputStream, MailboxSession session) throws IOException, MailboxException {
         Attachment attachment = Attachment.builder()
                 .bytes(ByteStreams.toByteArray(inputStream))
                 .type(contentType)
                 .build();
-        attachmentMapper.storeAttachment(attachment);
+        attachmentManager.storeAttachment(attachment, session);
         return UploadResponse.builder()
                 .blobId(attachment.getAttachmentId().getId())
                 .type(attachment.getType())

http://git-wip-us.apache.org/repos/asf/james-project/blob/49b3ba33/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadServlet.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadServlet.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadServlet.java
index a0635a3..873bf5e 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadServlet.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UploadServlet.java
@@ -29,6 +29,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,11 +53,16 @@ public class UploadServlet extends HttpServlet {
             resp.setStatus(SC_BAD_REQUEST);
         } else {
             try {
-                uploadHandler.handle(contentType, req.getInputStream(), resp);
+                uploadHandler.handle(contentType, req.getInputStream(), getMailboxSession(req), resp);
             } catch (IOException | MailboxException e) {
                 LOGGER.error("Error while uploading content", e);
                 resp.setStatus(SC_INTERNAL_SERVER_ERROR);
             }
         }
     }
+
+    private MailboxSession getMailboxSession(HttpServletRequest req) {
+        return (MailboxSession) req.getAttribute(AuthenticationFilter.MAILBOX_SESSION);
+    }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org