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 bt...@apache.org on 2019/06/26 03:28:44 UTC
[james-project] 04/28: JAMES-2794 Create an EnqueueId POJO in
RabbitMQMailQueue
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 3e6f9f3dbf3443faeb8873972a1af966ec57fd0d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 18 11:28:45 2019 +0700
JAMES-2794 Create an EnqueueId POJO in RabbitMQMailQueue
The aim is not to identify a given email but rather identify a given
enqueue hence I do not reuse the MailKey class, that marks the intent to
identify a given mail, regardless of specific enqueues.
---
.../model/MailKey.java => EnQueueId.java} | 45 +++++++++++++---------
.../model/{MailKeyTest.java => EnQueueIdTest.java} | 32 ++++++++++++++-
2 files changed, 56 insertions(+), 21 deletions(-)
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/model/MailKey.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/EnQueueId.java
similarity index 62%
rename from server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/model/MailKey.java
rename to server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/EnQueueId.java
index 4f17a71..133172d 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/model/MailKey.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/EnQueueId.java
@@ -17,49 +17,56 @@
* under the License. *
****************************************************************/
-package org.apache.james.queue.rabbitmq.view.cassandra.model;
+package org.apache.james.queue.rabbitmq;
import java.util.Objects;
+import java.util.UUID;
-import org.apache.mailet.Mail;
-
+import com.datastax.driver.core.utils.UUIDs;
import com.google.common.base.Preconditions;
-public class MailKey {
+public class EnQueueId {
+
+ public static EnQueueId generate() {
+ return of(UUIDs.timeBased());
+ }
- public static MailKey fromMail(Mail mail) {
- return of(mail.getName());
+ public static EnQueueId of(UUID uuid) {
+ Preconditions.checkNotNull(uuid);
+ return new EnQueueId(uuid);
}
- public static MailKey of(String mailKey) {
- return new MailKey(mailKey);
+ public static EnQueueId ofSerialized(String serialized) {
+ Preconditions.checkNotNull(serialized);
+ return of(UUID.fromString(serialized));
}
- private final String mailKey;
+ private final UUID id;
- private MailKey(String mailKey) {
- Preconditions.checkNotNull(mailKey);
- Preconditions.checkArgument(!mailKey.isEmpty());
+ private EnQueueId(UUID id) {
+ this.id = id;
+ }
- this.mailKey = mailKey;
+ public UUID asUUID() {
+ return id;
}
- public String getMailKey() {
- return mailKey;
+ public String serialize() {
+ return id.toString();
}
@Override
public final boolean equals(Object o) {
- if (o instanceof MailKey) {
- MailKey mailKey1 = (MailKey) o;
+ if (o instanceof EnQueueId) {
+ EnQueueId enQueueId = (EnQueueId) o;
- return Objects.equals(this.mailKey, mailKey1.mailKey);
+ return Objects.equals(this.id, enQueueId.id);
}
return false;
}
@Override
public final int hashCode() {
- return Objects.hash(mailKey);
+ return Objects.hash(id);
}
}
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/model/MailKeyTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/model/EnQueueIdTest.java
similarity index 60%
rename from server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/model/MailKeyTest.java
rename to server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/model/EnQueueIdTest.java
index c1a854e..2f21c34 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/model/MailKeyTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/model/EnQueueIdTest.java
@@ -19,15 +19,43 @@
package org.apache.james.queue.rabbitmq.view.cassandra.model;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.UUID;
+
+import org.apache.james.queue.rabbitmq.EnQueueId;
import org.junit.jupiter.api.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
-class MailKeyTest {
+class EnQueueIdTest {
+ private static final UUID UUID_1 = UUID.fromString("110e8400-e29b-11d4-a716-446655440000");
@Test
void shouldMatchBeanContract() {
- EqualsVerifier.forClass(MailKey.class)
+ EqualsVerifier.forClass(EnQueueId.class)
.verify();
}
+
+ @Test
+ void ofSerializedShouldDeserializeTheGivenEnqueueId() {
+ assertThat(EnQueueId.ofSerialized(UUID_1.toString()))
+ .isEqualTo(EnQueueId.of(UUID_1));
+ }
+
+ @Test
+ void serializeShouldReturnAStringRepresentation() {
+ EnQueueId enQueueId = EnQueueId.of(UUID_1);
+
+ assertThat(enQueueId.serialize())
+ .isEqualTo(UUID_1.toString());
+ }
+
+ @Test
+ void ofSerializedShouldRevertSerialize() {
+ EnQueueId enQueueId = EnQueueId.of(UUID_1);
+
+ assertThat(EnQueueId.ofSerialized(enQueueId.serialize()))
+ .isEqualTo(enQueueId);
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org