You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2007/02/06 18:46:35 UTC

svn commit: r504216 - /incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java

Author: ppoddar
Date: Tue Feb  6 09:46:33 2007
New Revision: 504216

URL: http://svn.apache.org/viewvc?view=rev&rev=504216
Log:
Dynamic implementation class of a subInterface is loaded with the classloader of the dynamic implementaion of the superInterface.


Modified:
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java?view=diff&rev=504216&r1=504215&r2=504216
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java Tue Feb  6 09:46:33 2007
@@ -73,11 +73,15 @@
 
         ClassLoader parentLoader = iface.getClassLoader();
         BCClassLoader loader = new BCClassLoader(_project, parentLoader);
+        BCClassLoader enhLoader = new BCClassLoader(_enhProject, parentLoader);
         BCClass bc = _project.loadClass(getClassName(meta));
         bc.declareInterface(iface);
         ClassMetaData sup = meta.getPCSuperclassMetaData();
-        if (sup != null)
+        if (sup != null) {
             bc.setSuperclass(sup.getInterfaceImpl());
+            enhLoader = new BCClassLoader(_enhProject, 
+            		sup.getInterfaceImpl().getClassLoader());
+        }
 
         FieldMetaData[] fields = meta.getDeclaredFields();
         Set methods = new HashSet();
@@ -103,7 +107,6 @@
         if (result != PCEnhancer.ENHANCE_PC)
             throw new InternalException(_loc.get("interface-badenhance", 
                 iface)).setFatal(true);
-        BCClassLoader enhLoader = new BCClassLoader(_enhProject, parentLoader);
         try{
             // load the class for real.
             impl = Class.forName(bc.getName(), true, enhLoader);