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

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git


The following commit(s) were added to refs/heads/master by this push:
     new a494966e8 moving to Class.forName to force clinit call instead of 
creating a dead instance
a494966e8 is described below

commit a494966e8b04e1a31f9895947f7b4ac68d4f888b
Author: Romain Manni-Bucau <rmannibu...@gmail.com>
AuthorDate: Mon Jul 17 19:48:36 2023 +0200

    moving to Class.forName to force clinit call instead of creating a dead 
instance
---
 .../org/apache/openjpa/enhance/ManagedClassSubclasser.java     | 10 +---------
 .../java/org/apache/openjpa/util/ClassLoaderProxyService.java  |  8 ++++++++
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git 
a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java
 
b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java
index cde3f0412..08ea4d3ec 100644
--- 
a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java
+++ 
b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java
@@ -291,15 +291,7 @@ public class ManagedClassSubclasser {
                 // this is the new subclass
                 ClassLoader loader = 
GeneratedClasses.getMostDerivedLoader(cls, PersistenceCapable.class);
                 String className = cnt.getClassNode().name.replace("/", ".");
-                final Class subclass = 
GeneratedClasses.loadAsmClass(className, byteArray, cls, loader);
-                try {
-                    // Ugly workaround to trigger clinit static initializer 
block :(
-                    subclass.newInstance();
-                }
-                catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-                subs.add(subclass);
+                subs.add(GeneratedClasses.loadAsmClass(className, byteArray, 
cls, loader));
             }
         }
     }
diff --git 
a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
 
b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
index 4ba872cae..61627cd29 100644
--- 
a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
+++ 
b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
@@ -111,6 +111,14 @@ public class ClassLoaderProxyService
                         classes.put(key, existing);
                     }
                 }
+                try
+                {
+                    Class.forName(existing.getName(), true, 
existing.getClassLoader());
+                }
+                catch (ClassNotFoundException e)
+                {
+                    // no-op, not critical, will be done at first 
instantiation but shouldn't happen anyway
+                }
             }
             return existing;
         }

Reply via email to