Package net.bytebuddy.agent.builder
Class AgentBuilder.PoolStrategy.WithTypePoolCache.Simple
java.lang.Object
net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy.WithTypePoolCache
net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy.WithTypePoolCache.Simple
- All Implemented Interfaces:
AgentBuilder.PoolStrategy
- Enclosing class:
AgentBuilder.PoolStrategy.WithTypePoolCache
@Enhance
public static class AgentBuilder.PoolStrategy.WithTypePoolCache.Simple
extends AgentBuilder.PoolStrategy.WithTypePoolCache
An implementation of a type locator
AgentBuilder.PoolStrategy.WithTypePoolCache
(note documentation of the linked class) that is based on a
ConcurrentMap
. It is the responsibility of the type locator's user to avoid the type locator from leaking memory.-
Nested Class Summary
Nested classes/interfaces inherited from class net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy.WithTypePoolCache
AgentBuilder.PoolStrategy.WithTypePoolCache.Simple
Nested classes/interfaces inherited from interface net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy
AgentBuilder.PoolStrategy.ClassLoading, AgentBuilder.PoolStrategy.Default, AgentBuilder.PoolStrategy.Eager, AgentBuilder.PoolStrategy.WithTypePoolCache
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ConcurrentMap
<? super ClassLoader, TypePool.CacheProvider> The concurrent map that is used for storing a cache provider per class loader.Fields inherited from class net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy.WithTypePoolCache
readerMode
-
Constructor Summary
ConstructorsConstructorDescriptionSimple
(ConcurrentMap<? super ClassLoader, TypePool.CacheProvider> cacheProviders) Creates a new type locator that caches a cache provider per class loader in a concurrent map.Simple
(TypePool.Default.ReaderMode readerMode, ConcurrentMap<? super ClassLoader, TypePool.CacheProvider> cacheProviders) Creates a new type locator that caches a cache provider per class loader in a concurrent map. -
Method Summary
Modifier and TypeMethodDescriptionprotected ClassLoader
Returns the class loader to serve as a cache key if a cache provider for the bootstrap class loader is requested.protected TypePool.CacheProvider
locate
(ClassLoader classLoader) Locates a cache provider for a given class loader.Methods inherited from class net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy.WithTypePoolCache
typePool, typePool
-
Field Details
-
cacheProviders
The concurrent map that is used for storing a cache provider per class loader.
-
-
Constructor Details
-
Simple
Creates a new type locator that caches a cache provider per class loader in a concurrent map. The type locator uses a fastTypePool.Default.ReaderMode
.- Parameters:
cacheProviders
- The concurrent map that is used for storing a cache provider per class loader.
-
Simple
public Simple(TypePool.Default.ReaderMode readerMode, ConcurrentMap<? super ClassLoader, TypePool.CacheProvider> cacheProviders) Creates a new type locator that caches a cache provider per class loader in a concurrent map.- Parameters:
readerMode
- The reader mode to use for parsing a class file.cacheProviders
- The concurrent map that is used for storing a cache provider per class loader.
-
-
Method Details
-
locate
Description copied from class:AgentBuilder.PoolStrategy.WithTypePoolCache
Locates a cache provider for a given class loader.- Specified by:
locate
in classAgentBuilder.PoolStrategy.WithTypePoolCache
- Parameters:
classLoader
- The class loader for which to locate a cache. This class loader might benull
to represent the bootstrap loader.- Returns:
- The cache provider to use.
-
getBootstrapMarkerLoader
Returns the class loader to serve as a cache key if a cache provider for the bootstrap class loader is requested. This class loader is represented by
null
in the JVM which is an invalid value for manyConcurrentMap
implementations.By default,
ClassLoader.getSystemClassLoader()
is used as such a key as any resource location for the bootstrap class loader is performed via the system class loader within Byte Buddy asnull
cannot be queried for resources via method calls such that this does not make a difference.- Returns:
- A class loader to represent the bootstrap class loader.
-