Class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
java.lang.Object
jakarta.persistence.spi.PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
- All Implemented Interfaces:
PersistenceProviderResolver
- Enclosing class:
PersistenceProviderResolverHolder
private static class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
extends 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.
- Since:
- 2.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classKey used for cached persistence providers.private static interfaceThe common interface to get a CacheKey implemented by LoaderReference and PersistenceProviderReference.private classReferences to class loaders are weak references, so that they can be garbage collected when nobody else is using them.private classReferences to persistence provider are soft references so that they can be garbage collected when they have no hard references. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Loggerprivate static final Stringprivate HashMap<PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey, PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference> Cached list of available providers cached by CacheKey to ensure there is not potential for provider visibility issues.private static final ReferenceQueueQueue for reference objects referring to class loaders or persistence providers. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidClear all cached providersprivate static ClassLoaderWrapsThread.currentThread().getContextClassLoader()into a doPrivileged block if security manager is presentReturns a list of the persistence provider implementations available in the runtime environment.private voidprivate voidRemove garbage collected cache keys invalid input: '&' providers.
-
Field Details
-
providers
private volatile 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. -
referenceQueue
Queue for reference objects referring to class loaders or persistence providers. -
LOGGER_SUBSYSTEM
- See Also:
-
logger
-
-
Constructor Details
-
DefaultPersistenceProviderResolver
private DefaultPersistenceProviderResolver()
-
-
Method Details
-
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 invalid input: '&' providers. -
getContextClassLoader
WrapsThread.currentThread().getContextClassLoader()into a doPrivileged block if security manager is present -
log
-
clearCachedProviders
public void clearCachedProviders()Clear all cached providers- Specified by:
clearCachedProvidersin interfacePersistenceProviderResolver
-