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 rc...@apache.org on 2019/12/13 06:00:46 UTC

[james-project] branch master updated (42092d4 -> 9791db1)

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

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


    from 42092d4  JAMES-2992 Better name variable in MessageFastViewFactory
     new ec970b9  JAMES-2525 s/ObjectStorageBlobsDAO/ObjectStorageBlobStore
     new f8fdadf  JAMES-2272 Improve CassandraMigrationRoutes
     new c5440f5  JAMES-2272 CassandraMigrationRoutes should position Location header
     new 9791db1  JAMES-2266 CassandraMailboxMergingRoutes should rely on standard error management

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ...geBlobsDAO.java => ObjectStorageBlobStore.java} | 26 +++++++--------
 ...der.java => ObjectStorageBlobStoreBuilder.java} |  6 ++--
 .../blob/objectstorage/aws/AwsS3ObjectStorage.java |  6 ++--
 .../swift/SwiftKeystone2ObjectStorage.java         |  6 ++--
 .../swift/SwiftKeystone3ObjectStorage.java         |  6 ++--
 .../swift/SwiftTempAuthObjectStorage.java          |  6 ++--
 ...va => ObjectStorageBlobStoreAWSCryptoTest.java} | 14 ++++----
 ...=> ObjectStorageBlobStoreAWSNamespaceTest.java} | 14 ++++----
 ...StorageBlobStoreAWSPrefixAndNamespaceTest.java} | 14 ++++----
 ...va => ObjectStorageBlobStoreAWSPrefixTest.java} | 14 ++++----
 ...est.java => ObjectStorageBlobStoreAWSTest.java} | 14 ++++----
 ...ct.java => ObjectStorageBlobStoreContract.java} | 10 +++---
 ...AOTest.java => ObjectStorageBlobStoreTest.java} | 38 +++++++++++-----------
 ...=> AwsS3ObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 ...eystone2ObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 ...eystone3ObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 ...TempAuthObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 .../ObjectStorageBlobStoreModule.java              |  4 +--
 .../ObjectStorageDependenciesModule.java           | 16 ++++-----
 .../objectstorage/swift/SwiftObjectStorage.java    | 24 +++++++-------
 .../objectstorage/aws/s3/DockerAwsS3TestRule.java  |  6 ++--
 .../objectstorage/swift/DockerSwiftTestRule.java   |  6 ++--
 .../modules/blobstore/BlobStoreChoosingModule.java |  4 +--
 .../blobstore/BlobStoreChoosingModuleTest.java     |  6 ++--
 .../webadmin/dto/CassandraVersionRequest.java      |  6 +++-
 .../routes/CassandraMailboxMergingRoutes.java      | 36 +++++---------------
 .../webadmin/routes/CassandraMigrationRoutes.java  | 26 +++------------
 .../routes/CassandraMigrationRoutesTest.java       | 20 +++++++++---
 28 files changed, 189 insertions(+), 211 deletions(-)
 rename server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAO.java => ObjectStorageBlobStore.java} (87%)
 rename server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOBuilder.java => ObjectStorageBlobStoreBuilder.java} (96%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOAWSCryptoTest.java => ObjectStorageBlobStoreAWSCryptoTest.java} (90%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOAWSNamespaceTest.java => ObjectStorageBlobStoreAWSNamespaceTest.java} (88%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java => ObjectStorageBlobStoreAWSPrefixAndNamespaceTest.java} (88%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOAWSPrefixTest.java => ObjectStorageBlobStoreAWSPrefixTest.java} (88%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOAWSTest.java => ObjectStorageBlobStoreAWSTest.java} (88%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOContract.java => ObjectStorageBlobStoreContract.java} (80%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/{ObjectStorageBlobsDAOTest.java => ObjectStorageBlobStoreTest.java} (85%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/{AwsS3ObjectStorageBlobsDAOBuilderTest.java => AwsS3ObjectStorageBlobStoreBuilderTest.java} (79%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/{SwiftKeystone2ObjectStorageBlobsDAOBuilderTest.java => SwiftKeystone2ObjectStorageBlobStoreBuilderTest.java} (82%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/{SwiftKeystone3ObjectStorageBlobsDAOBuilderTest.java => SwiftKeystone3ObjectStorageBlobStoreBuilderTest.java} (88%)
 rename server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/{SwiftTempAuthObjectStorageBlobsDAOBuilderTest.java => SwiftTempAuthObjectStorageBlobStoreBuilderTest.java} (83%)


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


[james-project] 02/04: JAMES-2272 Improve CassandraMigrationRoutes

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f8fdadf58b3097357eaabbc3fb24c1f4c569bb8e
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 11 17:11:30 2019 +0700

    JAMES-2272 Improve CassandraMigrationRoutes
    
     - Rely on standard error handling
     - Improve error message upon version error parsing
     - Remove some never thrown exception
---
 .../webadmin/dto/CassandraVersionRequest.java      |  6 ++++-
 .../webadmin/routes/CassandraMigrationRoutes.java  | 26 ++++------------------
 .../routes/CassandraMigrationRoutesTest.java       |  8 +++----
 3 files changed, 13 insertions(+), 27 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java
index 7f9f307..dde07f7 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java
@@ -26,7 +26,11 @@ import com.google.common.base.Preconditions;
 public class CassandraVersionRequest {
     public static CassandraVersionRequest parse(String version) {
         Preconditions.checkNotNull(version, "Version is mandatory");
-        return new CassandraVersionRequest(Integer.parseInt(version));
+        try {
+            return new CassandraVersionRequest(Integer.parseInt(version));
+        } catch (NumberFormatException e) {
+            throw new IllegalArgumentException("Expecting version to be specified as an integer", e);
+        }
     }
 
     private final int value;
diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java
index 5effb68..8f77736 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java
@@ -141,28 +141,10 @@ public class CassandraMigrationRoutes implements Routes {
     })
     public Object upgradeToVersion(Request request, Response response) {
         LOGGER.debug("Cassandra upgrade launched");
-        try {
-            CassandraVersionRequest cassandraVersionRequest = CassandraVersionRequest.parse(request.body());
-            Task migration = cassandraMigrationService.upgradeToVersion(cassandraVersionRequest.getValue());
-            TaskId taskId = taskManager.submit(migration);
-            return TaskIdDto.from(taskId);
-        } catch (NullPointerException | IllegalArgumentException e) {
-            LOGGER.info(INVALID_VERSION_UPGRADE_REQUEST);
-            throw ErrorResponder.builder()
-                .statusCode(HttpStatus.BAD_REQUEST_400)
-                .type(ErrorType.INVALID_ARGUMENT)
-                .message(INVALID_VERSION_UPGRADE_REQUEST)
-                .cause(e)
-                .haltError();
-        } catch (IllegalStateException e) {
-            LOGGER.info(MIGRATION_REQUEST_CAN_NOT_BE_DONE, e);
-            throw ErrorResponder.builder()
-                .statusCode(HttpStatus.CONFLICT_409)
-                .type(ErrorType.WRONG_STATE)
-                .message(MIGRATION_REQUEST_CAN_NOT_BE_DONE)
-                .cause(e)
-                .haltError();
-        }
+        CassandraVersionRequest cassandraVersionRequest = CassandraVersionRequest.parse(request.body());
+        Task migration = cassandraMigrationService.upgradeToVersion(cassandraVersionRequest.getValue());
+        TaskId taskId = taskManager.submit(migration);
+        return TaskIdDto.from(taskId);
     }
 
     @GET
diff --git a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java
index e156375..3575722 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java
@@ -71,7 +71,7 @@ public class CassandraMigrationRoutesTest {
     private CassandraSchemaVersionDAO schemaVersionDAO;
     private MemoryTaskManager taskManager;
 
-    private void createServer() throws InterruptedException {
+    private void createServer() {
         Migration successfulMigration = () -> { };
 
         CassandraSchemaTransitions transitions = new CassandraSchemaTransitions(ImmutableMap.of(
@@ -96,7 +96,7 @@ public class CassandraMigrationRoutesTest {
     }
 
     @Before
-    public void setUp() throws InterruptedException {
+    public void setUp() {
         createServer();
     }
 
@@ -166,8 +166,8 @@ public class CassandraMigrationRoutesTest {
         assertThat(errors)
             .containsEntry("statusCode", HttpStatus.BAD_REQUEST_400)
             .containsEntry("type", "InvalidArgument")
-            .containsEntry("message", "Invalid request for version upgrade")
-            .containsEntry("details", "For input string: \"NonInt\"");
+            .containsEntry("message", "Invalid arguments supplied in the user request")
+            .containsEntry("details", "Expecting version to be specified as an integer");
 
         verifyNoMoreInteractions(schemaVersionDAO);
     }


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


[james-project] 04/04: JAMES-2266 CassandraMailboxMergingRoutes should rely on standard error management

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 9791db19d7ad7c2d1c6bb329460b77db6cee4546
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 11 17:54:54 2019 +0700

    JAMES-2266 CassandraMailboxMergingRoutes should rely on standard error management
---
 .../routes/CassandraMailboxMergingRoutes.java      | 36 ++++++----------------
 1 file changed, 9 insertions(+), 27 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMailboxMergingRoutes.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMailboxMergingRoutes.java
index e0019a6..4086076 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMailboxMergingRoutes.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMailboxMergingRoutes.java
@@ -33,8 +33,6 @@ import org.apache.james.task.TaskManager;
 import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.dto.MailboxMergingRequest;
 import org.apache.james.webadmin.dto.TaskIdDto;
-import org.apache.james.webadmin.utils.ErrorResponder;
-import org.apache.james.webadmin.utils.ErrorResponder.ErrorType;
 import org.apache.james.webadmin.utils.JsonExtractException;
 import org.apache.james.webadmin.utils.JsonExtractor;
 import org.apache.james.webadmin.utils.JsonTransformer;
@@ -108,31 +106,15 @@ public class CassandraMailboxMergingRoutes implements Routes {
             }),
             @ApiResponse(code = HttpStatus.BAD_REQUEST_400, message = "Error with supplied data (JSON parsing or invalid mailbox ids)")
         })
-    public Object mergeMailboxes(Request request, Response response) {
-        try {
-            LOGGER.debug("Cassandra upgrade launched");
-            MailboxMergingRequest mailboxMergingRequest = jsonExtractor.parse(request.body());
-            CassandraId originId = mailboxIdFactory.fromString(mailboxMergingRequest.getMergeOrigin());
-            CassandraId destinationId = mailboxIdFactory.fromString(mailboxMergingRequest.getMergeDestination());
+    public Object mergeMailboxes(Request request, Response response) throws JsonExtractException {
+        LOGGER.debug("Cassandra upgrade launched");
+        MailboxMergingRequest mailboxMergingRequest = jsonExtractor.parse(request.body());
+        CassandraId originId = mailboxIdFactory.fromString(mailboxMergingRequest.getMergeOrigin());
+        CassandraId destinationId = mailboxIdFactory.fromString(mailboxMergingRequest.getMergeDestination());
 
-            long totalMessagesToMove = counterDAO.countMessagesInMailbox(originId).defaultIfEmpty(0L).block();
-            MailboxMergingTask task = new MailboxMergingTask(mailboxMergingTaskRunner, totalMessagesToMove, originId, destinationId);
-            TaskId taskId = taskManager.submit(task);
-            return TaskIdDto.respond(response, taskId);
-        } catch (JsonExtractException e) {
-            throw ErrorResponder.builder()
-                .statusCode(HttpStatus.BAD_REQUEST_400)
-                .type(ErrorType.INVALID_ARGUMENT)
-                .cause(e)
-                .message("Failed to parse JSON request")
-                .haltError();
-        } catch (IllegalArgumentException e) {
-            throw ErrorResponder.builder()
-                .statusCode(HttpStatus.BAD_REQUEST_400)
-                .type(ErrorType.INVALID_ARGUMENT)
-                .cause(e)
-                .message("Invalid mailbox id")
-                .haltError();
-        }
+        long totalMessagesToMove = counterDAO.countMessagesInMailbox(originId).defaultIfEmpty(0L).block();
+        MailboxMergingTask task = new MailboxMergingTask(mailboxMergingTaskRunner, totalMessagesToMove, originId, destinationId);
+        TaskId taskId = taskManager.submit(task);
+        return TaskIdDto.respond(response, taskId);
     }
 }


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


[james-project] 03/04: JAMES-2272 CassandraMigrationRoutes should position Location header

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c5440f573ff3bea380988922c14311e98dd6f9bb
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 11 17:18:55 2019 +0700

    JAMES-2272 CassandraMigrationRoutes should position Location header
---
 .../james/webadmin/routes/CassandraMigrationRoutes.java      |  2 +-
 .../james/webadmin/routes/CassandraMigrationRoutesTest.java  | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java
index 8f77736..c690059 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java
@@ -144,7 +144,7 @@ public class CassandraMigrationRoutes implements Routes {
         CassandraVersionRequest cassandraVersionRequest = CassandraVersionRequest.parse(request.body());
         Task migration = cassandraMigrationService.upgradeToVersion(cassandraVersionRequest.getValue());
         TaskId taskId = taskManager.submit(migration);
-        return TaskIdDto.from(taskId);
+        return TaskIdDto.respond(response, taskId);
     }
 
     @GET
diff --git a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java
index 3575722..5d5d4e5 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java
@@ -233,6 +233,18 @@ public class CassandraMigrationRoutesTest {
     }
 
     @Test
+    public void postShouldPositionLocationHeader() {
+        when(schemaVersionDAO.getCurrentSchemaVersion()).thenReturn(Mono.just(Optional.of(CURRENT_VERSION)));
+
+        given()
+            .body(String.valueOf(OLDER_VERSION.getValue()))
+        .when()
+            .post("/upgrade")
+        .then()
+            .header("Location", notNullValue());
+    }
+
+    @Test
     public void postShouldDoMigrationToLatestVersion() {
         when(schemaVersionDAO.getCurrentSchemaVersion()).thenReturn(Mono.just(Optional.of(OLDER_VERSION)));
 


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


[james-project] 01/04: JAMES-2525 s/ObjectStorageBlobsDAO/ObjectStorageBlobStore

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ec970b97b7ae830c75d3725a2110d9922a706637
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Thu Dec 12 10:03:12 2019 +0700

    JAMES-2525 s/ObjectStorageBlobsDAO/ObjectStorageBlobStore
---
 ...geBlobsDAO.java => ObjectStorageBlobStore.java} | 26 +++++++--------
 ...der.java => ObjectStorageBlobStoreBuilder.java} |  6 ++--
 .../blob/objectstorage/aws/AwsS3ObjectStorage.java |  6 ++--
 .../swift/SwiftKeystone2ObjectStorage.java         |  6 ++--
 .../swift/SwiftKeystone3ObjectStorage.java         |  6 ++--
 .../swift/SwiftTempAuthObjectStorage.java          |  6 ++--
 ...va => ObjectStorageBlobStoreAWSCryptoTest.java} | 14 ++++----
 ...=> ObjectStorageBlobStoreAWSNamespaceTest.java} | 14 ++++----
 ...StorageBlobStoreAWSPrefixAndNamespaceTest.java} | 14 ++++----
 ...va => ObjectStorageBlobStoreAWSPrefixTest.java} | 14 ++++----
 ...est.java => ObjectStorageBlobStoreAWSTest.java} | 14 ++++----
 ...ct.java => ObjectStorageBlobStoreContract.java} | 10 +++---
 ...AOTest.java => ObjectStorageBlobStoreTest.java} | 38 +++++++++++-----------
 ...=> AwsS3ObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 ...eystone2ObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 ...eystone3ObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 ...TempAuthObjectStorageBlobStoreBuilderTest.java} | 18 +++++-----
 .../ObjectStorageBlobStoreModule.java              |  4 +--
 .../ObjectStorageDependenciesModule.java           | 16 ++++-----
 .../objectstorage/swift/SwiftObjectStorage.java    | 24 +++++++-------
 .../objectstorage/aws/s3/DockerAwsS3TestRule.java  |  6 ++--
 .../objectstorage/swift/DockerSwiftTestRule.java   |  6 ++--
 .../modules/blobstore/BlobStoreChoosingModule.java |  4 +--
 .../blobstore/BlobStoreChoosingModuleTest.java     |  6 ++--
 24 files changed, 155 insertions(+), 157 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/ObjectStorageBlobStore.java
similarity index 87%
rename from server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java
rename to server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStore.java
index bec6b3b..014b354 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/ObjectStorageBlobStore.java
@@ -51,7 +51,7 @@ import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
 
-public class ObjectStorageBlobsDAO implements BlobStore {
+public class ObjectStorageBlobStore implements BlobStore {
     private static final int BUFFERED_SIZE = 256 * 1024;
 
     private final BlobId.Factory blobIdFactory;
@@ -62,10 +62,10 @@ public class ObjectStorageBlobsDAO implements BlobStore {
     private final PayloadCodec payloadCodec;
     private final ObjectStorageBucketNameResolver bucketNameResolver;
 
-    ObjectStorageBlobsDAO(BucketName defaultBucketName, BlobId.Factory blobIdFactory,
-                          org.jclouds.blobstore.BlobStore blobStore,
-                          BlobPutter blobPutter,
-                          PayloadCodec payloadCodec, ObjectStorageBucketNameResolver bucketNameResolver) {
+    ObjectStorageBlobStore(BucketName defaultBucketName, BlobId.Factory blobIdFactory,
+                           org.jclouds.blobstore.BlobStore blobStore,
+                           BlobPutter blobPutter,
+                           PayloadCodec payloadCodec, ObjectStorageBucketNameResolver bucketNameResolver) {
         this.blobIdFactory = blobIdFactory;
         this.defaultBucketName = defaultBucketName;
         this.blobStore = blobStore;
@@ -74,20 +74,20 @@ public class ObjectStorageBlobsDAO implements BlobStore {
         this.bucketNameResolver = bucketNameResolver;
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftTempAuthObjectStorage.Configuration testConfig) {
-        return SwiftTempAuthObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(SwiftTempAuthObjectStorage.Configuration testConfig) {
+        return SwiftTempAuthObjectStorage.blobStoreBuilder(testConfig);
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone2ObjectStorage.Configuration testConfig) {
-        return SwiftKeystone2ObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(SwiftKeystone2ObjectStorage.Configuration testConfig) {
+        return SwiftKeystone2ObjectStorage.blobStoreBuilder(testConfig);
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone3ObjectStorage.Configuration testConfig) {
-        return SwiftKeystone3ObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(SwiftKeystone3ObjectStorage.Configuration testConfig) {
+        return SwiftKeystone3ObjectStorage.blobStoreBuilder(testConfig);
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(AwsS3AuthConfiguration testConfig) {
-        return AwsS3ObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(AwsS3AuthConfiguration testConfig) {
+        return AwsS3ObjectStorage.blobStoreBuilder(testConfig);
     }
 
     @PreDestroy
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/ObjectStorageBlobStoreBuilder.java
similarity index 96%
rename from server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOBuilder.java
rename to server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreBuilder.java
index 21a1bb8..72d3fe9 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/ObjectStorageBlobStoreBuilder.java
@@ -29,7 +29,7 @@ import org.jclouds.blobstore.BlobStore;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 
-public class ObjectStorageBlobsDAOBuilder {
+public class ObjectStorageBlobStoreBuilder {
 
     public static RequireBlobIdFactory forBlobStore(Supplier<BlobStore> supplier) {
         return blobIdFactory -> new ReadyToBuild(supplier, blobIdFactory);
@@ -93,7 +93,7 @@ public class ObjectStorageBlobsDAOBuilder {
             return this;
         }
 
-        public ObjectStorageBlobsDAO build() {
+        public ObjectStorageBlobStore build() {
             Preconditions.checkState(blobIdFactory != null);
 
             BlobStore blobStore = supplier.get();
@@ -103,7 +103,7 @@ public class ObjectStorageBlobsDAOBuilder {
                 .namespace(namespace)
                 .build();
 
-            return new ObjectStorageBlobsDAO(namespace.orElse(BucketName.DEFAULT),
+            return new ObjectStorageBlobStore(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 58855d1..1ba0f67 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
@@ -36,7 +36,7 @@ import javax.inject.Inject;
 import org.apache.commons.io.FileUtils;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.objectstorage.BlobPutter;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
 import org.apache.james.blob.objectstorage.ObjectStorageBucketName;
 import org.apache.james.util.Size;
 import org.apache.james.util.concurrent.NamedThreadFactory;
@@ -97,8 +97,8 @@ public class AwsS3ObjectStorage {
         executorService.shutdownNow();
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(AwsS3AuthConfiguration configuration) {
-        return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(configuration));
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory blobStoreBuilder(AwsS3AuthConfiguration configuration) {
+        return ObjectStorageBlobStoreBuilder.forBlobStore(new BlobStoreBuilder(configuration));
     }
 
     public Optional<BlobPutter> putBlob(AwsS3AuthConfiguration 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 e988dcb..8d52cde 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
@@ -24,7 +24,7 @@ import java.util.Optional;
 import java.util.Properties;
 import java.util.function.Supplier;
 
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
 import org.jclouds.ContextBuilder;
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
@@ -43,8 +43,8 @@ public class SwiftKeystone2ObjectStorage {
     private static final Iterable<Module> JCLOUDS_MODULES =
         ImmutableSet.of(new SLF4JLoggingModule());
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(Configuration testConfig) {
-        return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(testConfig));
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory blobStoreBuilder(Configuration testConfig) {
+        return ObjectStorageBlobStoreBuilder.forBlobStore(new BlobStoreBuilder(testConfig));
     }
 
     public static Configuration.Builder configBuilder() {
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 b8831ff..4e761c4 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
@@ -25,7 +25,7 @@ import java.util.Properties;
 import java.util.function.Supplier;
 
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
 import org.apache.james.util.OptionalUtils;
 import org.jclouds.ContextBuilder;
 import org.jclouds.blobstore.BlobStore;
@@ -45,8 +45,8 @@ public class SwiftKeystone3ObjectStorage {
     private static final Iterable<Module> JCLOUDS_MODULES =
         ImmutableSet.of(new SLF4JLoggingModule());
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(Configuration testConfig) {
-        return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(testConfig));
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory blobStoreBuilder(Configuration testConfig) {
+        return ObjectStorageBlobStoreBuilder.forBlobStore(new BlobStoreBuilder(testConfig));
     }
 
     public static Configuration.Builder configBuilder() {
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 9a2709c..0614a88 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
@@ -24,7 +24,7 @@ import java.util.Optional;
 import java.util.Properties;
 import java.util.function.Supplier;
 
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
 import org.jclouds.ContextBuilder;
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
@@ -44,8 +44,8 @@ public class SwiftTempAuthObjectStorage {
     private static final Iterable<Module> JCLOUDS_MODULES =
         ImmutableSet.of(new SLF4JLoggingModule());
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory daoBuilder(Configuration testConfig) {
-        return ObjectStorageBlobsDAOBuilder.forBlobStore(new BlobStoreBuilder(testConfig));
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory blobStoreBuilder(Configuration testConfig) {
+        return ObjectStorageBlobStoreBuilder.forBlobStore(new BlobStoreBuilder(testConfig));
     }
 
     public static Configuration.Builder configBuilder() {
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSCryptoTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSCryptoTest.java
similarity index 90%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSCryptoTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSCryptoTest.java
index c69acd8..d120c24 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSCryptoTest.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSCryptoTest.java
@@ -36,7 +36,7 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSCryptoTest implements MetricableBlobStoreContract {
+public class ObjectStorageBlobStoreAWSCryptoTest implements MetricableBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
     private static final Credentials PASSWORD = Credentials.of("testing");
     private static final String SAMPLE_SALT = "c603a7327ee3dcbc031d8d34b1096c605feca5e1";
@@ -45,7 +45,7 @@ public class ObjectStorageBlobsDAOAWSCryptoTest implements MetricableBlobStoreCo
         .password(PASSWORD.value().toCharArray())
         .build();
 
-    private ObjectStorageBlobsDAO objectStorageBlobsDAO;
+    private ObjectStorageBlobStore objectStorageBlobStore;
     private BlobStore testee;
     private AwsS3ObjectStorage awsS3ObjectStorage;
 
@@ -58,20 +58,20 @@ public class ObjectStorageBlobsDAOAWSCryptoTest implements MetricableBlobStoreCo
             .secretKey(DockerAwsS3Container.SECRET_ACCESS_KEY)
             .build();
 
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
             .payloadCodec(new AESPayloadCodec(CRYPTO_CONFIG))
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        objectStorageBlobsDAO = builder.build();
-        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
+        objectStorageBlobStore = builder.build();
+        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobStore);
     }
 
     @AfterEach
     void tearDown() {
-        objectStorageBlobsDAO.deleteAllBuckets().block();
-        objectStorageBlobsDAO.close();
+        objectStorageBlobStore.deleteAllBuckets().block();
+        objectStorageBlobStore.close();
         awsS3ObjectStorage.tearDown();
     }
 
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSNamespaceTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSNamespaceTest.java
similarity index 88%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSNamespaceTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSNamespaceTest.java
index 63443fc..8fcc3a2 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSNamespaceTest.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSNamespaceTest.java
@@ -35,11 +35,11 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSNamespaceTest implements MetricableBlobStoreContract {
+public class ObjectStorageBlobStoreAWSNamespaceTest implements MetricableBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
     private BlobStore testee;
-    private ObjectStorageBlobsDAO objectStorageBlobsDAO;
+    private ObjectStorageBlobStore objectStorageBlobStore;
     private AwsS3ObjectStorage awsS3ObjectStorage;
 
     @BeforeEach
@@ -51,20 +51,20 @@ public class ObjectStorageBlobsDAOAWSNamespaceTest implements MetricableBlobStor
             .secretKey(DockerAwsS3Container.SECRET_ACCESS_KEY)
             .build();
 
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
             .namespace(BucketName.of("namespace"))
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        objectStorageBlobsDAO = builder.build();
-        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
+        objectStorageBlobStore = builder.build();
+        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobStore);
     }
 
     @AfterEach
     void tearDown() {
-        objectStorageBlobsDAO.deleteAllBuckets().block();
-        objectStorageBlobsDAO.close();
+        objectStorageBlobStore.deleteAllBuckets().block();
+        objectStorageBlobStore.close();
         awsS3ObjectStorage.tearDown();
     }
 
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSPrefixAndNamespaceTest.java
similarity index 88%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSPrefixAndNamespaceTest.java
index ff9b7e9..55b6af6 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSPrefixAndNamespaceTest.java
@@ -35,11 +35,11 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest implements MetricableBlobStoreContract {
+public class ObjectStorageBlobStoreAWSPrefixAndNamespaceTest implements MetricableBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
     private BlobStore testee;
-    private ObjectStorageBlobsDAO objectStorageBlobsDAO;
+    private ObjectStorageBlobStore objectStorageBlobStore;
     private AwsS3ObjectStorage awsS3ObjectStorage;
 
     @BeforeEach
@@ -51,21 +51,21 @@ public class ObjectStorageBlobsDAOAWSPrefixAndNamespaceTest implements Metricabl
             .secretKey(DockerAwsS3Container.SECRET_ACCESS_KEY)
             .build();
 
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
             .bucketPrefix("prefix")
             .namespace(BucketName.of("namespace"))
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        objectStorageBlobsDAO = builder.build();
-        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
+        objectStorageBlobStore = builder.build();
+        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobStore);
     }
 
     @AfterEach
     void tearDown() {
-        objectStorageBlobsDAO.deleteAllBuckets().block();
-        objectStorageBlobsDAO.close();
+        objectStorageBlobStore.deleteAllBuckets().block();
+        objectStorageBlobStore.close();
         awsS3ObjectStorage.tearDown();
     }
 
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSPrefixTest.java
similarity index 88%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSPrefixTest.java
index 680f342..8f3ce20 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSPrefixTest.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSPrefixTest.java
@@ -34,11 +34,11 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSPrefixTest implements MetricableBlobStoreContract {
+public class ObjectStorageBlobStoreAWSPrefixTest implements MetricableBlobStoreContract {
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
     private BlobStore testee;
-    private ObjectStorageBlobsDAO objectStorageBlobsDAO;
+    private ObjectStorageBlobStore objectStorageBlobStore;
     private AwsS3ObjectStorage awsS3ObjectStorage;
 
     @BeforeEach
@@ -50,20 +50,20 @@ public class ObjectStorageBlobsDAOAWSPrefixTest implements MetricableBlobStoreCo
             .secretKey(DockerAwsS3Container.SECRET_ACCESS_KEY)
             .build();
 
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
             .bucketPrefix("prefix")
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        objectStorageBlobsDAO = builder.build();
-        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
+        objectStorageBlobStore = builder.build();
+        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobStore);
     }
 
     @AfterEach
     void tearDown() {
-        objectStorageBlobsDAO.deleteAllBuckets().block();
-        objectStorageBlobsDAO.close();
+        objectStorageBlobStore.deleteAllBuckets().block();
+        objectStorageBlobStore.close();
         awsS3ObjectStorage.tearDown();
     }
 
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/ObjectStorageBlobStoreAWSTest.java
similarity index 88%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreAWSTest.java
index 9261eca..d076dae 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/ObjectStorageBlobStoreAWSTest.java
@@ -34,11 +34,11 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract {
+public class ObjectStorageBlobStoreAWSTest implements MetricableBlobStoreContract {
 
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
-    private ObjectStorageBlobsDAO objectStorageBlobsDAO;
+    private ObjectStorageBlobStore objectStorageBlobStore;
     private AwsS3ObjectStorage awsS3ObjectStorage;
     private BlobStore testee;
 
@@ -51,19 +51,19 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
             .secretKey(DockerAwsS3Container.SECRET_ACCESS_KEY)
             .build();
 
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(BLOB_ID_FACTORY)
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        objectStorageBlobsDAO = builder.build();
-        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
+        objectStorageBlobStore = builder.build();
+        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobStore);
     }
 
     @AfterEach
     void tearDown() {
-        objectStorageBlobsDAO.deleteAllBuckets().block();
-        objectStorageBlobsDAO.close();
+        objectStorageBlobStore.deleteAllBuckets().block();
+        objectStorageBlobStore.close();
         awsS3ObjectStorage.tearDown();
     }
 
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOContract.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreContract.java
similarity index 80%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOContract.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreContract.java
index 92bf2f8..2e96f52 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOContract.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreContract.java
@@ -29,18 +29,18 @@ import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BucketName;
 
 
-public interface ObjectStorageBlobsDAOContract {
+public interface ObjectStorageBlobStoreContract {
 
     String CONTENT = "content";
 
     BucketName defaultBucketName();
 
-    default void assertBlobsDAOCanStoreAndRetrieve(ObjectStorageBlobsDAOBuilder.ReadyToBuild builder) {
-        ObjectStorageBlobsDAO dao = builder.build();
+    default void assertBlobStoreCanStoreAndRetrieve(ObjectStorageBlobStoreBuilder.ReadyToBuild builder) {
+        ObjectStorageBlobStore blobStore = builder.build();
 
-        BlobId blobId = dao.save(dao.getDefaultBucketName(), CONTENT).block();
+        BlobId blobId = blobStore.save(blobStore.getDefaultBucketName(), CONTENT).block();
 
-        InputStream inputStream = dao.read(dao.getDefaultBucketName(), blobId);
+        InputStream inputStream = blobStore.read(blobStore.getDefaultBucketName(), blobId);
         assertThat(inputStream).hasSameContentAs(IOUtils.toInputStream(CONTENT, StandardCharsets.UTF_8));
     }
 }
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/ObjectStorageBlobStoreTest.java
similarity index 85%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobStoreTest.java
index cb8247b..9863601 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/ObjectStorageBlobStoreTest.java
@@ -55,7 +55,7 @@ import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
 
 @ExtendWith(DockerSwiftExtension.class)
-public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract {
+public class ObjectStorageBlobStoreTest implements MetricableBlobStoreContract {
 
     private static final String BIG_STRING = Strings.repeat("big blob content", 10 * 1024);
     private static final TenantName TENANT_NAME = TenantName.of("test");
@@ -71,7 +71,7 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract {
     private BucketName defaultBucketName;
     private org.jclouds.blobstore.BlobStore blobStore;
     private SwiftTempAuthObjectStorage.Configuration testConfig;
-    private ObjectStorageBlobsDAO objectStorageBlobsDAO;
+    private ObjectStorageBlobStore objectStorageBlobStore;
     private BlobStore testee;
 
     @BeforeEach
@@ -85,19 +85,19 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract {
             .tempAuthHeaderPassName(PassHeaderName.of("X-Storage-Pass"))
             .build();
         BlobId.Factory blobIdFactory = blobIdFactory();
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild daoBuilder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild blobStoreBuilder = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(blobIdFactory)
             .namespace(defaultBucketName);
-        blobStore = daoBuilder.getSupplier().get();
-        objectStorageBlobsDAO = daoBuilder.build();
-        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
+        blobStore = blobStoreBuilder.getSupplier().get();
+        objectStorageBlobStore = blobStoreBuilder.build();
+        testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobStore);
     }
 
     @AfterEach
     void tearDown() {
-        objectStorageBlobsDAO.deleteAllBuckets().block();
-        objectStorageBlobsDAO.close();
+        objectStorageBlobStore.deleteAllBuckets().block();
+        objectStorageBlobStore.close();
     }
 
     @Override
@@ -112,37 +112,37 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract {
 
     @Test
     void supportsEncryptionWithCustomPayloadCodec() throws IOException {
-        ObjectStorageBlobsDAO encryptedDao = ObjectStorageBlobsDAO
+        ObjectStorageBlobStore encryptedBlobStore = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(blobIdFactory())
             .payloadCodec(new AESPayloadCodec(CRYPTO_CONFIG))
             .namespace(defaultBucketName)
             .build();
         String content = "James is the best!";
-        BlobId blobId = encryptedDao.save(encryptedDao.getDefaultBucketName(), content).block();
+        BlobId blobId = encryptedBlobStore.save(encryptedBlobStore.getDefaultBucketName(), content).block();
 
-        InputStream read = encryptedDao.read(encryptedDao.getDefaultBucketName(), blobId);
+        InputStream read = encryptedBlobStore.read(encryptedBlobStore.getDefaultBucketName(), blobId);
         String expectedContent = IOUtils.toString(read, Charsets.UTF_8);
         assertThat(content).isEqualTo(expectedContent);
     }
 
     @Test
-    void encryptionWithCustomPayloadCodeCannotBeReadFromUnencryptedDAO() throws Exception {
-        ObjectStorageBlobsDAO encryptedDao = ObjectStorageBlobsDAO
+    void encryptionWithCustomPayloadCodeCannotBeReadFromUnencryptedBlobStore() throws Exception {
+        ObjectStorageBlobStore encryptedBlobStore = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(blobIdFactory())
             .payloadCodec(new AESPayloadCodec(CRYPTO_CONFIG))
             .namespace(defaultBucketName)
             .build();
         String content = "James is the best!";
-        BlobId blobId = encryptedDao.save(encryptedDao.getDefaultBucketName(), content).block();
+        BlobId blobId = encryptedBlobStore.save(encryptedBlobStore.getDefaultBucketName(), content).block();
 
-        InputStream encryptedIs = testee.read(encryptedDao.getDefaultBucketName(), blobId);
+        InputStream encryptedIs = testee.read(encryptedBlobStore.getDefaultBucketName(), blobId);
         assertThat(encryptedIs).isNotNull();
         String encryptedString = IOUtils.toString(encryptedIs, Charsets.UTF_8);
         assertThat(encryptedString).isNotEqualTo(content);
 
-        InputStream clearTextIs = encryptedDao.read(encryptedDao.getDefaultBucketName(), blobId);
+        InputStream clearTextIs = encryptedBlobStore.read(encryptedBlobStore.getDefaultBucketName(), blobId);
         String expectedContent = IOUtils.toString(clearTextIs, Charsets.UTF_8);
         assertThat(content).isEqualTo(expectedContent);
     }
@@ -150,9 +150,9 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract {
     @Test
     void deleteBucketShouldDeleteSwiftContainer() {
         BucketName bucketName = BucketName.of("azerty");
-        objectStorageBlobsDAO.save(bucketName, "data").block();
+        objectStorageBlobStore.save(bucketName, "data").block();
 
-        objectStorageBlobsDAO.deleteBucket(bucketName).block();
+        objectStorageBlobStore.deleteBucket(bucketName).block();
 
         assertThat(blobStore.containerExists(bucketName.asString()))
             .isFalse();
@@ -165,7 +165,7 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract {
         blobStore.createContainerInLocation(defaultLocation, "bucket2");
         blobStore.createContainerInLocation(defaultLocation, "bucket3");
 
-        objectStorageBlobsDAO.deleteAllBuckets().block();
+        objectStorageBlobStore.deleteAllBuckets().block();
 
         assertThat(blobStore.list()
                 .stream()
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/AwsS3ObjectStorageBlobStoreBuilderTest.java
similarity index 79%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorageBlobsDAOBuilderTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/aws/AwsS3ObjectStorageBlobStoreBuilderTest.java
index 5c16ebb..9c9ea88 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/AwsS3ObjectStorageBlobStoreBuilderTest.java
@@ -23,16 +23,16 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.api.HashBlobId;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOContract;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreContract;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerAwsS3Extension.class)
-class AwsS3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOContract {
+class AwsS3ObjectStorageBlobStoreBuilderTest implements ObjectStorageBlobStoreContract {
 
     private BucketName defaultBucketName;
     private AwsS3AuthConfiguration configuration;
@@ -60,8 +60,8 @@ class AwsS3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOCont
     }
 
     @Test
-    void blobIdFactoryIsMandatoryToBuildBlobsDAO() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void blobIdFactoryIsMandatoryToBuildBlobStore() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(null)
             .namespace(defaultBucketName);
@@ -70,13 +70,13 @@ class AwsS3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOCont
     }
 
     @Test
-    void builtBlobsDAOCanStoreAndRetrieve() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void builtBlobStoreCanStoreAndRetrieve() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(configuration)
             .blobIdFactory(new HashBlobId.Factory())
             .namespace(defaultBucketName)
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        assertBlobsDAOCanStoreAndRetrieve(builder);
+        assertBlobStoreCanStoreAndRetrieve(builder);
     }
 }
\ No newline at end of file
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/SwiftKeystone2ObjectStorageBlobStoreBuilderTest.java
similarity index 82%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorageBlobsDAOBuilderTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone2ObjectStorageBlobStoreBuilderTest.java
index 39415dd..6094440 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/SwiftKeystone2ObjectStorageBlobStoreBuilderTest.java
@@ -27,15 +27,15 @@ import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.objectstorage.DockerSwift;
 import org.apache.james.blob.objectstorage.DockerSwiftExtension;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOContract;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreContract;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerSwiftExtension.class)
-class SwiftKeystone2ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOContract {
+class SwiftKeystone2ObjectStorageBlobStoreBuilderTest implements ObjectStorageBlobStoreContract {
 
     private static final TenantName TENANT_NAME = TenantName.of("test");
     private static final UserName USER_NAME = UserName.of("demo");
@@ -62,8 +62,8 @@ class SwiftKeystone2ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo
     }
 
     @Test
-    void blobIdFactoryIsMandatoryToBuildBlobsDAO() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void blobIdFactoryIsMandatoryToBuildBlobStore() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(null)
             .namespace(defaultBucketName);
@@ -72,12 +72,12 @@ class SwiftKeystone2ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo
     }
 
     @Test
-    void builtBlobsDAOCanStoreAndRetrieve() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void builtBlobStoreCanStoreAndRetrieve() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(new HashBlobId.Factory())
             .namespace(defaultBucketName);
 
-        assertBlobsDAOCanStoreAndRetrieve(builder);
+        assertBlobStoreCanStoreAndRetrieve(builder);
     }
 }
\ No newline at end of file
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/SwiftKeystone3ObjectStorageBlobStoreBuilderTest.java
similarity index 88%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorageBlobsDAOBuilderTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorageBlobStoreBuilderTest.java
index 893cad1..4f187fd 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/SwiftKeystone3ObjectStorageBlobStoreBuilderTest.java
@@ -28,9 +28,9 @@ import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.objectstorage.DockerSwift;
 import org.apache.james.blob.objectstorage.DockerSwiftExtension;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOContract;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreContract;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -38,7 +38,7 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
 @ExtendWith(DockerSwiftExtension.class)
-class SwiftKeystone3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOContract {
+class SwiftKeystone3ObjectStorageBlobStoreBuilderTest implements ObjectStorageBlobStoreContract {
 
     private static final DomainName DOMAIN_NAME = DomainName.of("Default");
     private static final DomainId DOMAIN_ID = DomainId.of("default");
@@ -95,8 +95,8 @@ class SwiftKeystone3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo
     }
 
     @Test
-    void blobIdFactoryIsMandatoryToBuildBlobsDAO() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void blobIdFactoryIsMandatoryToBuildBlobStore() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(null)
             .namespace(defaultBucketName);
@@ -106,14 +106,14 @@ class SwiftKeystone3ObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlo
 
     @ParameterizedTest
     @ValueSource(strings = {PROJECT_CONFIG_KEY, PROJECT_DOMAIN_ID_KEY, PROJECT_DOMAIN_NAME_KEY})
-    void builtBlobsDAOCanStoreAndRetrieve(String key) {
+    void builtBlobStoreCanStoreAndRetrieve(String key) {
         SwiftKeystone3ObjectStorage.Configuration config =
             configBuilders.get(key).endpoint(dockerSwift.keystoneV3Endpoint()).build();
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(config)
             .blobIdFactory(new HashBlobId.Factory())
             .namespace(defaultBucketName);
 
-        assertBlobsDAOCanStoreAndRetrieve(builder);
+        assertBlobStoreCanStoreAndRetrieve(builder);
     }
 }
\ No newline at end of file
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/SwiftTempAuthObjectStorageBlobStoreBuilderTest.java
similarity index 83%
rename from server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorageBlobsDAOBuilderTest.java
rename to server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/SwiftTempAuthObjectStorageBlobStoreBuilderTest.java
index ec17bcc..3929bdc 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/SwiftTempAuthObjectStorageBlobStoreBuilderTest.java
@@ -27,15 +27,15 @@ import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.objectstorage.DockerSwift;
 import org.apache.james.blob.objectstorage.DockerSwiftExtension;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOContract;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreContract;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerSwiftExtension.class)
-class SwiftTempAuthObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlobsDAOContract {
+class SwiftTempAuthObjectStorageBlobStoreBuilderTest implements ObjectStorageBlobStoreContract {
 
     private static final TenantName TENANT_NAME = TenantName.of("test");
     private static final UserName USER_NAME = UserName.of("tester");
@@ -64,8 +64,8 @@ class SwiftTempAuthObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlob
     }
 
     @Test
-    void blobIdFactoryIsMandatoryToBuildBlobsDAO() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void blobIdFactoryIsMandatoryToBuildBlobStore() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(null)
             .namespace(defaultBucketName);
@@ -74,12 +74,12 @@ class SwiftTempAuthObjectStorageBlobsDAOBuilderTest implements ObjectStorageBlob
     }
 
     @Test
-    void builtBlobsDAOCanStoreAndRetrieve() {
-        ObjectStorageBlobsDAOBuilder.ReadyToBuild builder = ObjectStorageBlobsDAO
+    void builtBlobStoreCanStoreAndRetrieve() {
+        ObjectStorageBlobStoreBuilder.ReadyToBuild builder = ObjectStorageBlobStore
             .builder(testConfig)
             .blobIdFactory(new HashBlobId.Factory())
             .namespace(defaultBucketName);
 
-        assertBlobsDAOCanStoreAndRetrieve(builder);
+        assertBlobStoreCanStoreAndRetrieve(builder);
     }
 }
\ No newline at end of file
diff --git a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobStoreModule.java b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobStoreModule.java
index 630db75..5440878 100644
--- a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobStoreModule.java
+++ b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobStoreModule.java
@@ -21,7 +21,7 @@ package org.apache.james.modules.objectstorage;
 
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.MetricableBlobStore;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.name.Names;
@@ -33,7 +33,7 @@ public class ObjectStorageBlobStoreModule extends AbstractModule {
         install(new ObjectStorageDependenciesModule());
         bind(BlobStore.class)
             .annotatedWith(Names.named(MetricableBlobStore.BLOB_STORE_IMPLEMENTATION))
-            .to(ObjectStorageBlobsDAO.class);
+            .to(ObjectStorageBlobStore.class);
     }
 
 }
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 62a3260..7ccbb9a 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
@@ -21,8 +21,6 @@ package org.apache.james.modules.objectstorage;
 
 import java.io.FileNotFoundException;
 import java.util.Optional;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
 
 import javax.inject.Provider;
 import javax.inject.Singleton;
@@ -32,8 +30,8 @@ import org.apache.commons.configuration2.ex.ConfigurationException;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.objectstorage.BlobPutter;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
 import org.apache.james.blob.objectstorage.aws.AwsS3AuthConfiguration;
 import org.apache.james.blob.objectstorage.aws.AwsS3ObjectStorage;
 import org.apache.james.modules.mailbox.ConfigurationComponent;
@@ -64,23 +62,23 @@ public class ObjectStorageDependenciesModule extends AbstractModule {
 
     @Provides
     @Singleton
-    private ObjectStorageBlobsDAO buildObjectStore(ObjectStorageBlobConfiguration configuration, BlobId.Factory blobIdFactory, Provider<AwsS3ObjectStorage> awsS3ObjectStorageProvider) throws InterruptedException, ExecutionException, TimeoutException {
-        ObjectStorageBlobsDAO dao = selectDaoBuilder(configuration)
+    private ObjectStorageBlobStore buildObjectStore(ObjectStorageBlobConfiguration configuration, BlobId.Factory blobIdFactory, Provider<AwsS3ObjectStorage> awsS3ObjectStorageProvider) {
+        ObjectStorageBlobStore blobStore = selectBlobStoreBuilder(configuration)
             .blobIdFactory(blobIdFactory)
             .payloadCodec(configuration.getPayloadCodec())
             .blobPutter(putBlob(blobIdFactory, configuration, awsS3ObjectStorageProvider))
             .namespace(configuration.getNamespace())
             .bucketPrefix(configuration.getBucketPrefix())
             .build();
-        return dao;
+        return blobStore;
     }
 
-    private ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory selectDaoBuilder(ObjectStorageBlobConfiguration configuration) {
+    private ObjectStorageBlobStoreBuilder.RequireBlobIdFactory selectBlobStoreBuilder(ObjectStorageBlobConfiguration configuration) {
         switch (configuration.getProvider()) {
             case SWIFT:
                 return SwiftObjectStorage.builder(configuration);
             case AWSS3:
-                return AwsS3ObjectStorage.daoBuilder((AwsS3AuthConfiguration) configuration.getSpecificAuthConfiguration());
+                return AwsS3ObjectStorage.blobStoreBuilder((AwsS3AuthConfiguration) configuration.getSpecificAuthConfiguration());
         }
         throw new IllegalArgumentException("unknown provider " + configuration.getProvider());
     }
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 409307d..fe207f5 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
@@ -19,8 +19,8 @@
 
 package org.apache.james.modules.objectstorage.swift;
 
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAOBuilder;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
 import org.apache.james.blob.objectstorage.swift.SwiftKeystone2ObjectStorage;
 import org.apache.james.blob.objectstorage.swift.SwiftKeystone3ObjectStorage;
 import org.apache.james.blob.objectstorage.swift.SwiftTempAuthObjectStorage;
@@ -29,7 +29,7 @@ import org.apache.james.modules.objectstorage.ObjectStorageProvider;
 
 public class SwiftObjectStorage {
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(ObjectStorageBlobConfiguration configuration) {
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(ObjectStorageBlobConfiguration configuration) {
         if (configuration.getProvider() != ObjectStorageProvider.SWIFT) {
             throw new IllegalArgumentException("unknown provider " + configuration.getProvider());
         }
@@ -37,30 +37,30 @@ public class SwiftObjectStorage {
         switch (authConfiguration.getAuthApiName()) {
             case SwiftTempAuthObjectStorage.AUTH_API_NAME:
                 return authConfiguration.getTempAuth()
-                                    .map(ObjectStorageBlobsDAO::builder)
+                                    .map(ObjectStorageBlobStore::builder)
                                     .orElseThrow(() -> new IllegalArgumentException("No TempAuth configuration found for tmpauth API"));
             case SwiftKeystone2ObjectStorage.AUTH_API_NAME:
                 return authConfiguration.getKeystone2Configuration()
-                                    .map(ObjectStorageBlobsDAO::builder)
+                                    .map(ObjectStorageBlobStore::builder)
                                     .orElseThrow(() -> new IllegalArgumentException("No Keystone2 configuration found for keystone2 API"));
             case SwiftKeystone3ObjectStorage.AUTH_API_NAME:
                 return authConfiguration.getKeystone3Configuration()
-                                    .map(ObjectStorageBlobsDAO::builder)
+                                    .map(ObjectStorageBlobStore::builder)
                                     .orElseThrow(() -> new IllegalArgumentException("No Keystone3 configuration found for keystone3 API"));
             default:
                 throw new IllegalArgumentException("unknown auth api " + authConfiguration.getAuthApiName());
         }
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftTempAuthObjectStorage.Configuration testConfig) {
-        return SwiftTempAuthObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(SwiftTempAuthObjectStorage.Configuration testConfig) {
+        return SwiftTempAuthObjectStorage.blobStoreBuilder(testConfig);
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone2ObjectStorage.Configuration testConfig) {
-        return SwiftKeystone2ObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(SwiftKeystone2ObjectStorage.Configuration testConfig) {
+        return SwiftKeystone2ObjectStorage.blobStoreBuilder(testConfig);
     }
 
-    public static ObjectStorageBlobsDAOBuilder.RequireBlobIdFactory builder(SwiftKeystone3ObjectStorage.Configuration testConfig) {
-        return SwiftKeystone3ObjectStorage.daoBuilder(testConfig);
+    public static ObjectStorageBlobStoreBuilder.RequireBlobIdFactory builder(SwiftKeystone3ObjectStorage.Configuration testConfig) {
+        return SwiftKeystone3ObjectStorage.blobStoreBuilder(testConfig);
     }
 }
diff --git a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java
index 5cc85f8..097de25 100644
--- a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java
+++ b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java
@@ -26,7 +26,7 @@ import javax.inject.Inject;
 import org.apache.james.GuiceModuleTestRule;
 import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.objectstorage.DockerAwsS3Singleton;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
 import org.apache.james.blob.objectstorage.PayloadCodec;
 import org.apache.james.blob.objectstorage.aws.AwsS3AuthConfiguration;
 import org.apache.james.blob.objectstorage.aws.DockerAwsS3Container;
@@ -44,10 +44,10 @@ public class DockerAwsS3TestRule implements GuiceModuleTestRule {
 
     public static class TestAwsS3BlobStoreProbe implements GuiceProbe {
 
-        private final ObjectStorageBlobsDAO awss3BlobStore;
+        private final ObjectStorageBlobStore awss3BlobStore;
 
         @Inject
-        TestAwsS3BlobStoreProbe(ObjectStorageBlobsDAO awss3BlobStore) {
+        TestAwsS3BlobStoreProbe(ObjectStorageBlobStore awss3BlobStore) {
             this.awss3BlobStore = awss3BlobStore;
         }
 
diff --git a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/swift/DockerSwiftTestRule.java b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/swift/DockerSwiftTestRule.java
index 4df090e..bc3ffde 100644
--- a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/swift/DockerSwiftTestRule.java
+++ b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/swift/DockerSwiftTestRule.java
@@ -27,7 +27,7 @@ import javax.inject.Inject;
 import org.apache.james.GuiceModuleTestRule;
 import org.apache.james.blob.api.BucketName;
 import org.apache.james.blob.objectstorage.DockerSwiftRule;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
 import org.apache.james.blob.objectstorage.PayloadCodec;
 import org.apache.james.blob.objectstorage.swift.Credentials;
 import org.apache.james.blob.objectstorage.swift.SwiftKeystone2ObjectStorage;
@@ -47,10 +47,10 @@ public class DockerSwiftTestRule implements GuiceModuleTestRule {
 
     public static class TestSwiftBlobStoreProbe implements GuiceProbe {
 
-        private final ObjectStorageBlobsDAO swiftBlobStore;
+        private final ObjectStorageBlobStore swiftBlobStore;
 
         @Inject
-        TestSwiftBlobStoreProbe(ObjectStorageBlobsDAO swiftBlobStore) {
+        TestSwiftBlobStoreProbe(ObjectStorageBlobStore swiftBlobStore) {
             this.swiftBlobStore = swiftBlobStore;
         }
 
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java
index 70153c7..7011d1e 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java
@@ -32,7 +32,7 @@ import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.MetricableBlobStore;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.blob.cassandra.CassandraBlobStore;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
 import org.apache.james.blob.union.UnionBlobStore;
 import org.apache.james.modules.mailbox.ConfigurationComponent;
 import org.apache.james.modules.objectstorage.ObjectStorageDependenciesModule;
@@ -75,7 +75,7 @@ public class BlobStoreChoosingModule extends AbstractModule {
     @Singleton
     BlobStore provideBlobStore(BlobStoreChoosingConfiguration choosingConfiguration,
                                Provider<CassandraBlobStore> cassandraBlobStoreProvider,
-                               Provider<ObjectStorageBlobsDAO> swiftBlobStoreProvider) {
+                               Provider<ObjectStorageBlobStore> swiftBlobStoreProvider) {
 
         switch (choosingConfiguration.getImplementation()) {
             case OBJECTSTORAGE:
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreChoosingModuleTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreChoosingModuleTest.java
index 81e9965..ce4354b 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreChoosingModuleTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreChoosingModuleTest.java
@@ -26,7 +26,7 @@ import static org.mockito.Mockito.mock;
 import org.apache.commons.configuration2.PropertiesConfiguration;
 import org.apache.james.FakePropertiesProvider;
 import org.apache.james.blob.cassandra.CassandraBlobStore;
-import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobStore;
 import org.apache.james.blob.union.UnionBlobStore;
 import org.apache.james.modules.blobstore.BlobStoreChoosingConfiguration.BlobStoreImplName;
 import org.apache.james.modules.mailbox.ConfigurationComponent;
@@ -38,8 +38,8 @@ class BlobStoreChoosingModuleTest {
 
     private static CassandraBlobStore CASSANDRA_BLOBSTORE = mock(CassandraBlobStore.class);
     private static Provider<CassandraBlobStore> CASSANDRA_BLOBSTORE_PROVIDER = () -> CASSANDRA_BLOBSTORE;
-    private static ObjectStorageBlobsDAO OBJECT_STORAGE_BLOBSTORE = mock(ObjectStorageBlobsDAO.class);
-    private static Provider<ObjectStorageBlobsDAO> OBJECT_STORAGE_BLOBSTORE_PROVIDER = () -> OBJECT_STORAGE_BLOBSTORE;
+    private static ObjectStorageBlobStore OBJECT_STORAGE_BLOBSTORE = mock(ObjectStorageBlobStore.class);
+    private static Provider<ObjectStorageBlobStore> OBJECT_STORAGE_BLOBSTORE_PROVIDER = () -> OBJECT_STORAGE_BLOBSTORE;
 
     @Test
     void provideChoosingConfigurationShouldThrowWhenMissingPropertyField() {


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