Author: steve.ebersole(a)jboss.com
Date: 2008-05-21 16:13:20 -0400 (Wed, 21 May 2008)
New Revision: 14682
Modified:
core/trunk/core/pom.xml
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/AccessOptimizerAdapter.java
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/BytecodeProviderImpl.java
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/CglibClassTransformer.java
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/InstantiationOptimizerAdapter.java
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/ProxyFactoryFactoryImpl.java
core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java
core/trunk/core/src/main/java/org/hibernate/intercept/FieldInterceptionHelper.java
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/CGLIBHelper.java
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/FieldInterceptorImpl.java
core/trunk/core/src/main/java/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java
core/trunk/core/src/main/java/org/hibernate/tool/instrument/cglib/InstrumentTask.java
core/trunk/testsuite/pom.xml
core/trunk/testsuite/src/test/java/org/hibernate/test/bytecode/cglib/CGLIBThreadLocalTest.java
Log:
HHH-2875 : cglib+asm repackage;
HHH-2506 : make javassist the default bytecode provider
Modified: core/trunk/core/pom.xml
===================================================================
--- core/trunk/core/pom.xml 2008-05-21 19:53:21 UTC (rev 14681)
+++ core/trunk/core/pom.xml 2008-05-21 20:13:20 UTC (rev 14682)
@@ -63,17 +63,11 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>cglib</groupId>
- <artifactId>cglib</artifactId>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
<optional>true</optional>
</dependency>
- <dependency>
- <groupId>asm</groupId>
- <artifactId>asm-attrs</artifactId>
- <version>1.5.3</version>
- <optional>true</optional>
- </dependency>
</dependencies>
<build>
Modified:
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/AccessOptimizerAdapter.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/AccessOptimizerAdapter.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/AccessOptimizerAdapter.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -2,9 +2,8 @@
import org.hibernate.bytecode.ReflectionOptimizer;
import org.hibernate.PropertyAccessException;
-import net.sf.cglib.beans.BulkBean;
-import net.sf.cglib.beans.BulkBeanException;
-import net.sf.cglib.reflect.FastClass;
+import org.hibernate.repackage.cglib.beans.BulkBean;
+import org.hibernate.repackage.cglib.beans.BulkBeanException;
import java.io.Serializable;
import java.io.ObjectOutputStream;
Modified:
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/BytecodeProviderImpl.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/BytecodeProviderImpl.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/BytecodeProviderImpl.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -2,15 +2,9 @@
import java.lang.reflect.Modifier;
-import net.sf.cglib.beans.BulkBean;
-import net.sf.cglib.beans.BulkBeanException;
-import net.sf.cglib.reflect.FastClass;
-import net.sf.cglib.transform.ClassFilter;
-import net.sf.cglib.transform.ClassTransformer;
-import net.sf.cglib.transform.ClassTransformerFactory;
-import net.sf.cglib.transform.TransformingClassLoader;
-import net.sf.cglib.transform.impl.InterceptFieldFilter;
-import net.sf.cglib.transform.impl.InterceptFieldTransformer;
+import org.hibernate.repackage.cglib.beans.BulkBean;
+import org.hibernate.repackage.cglib.beans.BulkBeanException;
+import org.hibernate.repackage.cglib.reflect.FastClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.hibernate.bytecode.BytecodeProvider;
@@ -18,7 +12,6 @@
import org.hibernate.bytecode.ReflectionOptimizer;
import org.hibernate.bytecode.util.FieldFilter;
import org.hibernate.util.StringHelper;
-import org.objectweb.asm.Type;
/**
* Bytecode provider implementation for CGLIB.
@@ -29,6 +22,10 @@
private static final Logger log = LoggerFactory.getLogger( BytecodeProviderImpl.class
);
+ public BytecodeProviderImpl() {
+ log.warn( "The CGLIB BytecodeProvider impl is considered deprecated and not
recommended for use" );
+ }
+
public ProxyFactoryFactory getProxyFactoryFactory() {
return new ProxyFactoryFactoryImpl();
}
Modified:
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/CglibClassTransformer.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/CglibClassTransformer.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/CglibClassTransformer.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -6,25 +6,25 @@
import java.io.IOException;
import java.io.ByteArrayOutputStream;
-import net.sf.cglib.transform.ClassTransformer;
-import net.sf.cglib.transform.TransformingClassGenerator;
-import net.sf.cglib.transform.ClassReaderGenerator;
-import net.sf.cglib.transform.impl.InterceptFieldEnabled;
-import net.sf.cglib.transform.impl.InterceptFieldFilter;
-import net.sf.cglib.transform.impl.InterceptFieldTransformer;
-import net.sf.cglib.core.ClassNameReader;
-import net.sf.cglib.core.DebuggingClassWriter;
+import org.hibernate.repackage.cglib.transform.ClassTransformer;
+import org.hibernate.repackage.cglib.transform.TransformingClassGenerator;
+import org.hibernate.repackage.cglib.transform.ClassReaderGenerator;
+import org.hibernate.repackage.cglib.transform.impl.InterceptFieldEnabled;
+import org.hibernate.repackage.cglib.transform.impl.InterceptFieldFilter;
+import org.hibernate.repackage.cglib.transform.impl.InterceptFieldTransformer;
+import org.hibernate.repackage.cglib.core.ClassNameReader;
+import org.hibernate.repackage.cglib.core.DebuggingClassWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.hibernate.bytecode.AbstractClassTransformerImpl;
import org.hibernate.bytecode.util.FieldFilter;
import org.hibernate.bytecode.util.ClassFilter;
import org.hibernate.HibernateException;
-import org.objectweb.asm.Attribute;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.attrs.Attributes;
+import org.hibernate.repackage.cglib.asm.Attribute;
+import org.hibernate.repackage.cglib.asm.Type;
+import org.hibernate.repackage.cglib.asm.ClassReader;
+import org.hibernate.repackage.cglib.asm.ClassWriter;
+import org.hibernate.repackage.cglib.asm.attrs.Attributes;
/**
* Enhance the classes allowing them to implements InterceptFieldEnabled
Modified:
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/InstantiationOptimizerAdapter.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/InstantiationOptimizerAdapter.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/InstantiationOptimizerAdapter.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -1,7 +1,7 @@
package org.hibernate.bytecode.cglib;
import org.hibernate.bytecode.ReflectionOptimizer;
-import net.sf.cglib.reflect.FastClass;
+import org.hibernate.repackage.cglib.reflect.FastClass;
import org.hibernate.InstantiationException;
import java.io.Serializable;
Modified:
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/ProxyFactoryFactoryImpl.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/ProxyFactoryFactoryImpl.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/bytecode/cglib/ProxyFactoryFactoryImpl.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -6,13 +6,13 @@
import org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory;
import org.hibernate.AssertionFailure;
import org.hibernate.HibernateException;
-import net.sf.cglib.proxy.Enhancer;
-import net.sf.cglib.proxy.CallbackFilter;
-import net.sf.cglib.proxy.MethodInterceptor;
-import net.sf.cglib.proxy.MethodProxy;
-import net.sf.cglib.proxy.NoOp;
-import net.sf.cglib.proxy.Callback;
-import net.sf.cglib.proxy.Factory;
+import org.hibernate.repackage.cglib.proxy.Enhancer;
+import org.hibernate.repackage.cglib.proxy.CallbackFilter;
+import org.hibernate.repackage.cglib.proxy.MethodInterceptor;
+import org.hibernate.repackage.cglib.proxy.MethodProxy;
+import org.hibernate.repackage.cglib.proxy.NoOp;
+import org.hibernate.repackage.cglib.proxy.Callback;
+import org.hibernate.repackage.cglib.proxy.Factory;
import java.lang.reflect.Method;
import java.util.HashMap;
Modified: core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java 2008-05-21 19:53:21
UTC (rev 14681)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/Environment.java 2008-05-21 20:13:20
UTC (rev 14682)
@@ -681,9 +681,8 @@
return (String) ISOLATION_LEVELS.get( new Integer(isolation) );
}
-
public static BytecodeProvider buildBytecodeProvider(Properties properties) {
- String provider = PropertiesHelper.getString( Environment.BYTECODE_PROVIDER,
properties, "cglib" );
+ String provider = PropertiesHelper.getString( BYTECODE_PROVIDER, properties,
"javassist" );
log.info( "Bytecode provider name : " + provider );
return buildBytecodeProvider( provider );
}
@@ -695,10 +694,9 @@
else if ( "cglib".equals( providerName ) ) {
return new org.hibernate.bytecode.cglib.BytecodeProviderImpl();
}
- else {
- log.warn( "unrecognized bytecode provider [" + providerName + "], using
cglib by default" );
- return new org.hibernate.bytecode.cglib.BytecodeProviderImpl();
- }
+
+ log.warn( "unrecognized bytecode provider [" + providerName + "], using
javassist by default" );
+ return new org.hibernate.bytecode.javassist.BytecodeProviderImpl();
}
}
Modified:
core/trunk/core/src/main/java/org/hibernate/intercept/FieldInterceptionHelper.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/intercept/FieldInterceptionHelper.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/intercept/FieldInterceptionHelper.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -26,7 +26,7 @@
public static boolean isInstrumented(Class entityClass) {
Class[] definedInterfaces = entityClass.getInterfaces();
for ( int i = 0; i < definedInterfaces.length; i++ ) {
- if ( "net.sf.cglib.transform.impl.InterceptFieldEnabled".equals(
definedInterfaces[i].getName() )
+ if (
"org.hibernate.repackage.cglib.transform.impl.InterceptFieldEnabled".equals(
definedInterfaces[i].getName() )
|| "org.hibernate.bytecode.javassist.FieldHandled".equals(
definedInterfaces[i].getName() ) ) {
return true;
}
@@ -44,7 +44,7 @@
}
Class[] definedInterfaces = entity.getClass().getInterfaces();
for ( int i = 0; i < definedInterfaces.length; i++ ) {
- if ( "net.sf.cglib.transform.impl.InterceptFieldEnabled".equals(
definedInterfaces[i].getName() ) ) {
+ if (
"org.hibernate.repackage.cglib.transform.impl.InterceptFieldEnabled".equals(
definedInterfaces[i].getName() ) ) {
// we have a CGLIB enhanced entity
return CGLIBHelper.extractFieldInterceptor( entity );
}
@@ -64,7 +64,7 @@
if ( entity != null ) {
Class[] definedInterfaces = entity.getClass().getInterfaces();
for ( int i = 0; i < definedInterfaces.length; i++ ) {
- if ( "net.sf.cglib.transform.impl.InterceptFieldEnabled".equals(
definedInterfaces[i].getName() ) ) {
+ if (
"org.hibernate.repackage.cglib.transform.impl.InterceptFieldEnabled".equals(
definedInterfaces[i].getName() ) ) {
// we have a CGLIB enhanced entity
return CGLIBHelper.injectFieldInterceptor( entity, entityName,
uninitializedFieldNames, session );
}
Modified: core/trunk/core/src/main/java/org/hibernate/intercept/cglib/CGLIBHelper.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/CGLIBHelper.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/CGLIBHelper.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -2,7 +2,7 @@
import org.hibernate.intercept.FieldInterceptor;
import org.hibernate.engine.SessionImplementor;
-import net.sf.cglib.transform.impl.InterceptFieldEnabled;
+import org.hibernate.repackage.cglib.transform.impl.InterceptFieldEnabled;
import java.util.Set;
Modified:
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/FieldInterceptorImpl.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/FieldInterceptorImpl.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/intercept/cglib/FieldInterceptorImpl.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -4,7 +4,7 @@
import java.io.Serializable;
import java.util.Set;
-import net.sf.cglib.transform.impl.InterceptFieldCallback;
+import org.hibernate.repackage.cglib.transform.impl.InterceptFieldCallback;
import org.hibernate.intercept.AbstractFieldInterceptor;
import org.hibernate.engine.SessionImplementor;
@@ -25,9 +25,9 @@
/**
* Package-protected constructor
*
- * @param session
- * @param uninitializedFields
- * @param entityName
+ * @param session The Hibernate session
+ * @param uninitializedFields Names of the fields we need to initialize on load
+ * @param entityName The entity name to which we are being bound
*/
FieldInterceptorImpl(SessionImplementor session, Set uninitializedFields, String
entityName) {
super( session, uninitializedFields, entityName );
Modified:
core/trunk/core/src/main/java/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/proxy/pojo/cglib/CGLIBLazyInitializer.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -5,11 +5,11 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import net.sf.cglib.proxy.Callback;
-import net.sf.cglib.proxy.CallbackFilter;
-import net.sf.cglib.proxy.Enhancer;
-import net.sf.cglib.proxy.InvocationHandler;
-import net.sf.cglib.proxy.NoOp;
+import org.hibernate.repackage.cglib.proxy.Callback;
+import org.hibernate.repackage.cglib.proxy.CallbackFilter;
+import org.hibernate.repackage.cglib.proxy.Enhancer;
+import org.hibernate.repackage.cglib.proxy.InvocationHandler;
+import org.hibernate.repackage.cglib.proxy.NoOp;
import org.hibernate.HibernateException;
import org.hibernate.LazyInitializationException;
Modified:
core/trunk/core/src/main/java/org/hibernate/tool/instrument/cglib/InstrumentTask.java
===================================================================
---
core/trunk/core/src/main/java/org/hibernate/tool/instrument/cglib/InstrumentTask.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/core/src/main/java/org/hibernate/tool/instrument/cglib/InstrumentTask.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -6,12 +6,12 @@
import org.hibernate.bytecode.cglib.BytecodeProviderImpl;
import org.hibernate.bytecode.ClassTransformer;
import org.hibernate.tool.instrument.BasicInstrumentationTask;
-import org.objectweb.asm.ClassReader;
+import org.hibernate.repackage.cglib.asm.ClassReader;
import java.io.ByteArrayInputStream;
-import net.sf.cglib.core.ClassNameReader;
-import net.sf.cglib.transform.impl.InterceptFieldEnabled;
+import org.hibernate.repackage.cglib.core.ClassNameReader;
+import org.hibernate.repackage.cglib.transform.impl.InterceptFieldEnabled;
/**
* An Ant task for instrumenting persistent classes in order to enable
Modified: core/trunk/testsuite/pom.xml
===================================================================
--- core/trunk/testsuite/pom.xml 2008-05-21 19:53:21 UTC (rev 14681)
+++ core/trunk/testsuite/pom.xml 2008-05-21 20:13:20 UTC (rev 14682)
@@ -34,15 +34,10 @@
<version>3.4.GA</version>
</dependency>
<dependency>
- <groupId>cglib</groupId>
- <artifactId>cglib</artifactId>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
</dependency>
- <dependency>
- <groupId>asm</groupId>
- <artifactId>asm-attrs</artifactId>
- <version>1.5.3</version>
- </dependency>
<!-- optional dom4j dependency; needed here for dom4j (de)serialization
-->
<dependency>
<groupId>jaxen</groupId>
Modified:
core/trunk/testsuite/src/test/java/org/hibernate/test/bytecode/cglib/CGLIBThreadLocalTest.java
===================================================================
---
core/trunk/testsuite/src/test/java/org/hibernate/test/bytecode/cglib/CGLIBThreadLocalTest.java 2008-05-21
19:53:21 UTC (rev 14681)
+++
core/trunk/testsuite/src/test/java/org/hibernate/test/bytecode/cglib/CGLIBThreadLocalTest.java 2008-05-21
20:13:20 UTC (rev 14682)
@@ -7,10 +7,8 @@
import org.hibernate.test.bytecode.*;
import junit.framework.*;
-import java.text.*;
import java.lang.reflect.*;
-import net.sf.cglib.proxy.*;
/**
* Test that the static thread local callback object is cleared out of the proxy class
after instantiated.