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