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/03/20 02:01:41 UTC
[james-project] 01/09: MAILBOX-373 Introduce InsertionId for
EventDeadLetter
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 dc9d793c5302dd837e673db10afc4fdeecc0bd50
Author: datph <dp...@linagora.com>
AuthorDate: Wed Mar 13 11:04:25 2019 +0700
MAILBOX-373 Introduce InsertionId for EventDeadLetter
---
.../james/mailbox/events/EventDeadLetters.java | 54 ++++++++++++++++++++++
.../james/mailbox/events/InsertionIdTest.java} | 38 ++++++++++-----
2 files changed, 81 insertions(+), 11 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java
index c505918..38ac4ae 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java
@@ -19,11 +19,65 @@
package org.apache.james.mailbox.events;
+import java.util.Objects;
+import java.util.UUID;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public interface EventDeadLetters {
+ class InsertionId {
+ public static InsertionId of(UUID uuid) {
+ return new InsertionId(uuid);
+ }
+
+ public static InsertionId random() {
+ return new InsertionId(UUID.randomUUID());
+ }
+
+ public static InsertionId of(String serialized) {
+ return of(UUID.fromString(serialized));
+ }
+
+ private final UUID id;
+
+ private InsertionId(UUID id) {
+ Preconditions.checkNotNull(id);
+ this.id = id;
+ }
+
+ public UUID getId() {
+ return id;
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof InsertionId) {
+ InsertionId insertionId = (InsertionId) o;
+
+ return Objects.equals(this.id, insertionId.id);
+ }
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(id);
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("id", id)
+ .toString();
+ }
+ }
+
+
String REGISTERED_GROUP_CANNOT_BE_NULL = "registeredGroup cannot be null";
String FAIL_DELIVERED_EVENT_CANNOT_BE_NULL = "failDeliveredEvent cannot be null";
String FAIL_DELIVERED_ID_EVENT_CANNOT_BE_NULL = "failDeliveredEventId cannot be null";
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/InsertionIdTest.java
similarity index 53%
copy from mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java
copy to mailbox/api/src/test/java/org/apache/james/mailbox/events/InsertionIdTest.java
index c505918..f8a1e0e 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLetters.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/InsertionIdTest.java
@@ -19,22 +19,38 @@
package org.apache.james.mailbox.events;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
-public interface EventDeadLetters {
+import java.util.UUID;
- String REGISTERED_GROUP_CANNOT_BE_NULL = "registeredGroup cannot be null";
- String FAIL_DELIVERED_EVENT_CANNOT_BE_NULL = "failDeliveredEvent cannot be null";
- String FAIL_DELIVERED_ID_EVENT_CANNOT_BE_NULL = "failDeliveredEventId cannot be null";
+import org.junit.jupiter.api.Test;
- Mono<Void> store(Group registeredGroup, Event failDeliveredEvent);
+import nl.jqno.equalsverifier.EqualsVerifier;
- Mono<Void> remove(Group registeredGroup, Event.EventId failDeliveredEventId);
+class InsertionIdTest {
+ private static final UUID UUID_1 = UUID.fromString("6e0dd59d-660e-4d9b-b22f-0354479f47b4");
- Mono<Event> failedEvent(Group registeredGroup, Event.EventId failDeliveredEventId);
+ @Test
+ void eventIdShouldMatchBeanContract() {
+ EqualsVerifier.forClass(EventDeadLetters.InsertionId.class).verify();
+ }
- Flux<Event.EventId> failedEventIds(Group registeredGroup);
+ @Test
+ void ofShouldDeserializeUUIDs() {
+ assertThat(EventDeadLetters.InsertionId.of(UUID_1.toString()))
+ .isEqualTo(EventDeadLetters.InsertionId.of(UUID_1));
+ }
- Flux<Group> groupsWithFailedEvents();
+ @Test
+ void ofStringShouldThrowOnNullValue() {
+ assertThatThrownBy(() -> EventDeadLetters.InsertionId.of((String) null))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ void ofUuidShouldThrowOnNullValue() {
+ assertThatThrownBy(() -> EventDeadLetters.InsertionId.of((UUID) null))
+ .isInstanceOf(NullPointerException.class);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org