You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by so...@apache.org on 2026/10/09 09:39:57 UTC

(openjpa) branch OPENJPA-3012 updated: [OPENJPA-3012] some comments are addressed

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch OPENJPA-3012
in repository https://gitbox.apache.org/repos/asf/openjpa.git


The following commit(s) were added to refs/heads/OPENJPA-3012 by this push:
     new 374edfa45 [OPENJPA-3012] some comments are addressed
374edfa45 is described below

commit 374edfa458e34121d4ed5fd43afe089119d1cbaa
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Fri Oct 9 16:39:48 2026 +0700

    [OPENJPA-3012] some comments are addressed
---
 .../src/main/java/org/apache/openjpa/util/Serialization.java | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java
index 4ea1dce73..5eb37ff74 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java
@@ -27,6 +27,8 @@ import java.io.ObjectOutputStream;
 import java.io.ObjectStreamClass;
 import java.io.OutputStream;
 import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Objects;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.kernel.StoreContext;
@@ -108,6 +110,10 @@ public class Serialization {
         /**
          * Candidate loaders, in the same order the original MultiClassLoader
          * used them; resolved lazily once per stream.
+         * The lazy initialisation cannot move into the constructor:
+         * PersistentObjectInputStream assigns _ctx after super(delegate), and its
+         * addContextClassLoaders override dereferences it, so eager initialisation
+         * would throw an NPE. A comment would prevent a later simplification.
          */
         private ClassLoader[] _loaders;
 
@@ -125,6 +131,8 @@ public class Serialization {
                 } catch (ClassNotFoundException e) {
                     if (notFound == null) {
                         notFound = e;
+                    } else {
+                        notFound.addSuppressed(e);
                     }
                 }
             }
@@ -147,8 +155,8 @@ public class Serialization {
                 addContextClassLoaders(holder);
                 holder.addClassLoader(getClass().getClassLoader());
                 holder.addClassLoader(MultiClassLoader.SYSTEM_LOADER);
-                _loaders = java.util.Arrays.stream(holder.getClassLoaders())
-                    .filter(java.util.Objects::nonNull)
+                _loaders = Arrays.stream(holder.getClassLoaders())
+                    .filter(Objects::nonNull)
                     .distinct()
                     .toArray(ClassLoader[]::new);
             }