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