From d796acdbc27d19035fc8797ca6c23bc5e67cd3af Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Fri, 27 Mar 2015 12:04:24 -0500 Subject: [PATCH] HHH-9492 - Migrate to new bootstrap API (MetadataSources, etc) --- .../boot/internal/MetadataBuilderImpl.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java index 35e91e4135..c9feb0c2df 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java @@ -36,6 +36,8 @@ import org.hibernate.AssertionFailure; import org.hibernate.HibernateException; import org.hibernate.MultiTenancyStrategy; import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.common.reflection.ClassLoaderDelegate; +import org.hibernate.annotations.common.reflection.ClassLoadingException; import org.hibernate.annotations.common.reflection.ReflectionManager; import org.hibernate.annotations.common.reflection.java.JavaReflectionManager; import org.hibernate.boot.CacheRegionDefinition; @@ -188,6 +190,7 @@ public class MetadataBuilderImpl implements MetadataBuilder, TypeContributions { @Override public MetadataBuilder applyReflectionManager(ReflectionManager reflectionManager) { this.options.reflectionManager = reflectionManager; + this.options.reflectionManager.injectClassLoaderDelegate( this.options.getHcannClassLoaderDelegate() ); return this; } @@ -539,6 +542,7 @@ public class MetadataBuilderImpl implements MetadataBuilder, TypeContributions { private PhysicalNamingStrategy physicalNamingStrategy; private ReflectionManager reflectionManager = generateDefaultReflectionManager(); + private ClassLoaderDelegate hcannClassLoaderDelegate; private SharedCacheMode sharedCacheMode; private AccessType defaultCacheAccessType; @@ -557,11 +561,27 @@ public class MetadataBuilderImpl implements MetadataBuilder, TypeContributions { private IdGeneratorInterpreterImpl idGenerationTypeInterpreter = new IdGeneratorInterpreterImpl(); - private static ReflectionManager generateDefaultReflectionManager() { + private ReflectionManager generateDefaultReflectionManager() { final JavaReflectionManager reflectionManager = new JavaReflectionManager(); reflectionManager.setMetadataProvider( new JPAMetadataProvider() ); + reflectionManager.injectClassLoaderDelegate( getHcannClassLoaderDelegate() ); return reflectionManager; } + + public ClassLoaderDelegate getHcannClassLoaderDelegate() { + if ( hcannClassLoaderDelegate == null ) { + hcannClassLoaderDelegate = new ClassLoaderDelegate() { + private final ClassLoaderService classLoaderService = getServiceRegistry().getService( ClassLoaderService.class ); + + @Override + public Class classForName(String className) throws ClassLoadingException { + return classLoaderService.classForName( className ); + } + }; + } + return hcannClassLoaderDelegate; + } + // private PersistentAttributeMemberResolver persistentAttributeMemberResolver = // StandardPersistentAttributeMemberResolver.INSTANCE;