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 ma...@apache.org on 2020/02/27 16:20:24 UTC

[james-project] 03/14: JAMES-3009 convert to scala event-sourcing-pojo

This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 739f5a15793a65765d1319e1254a5e2303633305
Author: RĂ©mi KOWALSKI <rk...@linagora.com>
AuthorDate: Mon Dec 9 14:10:16 2019 +0100

    JAMES-3009 convert to scala event-sourcing-pojo
---
 .../james/eventsourcing/CommandDispatcher.java     |  2 +
 .../apache/james/eventsourcing/CommandHandler.java |  2 +
 .../org/apache/james/eventsourcing/EventBus.java   |  1 +
 .../james/eventsourcing/EventSourcingSystem.java   |  2 +
 .../org/apache/james/eventsourcing/Subscriber.java |  2 +
 .../eventsourcing/DataCollectorSubscriber.java     |  1 +
 .../eventsourcing/EventSourcingSystemTest.java     |  3 +
 event-sourcing/event-sourcing-pojo/pom.xml         | 16 ++++
 .../org/apache/james/eventsourcing/EventId.java    | 86 ----------------------
 .../apache/james/eventsourcing/AggregateId.scala}  | 13 ++--
 .../org/apache/james/eventsourcing/Command.scala}  | 10 +--
 .../org/apache/james/eventsourcing/Event.scala     | 23 ++++--
 .../org/apache/james/eventsourcing/EventId.scala}  | 39 +++++-----
 .../apache/james/eventsourcing/EventIdTest.java    |  5 +-
 .../james/eventsourcing/TestAggregateId.java       |  3 +-
 .../org/apache/james/eventsourcing/TestEvent.java  |  2 +
 .../james/eventsourcing/eventstore/History.scala   |  8 +-
 .../eventstore/memory/InMemoryEventStore.scala     |  8 +-
 .../distributed/RabbitMQWorkQueueSupplier.scala    |  1 -
 .../eventsourcing/EventSourcingTaskManager.scala   |  3 +-
 .../eventsourcing/ScalaEventSourcingSystem.scala   |  3 -
 .../TaskExecutionDetailsProjection.scala           |  1 -
 .../task/eventsourcing/TerminationSubscriber.scala | 11 ++-
 .../task/eventsourcing/WorkQueueSupplier.scala     |  1 -
 .../task/eventsourcing/WorkerStatusListener.scala  |  1 -
 .../TerminationSubscriberContract.java             |  2 +-
 26 files changed, 98 insertions(+), 151 deletions(-)

diff --git a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandDispatcher.java b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandDispatcher.java
index ba22d04..9efc3c0 100644
--- a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandDispatcher.java
+++ b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandDispatcher.java
@@ -31,6 +31,8 @@ import javax.inject.Inject;
 import org.apache.james.eventsourcing.eventstore.EventStoreFailedException;
 
 import com.github.steveash.guavate.Guavate;
+import org.apache.james.eventsourcing.Command;
+import org.apache.james.eventsourcing.Event;
 
 public class CommandDispatcher {
 
diff --git a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandHandler.java b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandHandler.java
index 6b8aacf..cb51ae9 100644
--- a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandHandler.java
+++ b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/CommandHandler.java
@@ -21,6 +21,8 @@ package org.apache.james.eventsourcing;
 
 import java.util.List;
 
+import org.apache.james.eventsourcing.Event;
+
 public interface CommandHandler<C> {
 
     Class<C> handledClass();
diff --git a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventBus.java b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventBus.java
index 22b817f..5d17bd2 100644
--- a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventBus.java
+++ b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventBus.java
@@ -31,6 +31,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.ImmutableSet;
+import org.apache.james.eventsourcing.Event;
 
 public class EventBus {
 
diff --git a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventSourcingSystem.java b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventSourcingSystem.java
index e077fe6..53c7f2a 100644
--- a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventSourcingSystem.java
+++ b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/EventSourcingSystem.java
@@ -23,6 +23,8 @@ import java.util.Set;
 
 import org.apache.james.eventsourcing.eventstore.EventStore;
 
+import org.apache.james.eventsourcing.Command;
+
 public class EventSourcingSystem {
     private final CommandDispatcher commandDispatcher;
 
diff --git a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/Subscriber.java b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/Subscriber.java
index 42a804d..57a9f35 100644
--- a/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/Subscriber.java
+++ b/event-sourcing/event-sourcing-core/src/main/java/org/apache/james/eventsourcing/Subscriber.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.eventsourcing;
 
+import org.apache.james.eventsourcing.Event;
+
 public interface Subscriber {
     void handle(Event event);
 }
diff --git a/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/DataCollectorSubscriber.java b/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/DataCollectorSubscriber.java
index 85fccd1..d1f65e6 100644
--- a/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/DataCollectorSubscriber.java
+++ b/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/DataCollectorSubscriber.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.james.eventsourcing.Event;
 
 public class DataCollectorSubscriber implements Subscriber {
 
diff --git a/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/EventSourcingSystemTest.java b/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/EventSourcingSystemTest.java
index 3fe8297..6dbe68a 100644
--- a/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/EventSourcingSystemTest.java
+++ b/event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/EventSourcingSystemTest.java
@@ -37,6 +37,9 @@ import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
+import org.apache.james.eventsourcing.Command;
+import org.apache.james.eventsourcing.Event;
+import org.apache.james.eventsourcing.EventId;
 import scala.jdk.javaapi.CollectionConverters;
 
 public interface EventSourcingSystemTest {
diff --git a/event-sourcing/event-sourcing-pojo/pom.xml b/event-sourcing/event-sourcing-pojo/pom.xml
index 9740849..dcf6484 100644
--- a/event-sourcing/event-sourcing-pojo/pom.xml
+++ b/event-sourcing/event-sourcing-pojo/pom.xml
@@ -41,5 +41,21 @@
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.scala-lang.modules</groupId>
+            <artifactId>scala-java8-compat_${scala.base}</artifactId>
+        </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>net.alchim31.maven</groupId>
+                <artifactId>scala-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>
diff --git a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/EventId.java b/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/EventId.java
deleted file mode 100644
index cb5bd1e..0000000
--- a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/EventId.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.eventsourcing;
-
-import java.util.Objects;
-import java.util.Optional;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Preconditions;
-
-public class EventId implements Comparable<EventId> {
-
-    public static EventId fromSerialized(int value) {
-        return new EventId(value);
-    }
-
-    public static EventId first() {
-        return new EventId(0);
-    }
-
-    private final int value;
-
-    private EventId(int value) {
-        Preconditions.checkArgument(value >= 0, "EventId can not be negative");
-        this.value = value;
-    }
-
-    public EventId next() {
-        return new EventId(value + 1);
-    }
-
-    public Optional<EventId> previous() {
-        if (value > 0) {
-            return Optional.of(new EventId(value - 1));
-        }
-        return Optional.empty();
-    }
-
-    @Override
-    public int compareTo(EventId o) {
-        return Long.compare(value, o.value);
-    }
-
-    @Override
-    public final boolean equals(Object o) {
-        if (o instanceof EventId) {
-            EventId eventId = (EventId) o;
-
-            return Objects.equals(this.value, eventId.value);
-        }
-        return false;
-    }
-
-    @Override
-    public final int hashCode() {
-        return Objects.hash(value);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-            .add("value", value)
-            .toString();
-    }
-
-    public int serialize() {
-        return value;
-    }
-}
diff --git a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/AggregateId.java b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/AggregateId.scala
similarity index 81%
rename from event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/AggregateId.java
rename to event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/AggregateId.scala
index 18c6224..77eb679 100644
--- a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/AggregateId.java
+++ b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/AggregateId.scala
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance   *
  * with the License.  You may obtain a copy of the License at   *
  *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ * http://www.apache.org/licenses/LICENSE-2.0                   *
  *                                                              *
  * Unless required by applicable law or agreed to in writing,   *
  * software distributed under the License is distributed on an  *
@@ -15,10 +15,9 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- ****************************************************************/
+ * ***************************************************************/
+package org.apache.james.eventsourcing
 
-package org.apache.james.eventsourcing;
-
-public interface AggregateId {
-    String asAggregateKey();
-}
+trait AggregateId {
+  def asAggregateKey : String
+}
\ No newline at end of file
diff --git a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/Command.java b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/Command.scala
similarity index 84%
rename from event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/Command.java
rename to event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/Command.scala
index dad8332..4976e1a 100644
--- a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/Command.java
+++ b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/Command.scala
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance   *
  * with the License.  You may obtain a copy of the License at   *
  *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ * http://www.apache.org/licenses/LICENSE-2.0                   *
  *                                                              *
  * Unless required by applicable law or agreed to in writing,   *
  * software distributed under the License is distributed on an  *
@@ -15,9 +15,7 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- ****************************************************************/
+ * ***************************************************************/
+package org.apache.james.eventsourcing
 
-package org.apache.james.eventsourcing;
-
-public interface Command {
-}
+trait Command {}
\ No newline at end of file
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/Event.scala
similarity index 73%
copy from server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala
copy to event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/Event.scala
index 0265359..c530413 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala
+++ b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/Event.scala
@@ -16,12 +16,21 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  * ***************************************************************/
-package org.apache.james.task.eventsourcing
+package org.apache.james.eventsourcing
 
-import org.apache.james.eventsourcing.EventSourcingSystem
-import org.apache.james.task.WorkQueue
-
-@FunctionalInterface
-trait WorkQueueSupplier {
-  def apply(eventSourcingSystem: EventSourcingSystem): WorkQueue
+object Event {
+  def belongsToSameAggregate(events: List[_ <: Event]) = events
+    .view
+    .map(event => event.getAggregateId)
+    .distinct
+    .take(2)
+    .size == 1
 }
+
+trait Event extends Comparable[Event] {
+  def eventId: EventId
+
+  def getAggregateId: AggregateId
+
+  override def compareTo(o: Event): Int = eventId.compareTo(o.eventId)
+}
\ No newline at end of file
diff --git a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/Event.java b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/EventId.scala
similarity index 55%
rename from event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/Event.java
rename to event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/EventId.scala
index 2b31374..077aae1 100644
--- a/event-sourcing/event-sourcing-pojo/src/main/java/org/apache/james/eventsourcing/Event.java
+++ b/event-sourcing/event-sourcing-pojo/src/main/scala/org/apache/james/eventsourcing/EventId.scala
@@ -1,4 +1,4 @@
-/****************************************************************
+/** **************************************************************
  * Licensed to the Apache Software Foundation (ASF) under one   *
  * or more contributor license agreements.  See the NOTICE file *
  * distributed with this work for additional information        *
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance   *
  * with the License.  You may obtain a copy of the License at   *
  *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ * http://www.apache.org/licenses/LICENSE-2.0                   *
  *                                                              *
  * Unless required by applicable law or agreed to in writing,   *
  * software distributed under the License is distributed on an  *
@@ -15,29 +15,28 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- ****************************************************************/
+ * ***************************************************************/
+package org.apache.james.eventsourcing
 
-package org.apache.james.eventsourcing;
+import com.google.common.base.Preconditions
 
-import java.util.List;
+object EventId {
+  def fromSerialized(value: Int) = new EventId(value)
 
-public interface Event extends Comparable<Event> {
+  def first = new EventId(0)
+}
 
-    static boolean belongsToSameAggregate(List<? extends Event> events) {
-        return events.stream()
-            .map(Event::getAggregateId)
-            .distinct()
-            .limit(2)
-            .count() == 1;
-    }
+final case class EventId private(value: Int) extends Comparable[EventId] {
+  Preconditions.checkArgument(value >= 0, "EventId can not be negative".asInstanceOf[Object])
 
-    EventId eventId();
+  def next = new EventId(value + 1)
 
-    AggregateId getAggregateId();
+  def previous: Option[EventId] = {
+    if (value > 0) return Some(new EventId(value - 1))
+    None
+  }
 
-    @Override
-    default int compareTo(Event o) {
-        return eventId().compareTo(o.eventId());
-    }
+  override def compareTo(o: EventId): Int = value.compareTo(o.value)
 
-}
+  def serialize: Int = value
+}
\ No newline at end of file
diff --git a/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/EventIdTest.java b/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/EventIdTest.java
index ea566f8..e411e39 100644
--- a/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/EventIdTest.java
+++ b/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/EventIdTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
+import scala.jdk.javaapi.OptionConverters;
 
 class EventIdTest {
 
@@ -41,7 +42,7 @@ class EventIdTest {
 
     @Test
     void previousShouldReturnEmptyWhenBeforeFirst() {
-        assertThat(EventId.first().previous())
+        assertThat(OptionConverters.toJava(EventId.first().previous()))
             .isEmpty();
     }
 
@@ -65,7 +66,7 @@ class EventIdTest {
 
     @Test
     void previousShouldRevertNext() {
-        assertThat(EventId.first().next().previous())
+        assertThat(OptionConverters.toJava(EventId.first().next().previous()))
             .contains(EventId.first());
     }
 
diff --git a/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestAggregateId.java b/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestAggregateId.java
index b3ae78c..2c53628 100644
--- a/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestAggregateId.java
+++ b/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestAggregateId.java
@@ -22,8 +22,9 @@ package org.apache.james.eventsourcing;
 import java.util.Objects;
 
 import com.google.common.base.MoreObjects;
+import org.apache.james.eventsourcing.AggregateId;
 
-public class TestAggregateId implements AggregateId  {
+public class TestAggregateId implements AggregateId {
 
     public static TestAggregateId testId(int id) {
         return new TestAggregateId(id);
diff --git a/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestEvent.java b/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestEvent.java
index c46f804..c65b96d 100644
--- a/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestEvent.java
+++ b/event-sourcing/event-sourcing-pojo/src/test/java/org/apache/james/eventsourcing/TestEvent.java
@@ -23,6 +23,8 @@ import java.util.Comparator;
 import java.util.Objects;
 
 import com.google.common.base.MoreObjects;
+import org.apache.james.eventsourcing.Event;
+import org.apache.james.eventsourcing.EventId;
 
 public class TestEvent implements Event {
     private final EventId id;
diff --git a/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/History.scala b/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/History.scala
index 05c8fb2..29d0132 100644
--- a/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/History.scala
+++ b/event-sourcing/event-store-api/src/main/scala/org/apache/james/eventsourcing/eventstore/History.scala
@@ -33,15 +33,17 @@ object History {
   def of(events: Event*): History = of(events.toList)
 }
 
-case class History private(events: List[Event]) {
+final case class History private(events: List[Event]) {
   if (hasEventIdDuplicates(events)) throw EventStoreFailedException("Event History contains duplicated EventId")
 
   private def hasEventIdDuplicates(events: List[Event]) = {
-    val eventIdsNumber = events.map(event => event.eventId()).toSet.size
+    val eventIdsNumber = events.map(event => event.eventId).toSet.size
     eventIdsNumber != events.size
   }
 
-  def getVersion: Option[EventId] = events.map(event => event.eventId()).maxOption
+  def getVersion: Option[EventId] = events
+    .map(event => event.eventId)
+    .maxOption
 
   def getEvents = events
 
diff --git a/event-sourcing/event-store-memory/src/main/scala/org/apache/james/eventsourcing/eventstore/memory/InMemoryEventStore.scala b/event-sourcing/event-store-memory/src/main/scala/org/apache/james/eventsourcing/eventstore/memory/InMemoryEventStore.scala
index 155d90b..b689e0d 100644
--- a/event-sourcing/event-store-memory/src/main/scala/org/apache/james/eventsourcing/eventstore/memory/InMemoryEventStore.scala
+++ b/event-sourcing/event-store-memory/src/main/scala/org/apache/james/eventsourcing/eventstore/memory/InMemoryEventStore.scala
@@ -28,19 +28,19 @@ import org.apache.james.eventsourcing.{AggregateId, Event}
 import scala.jdk.CollectionConverters._
 
 class InMemoryEventStore() extends EventStore {
-  private val storeRef: AtomicReference[Map[AggregateId, History]] = new AtomicReference(Map().withDefault(_ => History.empty()))
+  private val storeRef: AtomicReference[Map[AggregateId, History]] = new AtomicReference(Map().withDefault(_ => History.empty))
 
-  override def appendAll(events: util.List[Event]): Unit = if (!events.isEmpty) appendAll(events.asScala.toSeq)
+  override def appendAll(events: List[Event]): Unit = if (events.nonEmpty) doAppendAll(events)
 
   override def getEventsOfAggregate(aggregateId: AggregateId): History = {
     Preconditions.checkNotNull(aggregateId)
     storeRef.get()(aggregateId)
   }
 
-  def appendAll(events: Seq[Event]): Unit = {
+  private def doAppendAll(events: Seq[Event]): Unit = {
     val aggregateId: AggregateId = getAggregateId(events)
     storeRef.updateAndGet(store => {
-      val updatedHistory = History.of((store(aggregateId).getEvents.asScala.toSeq ++ events).asJava)
+      val updatedHistory = History.of(store(aggregateId).getEvents ++ events)
       store.updated(aggregateId, updatedHistory)
     })
   }
diff --git a/server/task/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala b/server/task/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala
index 7feed07..ee82bcb 100644
--- a/server/task/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala
+++ b/server/task/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala
@@ -23,7 +23,6 @@ import java.time.Duration
 import com.google.common.annotations.VisibleForTesting
 import javax.inject.Inject
 import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool
-import org.apache.james.eventsourcing.EventSourcingSystem
 import org.apache.james.server.task.json.JsonTaskSerializer
 import org.apache.james.task.SerialTaskManagerWorker
 import org.apache.james.task.eventsourcing.{WorkQueueSupplier, WorkerStatusListener}
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/EventSourcingTaskManager.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/EventSourcingTaskManager.scala
index 025d9ef..9d8eaaa 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/EventSourcingTaskManager.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/EventSourcingTaskManager.scala
@@ -26,10 +26,11 @@ import com.google.common.annotations.VisibleForTesting
 import javax.annotation.PreDestroy
 import javax.inject.Inject
 import org.apache.james.eventsourcing.eventstore.{EventStore, History}
-import org.apache.james.eventsourcing.{AggregateId, Subscriber}
+import org.apache.james.eventsourcing.Subscriber
 import org.apache.james.lifecycle.api.Startable
 import org.apache.james.task.TaskManager.ReachedTimeoutException
 import org.apache.james.task._
+import eventsourcing.AggregateId
 import org.apache.james.task.eventsourcing.TaskCommand._
 import reactor.core.publisher.{Flux, Mono}
 import reactor.core.scheduler.Schedulers
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/ScalaEventSourcingSystem.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/ScalaEventSourcingSystem.scala
index 2271854..14665c1 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/ScalaEventSourcingSystem.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/ScalaEventSourcingSystem.scala
@@ -18,9 +18,6 @@
   * ***************************************************************/
 package org.apache.james.task.eventsourcing
 
-import org.apache.james.eventsourcing.eventstore.EventStore
-import org.apache.james.eventsourcing.{CommandHandler, EventSourcingSystem, Subscriber}
-
 object ScalaEventSourcingSystem {
   import scala.jdk.CollectionConverters._
   def apply(handlers: Set[CommandHandler[_]], subscribers: Set[Subscriber], eventStore: EventStore): EventSourcingSystem =
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala
index 2986410..0791a10 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala
@@ -20,7 +20,6 @@ package org.apache.james.task.eventsourcing
 
 import java.util.concurrent.ConcurrentHashMap
 
-import org.apache.james.eventsourcing.Subscriber
 import org.apache.james.task.{Hostname, TaskExecutionDetails, TaskId}
 import scala.compat.java8.OptionConverters._
 
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TerminationSubscriber.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TerminationSubscriber.scala
index b0c705b..7aef9b1 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TerminationSubscriber.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TerminationSubscriber.scala
@@ -1,4 +1,4 @@
-/** **************************************************************
+ /***************************************************************
  * Licensed to the Apache Software Foundation (ASF) under one   *
  * or more contributor license agreements.  See the NOTICE file *
  * distributed with this work for additional information        *
@@ -6,22 +6,21 @@
  * to you under the Apache License, Version 2.0 (the            *
  * "License"); you may not use this file except in compliance   *
  * with the License.  You may obtain a copy of the License at   *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0                   *
- * *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
  * Unless required by applicable law or agreed to in writing,   *
  * software distributed under the License is distributed on an  *
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- * ***************************************************************/
+ ****************************************************************/
 
 package org.apache.james.task.eventsourcing
 
 import org.apache.james.eventsourcing.{Event, Subscriber}
 import org.reactivestreams.Publisher
-
 import reactor.core.publisher.DirectProcessor
 
 trait TerminationSubscriber extends Subscriber {
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala
index 0265359..c8ba092 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkQueueSupplier.scala
@@ -18,7 +18,6 @@
  * ***************************************************************/
 package org.apache.james.task.eventsourcing
 
-import org.apache.james.eventsourcing.EventSourcingSystem
 import org.apache.james.task.WorkQueue
 
 @FunctionalInterface
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkerStatusListener.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkerStatusListener.scala
index aa93d82..5324514 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkerStatusListener.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/WorkerStatusListener.scala
@@ -22,7 +22,6 @@ package org.apache.james.task.eventsourcing
 import java.util.Optional
 
 import com.google.common.base.Throwables
-import org.apache.james.eventsourcing.EventSourcingSystem
 import org.apache.james.task.Task.Result
 import org.apache.james.task.eventsourcing.TaskCommand._
 import org.apache.james.task.{TaskExecutionDetails, TaskId, TaskManagerWorker}
diff --git a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java
index b63c170..4fdda8b 100644
--- a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java
+++ b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java
@@ -29,7 +29,7 @@ import java.util.List;
 
 import org.apache.james.eventsourcing.Event;
 import org.apache.james.eventsourcing.EventId;
-import org.apache.james.task.CompletedTask;
+
 import org.apache.james.task.Hostname;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskId;


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org