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 bt...@apache.org on 2019/07/11 07:25:41 UTC

[james-project] 03/09: JAMES-2808 Change the builder of StorageInformation to a staged builder

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

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

commit a94aadc0a5d9baa005a354d7c212fd0818aa361d
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Jul 9 14:10:18 2019 +0700

    JAMES-2808 Change the builder of StorageInformation to a staged builder
---
 .../vault/blob/BlobStoreDeletedMessageVault.java   |  4 ++-
 ...etedMessageWithStorageInformationConverter.java |  3 +-
 .../james/vault/metadata/StorageInformation.java   | 34 ++++++----------------
 .../DeletedMessageMetadataVaultContract.java       |  5 +++-
 .../DeletedMessageVaultMetadataFixture.java        |  4 ++-
 .../vault/metadata/StorageInformationTest.java     |  8 +++--
 6 files changed, 26 insertions(+), 32 deletions(-)

diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java
index ed56d3a..ae0e355 100644
--- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java
+++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java
@@ -58,7 +58,9 @@ public class BlobStoreDeletedMessageVault implements DeletedMessageVault {
         Preconditions.checkNotNull(mimeMessage);
         BucketName bucketName = nameGenerator.currentBucket();
         return blobStore.save(bucketName, mimeMessage)
-            .map(blobId -> new StorageInformation(bucketName, blobId))
+            .map(blobId -> StorageInformation.builder()
+                .bucketName(bucketName)
+                .blobId(blobId))
             .map(storageInformation -> new DeletedMessageWithStorageInformation(deletedMessage, storageInformation))
             .flatMap(message -> Mono.from(messageMetadataVault.store(message)))
             .then();
diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/dto/DeletedMessageWithStorageInformationConverter.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/dto/DeletedMessageWithStorageInformationConverter.java
index c8edb91..2d22960 100644
--- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/dto/DeletedMessageWithStorageInformationConverter.java
+++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/dto/DeletedMessageWithStorageInformationConverter.java
@@ -57,8 +57,7 @@ public class DeletedMessageWithStorageInformationConverter {
     public StorageInformation toDomainObject(DeletedMessageWithStorageInformationDTO.StorageInformationDTO storageInformationDTO) {
         return StorageInformation.builder()
             .bucketName(BucketName.of(storageInformationDTO.getBucketName()))
-            .blobId(blobFactory.from(storageInformationDTO.getBlobId()))
-            .build();
+            .blobId(blobFactory.from(storageInformationDTO.getBlobId()));
     }
 
     public DeletedMessage toDomainObject(DeletedMessageWithStorageInformationDTO.DeletedMessageDTO deletedMessageDTO) throws AddressException {
diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/metadata/StorageInformation.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/metadata/StorageInformation.java
index 9d0b4c0..fa32676 100644
--- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/metadata/StorageInformation.java
+++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/metadata/StorageInformation.java
@@ -20,7 +20,6 @@
 package org.apache.james.vault.metadata;
 
 import java.util.Objects;
-import java.util.Optional;
 
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BucketName;
@@ -30,40 +29,25 @@ import com.google.common.base.Preconditions;
 public class StorageInformation {
 
     public static class Builder {
-        private Optional<BucketName> bucketName;
-        private Optional<BlobId> blobId;
-
-        private Builder() {
-            this.bucketName = Optional.empty();
-            this.blobId = Optional.empty();
-        }
-
-        public Builder bucketName(BucketName bucketName) {
-            this.bucketName = Optional.of(bucketName);
-            return this;
+        @FunctionalInterface
+        public interface RequireBucketName {
+            RequireBlobId bucketName(BucketName bucketName);
         }
 
-        public Builder blobId(BlobId blobId) {
-            this.blobId = Optional.of(blobId);
-            return this;
-        }
-
-        public StorageInformation build() {
-            Preconditions.checkState(bucketName.isPresent(), "`bucketName` is mandatory");
-            Preconditions.checkState(blobId.isPresent(), "`blobId` is mandatory");
-
-            return new StorageInformation(bucketName.get(), blobId.get());
+        @FunctionalInterface
+        public interface RequireBlobId {
+            StorageInformation blobId(BlobId blobId);
         }
     }
 
-    public static Builder builder() {
-        return new Builder();
+    public static Builder.RequireBucketName builder() {
+        return bucketName -> blobId -> new StorageInformation(bucketName, blobId);
     }
 
     private final BucketName bucketName;
     private final BlobId blobId;
 
-    public StorageInformation(BucketName bucketName, BlobId blobId) {
+    private StorageInformation(BucketName bucketName, BlobId blobId) {
         Preconditions.checkNotNull(bucketName);
         Preconditions.checkNotNull(blobId);
 
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageMetadataVaultContract.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageMetadataVaultContract.java
index 0052f0e..6a72445 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageMetadataVaultContract.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageMetadataVaultContract.java
@@ -40,8 +40,11 @@ public interface DeletedMessageMetadataVaultContract {
     DeletedMessageWithStorageInformation DELETED_MESSAGE = new DeletedMessageWithStorageInformation(DeletedMessageFixture.DELETED_MESSAGE, STORAGE_INFORMATION);
     DeletedMessageWithStorageInformation DELETED_MESSAGE_2 = new DeletedMessageWithStorageInformation(DeletedMessageFixture.DELETED_MESSAGE_2, STORAGE_INFORMATION);
     BucketName OTHER_BUCKET_NAME = BucketName.of("other");
+    StorageInformation OTHER_STORAGE_INFORMATION = StorageInformation.builder()
+        .bucketName(OTHER_BUCKET_NAME)
+        .blobId(BLOB_ID_2);
     DeletedMessageWithStorageInformation DELETED_MESSAGE_2_OTHER_BUCKET = new DeletedMessageWithStorageInformation(DeletedMessageFixture.DELETED_MESSAGE_2,
-        new StorageInformation(OTHER_BUCKET_NAME, BLOB_ID_2));
+        OTHER_STORAGE_INFORMATION);
 
     DeletedMessageMetadataVault metadataVault();
 
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageVaultMetadataFixture.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageVaultMetadataFixture.java
index 684f929..465ce39 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageVaultMetadataFixture.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/DeletedMessageVaultMetadataFixture.java
@@ -27,5 +27,7 @@ public interface DeletedMessageVaultMetadataFixture {
     BlobId BLOB_ID = new HashBlobId.Factory().from("05dcb33b-8382-4744-923a-bc593ad84d23");
     BlobId BLOB_ID_2 = new HashBlobId.Factory().from("05dcb33b-8382-4744-923a-bc593ad84d24");
     BucketName BUCKET_NAME = BucketName.of("bucket-2019-06-01");
-    StorageInformation STORAGE_INFORMATION = new StorageInformation(BUCKET_NAME, BLOB_ID);
+    StorageInformation STORAGE_INFORMATION = StorageInformation.builder()
+        .bucketName(BUCKET_NAME)
+        .blobId(BLOB_ID);
 }
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/StorageInformationTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/StorageInformationTest.java
index 6642ab8..0ddebe2 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/StorageInformationTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/metadata/StorageInformationTest.java
@@ -35,13 +35,17 @@ class StorageInformationTest {
 
     @Test
     void constructorShouldThrowOnNullBucketName() {
-        assertThatThrownBy(() -> new StorageInformation(null, BLOB_ID))
+        assertThatThrownBy(() -> StorageInformation.builder()
+                .bucketName(null)
+                .blobId(BLOB_ID))
             .isInstanceOf(NullPointerException.class);
     }
 
     @Test
     void constructorShouldThrowOnNullBlobId() {
-        assertThatThrownBy(() -> new StorageInformation(BUCKET_NAME, null))
+        assertThatThrownBy(() -> StorageInformation.builder()
+                .bucketName(BUCKET_NAME)
+                .blobId(null))
             .isInstanceOf(NullPointerException.class);
     }
 }
\ No newline at end of file


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