This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch STABLE-4.2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/STABLE-4.2 by this push: new e6f2f59f3 CAY-2801 Incorrect equals() implementation in IdGenerationMarker could cause data missing in the commit e6f2f59f3 is described below commit e6f2f59f369a9fdf5575d35b47f2ac30ee050da3 Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Thu Mar 9 18:58:43 2023 +0300 CAY-2801 Incorrect equals() implementation in IdGenerationMarker could cause data missing in the commit --- .../cayenne/access/flush/IdGenerationMarker.java | 19 +------------------ .../access/flush/PermanentObjectIdVisitor.java | 2 +- .../cayenne/access/flush/EffectiveOpIdTest.java | 5 +++-- 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/IdGenerationMarker.java b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/IdGenerationMarker.java index 2a10744c2..1cbd056d3 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/IdGenerationMarker.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/IdGenerationMarker.java @@ -21,7 +21,6 @@ package org.apache.cayenne.access.flush; import java.io.Serializable; -import org.apache.cayenne.ObjectId; import org.apache.cayenne.access.types.InternalUnsupportedTypeFactory; /** @@ -32,23 +31,7 @@ import org.apache.cayenne.access.types.InternalUnsupportedTypeFactory; class IdGenerationMarker implements Serializable, InternalUnsupportedTypeFactory.Marker { private static final long serialVersionUID = -5339942931435878094L; - private final int id; - - IdGenerationMarker(ObjectId id) { - this.id = id.hashCode(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - IdGenerationMarker that = (IdGenerationMarker) o; - return id == that.id; - } - - @Override - public int hashCode() { - return id; + IdGenerationMarker() { } @Override diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java index c0884ba4e..5a994dbdd 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java @@ -129,7 +129,7 @@ class PermanentObjectIdVisitor implements DbRowOpVisitor<Void> { // skip db-generated if (supportsGeneratedKeys && dbAttr.isGenerated()) { // mark that this attribute should be generated at insert time - idMap.put(dbAttrName, new IdGenerationMarker(id)); + idMap.put(dbAttrName, new IdGenerationMarker()); continue; } diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/flush/EffectiveOpIdTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/flush/EffectiveOpIdTest.java index 52ce75317..e59f37299 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/access/flush/EffectiveOpIdTest.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/access/flush/EffectiveOpIdTest.java @@ -34,12 +34,13 @@ public class EffectiveOpIdTest { @Test public void testEqualsTempGeneratedId() { ObjectId id1 = ObjectId.of("test"); - id1.getReplacementIdMap().put("pk", new IdGenerationMarker(id1)); - EffectiveOpId effectiveOpId1 = new EffectiveOpId("test", Collections.singletonMap("pk", new IdGenerationMarker(id1))); + id1.getReplacementIdMap().put("pk", new IdGenerationMarker()); + EffectiveOpId effectiveOpId1 = new EffectiveOpId("test", Collections.singletonMap("pk", new IdGenerationMarker())); EffectiveOpId effectiveOpId2 = new EffectiveOpId("test", Collections.singletonMap("pk", ObjectIdValueSupplier.getFor(id1, "pk"))); assertEquals(effectiveOpId1, effectiveOpId2); + assertNotEquals(id1.getReplacementIdMap().get("pk"), new IdGenerationMarker()); } } \ No newline at end of file