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 cc18f9366acae1280f9cbf614555679367cdfa48 Author: Tran Tien Duc <dt...@linagora.com> AuthorDate: Mon Jul 8 10:09:17 2019 +0700 JAMES-2806 Make defaultBucketName become optional in the Builder And rename it to namespace to be more clear --- .../blob/objectstorage/ObjectStorageBlobsDAO.java | 8 +++---- .../ObjectStorageBlobsDAOBuilder.java | 28 ++++++++++++---------- .../blob/objectstorage/aws/AwsS3ObjectStorage.java | 2 +- .../swift/SwiftKeystone2ObjectStorage.java | 2 +- .../swift/SwiftKeystone3ObjectStorage.java | 2 +- .../swift/SwiftTempAuthObjectStorage.java | 2 +- .../blob/objectstorage/DockerAwsS3Singleton.java | 2 +- .../blob/objectstorage/DockerSwiftSingleton.java | 2 +- .../ObjectStorageBlobsDAOAWSTest.java | 2 +- .../objectstorage/ObjectStorageBlobsDAOTest.java | 8 +++---- .../aws/AwsS3ObjectStorageBlobsDAOBuilderTest.java | 16 +++---------- ...tKeystone2ObjectStorageBlobsDAOBuilderTest.java | 18 ++++---------- ...tKeystone3ObjectStorageBlobsDAOBuilderTest.java | 18 ++++---------- ...ftTempAuthObjectStorageBlobsDAOBuilderTest.java | 18 ++++---------- .../ObjectStorageBlobConfiguration.java | 7 +++--- .../ObjectStorageDependenciesModule.java | 4 ++-- .../objectstorage/swift/SwiftObjectStorage.java | 8 +++---- .../ObjectStorageBlobConfigurationTest.java | 6 ++--- 18 files changed, 58 insertions(+), 95 deletions(-) diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java index 3a0bf83..a316ab3 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java @@ -70,19 +70,19 @@ public class ObjectStorageBlobsDAO implements BlobStore { this.payloadCodec = payloadCodec; } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(SwiftTempAuthObjectStorage.Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftTempAuthObjectStorage.Configuration testConfig) { return SwiftTempAuthObjectStorage.daoBuilder(testConfig); } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(SwiftKeystone2ObjectStorage.Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone2ObjectStorage.Configuration testConfig) { return SwiftKeystone2ObjectStorage.daoBuilder(testConfig); } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(SwiftKeystone3ObjectStorage.Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone3ObjectStorage.Configuration testConfig) { return SwiftKeystone3ObjectStorage.daoBuilder(testConfig); } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(AwsS3AuthConfiguration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(AwsS3AuthConfiguration testConfig) { return AwsS3ObjectStorage.daoBuilder(testConfig); } diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOBuilder.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOBuilder.java index 9122c29..b7cb344 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOBuilder.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOBuilder.java @@ -31,13 +31,8 @@ import com.google.common.base.Preconditions; public class ObjectStorageBlobsDAOBuilder { - public static RequireDefaultBucketName forBlobStore(Supplier<BlobStore> supplier) { - return bucketName -> blobIdFactory -> new ReadyToBuild(supplier, blobIdFactory, bucketName); - } - - @FunctionalInterface - public interface RequireDefaultBucketName { - RequireBlobIdFactory defaultBucketName(BucketName bucketName); + public static RequireBlobIdFactory forBlobStore(Supplier<BlobStore> supplier) { + return blobIdFactory -> new ReadyToBuild(supplier, blobIdFactory); } @FunctionalInterface @@ -48,17 +43,17 @@ public class ObjectStorageBlobsDAOBuilder { public static class ReadyToBuild { private final Supplier<BlobStore> supplier; - private final BucketName defaultBucketName; private final BlobId.Factory blobIdFactory; private Optional<PayloadCodec> payloadCodec; private Optional<BlobPutter> blobPutter; + private Optional<BucketName> namespace; - public ReadyToBuild(Supplier<BlobStore> supplier, BlobId.Factory blobIdFactory, BucketName defaultBucketName) { + public ReadyToBuild(Supplier<BlobStore> supplier, BlobId.Factory blobIdFactory) { this.blobIdFactory = blobIdFactory; - this.defaultBucketName = defaultBucketName; this.payloadCodec = Optional.empty(); this.supplier = supplier; this.blobPutter = Optional.empty(); + this.namespace = Optional.empty(); } public ReadyToBuild payloadCodec(PayloadCodec payloadCodec) { @@ -76,13 +71,22 @@ public class ObjectStorageBlobsDAOBuilder { return this; } + public ReadyToBuild namespace(Optional<BucketName> namespace) { + this.namespace = namespace; + return this; + } + + public ReadyToBuild namespace(BucketName namespace) { + this.namespace = Optional.ofNullable(namespace); + return this; + } + public ObjectStorageBlobsDAO build() { - Preconditions.checkState(defaultBucketName != null); Preconditions.checkState(blobIdFactory != null); BlobStore blobStore = supplier.get(); - return new ObjectStorageBlobsDAO(defaultBucketName, + return new ObjectStorageBlobsDAO(namespace.orElse(BucketName.DEFAULT), blobIdFactory, blobStore, blobPutter.orElseGet(() -> defaultPutBlob(blobStore)), diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorage.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorage.java index 4884dd5..517bb19 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorage.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorage.java @@ -97,7 +97,7 @@ public class AwsS3ObjectStorage { executorService.shutdownNow(); } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName daoBuilder(AwsS3AuthConfiguration configuration) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(AwsS3AuthConfiguration configuration) { return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(configuration)); } diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorage.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorage.java index 1b46c3a..e988dcb 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorage.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorage.java @@ -43,7 +43,7 @@ public class SwiftKeystone2ObjectStorage { private static final Iterable<Module> JCLOUDS_MODULES = ImmutableSet.of(new SLF4JLoggingModule()); - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName daoBuilder(Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(Configuration testConfig) { return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(testConfig)); } diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java index 5ca8cf3..b8831ff 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java @@ -45,7 +45,7 @@ public class SwiftKeystone3ObjectStorage { private static final Iterable<Module> JCLOUDS_MODULES = ImmutableSet.of(new SLF4JLoggingModule()); - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName daoBuilder(Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(Configuration testConfig) { return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(testConfig)); } diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorage.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorage.java index 9481337..9a2709c 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorage.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorage.java @@ -44,7 +44,7 @@ public class SwiftTempAuthObjectStorage { private static final Iterable<Module> JCLOUDS_MODULES = ImmutableSet.of(new SLF4JLoggingModule()); - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName daoBuilder(Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(Configuration testConfig) { return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(testConfig)); } diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerAwsS3Singleton.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerAwsS3Singleton.java index c5aeb79..c598b73 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerAwsS3Singleton.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerAwsS3Singleton.java @@ -29,6 +29,6 @@ public class DockerAwsS3Singleton { singleton.start(); } - // Cleanup will be performed by test defaultBucketName resource reaper + // Cleanup will be performed by test namespace resource reaper } diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftSingleton.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftSingleton.java index 2c34972..0f04ee3 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftSingleton.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftSingleton.java @@ -27,5 +27,5 @@ public class DockerSwiftSingleton { singleton.start(); } - // Cleanup will be performed by test defaultBucketName resource reaper + // Cleanup will be performed by test namespace resource reaper } diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java index 209be69..120dce8 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java @@ -58,8 +58,8 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(configuration) - .defaultBucketName(defaultBucketName) .blobIdFactory(BLOB_ID_FACTORY) + .namespace(defaultBucketName) .blobPutter(awsS3ObjectStorage.putBlob(configuration)); blobStore = builder.getSupplier().get(); diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java index 18c6bf2..c4682e3 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java @@ -86,8 +86,8 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract, B BlobId.Factory blobIdFactory = blobIdFactory(); ObjectStorageBlobsDAOBuilder.ReadyToBuild daoBuilder = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) - .blobIdFactory(blobIdFactory); + .blobIdFactory(blobIdFactory) + .namespace(defaultBucketName); blobStore = daoBuilder.getSupplier().get(); objectStorageBlobsDAO = daoBuilder.build(); testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO); @@ -114,9 +114,9 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract, B void supportsEncryptionWithCustomPayloadCodec() throws IOException { ObjectStorageBlobsDAO encryptedDao = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) .blobIdFactory(blobIdFactory()) .payloadCodec(new AESPayloadCodec(CRYPTO_CONFIG)) + .namespace(defaultBucketName) .build(); String content = "James is the best!"; BlobId blobId = encryptedDao.save(encryptedDao.getDefaultBucketName(), content).block(); @@ -130,9 +130,9 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract, B void encryptionWithCustomPayloadCodeCannotBeReadFromUnencryptedDAO() throws Exception { ObjectStorageBlobsDAO encryptedDao = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) .blobIdFactory(blobIdFactory()) .payloadCodec(new AESPayloadCodec(CRYPTO_CONFIG)) + .namespace(defaultBucketName) .build(); String content = "James is the best!"; BlobId blobId = encryptedDao.save(encryptedDao.getDefaultBucketName(), content).block(); diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorageBlobsDAOBuilderTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorageBlobsDAOBuilderTest.java index a81e930..5c16ebb 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorageBlobsDAOBuilderTest.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorageBlobsDAOBuilderTest.java @@ -60,21 +60,11 @@ class AwsS3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOCont } @Test - void bucketNameIsMandatoryToBuildBlobsDAO() { - ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO - .builder(configuration) - .defaultBucketName(null) - .blobIdFactory(new HashBlobId.Factory()); - - assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); - } - - @Test void blobIdFactoryIsMandatoryToBuildBlobsDAO() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(configuration) - .defaultBucketName(defaultBucketName) - .blobIdFactory(null); + .blobIdFactory(null) + .namespace(defaultBucketName); assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); } @@ -83,8 +73,8 @@ class AwsS3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOCont void builtBlobsDAOCanStoreAndRetrieve() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(configuration) - .defaultBucketName(defaultBucketName) .blobIdFactory(new HashBlobId.Factory()) + .namespace(defaultBucketName) .blobPutter(awsS3ObjectStorage.putBlob(configuration)); assertBlobsDAOCanStoreAndRetrieve(builder); diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorageBlobsDAOBuilderTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorageBlobsDAOBuilderTest.java index 649bb91..39415dd 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorageBlobsDAOBuilderTest.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorageBlobsDAOBuilderTest.java @@ -62,21 +62,11 @@ class SwiftKeystone2ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo } @Test - void bucketNameIsMandatoryToBuildBlobsDAO() { - ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO - .builder(testConfig) - .defaultBucketName(null) - .blobIdFactory(new HashBlobId.Factory()); - - assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); - } - - @Test void blobIdFactoryIsMandatoryToBuildBlobsDAO() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) - .blobIdFactory(null); + .blobIdFactory(null) + .namespace(defaultBucketName); assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); } @@ -85,8 +75,8 @@ class SwiftKeystone2ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo void builtBlobsDAOCanStoreAndRetrieve() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) - .blobIdFactory(new HashBlobId.Factory()); + .blobIdFactory(new HashBlobId.Factory()) + .namespace(defaultBucketName); assertBlobsDAOCanStoreAndRetrieve(builder); } diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorageBlobsDAOBuilderTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorageBlobsDAOBuilderTest.java index dd5be4d..893cad1 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorageBlobsDAOBuilderTest.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorageBlobsDAOBuilderTest.java @@ -95,21 +95,11 @@ class SwiftKeystone3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo } @Test - void bucketNameIsMandatoryToBuildBlobsDAO() { - ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO - .builder(testConfig) - .defaultBucketName(null) - .blobIdFactory(new HashBlobId.Factory()); - - assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); - } - - @Test void blobIdFactoryIsMandatoryToBuildBlobsDAO() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) - .blobIdFactory(null); + .blobIdFactory(null) + .namespace(defaultBucketName); assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); } @@ -121,8 +111,8 @@ class SwiftKeystone3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo configBuilders.get(key).endpoint(dockerSwift.keystoneV3Endpoint()).build(); ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(config) - .defaultBucketName(defaultBucketName) - .blobIdFactory(new HashBlobId.Factory()); + .blobIdFactory(new HashBlobId.Factory()) + .namespace(defaultBucketName); assertBlobsDAOCanStoreAndRetrieve(builder); } diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorageBlobsDAOBuilderTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorageBlobsDAOBuilderTest.java index ba729a3..ec17bcc 100644 --- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorageBlobsDAOBuilderTest.java +++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorageBlobsDAOBuilderTest.java @@ -64,21 +64,11 @@ class SwiftTempAuthObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlob } @Test - void bucketNameIsMandatoryToBuildBlobsDAO() { - ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO - .builder(testConfig) - .defaultBucketName(null) - .blobIdFactory(new HashBlobId.Factory()); - - assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); - } - - @Test void blobIdFactoryIsMandatoryToBuildBlobsDAO() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) - .blobIdFactory(null); + .blobIdFactory(null) + .namespace(defaultBucketName); assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class); } @@ -87,8 +77,8 @@ class SwiftTempAuthObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlob void builtBlobsDAOCanStoreAndRetrieve() { ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO .builder(testConfig) - .defaultBucketName(defaultBucketName) - .blobIdFactory(new HashBlobId.Factory()); + .blobIdFactory(new HashBlobId.Factory()) + .namespace(defaultBucketName); assertBlobsDAOCanStoreAndRetrieve(builder); } diff --git a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java index cb1d694..58e082b 100644 --- a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java +++ b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java @@ -173,7 +173,6 @@ public class ObjectStorageBlobConfiguration { .orElseThrow(() -> new IllegalStateException("AES code requires an non-empty password parameter")); } - BucketName defaultBucketName = this.defaultBucketName.orElse(BucketName.DEFAULT); String bucketPrefix = this.bucketPrefix.orElse(DEFAULT_BUCKET_PREFIX); return new ObjectStorageBlobConfiguration(payloadCodecFactory, bucketPrefix, provider, defaultBucketName, specificAuthConfiguration, aesSalt, aesPassword); @@ -184,17 +183,17 @@ public class ObjectStorageBlobConfiguration { } private final PayloadCodecFactory payloadCodec; - private final BucketName namespace; private final String bucketPrefix; private final ObjectStorageProvider provider; private final SpecificAuthConfiguration specificAuthConfiguration; + private Optional<BucketName> namespace; private Optional<String> aesSalt; private Optional<char[]> aesPassword; @VisibleForTesting ObjectStorageBlobConfiguration(PayloadCodecFactory payloadCodec, String bucketPrefix, ObjectStorageProvider provider, - BucketName namespace, + Optional<BucketName> namespace, SpecificAuthConfiguration specificAuthConfiguration, Optional<String> aesSalt, Optional<char[]> aesPassword) { @@ -207,7 +206,7 @@ public class ObjectStorageBlobConfiguration { this.aesPassword = aesPassword; } - public BucketName getNamespace() { + public Optional<BucketName> getNamespace() { return namespace; } diff --git a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageDependenciesModule.java b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageDependenciesModule.java index 7d92bcd..23def65 100644 --- a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageDependenciesModule.java +++ b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageDependenciesModule.java @@ -66,15 +66,15 @@ public class ObjectStorageDependenciesModule extends AbstractModule { @Singleton private ObjectStorageBlobsDAO buildObjectStore(ObjectStorageBlobConfiguration configuration, BlobId.Factory blobIdFactory, Provider<AwsS3ObjectStorage> awsS3ObjectStorageProvider) throws InterruptedException, ExecutionException, TimeoutException { ObjectStorageBlobsDAO dao = selectDaoBuilder(configuration) - .defaultBucketName(configuration.getNamespace()) .blobIdFactory(blobIdFactory) .payloadCodec(configuration.getPayloadCodec()) .blobPutter(putBlob(blobIdFactory, configuration, awsS3ObjectStorageProvider)) + .namespace(configuration.getNamespace()) .build(); return dao; } - private ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName selectDaoBuilder(ObjectStorageBlobConfiguration configuration) { + private ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory selectDaoBuilder(ObjectStorageBlobConfiguration configuration) { switch (configuration.getProvider()) { case SWIFT: return SwiftObjectStorage.builder(configuration); diff --git a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftObjectStorage.java b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftObjectStorage.java index 795d66f..409307d 100644 --- a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftObjectStorage.java +++ b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftObjectStorage.java @@ -29,7 +29,7 @@ import org.apache.james.modules.objectstorage.ObjectStorageProvider; public class SwiftObjectStorage { - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(ObjectStorageBlobConfiguration configuration) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(ObjectStorageBlobConfiguration configuration) { if (configuration.getProvider() != ObjectStorageProvider.SWIFT) { throw new IllegalArgumentException("unknown provider " + configuration.getProvider()); } @@ -52,15 +52,15 @@ public class SwiftObjectStorage { } } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(SwiftTempAuthObjectStorage.Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftTempAuthObjectStorage.Configuration testConfig) { return SwiftTempAuthObjectStorage.daoBuilder(testConfig); } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(SwiftKeystone2ObjectStorage.Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone2ObjectStorage.Configuration testConfig) { return SwiftKeystone2ObjectStorage.daoBuilder(testConfig); } - public static ObjectStorageBlobsDAOBuilder.RequireDefaultBucketName builder(SwiftKeystone3ObjectStorage.Configuration testConfig) { + public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone3ObjectStorage.Configuration testConfig) { return SwiftKeystone3ObjectStorage.daoBuilder(testConfig); } } diff --git a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfigurationTest.java b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfigurationTest.java index 6bc03b2..a6c1458 100644 --- a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfigurationTest.java +++ b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfigurationTest.java @@ -167,18 +167,18 @@ class ObjectStorageBlobConfigurationTest { .build()); assertThat(ObjectStorageBlobConfiguration.from(configuration).getNamespace()) - .isEqualTo(BucketName.of(bucketNameAsString)); + .contains(BucketName.of(bucketNameAsString)); } @Test - void fromShouldUseTheDefaultValueWhenDontSpecifyNameSpace() throws Exception { + void fromShouldNotContainsNamespaceWhenDontSpecify() throws Exception { MapConfiguration configuration = new MapConfiguration( ImmutableMap.<String, Object>builder() .putAll(VALID_CONFIGURATION) .build()); assertThat(ObjectStorageBlobConfiguration.from(configuration).getNamespace()) - .isEqualTo(BucketName.DEFAULT); + .isEmpty(); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org