You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/02/04 05:02:32 UTC
[james-project] 06/18: JAMES-3498 Introduce an EventSerializer API
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 48c939e28dcb44f424e5f1753de1d00b9e8dc0c6
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Jan 25 14:37:25 2021 +0700
JAMES-3498 Introduce an EventSerializer API
---
.../org/apache/james/events/EventSerializer.java | 15 ++++-----------
.../james/events/CassandraEventDeadLettersDAO.java | 22 ++++++++++------------
.../events/CassandraEventDeadLettersDAOTest.java | 4 ++--
.../CassandraEventDeadLettersHealthCheckTest.java | 4 ++--
.../events/CassandraEventDeadLettersTest.java | 4 ++--
.../org/apache/james/events/EventDispatcher.java | 1 -
.../apache/james/events/GroupConsumerRetry.java | 1 -
.../org/apache/james/events/GroupRegistration.java | 3 +--
.../james/events/GroupRegistrationHandler.java | 1 -
.../james/events/KeyRegistrationHandler.java | 3 +--
.../org/apache/james/events/RabbitMQEventBus.java | 1 -
.../org/apache/james/events/NetworkErrorTest.java | 4 ++--
...RabbitMQEventBusDeadLetterQueueUpgradeTest.java | 4 ++--
.../apache/james/events/RabbitMQEventBusTest.java | 7 +++----
mailbox/event/json/pom.xml | 4 ++++
...rializer.scala => MailboxEventSerializer.scala} | 13 ++++++++-----
.../apache/james/event/json/SerializerFixture.java | 2 +-
.../rabbitmq/host/RabbitMQEventBusHostSystem.java | 4 ++--
.../modules/event/RabbitMQEventBusModule.java | 6 ++++--
.../james/modules/mailbox/DefaultEventModule.java | 5 +++++
.../webadmin/routes/EventDeadLettersRoutes.java | 2 +-
.../routes/EventDeadLettersRoutesTest.java | 4 ++--
22 files changed, 56 insertions(+), 58 deletions(-)
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java b/event-bus/api/src/main/java/org/apache/james/events/EventSerializer.java
similarity index 60%
copy from mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java
copy to event-bus/api/src/main/java/org/apache/james/events/EventSerializer.java
index a9e6deb..0016959 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java
+++ b/event-bus/api/src/main/java/org/apache/james/events/EventSerializer.java
@@ -17,17 +17,10 @@
* under the License. *
****************************************************************/
-package org.apache.james.event.json;
+package org.apache.james.events;
-import org.apache.james.events.Event;
-import org.apache.james.mailbox.model.TestId;
-import org.apache.james.mailbox.model.TestMessageId;
-import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
+public interface EventSerializer {
+ String toJson(Event event);
-public interface SerializerFixture {
- JsonSerialize DTO_JSON_SERIALIZE = new JsonSerialize(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
- EventSerializer EVENT_SERIALIZER = new EventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
-
- String SERIALIZED_EVENT_ID = "6e0dd59d-660e-4d9b-b22f-0354479f47b4";
- Event.EventId EVENT_ID = Event.EventId.of(SERIALIZED_EVENT_ID);
+ Event asEvent(String serialized);
}
diff --git a/event-bus/cassandra/src/main/java/org/apache/james/events/CassandraEventDeadLettersDAO.java b/event-bus/cassandra/src/main/java/org/apache/james/events/CassandraEventDeadLettersDAO.java
index 4bfbd32..df1f339 100644
--- a/event-bus/cassandra/src/main/java/org/apache/james/events/CassandraEventDeadLettersDAO.java
+++ b/event-bus/cassandra/src/main/java/org/apache/james/events/CassandraEventDeadLettersDAO.java
@@ -28,12 +28,10 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
import javax.inject.Inject;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.events.tables.CassandraEventDeadLettersTable;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
-import com.datastax.driver.core.querybuilder.QueryBuilder;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -59,7 +57,7 @@ public class CassandraEventDeadLettersDAO {
}
private PreparedStatement prepareInsertStatement(Session session) {
- return session.prepare(QueryBuilder.insertInto(CassandraEventDeadLettersTable.TABLE_NAME)
+ return session.prepare(insertInto(CassandraEventDeadLettersTable.TABLE_NAME)
.value(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP))
.value(CassandraEventDeadLettersTable.INSERTION_ID, bindMarker(CassandraEventDeadLettersTable.INSERTION_ID))
.value(CassandraEventDeadLettersTable.EVENT, bindMarker(CassandraEventDeadLettersTable.EVENT)));
@@ -68,25 +66,25 @@ public class CassandraEventDeadLettersDAO {
private PreparedStatement prepareDeleteStatement(Session session) {
return session.prepare(delete()
.from(CassandraEventDeadLettersTable.TABLE_NAME)
- .where(QueryBuilder.eq(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP)))
- .and(QueryBuilder.eq(CassandraEventDeadLettersTable.INSERTION_ID, bindMarker(CassandraEventDeadLettersTable.INSERTION_ID))));
+ .where(eq(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP)))
+ .and(eq(CassandraEventDeadLettersTable.INSERTION_ID, bindMarker(CassandraEventDeadLettersTable.INSERTION_ID))));
}
private PreparedStatement prepareSelectEventStatement(Session session) {
- return session.prepare(QueryBuilder.select(CassandraEventDeadLettersTable.EVENT)
+ return session.prepare(select(CassandraEventDeadLettersTable.EVENT)
.from(CassandraEventDeadLettersTable.TABLE_NAME)
- .where(QueryBuilder.eq(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP)))
- .and(QueryBuilder.eq(CassandraEventDeadLettersTable.INSERTION_ID, bindMarker(CassandraEventDeadLettersTable.INSERTION_ID))));
+ .where(eq(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP)))
+ .and(eq(CassandraEventDeadLettersTable.INSERTION_ID, bindMarker(CassandraEventDeadLettersTable.INSERTION_ID))));
}
private PreparedStatement prepareSelectInsertionIdsWithGroupStatement(Session session) {
- return session.prepare(QueryBuilder.select(CassandraEventDeadLettersTable.INSERTION_ID)
+ return session.prepare(select(CassandraEventDeadLettersTable.INSERTION_ID)
.from(CassandraEventDeadLettersTable.TABLE_NAME)
- .where(QueryBuilder.eq(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP))));
+ .where(eq(CassandraEventDeadLettersTable.GROUP, bindMarker(CassandraEventDeadLettersTable.GROUP))));
}
private PreparedStatement prepareContainEventStatement(Session session) {
- return session.prepare(QueryBuilder.select(CassandraEventDeadLettersTable.EVENT)
+ return session.prepare(select(CassandraEventDeadLettersTable.EVENT)
.from(CassandraEventDeadLettersTable.TABLE_NAME)
.limit(1));
}
@@ -122,6 +120,6 @@ public class CassandraEventDeadLettersDAO {
}
private Event deserializeEvent(String serializedEvent) {
- return eventSerializer.fromJson(serializedEvent).get();
+ return eventSerializer.asEvent(serializedEvent);
}
}
diff --git a/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersDAOTest.java b/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersDAOTest.java
index d6ba016..18fd9a6 100644
--- a/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersDAOTest.java
+++ b/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersDAOTest.java
@@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -40,7 +40,7 @@ class CassandraEventDeadLettersDAOTest {
@BeforeEach
void setUp(CassandraCluster cassandraCluster) {
- EventSerializer eventSerializer = new EventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
cassandraEventDeadLettersDAO = new CassandraEventDeadLettersDAO(cassandraCluster.getConf(), eventSerializer);
}
diff --git a/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersHealthCheckTest.java b/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersHealthCheckTest.java
index dce43af..dc2e218 100644
--- a/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersHealthCheckTest.java
+++ b/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersHealthCheckTest.java
@@ -22,7 +22,7 @@ package org.apache.james.events;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.DockerCassandra;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -39,7 +39,7 @@ class CassandraEventDeadLettersHealthCheckTest implements EventDeadLettersHealth
@BeforeEach
void setUp(CassandraCluster cassandraCluster, DockerCassandra dockerCassandra) {
- EventSerializer eventSerializer = new EventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
eventDeadLetters = new CassandraEventDeadLetters(new CassandraEventDeadLettersDAO(cassandraCluster.getConf(), eventSerializer),
new CassandraEventDeadLettersGroupDAO(cassandraCluster.getConf()));
testee = new EventDeadLettersHealthCheck(eventDeadLetters);
diff --git a/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersTest.java b/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersTest.java
index 2e3b85c..8b0dd15 100644
--- a/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersTest.java
+++ b/event-bus/cassandra/src/test/java/org/apache/james/events/CassandraEventDeadLettersTest.java
@@ -21,7 +21,7 @@ package org.apache.james.events;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -37,7 +37,7 @@ class CassandraEventDeadLettersTest implements EventDeadLettersContract.AllContr
@BeforeEach
void setUp(CassandraCluster cassandraCluster) {
- EventSerializer eventSerializer = new EventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
eventDeadLetters = new CassandraEventDeadLetters(new CassandraEventDeadLettersDAO(cassandraCluster.getConf(), eventSerializer),
new CassandraEventDeadLettersGroupDAO(cassandraCluster.getConf()));
}
diff --git a/event-bus/distributed/src/main/java/org/apache/james/events/EventDispatcher.java b/event-bus/distributed/src/main/java/org/apache/james/events/EventDispatcher.java
index 99d0a7d..9543179 100644
--- a/event-bus/distributed/src/main/java/org/apache/james/events/EventDispatcher.java
+++ b/event-bus/distributed/src/main/java/org/apache/james/events/EventDispatcher.java
@@ -36,7 +36,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Set;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.events.RoutingKeyConverter.RoutingKey;
import org.apache.james.util.MDCBuilder;
import org.apache.james.util.MDCStructuredLogger;
diff --git a/event-bus/distributed/src/main/java/org/apache/james/events/GroupConsumerRetry.java b/event-bus/distributed/src/main/java/org/apache/james/events/GroupConsumerRetry.java
index b8526f8..10d922a 100644
--- a/event-bus/distributed/src/main/java/org/apache/james/events/GroupConsumerRetry.java
+++ b/event-bus/distributed/src/main/java/org/apache/james/events/GroupConsumerRetry.java
@@ -27,7 +27,6 @@ import static org.apache.james.events.GroupRegistration.RETRY_COUNT;
import java.nio.charset.StandardCharsets;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.util.MDCStructuredLogger;
import org.apache.james.util.StructuredLogger;
import org.slf4j.Logger;
diff --git a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
index 5c6285c..ad2b7ad 100644
--- a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
+++ b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
@@ -33,7 +33,6 @@ import java.util.function.Predicate;
import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
import org.apache.james.backends.rabbitmq.ReceiverProvider;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.util.MDCBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -155,7 +154,7 @@ class GroupRegistration implements Registration {
}
private Mono<Event> deserializeEvent(byte[] eventAsBytes) {
- return Mono.fromCallable(() -> eventSerializer.fromJson(new String(eventAsBytes, StandardCharsets.UTF_8)).get())
+ return Mono.fromCallable(() -> eventSerializer.asEvent(new String(eventAsBytes, StandardCharsets.UTF_8)))
.subscribeOn(Schedulers.parallel());
}
diff --git a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
index c4f7814..8e00eaa 100644
--- a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
+++ b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
@@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
import org.apache.james.backends.rabbitmq.ReceiverProvider;
-import org.apache.james.event.json.EventSerializer;
import reactor.rabbitmq.Sender;
diff --git a/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java b/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
index be06184..db1e24b 100644
--- a/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
+++ b/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
@@ -31,7 +31,6 @@ import java.util.Optional;
import java.util.function.Predicate;
import org.apache.james.backends.rabbitmq.ReceiverProvider;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.util.MDCBuilder;
import org.apache.james.util.MDCStructuredLogger;
import org.apache.james.util.StructuredLogger;
@@ -186,7 +185,7 @@ class KeyRegistrationHandler {
}
private Event toEvent(Delivery delivery) {
- return eventSerializer.fromJson(new String(delivery.getBody(), StandardCharsets.UTF_8)).get();
+ return eventSerializer.asEvent(new String(delivery.getBody(), StandardCharsets.UTF_8));
}
private StructuredLogger structuredLogger(Event event, RegistrationKey key) {
diff --git a/event-bus/distributed/src/main/java/org/apache/james/events/RabbitMQEventBus.java b/event-bus/distributed/src/main/java/org/apache/james/events/RabbitMQEventBus.java
index 73a2209..772191b 100644
--- a/event-bus/distributed/src/main/java/org/apache/james/events/RabbitMQEventBus.java
+++ b/event-bus/distributed/src/main/java/org/apache/james/events/RabbitMQEventBus.java
@@ -26,7 +26,6 @@ import javax.inject.Inject;
import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
import org.apache.james.backends.rabbitmq.ReceiverProvider;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.lifecycle.api.Startable;
import org.apache.james.metrics.api.MetricFactory;
diff --git a/event-bus/distributed/src/test/java/org/apache/james/events/NetworkErrorTest.java b/event-bus/distributed/src/test/java/org/apache/james/events/NetworkErrorTest.java
index 2e9ec01..6584860 100644
--- a/event-bus/distributed/src/test/java/org/apache/james/events/NetworkErrorTest.java
+++ b/event-bus/distributed/src/test/java/org/apache/james/events/NetworkErrorTest.java
@@ -29,7 +29,7 @@ import static org.mockito.Mockito.verify;
import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.backends.rabbitmq.RabbitMQFixture;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -51,7 +51,7 @@ class NetworkErrorTest {
MemoryEventDeadLetters memoryEventDeadLetters = new MemoryEventDeadLetters();
TestId.Factory mailboxIdFactory = new TestId.Factory();
- EventSerializer eventSerializer = new EventSerializer(mailboxIdFactory, new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(mailboxIdFactory, new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
RoutingKeyConverter routingKeyConverter = RoutingKeyConverter.forFactories(new MailboxIdRegistrationKey.Factory(mailboxIdFactory));
eventBus = new RabbitMQEventBus(rabbitMQExtension.getSender(), rabbitMQExtension.getReceiverProvider(),
diff --git a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
index a7371d9..4f46d3f 100644
--- a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
+++ b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
@@ -26,7 +26,7 @@ import static org.apache.james.events.EventBusTestFixture.RETRY_BACKOFF_CONFIGUR
import static org.assertj.core.api.Assertions.assertThatCode;
import org.apache.james.backends.rabbitmq.RabbitMQExtension;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.events.EventBusTestFixture.GroupA;
import org.apache.james.events.GroupRegistration.WorkQueueName;
import org.apache.james.mailbox.model.TestId;
@@ -53,7 +53,7 @@ class RabbitMQEventBusDeadLetterQueueUpgradeTest {
MemoryEventDeadLetters memoryEventDeadLetters = new MemoryEventDeadLetters();
TestId.Factory mailboxIdFactory = new TestId.Factory();
- EventSerializer eventSerializer = new EventSerializer(mailboxIdFactory, new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(mailboxIdFactory, new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
RoutingKeyConverter routingKeyConverter = RoutingKeyConverter.forFactories(new MailboxIdRegistrationKey.Factory(mailboxIdFactory));
eventBus = new RabbitMQEventBus(rabbitMQExtension.getSender(), rabbitMQExtension.getReceiverProvider(),
diff --git a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusTest.java b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusTest.java
index 6313fc6..fb0e353 100644
--- a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusTest.java
+++ b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusTest.java
@@ -63,7 +63,7 @@ import org.apache.james.backends.rabbitmq.RabbitMQExtension.DockerRestartPolicy;
import org.apache.james.backends.rabbitmq.RabbitMQFixture;
import org.apache.james.backends.rabbitmq.RabbitMQManagementAPI;
import org.apache.james.backends.rabbitmq.ReceiverProvider;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.events.EventBusTestFixture.EventListenerCountingSuccessfulExecution;
import org.apache.james.events.EventBusTestFixture.GroupA;
import org.apache.james.events.EventDispatcher.DispatchingFailureGroup;
@@ -71,7 +71,6 @@ import org.apache.james.events.RoutingKeyConverter.RoutingKey;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
-import org.apache.james.mailbox.util.EventCollector;
import org.apache.james.metrics.tests.RecordingMetricFactory;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.assertj.core.data.Percentage;
@@ -107,7 +106,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
private RabbitMQEventBus eventBus2;
private RabbitMQEventBus eventBus3;
private RabbitMQEventBus eventBusWithKeyHandlerNotStarted;
- private EventSerializer eventSerializer;
+ private MailboxEventSerializer eventSerializer;
private RoutingKeyConverter routingKeyConverter;
private MemoryEventDeadLetters memoryEventDeadLetters;
@@ -121,7 +120,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
memoryEventDeadLetters = new MemoryEventDeadLetters();
TestId.Factory mailboxIdFactory = new TestId.Factory();
- eventSerializer = new EventSerializer(mailboxIdFactory, new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ eventSerializer = new MailboxEventSerializer(mailboxIdFactory, new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
routingKeyConverter = RoutingKeyConverter.forFactories(new MailboxIdRegistrationKey.Factory(mailboxIdFactory));
eventBus = newEventBus();
diff --git a/mailbox/event/json/pom.xml b/mailbox/event/json/pom.xml
index 9ef6bbb..f0bd272 100644
--- a/mailbox/event/json/pom.xml
+++ b/mailbox/event/json/pom.xml
@@ -53,6 +53,10 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>event-bus-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.beachape</groupId>
<artifactId>enumeratum_${scala.base}</artifactId>
<version>1.5.13</version>
diff --git a/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala b/mailbox/event/json/src/main/scala/org/apache/james/event/json/MailboxEventSerializer.scala
similarity index 96%
rename from mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala
rename to mailbox/event/json/src/main/scala/org/apache/james/event/json/MailboxEventSerializer.scala
index 6708055..4a97b73 100644
--- a/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala
+++ b/mailbox/event/json/src/main/scala/org/apache/james/event/json/MailboxEventSerializer.scala
@@ -31,7 +31,7 @@ import org.apache.james.event.json.DTOs._
import org.apache.james.events
import org.apache.james.events.Event.EventId
import org.apache.james.events.MailboxEvents.{Added => JavaAdded, Expunged => JavaExpunged, FlagsUpdated => JavaFlagsUpdated, MailboxACLUpdated => JavaMailboxACLUpdated, MailboxAdded => JavaMailboxAdded, MailboxDeletion => JavaMailboxDeletion, MailboxRenamed => JavaMailboxRenamed, QuotaUsageUpdatedEvent => JavaQuotaUsageUpdatedEvent}
-import org.apache.james.events.MessageMoveEvent
+import org.apache.james.events.{EventSerializer, MessageMoveEvent => JavaMessageMoveEvent}
import org.apache.james.mailbox.MailboxSession.SessionId
import org.apache.james.mailbox.model.{MailboxId, MessageId, MessageMoves, QuotaRoot, MailboxACL => JavaMailboxACL, MessageMetaData => JavaMessageMetaData, Quota => JavaQuota}
import org.apache.james.mailbox.quota.QuotaRootDeserializer
@@ -174,7 +174,7 @@ private object ScalaConverter {
mailboxId = event.getMailboxId,
expunged = event.getExpunged.asScala.view.mapValues(DTOs.MessageMetaData.fromJava).toMap)
- private def toScala(event: MessageMoveEvent): DTO.MessageMoveEvent = DTO.MessageMoveEvent(
+ private def toScala(event: JavaMessageMoveEvent): DTO.MessageMoveEvent = DTO.MessageMoveEvent(
eventId = event.getEventId,
user = event.getUsername,
previousMailboxIds = event.getMessageMoves.getPreviousMailboxIds.asScala.toSet,
@@ -197,7 +197,7 @@ private object ScalaConverter {
case e: JavaMailboxAdded => toScala(e)
case e: JavaMailboxDeletion => toScala(e)
case e: JavaMailboxRenamed => toScala(e)
- case e: MessageMoveEvent => toScala(e)
+ case e: JavaMessageMoveEvent => toScala(e)
case e: JavaQuotaUsageUpdatedEvent => toScala(e)
case _ => throw new RuntimeException("no Scala conversion known")
}
@@ -353,10 +353,13 @@ class JsonSerialize(mailboxIdFactory: MailboxId.Factory, messageIdFactory: Messa
.map(event => event.toJava)
}
-class EventSerializer @Inject() (mailboxIdFactory: MailboxId.Factory, messageIdFactory: MessageId.Factory, quotaRootDeserializer: QuotaRootDeserializer) {
+class MailboxEventSerializer @Inject()(mailboxIdFactory: MailboxId.Factory, messageIdFactory: MessageId.Factory, quotaRootDeserializer: QuotaRootDeserializer) extends EventSerializer{
private val jsonSerialize = new JsonSerialize(mailboxIdFactory, messageIdFactory, quotaRootDeserializer)
- def toJson(event: events.Event): String = jsonSerialize.toJson(event)
+ override def toJson(event: events.Event): String = jsonSerialize.toJson(event)
+
def fromJson(json: String): JsResult[events.Event] = jsonSerialize.fromJson(json)
+
+ override def asEvent(serialized: String): events.Event = fromJson(serialized).get
}
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java
index a9e6deb..300549f 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/SerializerFixture.java
@@ -26,7 +26,7 @@ import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
public interface SerializerFixture {
JsonSerialize DTO_JSON_SERIALIZE = new JsonSerialize(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
- EventSerializer EVENT_SERIALIZER = new EventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer EVENT_SERIALIZER = new MailboxEventSerializer(new TestId.Factory(), new TestMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
String SERIALIZED_EVENT_ID = "6e0dd59d-660e-4d9b-b22f-0354479f47b4";
Event.EventId EVENT_ID = Event.EventId.of(SERIALIZED_EVENT_ID);
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
index 7b6d999..7fe9406 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
@@ -30,7 +30,7 @@ import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
import org.apache.james.core.quota.QuotaCountLimit;
import org.apache.james.core.quota.QuotaSizeLimit;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.events.EventBusId;
import org.apache.james.events.MailboxIdRegistrationKey;
import org.apache.james.events.MemoryEventDeadLetters;
@@ -115,7 +115,7 @@ public class RabbitMQEventBusHostSystem extends JamesImapHostSystem {
private RabbitMQEventBus createEventBus() {
InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
InMemoryId.Factory mailboxIdFactory = new InMemoryId.Factory();
- EventSerializer eventSerializer = new EventSerializer(mailboxIdFactory, messageIdFactory, new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(mailboxIdFactory, messageIdFactory, new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
RoutingKeyConverter routingKeyConverter = new RoutingKeyConverter(ImmutableSet.of(new MailboxIdRegistrationKey.Factory(mailboxIdFactory)));
return new RabbitMQEventBus(reactorRabbitMQChannelPool.getSender(), reactorRabbitMQChannelPool::createReceiver,
eventSerializer, RetryBackoffConfiguration.DEFAULT, routingKeyConverter, new MemoryEventDeadLetters(),
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/event/RabbitMQEventBusModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/event/RabbitMQEventBusModule.java
index b358074..3b83a14 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/event/RabbitMQEventBusModule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/event/RabbitMQEventBusModule.java
@@ -20,9 +20,10 @@
package org.apache.james.modules.event;
import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.events.EventBus;
import org.apache.james.events.EventBusId;
+import org.apache.james.events.EventSerializer;
import org.apache.james.events.KeyReconnectionHandler;
import org.apache.james.events.MailboxIdRegistrationKey;
import org.apache.james.events.RabbitMQEventBus;
@@ -40,7 +41,8 @@ public class RabbitMQEventBusModule extends AbstractModule {
@Override
protected void configure() {
- bind(EventSerializer.class).in(Scopes.SINGLETON);
+ bind(MailboxEventSerializer.class).in(Scopes.SINGLETON);
+ bind(EventSerializer.class).to(MailboxEventSerializer.class);
bind(RabbitMQEventBus.class).in(Scopes.SINGLETON);
bind(EventBus.class).to(RabbitMQEventBus.class);
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
index 48fd9a1..27a1c47 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
@@ -20,8 +20,10 @@
package org.apache.james.modules.mailbox;
import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.events.EventBus;
import org.apache.james.events.EventListener;
+import org.apache.james.events.EventSerializer;
import org.apache.james.events.InVMEventBus;
import org.apache.james.events.RetryBackoffConfiguration;
import org.apache.james.events.delivery.EventDelivery;
@@ -42,6 +44,9 @@ import com.google.inject.multibindings.ProvidesIntoSet;
public class DefaultEventModule extends AbstractModule {
@Override
protected void configure() {
+ bind(MailboxEventSerializer.class).in(Scopes.SINGLETON);
+ bind(EventSerializer.class).to(MailboxEventSerializer.class);
+
bind(MailboxListenerFactory.class).in(Scopes.SINGLETON);
bind(MailboxListenersLoaderImpl.class).in(Scopes.SINGLETON);
bind(InVmEventDelivery.class).in(Scopes.SINGLETON);
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
index 2132992..8f9b294 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
@@ -28,9 +28,9 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
-import org.apache.james.event.json.EventSerializer;
import org.apache.james.events.Event;
import org.apache.james.events.EventDeadLetters;
+import org.apache.james.events.EventSerializer;
import org.apache.james.events.Group;
import org.apache.james.task.TaskManager;
import org.apache.james.webadmin.Routes;
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
index 5c5f757..84366e8 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
@@ -32,7 +32,7 @@ import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import org.apache.james.core.Username;
-import org.apache.james.event.json.EventSerializer;
+import org.apache.james.event.json.MailboxEventSerializer;
import org.apache.james.events.Event;
import org.apache.james.events.EventBus;
import org.apache.james.events.EventBusTestFixture;
@@ -119,7 +119,7 @@ class EventDeadLettersRoutesTest {
void beforeEach() {
deadLetters = new MemoryEventDeadLetters();
JsonTransformer jsonTransformer = new JsonTransformer();
- EventSerializer eventSerializer = new EventSerializer(new InMemoryId.Factory(), new InMemoryMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
+ MailboxEventSerializer eventSerializer = new MailboxEventSerializer(new InMemoryId.Factory(), new InMemoryMessageId.Factory(), new DefaultUserQuotaRootResolver.DefaultQuotaRootDeserializer());
eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), RetryBackoffConfiguration.DEFAULT, deadLetters);
EventDeadLettersRedeliverService redeliverService = new EventDeadLettersRedeliverService(eventBus, deadLetters);
EventDeadLettersService service = new EventDeadLettersService(redeliverService, deadLetters);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org