You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2011/01/07 01:07:21 UTC
svn commit: r1056130 -
/openjpa/branches/2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
Author: curtisr7
Date: Fri Jan 7 00:07:20 2011
New Revision: 1056130
URL: http://svn.apache.org/viewvc?rev=1056130&view=rev
Log:
OPENJPA-1918: Append PUInfo classloader to MDR.preload() classloader chain.
Modified:
openjpa/branches/2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
Modified: openjpa/branches/2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=1056130&r1=1056129&r2=1056130&view=diff
==============================================================================
--- openjpa/branches/2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ openjpa/branches/2.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Fri Jan 7 00:07:20 2011
@@ -51,6 +51,7 @@ import org.apache.openjpa.lib.util.Local
import org.apache.openjpa.lib.util.MultiClassLoader;
import org.apache.openjpa.lib.util.Options;
import org.apache.openjpa.lib.util.StringDistance;
+import org.apache.openjpa.util.ClassResolver;
import org.apache.openjpa.util.ImplHelper;
import org.apache.openjpa.util.InternalException;
import org.apache.openjpa.util.MetaDataException;
@@ -311,10 +312,20 @@ public class MetaDataRepository implemen
return;
}
+
MultiClassLoader multi = AccessController.doPrivileged(J2DoPrivHelper.newMultiClassLoaderAction());
multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction()));
multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper
.getClassLoaderAction(MetaDataRepository.class)));
+ // If a ClassLoader was passed into Persistence.createContainerEntityManagerFactory on the PersistenceUnitInfo
+ // we need to add that loader to the chain of classloaders
+ ClassResolver resolver = _conf.getClassResolverInstance();
+ if (resolver != null) {
+ ClassLoader cl = resolver.getClassLoader(null, null);
+ if (cl != null) {
+ multi.addClassLoader(cl);
+ }
+ }
Set<String> classes = getPersistentTypeNames(false, multi);
if (classes == null || classes.size() == 0) {