jdave.unfinalizer
Class DelegatingClassFileTransformer

java.lang.Object
  extended by jdave.unfinalizer.DelegatingClassFileTransformer
All Implemented Interfaces:
java.lang.instrument.ClassFileTransformer

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

Delegates classes being loaded to the actual transformer if the classloader is not null. This pseudo-magical rule has something to do with avoiding infinite loops caused by classes being requested for unfinalization during the unfinalization process itself. Although the acceptance spec passes without this magic, some real classes, for example XmlPullParser from wicket cannot be mocked without it.

Author:
Tuomas Karkkainen

Constructor Summary
DelegatingClassFileTransformer(ClassVisitorDelegator delegator)
           
 
Method Summary
 byte[] transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class<?> classBeingRedefined, java.security.ProtectionDomain protectionDomain, byte[] classfileBuffer)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingClassFileTransformer

public DelegatingClassFileTransformer(ClassVisitorDelegator delegator)
Method Detail

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
Specified by:
transform in interface java.lang.instrument.ClassFileTransformer
Throws:
java.lang.instrument.IllegalClassFormatException


Copyright ? 2008. All Rights Reserved.