This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit f353c08c109b417216f2289cadbe645f273f2a24
Author: Benoit Tellier <[email protected]>
AuthorDate: Wed Aug 4 17:14:29 2021 +0700

    JAMES-3544 Upload should provide a supplier of content
---
 .../src/main/java/org/apache/james/jmap/api/model/Upload.scala    | 8 ++++----
 .../apache/james/jmap/memory/upload/InMemoryUploadRepository.java | 2 +-
 .../apache/james/jmap/api/upload/UploadRepositoryContract.scala   | 6 +++++-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Upload.scala
 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Upload.scala
index 73e8578..7bb8e5e 100644
--- 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Upload.scala
+++ 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Upload.scala
@@ -19,15 +19,15 @@
 
 package org.apache.james.jmap.api.model
 
+import java.io.InputStream
+
 import org.apache.james.blob.api.BlobId
 import org.apache.james.jmap.api.model.Size.Size
 import org.apache.james.mailbox.model.ContentType
 
-import java.io.InputStream
-
 object Upload {
 
-  def from(metaData: UploadMetaData, content: InputStream): Upload =
+  def from(metaData: UploadMetaData, content: () => InputStream): Upload =
     Upload(uploadId = metaData.uploadId,
       size = metaData.size,
       contentType = metaData.contentType,
@@ -37,7 +37,7 @@ object Upload {
 case class Upload(uploadId: UploadId,
                   size: Size,
                   contentType: ContentType,
-                  content: InputStream)
+                  content: () => InputStream)
 
 case class UploadNotFoundException(uploadId: UploadId) extends 
RuntimeException(s"Upload not found $uploadId")
 
diff --git 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/upload/InMemoryUploadRepository.java
 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/upload/InMemoryUploadRepository.java
index 256409a..b8e3b5d 100644
--- 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/upload/InMemoryUploadRepository.java
+++ 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/upload/InMemoryUploadRepository.java
@@ -86,7 +86,7 @@ public class InMemoryUploadRepository implements 
UploadRepository {
 
     private Mono<Upload> retrieveUpload(UploadMetaData uploadMetaData) {
         return Mono.from(blobStore.readBytes(bucketName, 
uploadMetaData.blobId()))
-            .map(content -> Upload.from(uploadMetaData, new 
ByteArrayInputStream(content)));
+            .map(content -> Upload.from(uploadMetaData, () -> new 
ByteArrayInputStream(content)));
     }
 
     private byte[] toByteArray(InputStream inputStream) {
diff --git 
a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/upload/UploadRepositoryContract.scala
 
b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/upload/UploadRepositoryContract.scala
index 3a485eb..6757f90 100644
--- 
a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/upload/UploadRepositoryContract.scala
+++ 
b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/upload/UploadRepositoryContract.scala
@@ -19,6 +19,10 @@
 
  package org.apache.james.jmap.api.upload
 
+ import java.io.InputStream
+ import java.nio.charset.StandardCharsets
+ import java.util.UUID
+
  import org.apache.commons.io.IOUtils
  import org.apache.james.core.Username
  import org.apache.james.jmap.api.model.Size.sanitizeSize
@@ -77,7 +81,7 @@
        .isEqualTo(CONTENT_TYPE)
      assertThat(actualUpload.size)
        .isEqualTo(sanitizeSize(DATA_STRING.length))
-     assertThat(actualUpload.content.readAllBytes())
+     assertThat(actualUpload.content.apply().readAllBytes())
        .isEqualTo(DATA_STRING.getBytes)
    }
 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to