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); + } }
