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 <raphael.ouaz...@linagora.com> Authored: Thu Aug 18 15:49:47 2016 +0200 Committer: Raphael Ouazana <raphael.ouaz...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org