//$Id$ package org.hibernate.ejb.test.instrument; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; /** * @author Emmanuel Bernard * @author Hardy Ferentschik */ public class InterceptFieldClassFileTransformerTest extends TestCase { /** * Tests that class file enhancement works. * * @throws Exception in case the test fails. */ public void testEnhancement() throws Exception { List<String> entities = new ArrayList<String>(); entities.add( "org.hibernate.ejb.test.instrument.Simple" ); // sanity check that the class is unmodified and does not contain getFieldHandler() try { org.hibernate.ejb.test.instrument.Simple.class.getDeclaredMethod( "getFieldHandler" ); fail(); } catch ( NoSuchMethodException nsme ) { // success } // use custom class loader which enhances the class InstrumentedClassLoader cl = new InstrumentedClassLoader( Thread.currentThread().getContextClassLoader() ); cl.setEntities( entities ); Class clazz = cl.loadClass( entities.get( 0 ) ); // javassist is our default byte code enhancer. Enhancing will eg add the method getFieldHandler() // see org.hibernate.bytecode.internal.javassist.FieldTransformer Method method = clazz.getDeclaredMethod( "getFieldHandler" ); assertNotNull( method ); } }