]
Adrian Brock updated JBMICROCONT-95:
------------------------------------
Fix Version/s: JBossMC_2_0_0M1
Assignee: Adrian Brock
Inconsistent JavaBean property introspection
--------------------------------------------
Key: JBMICROCONT-95
URL:
http://jira.jboss.com/jira/browse/JBMICROCONT-95
Project: JBoss MicroContainer
Issue Type: Bug
Components: Configurator
Environment: org.jboss.test.javabean.test.PropertyTestCase
Reporter: Scott M Stark
Assigned To: Adrian Brock
Fix For: JBossMC_2_0_0M1
There is an inconsistency between introspected bean properties relative to JavaBean
conventions. The PropertyTestCase has a XYZ property in the SimpleBean that fails to parse
with the following exception:
Caused by: java.lang.IllegalArgumentException: No property 'XYZ' for
AbstractBeanInfo(a)6e293a{name=org.jboss.test.javabean.support.SimpleBean classInfo=
properties=[aBoolean, achar, anObject, aShort, aString, aNumber, afloat, aLong, abyte,
anint, aDate, aboolean, xYZ, along, aFloat, aDouble, class, constructorUsed, ashort,
aByte, adouble, aCharacter, aBigInteger, overloadedProperty, aBigDecimal, abc, anInt]
methods=[hashCode, getXYZ, getABoolean, getConstructorUsed, setAnObject, setAshort,
setADouble, clone, setALong, setOverloadedProperty, setOverloadedProperty,
setOverloadedProperty, getAbyte, getANumber, getAString, setAlong, setANumber, setAdouble,
getOverloadedProperty, getABigDecimal, setAbc, setAnInt, setAFloat, setABoolean,
getAFloat, getAbc, getABigInteger, setAbyte, getAnObject, setXYZ, setAnint, getAlong,
getAchar, setAchar, getADouble, setABigDecimal, equals, getAfloat, setABigInteger, wait,
wait, wait, registerNatives, getAByte, setAString, notify, setACharacter, getClass,
getADate, toString, setAByte, getALong, setAShort, getAdouble, notifyAll, getAnInt,
setAboolean, finalize, getAshort, getACharacter, getAnint, isAboolean, getAShort,
setADate, setAfloat] constructors=[] events=}
at
org.jboss.kernel.plugins.config.xml.JavaBeanSchemaInitializer.getProperty(JavaBeanSchemaInitializer.java:231)
The PropertyTestCase also has a testJavaBeanMatching that illustrates the default
JavaBean introspection behavior for an XYZ property, and the
http://java.sun.com/products/javabeans/docs/spec.html talks about capitialization in
section 8.8:
8.8 Capitalization of inferred names.
When we use design patterns to infer a property or event name, we need to decide what
rules
to follow for capitalizing the inferred name. If we extract the name from the middle of a
normal
mixedCase style Java name then the name will, by default, begin with a capital letter.
Java programmers are accustomed to having normal identifiers start with lower case
letters.
Vigorous reviewer input has convinced us that we should follow this same conventional
rule
for property and event names.
Thus when we extract a property or event name from the middle of an existing Java name,
we
normally convert the first character to lower case. However to support the occasional use
of all
upper-case names, we check if the first two characters of the name are both upper case
and if
so leave it alone. So for example,
"FooBah" becomes "fooBah"
"Z" becomes "z"
"URL" becomes "URL"
We provide a method Introspector.decapitalize which implements this conversion rule.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: