You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by st...@apache.org on 2023/05/06 07:18:40 UTC

[openjpa] 15/17: OPENJPA-2909 fix ClassLoading if proxy cannot be loaded

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

commit 2535a24d55ac9ef70837b151dc50c0682ba225eb
Author: Mark Struberg <st...@apache.org>
AuthorDate: Thu May 4 21:31:00 2023 +0200

    OPENJPA-2909 fix ClassLoading if proxy cannot be loaded
---
 openjpa-integration/tck/pom.xml                          |  4 ++--
 .../java/org/apache/openjpa/util/GeneratedClasses.java   |  7 ++++++-
 .../java/org/apache/openjpa/util/TestProxyManager.java   | 16 ++++++++++++++++
 .../openjpa-maven-plugin/src/it/default_settings/pom.xml |  9 ++++-----
 .../src/it/dependingArtifact/pom.xml                     | 11 +++++------
 .../src/it/enhanceIncludesExcludes/pom.xml               |  9 ++++-----
 .../src/it/nonDefaultPersistenceXml/pom.xml              |  9 ++++-----
 .../src/it/sqlActionDropSchema/pom.xml                   |  9 ++++-----
 .../openjpa-maven-plugin/src/it/testDependencies/pom.xml |  9 ++++-----
 9 files changed, 49 insertions(+), 34 deletions(-)

diff --git a/openjpa-integration/tck/pom.xml b/openjpa-integration/tck/pom.xml
index d50e4b447..5d9bcb98b 100644
--- a/openjpa-integration/tck/pom.xml
+++ b/openjpa-integration/tck/pom.xml
@@ -445,8 +445,8 @@ databaseName=${db.name}
 
         <dependencies>
           <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
             <scope>compile</scope>
           </dependency>
           <dependency>
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
index 47e5961d2..b6ddf2565 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
@@ -73,7 +73,12 @@ public class GeneratedClasses {
 
     public static Class loadAsmClass(String className, byte[] classBytes, Class<?> proxiedClass, ClassLoader loader) {
         ClassLoaderProxyService pcls = new ClassLoaderProxyService(null, loader);
-        return pcls.defineAndLoad(className, classBytes, proxiedClass);
+        try {
+            return pcls.defineAndLoad(className, classBytes, proxiedClass);
+        } catch (Throwable t) {
+            // this happens e.g when trying to create a proxy for a class with private access.
+            throw new GeneralException(className).setCause(t);
+        }
     }
 
     /**
diff --git a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
index 4ee67be86..f3c13e606 100644
--- a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
+++ b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
@@ -1017,6 +1017,8 @@ public class TestProxyManager {
     public static class CustomBean {
         private String _string;
         private int _number;
+        private double d1;
+        private double d2;
 
         public String getString() {
             return _string;
@@ -1033,6 +1035,20 @@ public class TestProxyManager {
         public void setNumber(int number) {
             _number = number;
         }
+
+        public void setLocation(double d1, double d2) {
+            this.d1 = d1;
+            this.d2 = d2;
+        }
+
+        public double getD1() {
+            return d1;
+        }
+
+        public double getD2() {
+            return d2;
+        }
+
     }
 
     /**
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml
index 7d12270dc..5aef44c9c 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml
@@ -36,15 +36,14 @@
     <dependencies>
 
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml
index 2970cdc0d..aa9c7e90c 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml
@@ -42,14 +42,13 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
-        </dependency>
-    </dependencies>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
+        </dependency>    </dependencies>
 
     <build>
         <plugins>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml
index 04703a0d9..5e9028c76 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml
@@ -36,14 +36,13 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml
index 3d0aa0689..dc5381b97 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml
@@ -35,14 +35,13 @@
     <version>1.0-SNAPSHOT</version>
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml
index f4ab5433e..43ec91b7d 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml
@@ -35,15 +35,14 @@
     <version>1.0-SNAPSHOT</version>
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
index 34f9d826e..4aacbdb1e 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
@@ -35,14 +35,13 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
-
     </dependencies>
 
     <build>