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 <[email protected]>
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