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 ad...@apache.org on 2017/09/13 10:57:28 UTC

[02/24] james-project git commit: MAILBOX-304 Allow deleting attachments from old DAO

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 <bt...@linagora.com>
Authored: Fri Sep 8 18:27:58 2017 +0700
Committer: Antoine Duprat <ad...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org