MAILBOX-304 Allow deleting attachments from old DAO

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8f1c35b9
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8f1c35b9
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8f1c35b9

Branch: refs/heads/master
Commit: 8f1c35b9b4a0d723ef4bf1f0faf31d08a03d3398
Parents: 9031bbd
Author: benwa <btell...@linagora.com>
Authored: Fri Sep 8 18:27:58 2017 +0700
Committer: Antoine Duprat <adup...@linagora.com>
Committed: Wed Sep 13 10:17:08 2017 +0200

----------------------------------------------------------------------
 .../cassandra/mail/CassandraAttachmentDAO.java     | 17 +++++++++++++++++
 .../cassandra/mail/CassandraAttachmentDAOTest.java | 15 +++++++++++++++
 2 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/8f1c35b9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
index d1ec829..532dea3 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
+import static com.datastax.driver.core.querybuilder.QueryBuilder.delete;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
@@ -56,6 +57,7 @@ public class CassandraAttachmentDAO {
     private final CassandraAsyncExecutor cassandraAsyncExecutor;
     private final CassandraUtils cassandraUtils;
     private final PreparedStatement insertStatement;
+    private final PreparedStatement deleteStatement;
     private final PreparedStatement selectStatement;
     private final PreparedStatement selectAllStatement;
 
@@ -65,10 +67,18 @@ public class CassandraAttachmentDAO {
 
         this.selectStatement = prepareSelect(session);
         this.selectAllStatement = prepareSelectAll(session);
+        this.deleteStatement = prepareDelete(session);
         this.insertStatement = prepareInsert(session);
         this.cassandraUtils = cassandraUtils;
     }
 
+    private PreparedStatement prepareDelete(Session session) {
+        return session.prepare(
+            delete()
+                .from(TABLE_NAME)
+                .where(eq(ID, bindMarker(ID))));
+    }
+
     private PreparedStatement prepareInsert(Session session) {
         return session.prepare(
             insertInto(TABLE_NAME)
@@ -116,6 +126,13 @@ public class CassandraAttachmentDAO {
                 .setBytes(PAYLOAD, ByteBuffer.wrap(attachment.getBytes())));
     }
 
+    public CompletableFuture<Void> deleteAttachment(AttachmentId attachmentId) 
{
+        return cassandraAsyncExecutor.executeVoid(
+            deleteStatement
+                .bind()
+                .setString(ID, attachmentId.getId()));
+    }
+
     private Attachment attachment(Row row) {
         return Attachment.builder()
             .attachmentId(AttachmentId.from(row.getString(ID)))

http://git-wip-us.apache.org/repos/asf/james-project/blob/8f1c35b9/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
index e26af08..3b00a1a 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
@@ -109,4 +109,19 @@ public class CassandraAttachmentDAOTest {
 
         assertThat(actual).contains(attachment);
     }
+
+    @Test
+    public void deleteAttachmentShouldRemoveAttachment() throws Exception {
+        Attachment attachment = Attachment.builder()
+            .attachmentId(ATTACHMENT_ID)
+            .type("application/json")
+            
.bytes("{\"property\":`\"value\"}".getBytes(StandardCharsets.UTF_8))
+            .build();
+        testee.storeAttachment(attachment).join();
+
+        testee.deleteAttachment(attachment.getAttachmentId()).join();
+
+        assertThat(testee.getAttachment(attachment.getAttachmentId()).join())
+            .isEmpty();
+    }
 }


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

Reply via email to