@ -311,15 +311,10 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
* /
* /
protected Method findGetterForProperty ( String propertyName , Class < ? > clazz , boolean mustBeStatic ) {
protected Method findGetterForProperty ( String propertyName , Class < ? > clazz , boolean mustBeStatic ) {
Method [ ] ms = clazz . getMethods ( ) ;
Method [ ] ms = clazz . getMethods ( ) ;
String propertyWriteMethodSuffix ;
String propertyMethodSuffix = getPropertyMethodSuffix ( propertyName ) ;
if ( propertyName . length ( ) > 1 & & Character . isUpperCase ( propertyName . charAt ( 1 ) ) ) {
propertyWriteMethodSuffix = propertyName ;
}
else {
propertyWriteMethodSuffix = StringUtils . capitalize ( propertyName ) ;
}
// Try "get*" method...
// Try "get*" method...
String getterName = "get" + propertyWrite MethodSuffix ;
String getterName = "get" + propertyMethodSuffix ;
for ( Method method : ms ) {
for ( Method method : ms ) {
if ( ! method . isBridge ( ) & & method . getName ( ) . equals ( getterName ) & & method . getParameterTypes ( ) . length = = 0 & &
if ( ! method . isBridge ( ) & & method . getName ( ) . equals ( getterName ) & & method . getParameterTypes ( ) . length = = 0 & &
( ! mustBeStatic | | Modifier . isStatic ( method . getModifiers ( ) ) ) ) {
( ! mustBeStatic | | Modifier . isStatic ( method . getModifiers ( ) ) ) ) {
@ -327,7 +322,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
}
}
}
}
// Try "is*" method...
// Try "is*" method...
getterName = "is" + propertyWrite MethodSuffix ;
getterName = "is" + propertyMethodSuffix ;
for ( Method method : ms ) {
for ( Method method : ms ) {
if ( ! method . isBridge ( ) & & method . getName ( ) . equals ( getterName ) & & method . getParameterTypes ( ) . length = = 0 & &
if ( ! method . isBridge ( ) & & method . getName ( ) . equals ( getterName ) & & method . getParameterTypes ( ) . length = = 0 & &
( boolean . class . equals ( method . getReturnType ( ) ) | | Boolean . class . equals ( method . getReturnType ( ) ) ) & &
( boolean . class . equals ( method . getReturnType ( ) ) | | Boolean . class . equals ( method . getReturnType ( ) ) ) & &
@ -343,7 +338,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
* /
* /
protected Method findSetterForProperty ( String propertyName , Class < ? > clazz , boolean mustBeStatic ) {
protected Method findSetterForProperty ( String propertyName , Class < ? > clazz , boolean mustBeStatic ) {
Method [ ] methods = clazz . getMethods ( ) ;
Method [ ] methods = clazz . getMethods ( ) ;
String setterName = "set" + StringUtils . capitalize ( propertyName ) ;
String setterName = "set" + getPropertyMethodSuffix ( propertyName ) ;
for ( Method method : methods ) {
for ( Method method : methods ) {
if ( ! method . isBridge ( ) & & method . getName ( ) . equals ( setterName ) & & method . getParameterTypes ( ) . length = = 1 & &
if ( ! method . isBridge ( ) & & method . getName ( ) . equals ( setterName ) & & method . getParameterTypes ( ) . length = = 1 & &
( ! mustBeStatic | | Modifier . isStatic ( method . getModifiers ( ) ) ) ) {
( ! mustBeStatic | | Modifier . isStatic ( method . getModifiers ( ) ) ) ) {
@ -353,6 +348,15 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
return null ;
return null ;
}
}
protected String getPropertyMethodSuffix ( String propertyName ) {
if ( propertyName . length ( ) > 1 & & Character . isUpperCase ( propertyName . charAt ( 1 ) ) ) {
return propertyName ;
}
else {
return StringUtils . capitalize ( propertyName ) ;
}
}
/ * *
/ * *
* Find a field of a certain name on a specified class
* Find a field of a certain name on a specified class
* /
* /