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

Reply via email to