|
From: <hib...@li...> - 2006-08-03 20:16:51
|
Author: ste...@jb...
Date: 2006-08-03 16:16:18 -0400 (Thu, 03 Aug 2006)
New Revision: 10208
Removed:
trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/InstrumentedClassLoader.java
Modified:
trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java
Log:
HHH-1968 : unify bytecode instrumentation
Modified: trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java 2006-08-03 20:15:36 UTC (rev 10207)
+++ trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/AbstractTransformingClassLoaderInstrumentTestCase.java 2006-08-03 20:16:18 UTC (rev 10208)
@@ -4,6 +4,9 @@
import org.hibernate.HibernateException;
import org.hibernate.bytecode.BytecodeProvider;
+import org.hibernate.bytecode.InstrumentedClassLoader;
+import org.hibernate.bytecode.util.BasicClassFilter;
+import org.hibernate.bytecode.util.FieldFilter;
import org.hibernate.test.AbstractClassLoaderIsolatedTestCase;
/**
@@ -14,21 +17,25 @@
private BytecodeProvider provider;
protected ClassLoader buildIsolatedClassLoader(ClassLoader parent) {
-// String myFileName = AbstractTransformingClassLoaderInstrumentTestCase.class.getName().replace( '.', '/' ) + ".class";
-// URL fileURL = this.getClass().getClassLoader().getResource( myFileName );
-// String filePath = fileURL.getPath();
-// String classPath = filePath.substring( 0, filePath.length() - myFileName.length() );
provider = buildBytecodeProvider();
return new InstrumentedClassLoader(
parent,
- provider.getEntityClassTransformer(
- new String[] { "org.hibernate.test.instrument" },
- null) );
+ provider.getTransformer(
+ new BasicClassFilter( new String[] { "org.hibernate.test.instrument" }, null ),
+ new FieldFilter() {
+ public boolean shouldInstrumentField(String className, String fieldName) {
+ return true;
+ }
+ public boolean shouldTransformFieldAccess(String transformingClassName, String fieldOwnerClassName, String fieldName) {
+ return true;
+ }
+ }
+ )
+ );
}
protected void releaseIsolatedClassLoader(ClassLoader isolatedLoader) {
- provider.releaseDynamicFieldInterceptionClassLoader( isolatedLoader );
provider = null;
}
Deleted: trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/InstrumentedClassLoader.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/InstrumentedClassLoader.java 2006-08-03 20:15:36 UTC (rev 10207)
+++ trunk/Hibernate3/test/org/hibernate/test/instrument/runtime/InstrumentedClassLoader.java 2006-08-03 20:16:18 UTC (rev 10208)
@@ -1,80 +0,0 @@
-//$Id: $
-package org.hibernate.test.instrument.runtime;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.hibernate.HibernateException;
-import org.hibernate.bytecode.ClassTransformer;
-
-/**
- * @author Emmanuel Bernard
- */
-public class InstrumentedClassLoader extends ClassLoader {
-
- private ClassTransformer classTransformer;
-
- public InstrumentedClassLoader(ClassLoader parent, ClassTransformer classTransformer) {
- super( parent );
- this.classTransformer = classTransformer;
- }
-
- public Class loadClass(String name) throws ClassNotFoundException {
- if ( name.startsWith( "java" ) ) return getParent().loadClass( name );
- Class c = findLoadedClass( name );
- if ( c != null ) return c;
- InputStream is = this.getResourceAsStream( name.replace( '.', '/' ) + ".class" );
- if ( is == null ) throw new ClassNotFoundException( name );
- byte[] buffer = new byte[409600];
- byte[] originalClass = new byte[0];
- int r = 0;
- try {
- r = is.read( buffer );
- }
- catch (IOException e) {
- throw new ClassNotFoundException( name + " not found", e );
- }
- while ( r >= buffer.length ) {
- byte[] temp = new byte[ originalClass.length + buffer.length ];
- System.arraycopy( originalClass, 0, temp, 0, originalClass.length );
- System.arraycopy( buffer, 0, temp, originalClass.length, buffer.length );
- originalClass = temp;
- }
- if ( r != -1 ) {
- byte[] temp = new byte[ originalClass.length + r ];
- System.arraycopy( originalClass, 0, temp, 0, originalClass.length );
- System.arraycopy( buffer, 0, temp, originalClass.length, r );
- originalClass = temp;
- }
- try {
- is.close();
- }
- catch (IOException e) {
- throw new ClassNotFoundException( name + " not found", e );
- }
- if (classTransformer != null) {
- byte[] transformed = new byte[0];
- try {
- transformed = classTransformer.transform(
- getParent(),
- name,
- null,
- null,
- originalClass
- );
- if ( originalClass == transformed) {
- return getParent().loadClass(name);
- }
- else {
- return defineClass( name, transformed, 0, transformed.length );
- }
- }
- catch (HibernateException e) {
- throw new ClassNotFoundException( name + " not found", e );
- }
- }
- else {
- return getParent().loadClass(name);
- }
- }
-}
|