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 thePersistenceCapableinterface at runtime.- Author:
 - Abe White
 
 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPCClassFileTransformer.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 PCClassFileTransformernewInstance(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:
 transformin 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
 
 - 
 
 -