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