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]

Reply via email to