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

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

commit 7257bc83bb487a22f96449fa48ae7696d83bf322
Author: Rene Cordier <rcord...@linagora.com>
AuthorDate: Wed Jun 26 15:55:31 2019 +0700

    JAMES-2806 add deleteBucket method in BlobStore
---
 .../src/main/java/org/apache/james/blob/api/BlobStore.java     |  2 ++
 .../java/org/apache/james/blob/api/MetricableBlobStore.java    |  5 +++++
 .../org/apache/james/blob/cassandra/CassandraBlobsDAO.java     |  6 ++++++
 .../java/org/apache/james/blob/memory/MemoryBlobStore.java     |  6 ++++++
 .../apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java |  6 ++++++
 .../main/java/org/apache/james/blob/union/UnionBlobStore.java  |  7 +++++++
 .../java/org/apache/james/blob/union/UnionBlobStoreTest.java   | 10 ++++++++++
 7 files changed, 42 insertions(+)

diff --git 
a/server/blob/blob-api/src/main/java/org/apache/james/blob/api/BlobStore.java 
b/server/blob/blob-api/src/main/java/org/apache/james/blob/api/BlobStore.java
index ed7f6f7..3302203 100644
--- 
a/server/blob/blob-api/src/main/java/org/apache/james/blob/api/BlobStore.java
+++ 
b/server/blob/blob-api/src/main/java/org/apache/james/blob/api/BlobStore.java
@@ -36,4 +36,6 @@ public interface BlobStore {
     default Mono<BlobId> save(BucketName bucketName, String data) {
         return save(bucketName, data.getBytes(StandardCharsets.UTF_8));
     }
+
+    Mono<Void> deleteBucket(BucketName bucketName);
 }
diff --git 
a/server/blob/blob-api/src/main/java/org/apache/james/blob/api/MetricableBlobStore.java
 
b/server/blob/blob-api/src/main/java/org/apache/james/blob/api/MetricableBlobStore.java
index 3976bcd..89548d8 100644
--- 
a/server/blob/blob-api/src/main/java/org/apache/james/blob/api/MetricableBlobStore.java
+++ 
b/server/blob/blob-api/src/main/java/org/apache/james/blob/api/MetricableBlobStore.java
@@ -70,4 +70,9 @@ public class MetricableBlobStore implements BlobStore {
         return metricFactory
             .runPublishingTimerMetric(READ_TIMER_NAME, () -> 
blobStoreImpl.read(bucketName, blobId));
     }
+
+    @Override
+    public Mono<Void> deleteBucket(BucketName bucketName) {
+        return blobStoreImpl.deleteBucket(bucketName);
+    }
 }
diff --git 
a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobsDAO.java
 
b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobsDAO.java
index 23be4e5..38edc21 100644
--- 
a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobsDAO.java
+++ 
b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobsDAO.java
@@ -34,6 +34,7 @@ import java.util.stream.Stream;
 import javax.inject.Inject;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.commons.lang3.tuple.Pair;
 import 
org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
@@ -218,4 +219,9 @@ public class CassandraBlobsDAO implements BlobStore {
         return Mono.fromCallable(() -> IOUtils.toByteArray(data))
             .flatMap(this::saveAsMono);
     }
+
+    @Override
+    public Mono<Void> deleteBucket(BucketName bucketName) {
+        throw new NotImplementedException("not implemented");
+    }
 }
diff --git 
a/server/blob/blob-memory/src/main/java/org/apache/james/blob/memory/MemoryBlobStore.java
 
b/server/blob/blob-memory/src/main/java/org/apache/james/blob/memory/MemoryBlobStore.java
index 173ce78..154a9b5 100644
--- 
a/server/blob/blob-memory/src/main/java/org/apache/james/blob/memory/MemoryBlobStore.java
+++ 
b/server/blob/blob-memory/src/main/java/org/apache/james/blob/memory/MemoryBlobStore.java
@@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import javax.inject.Inject;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.BucketName;
@@ -78,6 +79,11 @@ public class MemoryBlobStore implements BlobStore {
         return new ByteArrayInputStream(retrieveStoredValue(blobId));
     }
 
+    @Override
+    public Mono<Void> deleteBucket(BucketName bucketName) {
+        throw new NotImplementedException("not implemented");
+    }
+
     private byte[] retrieveStoredValue(BlobId blobId) {
         return Optional.ofNullable(blobs.get(blobId))
             .orElseThrow(() -> new ObjectStoreException("unable to find blob 
with id " + blobId));
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 7bbd2da..48840f8 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
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import java.util.Optional;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.BucketName;
@@ -148,6 +149,11 @@ public class ObjectStorageBlobsDAO implements BlobStore {
 
     }
 
+    @Override
+    public Mono<Void> deleteBucket(BucketName bucketName) {
+        throw new NotImplementedException("not implemented");
+    }
+
     public void deleteContainer() {
         blobStore.deleteContainer(containerName.value());
     }
diff --git 
a/server/blob/blob-union/src/main/java/org/apache/james/blob/union/UnionBlobStore.java
 
b/server/blob/blob-union/src/main/java/org/apache/james/blob/union/UnionBlobStore.java
index 3f14fd0..444c185 100644
--- 
a/server/blob/blob-union/src/main/java/org/apache/james/blob/union/UnionBlobStore.java
+++ 
b/server/blob/blob-union/src/main/java/org/apache/james/blob/union/UnionBlobStore.java
@@ -137,6 +137,13 @@ public class UnionBlobStore implements BlobStore {
         }
     }
 
+    @Override
+    public Mono<Void> deleteBucket(BucketName bucketName) {
+        return Mono.defer(() -> currentBlobStore.deleteBucket(bucketName))
+            .and(legacyBlobStore.deleteBucket(bucketName))
+            .onErrorResume(this::logAndReturnEmpty);
+    }
+
     private InputStream readFallBackIfEmptyResult(BucketName bucketName, 
BlobId blobId) {
         return Optional.ofNullable(currentBlobStore.read(bucketName, blobId))
             .map(PushbackInputStream::new)
diff --git 
a/server/blob/blob-union/src/test/java/org/apache/james/blob/union/UnionBlobStoreTest.java
 
b/server/blob/blob-union/src/test/java/org/apache/james/blob/union/UnionBlobStoreTest.java
index cba98da..a44fd0d 100644
--- 
a/server/blob/blob-union/src/test/java/org/apache/james/blob/union/UnionBlobStoreTest.java
+++ 
b/server/blob/blob-union/src/test/java/org/apache/james/blob/union/UnionBlobStoreTest.java
@@ -82,6 +82,11 @@ class UnionBlobStoreTest implements BlobStoreContract {
         }
 
         @Override
+        public Mono<Void> deleteBucket(BucketName bucketName) {
+            return Mono.error(new RuntimeException("broken everywhere"));
+        }
+
+        @Override
         public String toString() {
             return MoreObjects.toStringHelper(this)
                 .toString();
@@ -116,6 +121,11 @@ class UnionBlobStoreTest implements BlobStoreContract {
         }
 
         @Override
+        public Mono<Void> deleteBucket(BucketName bucketName) {
+            return Mono.error(new RuntimeException("broken everywhere"));
+        }
+
+        @Override
         public String toString() {
             return MoreObjects.toStringHelper(this)
                 .toString();


---------------------------------------------------------------------
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