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:46 UTC

[james-project] 08/09: JAMES-2806 read & deleteBucket need to resolve bucket names

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 a8eaf978531a14d94d0600d1cfbbc12cbdcadad8
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jul 10 14:39:55 2019 +0200

    JAMES-2806 read & deleteBucket need to resolve bucket names
    
    We need to test expected blob features on all configuration
---
 .../james/blob/objectstorage/ObjectStorageBlobsDAO.java     |  6 ++++--
 ...Test.java => ObjectStorageBlobsDAOAWSNamespaceTest.java} | 12 ++++++------
 ... => ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java} | 13 +++++++------
 ...AWSTest.java => ObjectStorageBlobsDAOAWSPrefixTest.java} | 13 ++++++-------
 .../blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java    |  3 ---
 5 files changed, 23 insertions(+), 24 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 46c080f..2e4b2ef 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
@@ -160,7 +160,8 @@ public class ObjectStorageBlobsDAO implements BlobStore {
 
     @Override
     public InputStream read(BucketName bucketName, BlobId blobId) throws ObjectStoreException {
-        Blob blob = blobStore.getBlob(bucketName.asString(), blobId.asString());
+        ObjectStorageBucketName resolvedBucketName = bucketNameResolver.resolve(bucketName);
+        Blob blob = blobStore.getBlob(resolvedBucketName.asString(), blobId.asString());
 
         try {
             if (blob != null) {
@@ -182,7 +183,8 @@ public class ObjectStorageBlobsDAO implements BlobStore {
 
     @Override
     public Mono<Void> deleteBucket(BucketName bucketName) {
-        return Mono.<Void>fromRunnable(() -> blobStore.deleteContainer(bucketName.asString()))
+        ObjectStorageBucketName resolvedBucketName = bucketNameResolver.resolve(bucketName);
+        return Mono.<Void>fromRunnable(() -> blobStore.deleteContainer(resolvedBucketName.asString()))
             .subscribeOn(Schedulers.elastic());
     }
 
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/ObjectStorageBlobsDAOAWSNamespaceTest.java
similarity index 92%
copy from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
copy to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSNamespaceTest.java
index 7ddc4af..8eab612 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/ObjectStorageBlobsDAOAWSNamespaceTest.java
@@ -35,18 +35,16 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
-
+public class ObjectStorageBlobsDAOAWSNamespaceTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
+    private BlobStore testee;
     private ObjectStorageBlobsDAO objectStorageBlobsDAO;
     private AwsS3ObjectStorage awsS3ObjectStorage;
-    private BlobStore testee;
 
     @BeforeEach
     void setUp(DockerAwsS3Container dockerAwsS3) {
         awsS3ObjectStorage = new AwsS3ObjectStorage();
-        BucketName defaultBucketName = BucketName.of("e7a929fe-2003-48d4-aaa9-a65d4954379d");
         AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder()
             .endpoint(dockerAwsS3.getEndpoint())
             .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID)
@@ -56,7 +54,7 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
         ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
-            .namespace(defaultBucketName)
+            .namespace(BucketName.of("namespace"))
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
         objectStorageBlobsDAO = builder.build();
@@ -77,6 +75,8 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
 
     @Override
     public BlobId.Factory blobIdFactory() {
-        return BLOB_ID_FACTORY;
+        return new HashBlobId.Factory();
     }
+
 }
+
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/ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java
similarity index 92%
copy from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
copy to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java
index 7ddc4af..dae3ff8 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/ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java
@@ -35,18 +35,16 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
-
+public class ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
+    private BlobStore testee;
     private ObjectStorageBlobsDAO objectStorageBlobsDAO;
     private AwsS3ObjectStorage awsS3ObjectStorage;
-    private BlobStore testee;
 
     @BeforeEach
     void setUp(DockerAwsS3Container dockerAwsS3) {
         awsS3ObjectStorage = new AwsS3ObjectStorage();
-        BucketName defaultBucketName = BucketName.of("e7a929fe-2003-48d4-aaa9-a65d4954379d");
         AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder()
             .endpoint(dockerAwsS3.getEndpoint())
             .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID)
@@ -56,7 +54,8 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
         ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
-            .namespace(defaultBucketName)
+            .bucketPrefix("prefix")
+            .namespace(BucketName.of("namespace"))
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
         objectStorageBlobsDAO = builder.build();
@@ -77,6 +76,8 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
 
     @Override
     public BlobId.Factory blobIdFactory() {
-        return BLOB_ID_FACTORY;
+        return new HashBlobId.Factory();
     }
+
 }
+
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/ObjectStorageBlobsDAOAWSPrefixTest.java
similarity index 91%
copy from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
copy to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixTest.java
index 7ddc4af..e9cd435 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/ObjectStorageBlobsDAOAWSPrefixTest.java
@@ -22,7 +22,6 @@ package org.apache.james.blob.objectstorage;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.BucketBlobStoreContract;
-import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.api.MetricableBlobStore;
 import org.apache.james.blob.api.MetricableBlobStoreContract;
@@ -35,18 +34,16 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
-
+public class ObjectStorageBlobsDAOAWSPrefixTest implements MetricableBlobStoreContract, BucketBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
+    private BlobStore testee;
     private ObjectStorageBlobsDAO objectStorageBlobsDAO;
     private AwsS3ObjectStorage awsS3ObjectStorage;
-    private BlobStore testee;
 
     @BeforeEach
     void setUp(DockerAwsS3Container dockerAwsS3) {
         awsS3ObjectStorage = new AwsS3ObjectStorage();
-        BucketName defaultBucketName = BucketName.of("e7a929fe-2003-48d4-aaa9-a65d4954379d");
         AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder()
             .endpoint(dockerAwsS3.getEndpoint())
             .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID)
@@ -56,7 +53,7 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
         ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
-            .namespace(defaultBucketName)
+            .bucketPrefix("prefix")
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
         objectStorageBlobsDAO = builder.build();
@@ -77,6 +74,8 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
 
     @Override
     public BlobId.Factory blobIdFactory() {
-        return BLOB_ID_FACTORY;
+        return new HashBlobId.Factory();
     }
+
 }
+
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 7ddc4af..6fd6a6f 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
@@ -22,7 +22,6 @@ package org.apache.james.blob.objectstorage;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.BucketBlobStoreContract;
-import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.api.MetricableBlobStore;
 import org.apache.james.blob.api.MetricableBlobStoreContract;
@@ -46,7 +45,6 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
     @BeforeEach
     void setUp(DockerAwsS3Container dockerAwsS3) {
         awsS3ObjectStorage = new AwsS3ObjectStorage();
-        BucketName defaultBucketName = BucketName.of("e7a929fe-2003-48d4-aaa9-a65d4954379d");
         AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder()
             .endpoint(dockerAwsS3.getEndpoint())
             .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID)
@@ -56,7 +54,6 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
         ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
-            .namespace(defaultBucketName)
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
         objectStorageBlobsDAO = builder.build();


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