[jboss-svn-commits] JBL Code SVN: r5024 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/util/asm test/java/org/drools/util/asm

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 11 20:24:11 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-07-11 20:24:04 -0400 (Tue, 11 Jul 2006)
New Revision: 5024

Added:
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java
Log:
JBRULES-365 bug in fields inspection when creating Field Extractors for non-camelcase accessors
-Code now uses Introspector.decapitalize(name);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java	2006-07-12 00:10:28 UTC (rev 5023)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java	2006-07-12 00:24:04 UTC (rev 5024)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.beans.Introspector;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Method;
@@ -275,11 +276,9 @@
         }
 
         private String calcFieldName(String name,
-                                     final int offset) {
+                                     final int offset) {                      
             name = name.substring( offset );
-            final char first = Character.toLowerCase( name.charAt( 0 ) );
-            name = first + name.substring( 1 );
-            return name;
+            return Introspector.decapitalize(name);
         }
 
     }

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java	2006-07-12 00:10:28 UTC (rev 5023)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java	2006-07-12 00:24:04 UTC (rev 5024)
@@ -0,0 +1,31 @@
+package org.drools.util.asm;
+
+public abstract class AbstractClass {
+    public String HTML;
+
+    public AbstractClass() {
+        
+    }
+    
+    public AbstractClass(String HTML) {
+        super();
+        this.HTML = HTML;
+    }
+
+    /**
+     * @return the uRI
+     */
+    public String getHTML() {
+        return this.HTML;
+    }
+
+    /**
+     * @param uri the uRI to set
+     */
+    public void setHTML(String HTML) {
+        this.HTML = HTML;
+    }
+    
+    
+    
+}

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java	2006-07-12 00:10:28 UTC (rev 5023)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java	2006-07-12 00:24:04 UTC (rev 5024)
@@ -36,7 +36,8 @@
                       ((Method) ext.getPropertyGetters().get( 1 )).getName() );
         assertEquals( "getName",
                       ((Method) ext.getPropertyGetters().get( 2 )).getName() );
-
+ 
+        
         final Map names = ext.getFieldNames();
         assertNotNull( names );
         assertEquals( 7,
@@ -47,7 +48,8 @@
                       ((Integer) names.get( "happy" )).intValue() );
         assertEquals( 2,
                       ((Integer) names.get( "name" )).intValue() );
-
+        assertNull( names.get( "nAme" ) );
+        
     }
 
     public void testInterface() throws Exception {
@@ -91,9 +93,21 @@
     }
 
     public void testInheritedFields() throws Exception {
-        final ClassFieldInspector ext = new ClassFieldInspector( BeanInherit.class );
+        ClassFieldInspector ext = new ClassFieldInspector( BeanInherit.class );
         assertEquals( 5,
                       ext.getPropertyGetters().size() );
+        
+        ext = new ClassFieldInspector( InterfaceChildImpl.class );
+        assertEquals( 8,
+                      ext.getPropertyGetters().size() );
+        // test inheritence from abstract class
+        assertEquals( 4, ( (Integer) ext.getFieldNames().get( "HTML" )).intValue() );
+        
+        // check normal field on child class
+        assertEquals( 1, ( (Integer) ext.getFieldNames().get( "baz" )).intValue() );
+        
+        // test inheritence from an interface
+        assertEquals( 3, ( (Integer) ext.getFieldNames().get( "URI" )).intValue() );
     }
 
     public void testIntefaceInheritance() throws Exception {
@@ -101,7 +115,8 @@
         final Map fields = ext.getFieldNames();
         assertTrue( fields.containsKey( "foo" ) );
         assertTrue( fields.containsKey( "bar" ) );
-        assertTrue( fields.containsKey( "baz" ) );
+        assertTrue( fields.containsKey( "baz" ) );        
+        assertTrue( fields.containsKey( "URI" ) );
     }
 
     public void testFieldIndexCalculation() {
@@ -145,6 +160,8 @@
                       ((Method) methods.get( "happy" )).getName() );
         assertEquals( "getName",
                       ((Method) methods.get( "name" )).getName() );
+        // test case sensitive
+        assertNull( methods.get( "nAme" ));        
         assertEquals( "getAge",
                       ((Method) methods.get( "age" )).getName() );
 

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java	2006-07-12 00:10:28 UTC (rev 5023)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java	2006-07-12 00:24:04 UTC (rev 5024)
@@ -0,0 +1,73 @@
+package org.drools.util.asm;
+
+public class InterfaceChildImpl extends AbstractClass
+    implements
+    InterfaceChild {
+    
+    private String bar;
+    private int foo;
+    private int baz;
+    private String URI;
+    public InterfaceChildImpl(String HTML,
+                              String bar,
+                              int foo,
+                              int baz,
+                              String uri) {
+        super(HTML);
+        this.bar = bar;
+        this.foo = foo;
+        this.baz = baz;
+        this.URI = uri;
+    }
+    /**
+     * @return the bar
+     */
+    public String getBar() {
+        return this.bar;
+    }
+    /**
+     * @param bar the bar to set
+     */
+    public void setBar(String bar) {
+        this.bar = bar;
+    }
+    /**
+     * @return the baz
+     */
+    public int getBaz() {
+        return this.baz;
+    }
+    /**
+     * @param baz the baz to set
+     */
+    public void setBaz(int baz) {
+        this.baz = baz;
+    }
+    /**
+     * @return the foo
+     */
+    public int getFoo() {
+        return this.foo;
+    }
+    /**
+     * @param foo the foo to set
+     */
+    public void setFoo(int foo) {
+        this.foo = foo;
+    }
+    /**
+     * @return the uRI
+     */
+    public String getURI() {
+        return this.URI;
+    }
+    /**
+     * @param uri the uRI to set
+     */
+    public void setURI(String uri) {
+        this.URI = uri;
+    }
+    
+    
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java	2006-07-12 00:10:28 UTC (rev 5023)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java	2006-07-12 00:24:04 UTC (rev 5024)
@@ -19,5 +19,7 @@
 public interface InterfaceParent2 {
 
     public int getBaz();
+    
+    public String getURI();
 
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list