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