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