[jboss-svn-commits] JBL Code SVN: r13015 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jul 2 15:15:01 EDT 2007
Author: tirelli
Date: 2007-07-02 15:15:01 -0400 (Mon, 02 Jul 2007)
New Revision: 13015
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java
Log:
JBRULES-960: not generating proxy for classes with final equals and hashcode
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java 2007-07-02 19:03:16 UTC (rev 13014)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java 2007-07-02 19:15:01 UTC (rev 13015)
@@ -50,7 +50,7 @@
public static Class getProxy(final Class clazz) {
try {
- if ( (clazz.getModifiers() & Modifier.FINAL) != 0 ) {
+ if ( !isPossibleToGenerateTheProxyFor( clazz ) ) {
return null;
}
@@ -71,7 +71,7 @@
public static byte[] getProxyBytes(final Class clazz) {
try {
- if ( (clazz.getModifiers() & Modifier.FINAL) != 0 ) {
+ if ( !isPossibleToGenerateTheProxyFor( clazz ) ) {
return null;
}
@@ -84,6 +84,21 @@
throw new RuntimeDroolsException( e );
}
}
+
+ protected static boolean isPossibleToGenerateTheProxyFor( final Class clazz) throws Exception {
+ if ( (clazz.getModifiers() & Modifier.FINAL) != 0 ) {
+ return false;
+ }
+ Method equals = clazz.getMethod( "equals", new Class[] { Object.class } );
+ if( Modifier.isFinal( equals.getModifiers() ) ) {
+ return false;
+ }
+ Method hashcode = clazz.getMethod( "hashCode", new Class[0] );
+ if( Modifier.isFinal( hashcode.getModifiers() ) ) {
+ return false;
+ }
+ return true;
+ }
/**
* @param clazz
@@ -141,6 +156,7 @@
for ( int i = 0; i < methods.length; i++ ) {
if ( (!Modifier.isFinal( methods[i].getModifiers() )) && Modifier.isPublic( methods[i].getModifiers() ) && (!Modifier.isStatic( methods[i].getModifiers() )) ) {
if ( (!methods[i].getReturnType().equals( Void.TYPE )) && (methods[i].getParameterTypes().length == 0) && (!methods[i].getName().equals( "hashCode" )) && (!methods[i].getName().equals( "toString" )) ) {
+ System.out.println("Caching: "+methods[i].toString());
final String fieldName = methods[i].getName();
@@ -161,6 +177,7 @@
clazz,
cw );
} else if ( (!methods[i].getName().equals( "hashCode" )) && (!methods[i].getName().equals( "equals" )) ) {
+ System.out.println("Delegating: "+methods[i].toString());
buildDelegateMethod( methods[i],
clazz,
className,
More information about the jboss-svn-commits
mailing list