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