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