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 ebabecdf8911632055d1e55ee35fd65ddfc3d8f1 Author: Benoit TELLIER <[email protected]> AuthorDate: Mon Dec 1 15:41:05 2025 +0100 JAMES-3340 EmailQueryViewUtils.EmailEntry should rely on record --- .../projections/CassandraEmailQueryView.java | 12 +++--- .../jmap/api/projections/EmailQueryViewUtils.java | 46 ++-------------------- 2 files changed, 10 insertions(+), 48 deletions(-) diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java index 1a085d3912..5673f459cf 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java @@ -218,15 +218,15 @@ public class CassandraEmailQueryView implements EmailQueryView { .map(asEmailEntry(SENT_AT)); if (collapseThreads) { - return baseEntries.groupBy(EmailEntry::getThreadId) + return baseEntries.groupBy(EmailEntry::threadId) .flatMap(group -> group.reduce((e1, e2) -> - e1.getMessageDate().isAfter(e2.getMessageDate()) ? e1 : e2)) - .sort(Comparator.comparing(EmailEntry::getMessageDate).reversed()) - .map(EmailEntry::getMessageId) + e1.messageDate().isAfter(e2.messageDate()) ? e1 : e2)) + .sort(Comparator.comparing(EmailEntry::messageDate).reversed()) + .map(EmailEntry::messageId) .take(limit.getLimit().get()); } - return baseEntries.sort(Comparator.comparing(EmailEntry::getMessageDate).reversed()) - .map(EmailEntry::getMessageId) + return baseEntries.sort(Comparator.comparing(EmailEntry::messageDate).reversed()) + .map(EmailEntry::messageId) .take(limit.getLimit().get()); } diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/EmailQueryViewUtils.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/EmailQueryViewUtils.java index 3bc7342336..8c6cfe0e90 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/EmailQueryViewUtils.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/EmailQueryViewUtils.java @@ -22,7 +22,6 @@ package org.apache.james.jmap.api.projections; import java.time.Instant; import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.function.Function; import org.apache.james.mailbox.model.MessageId; @@ -37,45 +36,8 @@ import reactor.core.publisher.Flux; public class EmailQueryViewUtils { private static final int COLLAPSE_THREADS_LIMIT_MULTIPLIER = 4; - public static class EmailEntry { - private final MessageId messageId; - private final ThreadId threadId; - private final Instant messageDate; + public record EmailEntry(MessageId messageId, ThreadId threadId, Instant messageDate) { - public EmailEntry(MessageId messageId, ThreadId threadId, Instant messageDate) { - this.messageId = messageId; - this.threadId = threadId; - this.messageDate = messageDate; - } - - public MessageId getMessageId() { - return messageId; - } - - public ThreadId getThreadId() { - return threadId; - } - - public Instant getMessageDate() { - return messageDate; - } - - @Override - public final boolean equals(Object o) { - if (o instanceof EmailEntry) { - EmailEntry entry = (EmailEntry) o; - - return Objects.equals(this.messageId, entry.messageId) - && Objects.equals(this.threadId, entry.threadId) - && Objects.equals(this.messageDate, entry.messageDate); - } - return false; - } - - @Override - public final int hashCode() { - return Objects.hash(messageId, threadId, messageDate); - } } public interface QueryViewExtender { @@ -99,7 +61,7 @@ public class EmailQueryViewUtils { @Override public Flux<MessageId> resolve(Function<Limit, Flux<EmailEntry>> fetchMoreResults) { - return fetchMoreResults.apply(limit).map(EmailEntry::getMessageId); + return fetchMoreResults.apply(limit).map(EmailEntry::messageId); } } @@ -123,7 +85,7 @@ public class EmailQueryViewUtils { if (hasEnoughResults || isExhaustive) { return Flux.fromIterable(distinctByThreadId) .take(initialLimit.getLimit().get()) - .map(EmailEntry::getMessageId); + .map(EmailEntry::messageId); } return increaseBackendetchLimit().resolve(fetchMoreResults); }); @@ -137,7 +99,7 @@ public class EmailQueryViewUtils { ImmutableList.Builder<EmailEntry> list = ImmutableList.builder(); HashSet<ThreadId> threadIdHashSet = new HashSet<>(); emailEntries.forEach(emailEntry -> { - if (threadIdHashSet.add(emailEntry.getThreadId())) { + if (threadIdHashSet.add(emailEntry.threadId())) { list.add(emailEntry); } }); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
