Repository: tomee
Updated Branches:
  refs/heads/master bd340ec44 -> 0f46bbf5b


TOMEE-2008 trying to make provider loading for JtaEntityManager jpa 2.1 check 
faster


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0f46bbf5
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0f46bbf5
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0f46bbf5

Branch: refs/heads/master
Commit: 0f46bbf5b4c3fecfbef7267460bbfc19c68834d6
Parents: bd340ec
Author: rmannibucau <rmannibu...@apache.org>
Authored: Fri Jan 27 15:28:01 2017 +0100
Committer: rmannibucau <rmannibu...@apache.org>
Committed: Fri Jan 27 15:28:01 2017 +0100

----------------------------------------------------------------------
 .../assembler/classic/EntityManagerFactoryCallable.java        | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/0f46bbf5/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
index 777f412..22cd810 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
@@ -49,6 +49,7 @@ public class EntityManagerFactoryCallable implements 
Callable<EntityManagerFacto
     private final Map<ComparableValidationConfig, ValidatorFactory> 
potentialValidators;
     private final boolean cdi;
     private ClassLoader appClassLoader;
+    private Class<?> provider;
 
     public EntityManagerFactoryCallable(final String 
persistenceProviderClassName, final PersistenceUnitInfoImpl unitInfo,
                                         final ClassLoader cl, final 
Map<ComparableValidationConfig, ValidatorFactory> validators,
@@ -61,10 +62,13 @@ public class EntityManagerFactoryCallable implements 
Callable<EntityManagerFacto
     }
 
     public Class<?> getProvider() {
+        if (provider != null) { // no need of thread safety
+            return provider;
+        }
         final ClassLoader old = Thread.currentThread().getContextClassLoader();
         Thread.currentThread().setContextClassLoader(appClassLoader);
         try {
-            return appClassLoader.loadClass(persistenceProviderClassName);
+            return (provider = 
appClassLoader.loadClass(persistenceProviderClassName));
         } catch (final ClassNotFoundException e) {
             throw new IllegalArgumentException(e);
         } finally {

Reply via email to