Package javax.persistence.spi
Class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
- java.lang.Object
-
- javax.persistence.spi.PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
-
- All Implemented Interfaces:
PersistenceProviderResolver
- Enclosing class:
- PersistenceProviderResolverHolder
private static class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver extends java.lang.Object implements PersistenceProviderResolver
Default provider resolver class to use when none is explicitly set. Uses service loading mechanism as described in the Java Persistence specification. A ServiceLoader.load() call is made with the current context classloader to find the service provider files on the classpath.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey
Key used for cached persistence providers.private static interface
PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKeyReference
The common interface to get a CacheKey implemented by LoaderReference and PersistenceProviderReference.private class
PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.LoaderReference
References to class loaders are weak references, so that they can be garbage collected when nobody else is using them.private class
PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference
References to persistence provider are soft references so that they can be garbage collected when they have no hard references.
-
Field Summary
Fields Modifier and Type Field Description private java.util.logging.Logger
logger
private static java.lang.String
LOGGER_SUBSYSTEM
private java.util.HashMap<PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey,PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference>
providers
Cached list of available providers cached by CacheKey to ensure there is not potential for provider visibility issues.private static java.lang.ref.ReferenceQueue
referenceQueue
Queue for reference objects referring to class loaders or persistence providers.
-
Constructor Summary
Constructors Modifier Constructor Description private
DefaultPersistenceProviderResolver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearCachedProviders()
Clear all cached providersprivate static java.lang.ClassLoader
getContextClassLoader()
WrapsThread.currentThread().getContextClassLoader()
into a doPrivileged block if security manager is presentjava.util.List<PersistenceProvider>
getPersistenceProviders()
Returns a list of thePersistenceProvider
implementations available in the runtime environment.private void
log(java.util.logging.Level level, java.lang.String message)
private void
processQueue()
Remove garbage collected cache keys & providers.
-
-
-
Field Detail
-
providers
private volatile java.util.HashMap<PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey,PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference> providers
Cached list of available providers cached by CacheKey to ensure there is not potential for provider visibility issues.
-
referenceQueue
private static final java.lang.ref.ReferenceQueue referenceQueue
Queue for reference objects referring to class loaders or persistence providers.
-
LOGGER_SUBSYSTEM
private static final java.lang.String LOGGER_SUBSYSTEM
- See Also:
- Constant Field Values
-
logger
private java.util.logging.Logger logger
-
-
Method Detail
-
getPersistenceProviders
public java.util.List<PersistenceProvider> getPersistenceProviders()
Description copied from interface:PersistenceProviderResolver
Returns a list of thePersistenceProvider
implementations available in the runtime environment.- Specified by:
getPersistenceProviders
in interfacePersistenceProviderResolver
- Returns:
- list of the persistence providers available in the environment
-
processQueue
private void processQueue()
Remove garbage collected cache keys & providers.
-
getContextClassLoader
private static java.lang.ClassLoader getContextClassLoader()
WrapsThread.currentThread().getContextClassLoader()
into a doPrivileged block if security manager is present
-
log
private void log(java.util.logging.Level level, java.lang.String message)
-
clearCachedProviders
public void clearCachedProviders()
Clear all cached providers- Specified by:
clearCachedProviders
in interfacePersistenceProviderResolver
-
-