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

danhaywood pushed a commit to branch CAUSEWAY-3799
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 58a833c4f344461e25bd87bbc2308720932dc648
Author: Dan Haywood <[email protected]>
AuthorDate: Thu Jun 27 14:37:52 2024 +0100

    CAUSEWAY-3799: ensures that PropertyChangeRecord and PropertyChangeRecordId 
are both comparable also
    
    so that if they are added to a TreeSet, then duplicates will be found.
    
    (Don't think this is the root cause of the problem - seems that HashSets 
are used everywhere.  But still)
---
 .../services/objectlifecycle/PropertyChangeRecord.java        |  9 ++++++++-
 .../services/objectlifecycle/PropertyChangeRecordId.java      | 11 ++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
index 4da675e8fc..c958276a36 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
@@ -19,6 +19,7 @@
 package org.apache.causeway.core.metamodel.services.objectlifecycle;
 
 import java.sql.Timestamp;
+import java.util.Comparator;
 
 import org.apache.causeway.applib.services.bookmark.Bookmark;
 import org.apache.causeway.applib.services.publishing.spi.EntityPropertyChange;
@@ -36,7 +37,7 @@ import lombok.val;
 
 @EqualsAndHashCode(of = {"id"})
 @ToString(of = {"id"})
-public final class PropertyChangeRecord {
+public final class PropertyChangeRecord implements 
Comparable<PropertyChangeRecord> {
 
     @Getter private final PropertyChangeRecordId id;
     @Getter private PreAndPostValue preAndPostValue;
@@ -164,5 +165,11 @@ public final class PropertyChangeRecord {
     }
 
 
+    @Override
+    public int compareTo(PropertyChangeRecord o) {
+        return Comparator
+                .comparing(PropertyChangeRecord::getId)
+                .compare(this, o);
+    }
 }
 
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecordId.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecordId.java
index c2c9990240..3b688cd0c2 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecordId.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/objectlifecycle/PropertyChangeRecordId.java
@@ -28,9 +28,11 @@ import lombok.Getter;
 import lombok.NonNull;
 import lombok.ToString;
 
+import java.util.Comparator;
+
 @EqualsAndHashCode(of = {"bookmarkStr", "propertyId"})
 @ToString(of = {"bookmarkStr", "propertyId"})
-public final class PropertyChangeRecordId {
+public final class PropertyChangeRecordId implements 
Comparable<PropertyChangeRecordId> {
 
     @Getter private final String bookmarkStr;
     @Getter private final String propertyId;
@@ -59,5 +61,12 @@ public final class PropertyChangeRecordId {
 
     }
 
+    @Override
+    public int compareTo(PropertyChangeRecordId o) {
+        return Comparator
+                .comparing(PropertyChangeRecordId::getBookmarkStr)
+                .thenComparing(PropertyChangeRecordId::getPropertyId)
+                .compare(this, o);
+    }
 }
 

Reply via email to