[jboss-svn-commits] JBL Code SVN: r5025 - in labs/jbossrules/branches/3.0.x/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:43 EDT 2006


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

Added:
   labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java
   labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java
Modified:
   labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
   labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java
   labs/jbossrules/branches/3.0.x/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/branches/3.0.x/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java	2006-07-12 00:24:04 UTC (rev 5024)
+++ labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java	2006-07-12 00:24:33 UTC (rev 5025)
@@ -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;
@@ -127,7 +128,6 @@
 
         private Class               clazz;
         private ClassFieldInspector inspector;
-        private Map                 fields = new HashMap();
 
         ClassFieldVisitor(final Class cls,
                           final ClassFieldInspector inspector) {
@@ -160,50 +160,65 @@
             return null;
         }
 
-        public void visitInnerClass(String name,
-                                    String outerName,
-                                    String innerName,
-                                    int access) {
+        public void visit(final int arg0,
+                          final int arg1,
+                          final String arg2,
+                          final String arg3,
+                          final String[] arg4,
+                          final String arg5) {
         }
 
-        public void visitAttribute(Attribute attr) {
+        public void visitInnerClass(final String arg0,
+                                    final String arg1,
+                                    final String arg2,
+                                    final int arg3) {
         }
 
+        public void visitField(final int access,
+                               final String arg1,
+                               final String arg2,
+                               final Object arg3,
+                               final Attribute arg4) {
+        }
+
+        public void visitAttribute(final Attribute arg0) {
+        }
+
         public void visitEnd() {
         }
 
-        public void visit(int version,
-                          int access,
-                          String name,
-                          String signature,
-                          String superName,
-                          String[] interfaces) {
+        public void visit(final int arg0,
+                          final int arg1,
+                          final String arg2,
+                          final String arg3,
+                          final String arg4,
+                          final String[] arg5) {
+
         }
 
-        public void visitSource(String source,
-                                String debug) {
+        public void visitSource(final String arg0,
+                                final String arg1) {
 
         }
 
-        public void visitOuterClass(String owner,
-                                    String name,
-                                    String desc) {
+        public void visitOuterClass(final String arg0,
+                                    final String arg1,
+                                    final String arg2) {
 
         }
 
-        public AnnotationVisitor visitAnnotation(String desc,
-                                                 boolean visible) {
+        public AnnotationVisitor visitAnnotation(final String arg0,
+                                                 final boolean arg1) {
 
             return new ClassFieldAnnotationVisitor();
         }
 
-        public FieldVisitor visitField(final int access,
-                                       final String name,
-                                       final String desc,
-                                       final String signature,
-                                       final Object value) {
-            this.fields.put( name.toLowerCase(),
-                             name );
+        public FieldVisitor visitField(final int arg0,
+                                       final String arg1,
+                                       final String arg2,
+                                       final String arg3,
+                                       final Object arg4) {
+
             return null;
         }
 
@@ -261,16 +276,9 @@
         }
 
         private String calcFieldName(String name,
-                                     final int offset) {
-            if ( offset > 0 ) {
-                name = name.substring( offset );
-            }
-            String result = ( String ) this.fields.get( name.toLowerCase() );
-            if  ( result == null ) {
-                final char first = Character.toLowerCase( name.charAt( 0 ) );
-                result = first + name.substring( 1 );
-            }
-            return result;
+                                     final int offset) {                      
+            name = name.substring( offset );
+            return Introspector.decapitalize(name);
         }
 
     }

Added: labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java	2006-07-12 00:24:04 UTC (rev 5024)
+++ labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/AbstractClass.java	2006-07-12 00:24:33 UTC (rev 5025)
@@ -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/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java	2006-07-12 00:24:04 UTC (rev 5024)
+++ labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java	2006-07-12 00:24:33 UTC (rev 5025)
@@ -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/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java	2006-07-12 00:24:04 UTC (rev 5024)
+++ labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceChildImpl.java	2006-07-12 00:24:33 UTC (rev 5025)
@@ -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/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java	2006-07-12 00:24:04 UTC (rev 5024)
+++ labs/jbossrules/branches/3.0.x/drools-core/src/test/java/org/drools/util/asm/InterfaceParent2.java	2006-07-12 00:24:33 UTC (rev 5025)
@@ -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