Module jakarta.persistence
Package jakarta.persistence.spi
Class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
- java.lang.Object
-
- jakarta.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 Jakarta 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 classPersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKeyKey used for cached persistence providers.private static interfacePersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKeyReferenceThe common interface to get a CacheKey implemented by LoaderReference and PersistenceProviderReference.private classPersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.LoaderReferenceReferences to class loaders are weak references, so that they can be garbage collected when nobody else is using them.private classPersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReferenceReferences 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.Loggerloggerprivate static java.lang.StringLOGGER_SUBSYSTEMprivate java.util.HashMap<PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey,PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference>providersCached list of available providers cached by CacheKey to ensure there is not potential for provider visibility issues.private static java.lang.ref.ReferenceQueuereferenceQueueQueue for reference objects referring to class loaders or persistence providers.
-
Constructor Summary
Constructors Modifier Constructor Description privateDefaultPersistenceProviderResolver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearCachedProviders()Clear all cached providersprivate static java.lang.ClassLoadergetContextClassLoader()WrapsThread.currentThread().getContextClassLoader()into a doPrivileged block if security manager is presentjava.util.List<PersistenceProvider>getPersistenceProviders()Returns a list of the persistence provider implementations available in the runtime environment.private voidlog(java.util.logging.Level level, java.lang.String message)private voidprocessQueue()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:PersistenceProviderResolverReturns a list of the persistence provider implementations available in the runtime environment.- Specified by:
getPersistenceProvidersin 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:
clearCachedProvidersin interfacePersistenceProviderResolver
-
-