This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new a7019be48 CAY-2830 Cleanup DataContext - restore serializability
a7019be48 is described below
commit a7019be4850cee66ee3171c5f9927441e282267e
Author: stariy95 <[email protected]>
AuthorDate: Wed Dec 6 13:52:07 2023 +0400
CAY-2830 Cleanup DataContext
- restore serializability
---
cayenne/src/main/java/org/apache/cayenne/access/DataContext.java | 4 +++-
.../java/org/apache/cayenne/access/DataContextObjectCreator.java | 2 +-
.../java/org/apache/cayenne/access/DataContextSerializationIT.java | 7 +++++++
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
b/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
index 4faf2ef52..260dd1540 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
@@ -145,7 +145,7 @@ public class DataContext implements ObjectContext {
protected boolean validatingObjectsOnCommit = true;
- protected final DataContextObjectCreator objectCreator;
+ protected transient DataContextObjectCreator objectCreator;
/**
* Creates a new DataContext that is not attached to the Cayenne stack.
@@ -1183,6 +1183,8 @@ public class DataContext implements ObjectContext {
}
}
+ objectCreator = new DataContextObjectCreator(this);
+
// ... deferring initialization of transient properties of this
context till first access,
// so that it can attach to Cayenne runtime using appropriate thread
injector.
}
diff --git
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
index 0c3ec5af6..5f8ac5811 100644
---
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
+++
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
@@ -42,7 +42,7 @@ import java.util.Map;
*/
class DataContextObjectCreator {
- private final DataContext context;
+ final DataContext context;
DataContextObjectCreator(DataContext context) {
this.context = context;
diff --git
a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
index c343dbb52..441a9f8e9 100644
---
a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
+++
b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
@@ -278,4 +278,11 @@ public class DataContextSerializationIT extends
RuntimeCase {
assertEquals("artist2", deserializedArtist.getArtistName());
assertSame(deserializedContext, deserializedArtist.getObjectContext());
}
+
+ @Test
+ public void testSerializeObjectCreator() throws Exception {
+ DataContext deserializedContext = Util.cloneViaSerialization(context);
+ assertNotNull(deserializedContext.objectCreator);
+ assertSame(deserializedContext,
deserializedContext.objectCreator.context);
+ }
}