From: <hib...@li...> - 2006-08-10 03:31:44
|
Author: epbernard Date: 2006-08-09 23:31:40 -0400 (Wed, 09 Aug 2006) New Revision: 10239 Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java Log: sync to hibernate core head Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java 2006-08-10 00:27:25 UTC (rev 10238) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java 2006-08-10 03:31:40 UTC (rev 10239) @@ -4,10 +4,13 @@ import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; import java.util.List; +import java.util.ArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.Environment; +import org.hibernate.bytecode.util.ClassFilter; +import org.hibernate.bytecode.util.FieldFilter; /** * Enhance the classes allowing them to implements InterceptFieldEnabled @@ -20,8 +23,29 @@ private org.hibernate.bytecode.ClassTransformer classTransformer; public InterceptFieldClassFileTransformer(List<String> entities) { - classTransformer = Environment.getBytecodeProvider().getEntityClassTransformer( - null, entities.toArray( new String[ entities.size() ] ) +// classTransformer = Environment.getBytecodeProvider().getEntityClassTransformer( +// null, entities.toArray( new String[ entities.size() ] ) +// ); + final List<String> copyEntities = new ArrayList<String>( entities.size() ); + copyEntities.addAll( entities ); + classTransformer = Environment.getBytecodeProvider().getTransformer( + new ClassFilter() { + public boolean shouldInstrumentClass(String className) { + return copyEntities.contains( className ); + } + }, + new FieldFilter() { + + public boolean shouldInstrumentField(String className, String fieldName) { + return true; + } + + public boolean shouldTransformFieldAccess( + String transformingClassName, String fieldOwnerClassName, String fieldName + ) { + return true; + } + } ); } |