Package org.apache.openjpa.enhance
Class PCClassFileTransformer
- java.lang.Object
-
- org.apache.openjpa.enhance.PCClassFileTransformer
-
- All Implemented Interfaces:
ClassFileTransformer
- Direct Known Subclasses:
PCClassFileTransformer.Reentrant
public class PCClassFileTransformer extends Object implements ClassFileTransformer
Transformer that makes persistent classes implement thePersistenceCapable
interface at runtime.- Author:
- Abe White
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PCClassFileTransformer.Reentrant
-
Constructor Summary
Constructors Constructor Description PCClassFileTransformer(MetaDataRepository repos, PCEnhancer.Flags flags, ClassLoader tmpLoader, boolean devscan)
Constructor.PCClassFileTransformer(MetaDataRepository repos, Options opts, ClassLoader loader)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static PCClassFileTransformer
newInstance(MetaDataRepository repos, Options parseProperties, ClassLoader tmpLoader)
byte[]
transform(ClassLoader loader, String className, Class redef, ProtectionDomain domain, byte[] bytes)
protected byte[]
transform0(String className, Class redef, byte[] bytes)
We have to split the transform method into two methods to avoid ClassCircularityError when executing method using pure-JIT JVMs such as JRockit.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.instrument.ClassFileTransformer
transform
-
-
-
-
Constructor Detail
-
PCClassFileTransformer
public PCClassFileTransformer(MetaDataRepository repos, Options opts, ClassLoader loader)
Constructor.- Parameters:
repos
- metadata repository to use internallyopts
- enhancer configuration optionsloader
- temporary class loader for loading intermediate classes
-
PCClassFileTransformer
public PCClassFileTransformer(MetaDataRepository repos, PCEnhancer.Flags flags, ClassLoader tmpLoader, boolean devscan)
Constructor.- Parameters:
repos
- metadata repository to use internallyflags
- enhancer configurationtmpLoader
- temporary class loader for loading intermediate classesdevscan
- whether to scan the dev classpath for persistent types if none are configured
-
-
Method Detail
-
newInstance
public static PCClassFileTransformer newInstance(MetaDataRepository repos, Options parseProperties, ClassLoader tmpLoader)
-
transform
public byte[] transform(ClassLoader loader, String className, Class redef, ProtectionDomain domain, byte[] bytes) throws IllegalClassFormatException
- Specified by:
transform
in interfaceClassFileTransformer
- Throws:
IllegalClassFormatException
-
transform0
protected byte[] transform0(String className, Class redef, byte[] bytes) throws IllegalClassFormatException
We have to split the transform method into two methods to avoid ClassCircularityError when executing method using pure-JIT JVMs such as JRockit.- Throws:
IllegalClassFormatException
-
-