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 <[email protected]>
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;
}