OPENJPA-1918: Append PUInfo classloader to MDR.preload() classloader chain.

git-svn-id: https://svn.apache.org/repos/asf/openjpa/branches/2.1.x@1056130 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Richard G. Curtis 2011-01-07 00:07:20 +00:00
parent fc581a7d8f
commit 92aba0ead7

View File

@ -51,6 +51,7 @@ import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.lib.util.MultiClassLoader; import org.apache.openjpa.lib.util.MultiClassLoader;
import org.apache.openjpa.lib.util.Options; import org.apache.openjpa.lib.util.Options;
import org.apache.openjpa.lib.util.StringDistance; import org.apache.openjpa.lib.util.StringDistance;
import org.apache.openjpa.util.ClassResolver;
import org.apache.openjpa.util.ImplHelper; import org.apache.openjpa.util.ImplHelper;
import org.apache.openjpa.util.InternalException; import org.apache.openjpa.util.InternalException;
import org.apache.openjpa.util.MetaDataException; import org.apache.openjpa.util.MetaDataException;
@ -311,10 +312,20 @@ public class MetaDataRepository implements PCRegistry.RegisterClassListener, Con
return; return;
} }
MultiClassLoader multi = AccessController.doPrivileged(J2DoPrivHelper.newMultiClassLoaderAction()); MultiClassLoader multi = AccessController.doPrivileged(J2DoPrivHelper.newMultiClassLoaderAction());
multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction())); multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction()));
multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper
.getClassLoaderAction(MetaDataRepository.class))); .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); Set<String> classes = getPersistentTypeNames(false, multi);
if (classes == null || classes.size() == 0) { if (classes == null || classes.size() == 0) {