[jboss-svn-commits] JBL Code SVN: r10289 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 16 18:24:46 EDT 2007
Author: tirelli
Date: 2007-03-16 18:24:46 -0400 (Fri, 16 Mar 2007)
New Revision: 10289
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/Cheese.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java
Log:
JBRULES-740: fixing problem when creating shadow proxy for classes with static methods. Unit test added.
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-03-16 22:11:35 UTC (rev 10288)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java 2007-03-16 22:24:46 UTC (rev 10289)
@@ -132,7 +132,7 @@
final Map fieldTypes = new HashMap();
final Method[] methods = getMethods( clazz );
for ( int i = 0; i < methods.length; i++ ) {
- if ( (!Modifier.isFinal( methods[i].getModifiers() )) && Modifier.isPublic( methods[i].getModifiers() ) ) {
+ 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" )) ) {
final String fieldName = methods[i].getName();
@@ -795,10 +795,6 @@
Type.getMethodDescriptor( method ) );
}
- // mv.visitFieldInsn( Opcodes.GETFIELD,
- // className,
- // name,
- // Type.getDescriptor( fieldType ) );
if ( fieldType.equals( Long.TYPE ) ) {
mv.visitInsn( Opcodes.LCMP );
mv.visitJumpInsn( Opcodes.IFEQ,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/Cheese.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/Cheese.java 2007-03-16 22:11:35 UTC (rev 10288)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/Cheese.java 2007-03-16 22:24:46 UTC (rev 10289)
@@ -32,7 +32,7 @@
private String type;
-
+
private int price;
public Cheese() {
@@ -43,6 +43,10 @@
this.type = type;
this.price = price;
}
+
+ public static String getStaticString() {
+ return staticString;
+ }
/* (non-Javadoc)
* @see org.drools.CheeseInterface#getType()
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java 2007-03-16 22:11:35 UTC (rev 10288)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java 2007-03-16 22:24:46 UTC (rev 10289)
@@ -1,5 +1,6 @@
package org.drools.base;
+import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
@@ -8,6 +9,7 @@
import org.drools.Cheese;
import org.drools.CheeseInterface;
+import org.drools.RLIRecord;
public class ShadowProxyFactoryTest extends TestCase {
@@ -230,5 +232,29 @@
result = PRIME * result + cheese.getPrice();
return result;
}
+
+ public void testClassWithStaticMethod() {
+ try {
+ // creating original object
+ final String originalType = "stilton";
+ final int originalPrice = 15;
+ final Cheese cheese = new Cheese( originalType,
+ originalPrice );
+ // creating proxy
+ final Class proxy = ShadowProxyFactory.getProxy( Cheese.class );
+ final Cheese cheeseProxy1 = (Cheese) proxy.getConstructor( new Class[]{Cheese.class} ).newInstance( new Object[]{cheese} );
+ final Cheese cheeseProxy2 = (Cheese) proxy.getConstructor( new Class[]{Cheese.class} ).newInstance( new Object[]{cheese} );
+
+ int cheesehash = cheeseHashCode( cheese );
+ Assert.assertEquals( cheeseProxy1, cheeseProxy2 );
+ Assert.assertEquals( cheeseProxy2, cheeseProxy1 );
+ Assert.assertEquals( cheesehash, cheeseProxy1.hashCode() );
+
+ } catch ( final Exception e ) {
+ e.printStackTrace();
+ fail( "Error: " + e.getMessage() );
+ }
+ }
+
}
More information about the jboss-svn-commits
mailing list