|
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;
+ }
+ }
);
}
|