Package org.datanucleus.enhancer
Class RuntimeEnhancer
- java.lang.Object
-
- org.datanucleus.enhancer.RuntimeEnhancer
-
public class RuntimeEnhancer extends java.lang.Object
Class that will enhance a class at runtime, called via "javaagent".
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RuntimeEnhancer.EnhancerClassLoader
This classloader is used to load any classes that are necessary during enhancement process, and avoid using application classloaders to load classes
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.List<java.lang.String>
classEnhancerOptions
private ClassLoaderResolver
clr
private NucleusContext
nucleusContext
(package private) java.util.Map<java.lang.ClassLoader,RuntimeEnhancer.EnhancerClassLoader>
runtimeLoaderByLoader
-
Constructor Summary
Constructors Constructor Description RuntimeEnhancer(java.lang.String api, java.util.Map contextProps)
Constructor for a runtime enhancer for an API.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
enhance(java.lang.String className, byte[] classdefinition, java.lang.ClassLoader loader)
void
setClassEnhancerOption(java.lang.String optionName)
void
unsetClassEnhancerOption(java.lang.String optionName)
-
-
-
Field Detail
-
clr
private final ClassLoaderResolver clr
-
nucleusContext
private final NucleusContext nucleusContext
-
runtimeLoaderByLoader
java.util.Map<java.lang.ClassLoader,RuntimeEnhancer.EnhancerClassLoader> runtimeLoaderByLoader
-
classEnhancerOptions
java.util.List<java.lang.String> classEnhancerOptions
-
-
Constructor Detail
-
RuntimeEnhancer
public RuntimeEnhancer(java.lang.String api, java.util.Map contextProps)
Constructor for a runtime enhancer for an API. Creates its own NucleusContext for enhancement. Note that this is because the NucleusContext currently is for runtime or enhancement, so we isolate things; in future we could take in the NucleusContext from whatever operation has it (e.g PMF, EMF).- Parameters:
api
- The APIcontextProps
- Properties for use by the NucleusContext (e.g ClassLoaderResolver class name, pluginRegistry).
-
-
Method Detail
-
setClassEnhancerOption
public void setClassEnhancerOption(java.lang.String optionName)
-
unsetClassEnhancerOption
public void unsetClassEnhancerOption(java.lang.String optionName)
-
enhance
public byte[] enhance(java.lang.String className, byte[] classdefinition, java.lang.ClassLoader loader)
-
-