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 e471caec26fd88484da630069918a653399eb29d
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Tue Dec 10 21:58:41 2024 +0100

    [PERF] EventListener support for several events at once
---
 .../api/src/main/java/org/apache/james/events/EventListener.java  | 8 ++++++++
 .../scala/org/apache/james/jmap/change/JmapEventSerializer.scala  | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git 
a/event-bus/api/src/main/java/org/apache/james/events/EventListener.java 
b/event-bus/api/src/main/java/org/apache/james/events/EventListener.java
index 93084fb4b1..9631a21121 100644
--- a/event-bus/api/src/main/java/org/apache/james/events/EventListener.java
+++ b/event-bus/api/src/main/java/org/apache/james/events/EventListener.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.events;
 
+import java.util.List;
 import java.util.Objects;
 
 import org.apache.james.util.ReactorUtils;
@@ -26,6 +27,7 @@ import org.reactivestreams.Publisher;
 
 import com.github.fge.lambdas.Throwing;
 
+import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 /**
@@ -36,6 +38,12 @@ public interface EventListener {
     interface ReactiveEventListener extends EventListener {
         Publisher<Void> reactiveEvent(Event event);
 
+        default Publisher<Void> reactiveEvent(List<Event> event) {
+            return Flux.fromIterable(event)
+                .concatMap(this::reactiveEvent)
+                .then();
+        }
+
         default void event(Event event) throws Exception {
             Mono.from(reactiveEvent(event))
                 .block();
diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/JmapEventSerializer.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/JmapEventSerializer.scala
index d6f4f4c65e..7212e1cea9 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/JmapEventSerializer.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/JmapEventSerializer.scala
@@ -95,7 +95,9 @@ case class JmapEventSerializer 
@Inject()(stateChangeEventDTOFactory: StateChange
   override def fromBytes(serialized: Array[Byte]): Event = 
genericSerializer.deserializeFromBytes(serialized)
 
   override def toJson(event: util.Collection[Event]): String = {
-    Preconditions.checkArgument(event.size() == 1, "Not supported for multiple 
events, please serialize separately")
+    if (event.size() != 1) {
+      throw new IllegalArgumentException("Not supported for multiple events, 
please serialize separately")
+    }
     toJson(event.iterator().next())
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to