[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