This is an automated email from the ASF dual-hosted git repository.
struberg 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 b5a6424f2 OPENJPA-2911 isCloneable via ClassNodeTracker
b5a6424f2 is described below
commit b5a6424f2b4e867c99335fded8f5f5d2c7209708
Author: Mark Struberg <[email protected]>
AuthorDate: Tue Jul 18 10:53:54 2023 +0200
OPENJPA-2911 isCloneable via ClassNodeTracker
---
.../src/main/java/org/apache/openjpa/enhance/PCEnhancer.java | 2 +-
.../main/java/org/apache/openjpa/util/asm/ClassNodeTracker.java | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git
a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
index 1b12b0828..7f20408a8 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
@@ -4076,7 +4076,7 @@ public class PCEnhancer {
if (cloneMeth == null) {
// add clone support for base classes
// which also implement cloneable
- boolean isCloneable =
Cloneable.class.isAssignableFrom(_managedType.getType());
+ boolean isCloneable =
Cloneable.class.isAssignableFrom(managedType.getType());
boolean extendsObject = superName.equals(Object.class.getName());
if (!isCloneable || (!extendsObject && !getCreateSubclass())) {
return;
diff --git
a/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/ClassNodeTracker.java
b/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/ClassNodeTracker.java
index a9e911421..1b08b1a52 100644
---
a/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/ClassNodeTracker.java
+++
b/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/ClassNodeTracker.java
@@ -39,4 +39,13 @@ public class ClassNodeTracker {
public ClassLoader getClassLoader() {
return cl;
}
+
+ public Class<?> getType() {
+ try {
+ return Class.forName(classNode.name.replace("/", "."), false, cl);
+ }
+ catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
}