org.datanucleus.enhancer
Class DataNucleusClassFileTransformer

java.lang.Object
  extended by org.datanucleus.enhancer.DataNucleusClassFileTransformer
All Implemented Interfaces:
java.lang.instrument.ClassFileTransformer

public class DataNucleusClassFileTransformer
extends java.lang.Object
implements java.lang.instrument.ClassFileTransformer

Entry Point (as per Java) for transforming classes at runtime. Before loading classes, the JVM invokes the ClassFileTranformer to transform the class. Will never process classes in packages "java.", "javax.", "org.datanucleus." (when not "test" or "samples").


Field Summary
protected  java.lang.String arguments
          User input package name(s) (comma-separated) that should be processed.
protected  RuntimeEnhancer enhancer
           
 
Constructor Summary
DataNucleusClassFileTransformer()
           
DataNucleusClassFileTransformer(java.lang.String arguments)
           
 
Method Summary
static void premain(java.lang.String agentArguments, java.lang.instrument.Instrumentation instrumentation)
           
 byte[] transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class classBeingRedefined, java.security.ProtectionDomain protectionDomain, byte[] classfileBuffer)
          Invoked when a class is being loaded or redefined.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

enhancer

protected RuntimeEnhancer enhancer

arguments

protected java.lang.String arguments
User input package name(s) (comma-separated) that should be processed.

Constructor Detail

DataNucleusClassFileTransformer

public DataNucleusClassFileTransformer()

DataNucleusClassFileTransformer

public DataNucleusClassFileTransformer(java.lang.String arguments)
Method Detail

premain

public static void premain(java.lang.String agentArguments,
                           java.lang.instrument.Instrumentation instrumentation)

transform

public byte[] transform(java.lang.ClassLoader loader,
                        java.lang.String className,
                        java.lang.Class classBeingRedefined,
                        java.security.ProtectionDomain protectionDomain,
                        byte[] classfileBuffer)
                 throws java.lang.instrument.IllegalClassFormatException
Invoked when a class is being loaded or redefined. The implementation of this method may transform the supplied class file and return a new replacement class file.

Specified by:
transform in interface java.lang.instrument.ClassFileTransformer
Parameters:
loader - The defining loader of the class to be transformed, may be null if the bootstrap loader
className - The name of the class in the internal form of fully qualified class and interface names
classBeingRedefined - If this is a redefine, the class being redefined, otherwise null
protectionDomain - The protection domain of the class being defined or redefined
classfileBuffer - The input byte buffer in class file format - must not be modified
Returns:
A well-formed class file buffer (the result of the transform), or null if no transform is performed
Throws:
java.lang.instrument.IllegalClassFormatException - If the input does not represent a well-formed class file


Copyright © 2009. All Rights Reserved.