[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