Author: mikedd
Date: Fri Aug 10 10:33:08 2007
New Revision: 564688

URL: http://svn.apache.org/viewvc?view=rev&rev=564688
Log:
OPENJPA-311

Modified:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java?view=diff&rev=564688&r1=564687&r2=564688
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
 Fri Aug 10 10:33:08 2007
@@ -50,12 +50,9 @@
         if (l2 == null)
             return l1;
 
-        for (ClassLoader p = (ClassLoader) AccessController.doPrivileged(
-                J2DoPrivHelper.getParentAction(l1)); p != null;
-                p = (ClassLoader) AccessController.doPrivileged(
-                    J2DoPrivHelper.getParentAction(p)))
-            if (p == l2)
-                return l1;
+        if(canLoad(l1, c2)) {
+            return l1;
+        }
         return l2;
     }
 
@@ -73,5 +70,23 @@
         } catch (Throwable t) {
             throw new GeneralException(bc.getName()).setCause(t);
         }
+    }
+    
+    /**
+     * Return true if the given loader will load the same version of a given 
+     * class.  
+     * 
+     * @param loader Classloader to use.
+     * @param clazz  Expected class. 
+     * @return true if loader.load(clazz.getName()) == clazz. Otherwise false.
+     */
+    private static boolean canLoad(ClassLoader loader, Class clazz) {
+        Class loaded = null;
+        try {
+            loaded = loader.loadClass(clazz.getName());
+        } catch (ClassNotFoundException e) {
+            // Rely on caller to handle return value = false.
+        }
+        return clazz == loaded;
     }
 }


Reply via email to