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 <stari...@gmail.com>
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);
+    }
 }

Reply via email to