org.apache.commons.beanutils

Class MappedPropertyDescriptor


public class MappedPropertyDescriptor
extends PropertyDescriptor

A MappedPropertyDescriptor describes one mapped property. Mapped properties are multivalued properties like indexed properties but that are accessed with a String key instead of an index. Such property values are typically stored in a Map collection. For this class to work properly, a mapped value must have getter and setter methods of the form

getProperty(String key) and

setProperty(String key, Object value),

where Property must be replaced by the name of the property.

Version:
$Revision: 556229 $ $Date: 2007-07-14 07:11:19 +0100 (Sat, 14 Jul 2007) $
Authors:
Rey Francois
Gregor Rayman
See Also:
java.beans.PropertyDescriptor

Field Summary

private static Class[]
STRING_CLASS_PARAMETER
The parameter types array for the reader method signature.
private Class
mappedPropertyType
The underlying data type of the property we are describing.
private Method
mappedReadMethod
The reader method for this property (if any).
private Method
mappedWriteMethod
The writer method for this property (if any).

Constructor Summary

MappedPropertyDescriptor(String propertyName, Class beanClass)
Constructs a MappedPropertyDescriptor for a property that follows the standard Java convention by having getFoo and setFoo accessor methods, with the addition of a String parameter (the key).
MappedPropertyDescriptor(String propertyName, Class beanClass, String mappedGetterName, String mappedSetterName)
This constructor takes the name of a mapped property, and method names for reading and writing the property.
MappedPropertyDescriptor(String propertyName, Method mappedGetter, Method mappedSetter)
This constructor takes the name of a mapped property, and Method objects for reading and writing the property.

Method Summary

private static String
capitalizePropertyName(String s)
Return a capitalized version of the specified property name.
private void
findMappedPropertyType()
Introspect our bean class to identify the corresponding getter and setter methods.
Class
getMappedPropertyType()
Gets the Class object for the property values.
Method
getMappedReadMethod()
Gets the method that should be used to read one of the property value.
Method
getMappedWriteMethod()
Gets the method that should be used to write one of the property value.
private static Method
getMethod(Class clazz, String methodName, Class[] parameterTypes)
Find a method on a class with a specified parameter list.
private static Method
getMethod(Class clazz, String methodName, int parameterCount)
Find a method on a class with a specified number of parameters.
private static Method
internalGetMethod(Class initial, String methodName, int parameterCount)
Find a method on a class with a specified number of parameters.
void
setMappedReadMethod(Method mappedGetter)
Sets the method that should be used to read one of the property value.
void
setMappedWriteMethod(Method mappedSetter)
Sets the method that should be used to write the property value.

Field Details

STRING_CLASS_PARAMETER

private static final Class[] STRING_CLASS_PARAMETER
The parameter types array for the reader method signature.

mappedPropertyType

private Class mappedPropertyType
The underlying data type of the property we are describing.

mappedReadMethod

private Method mappedReadMethod
The reader method for this property (if any).

mappedWriteMethod

private Method mappedWriteMethod
The writer method for this property (if any).

Constructor Details

MappedPropertyDescriptor

public MappedPropertyDescriptor(String propertyName,
                                Class beanClass)
            throws IntrospectionException
Constructs a MappedPropertyDescriptor for a property that follows the standard Java convention by having getFoo and setFoo accessor methods, with the addition of a String parameter (the key). Thus if the argument name is "fred", it will assume that the writer method is "setFred" and the reader method is "getFred". Note that the property name should start with a lower case character, which will be capitalized in the method names.
Parameters:
propertyName - The programmatic name of the property.
beanClass - The Class object for the target bean. For example sun.beans.OurButton.class.

MappedPropertyDescriptor

public MappedPropertyDescriptor(String propertyName,
                                Class beanClass,
                                String mappedGetterName,
                                String mappedSetterName)
            throws IntrospectionException
This constructor takes the name of a mapped property, and method names for reading and writing the property.
Parameters:
propertyName - The programmatic name of the property.
beanClass - The Class object for the target bean. For example sun.beans.OurButton.class.
mappedGetterName - The name of the method used for reading one of the property values. May be null if the property is write-only.
mappedSetterName - The name of the method used for writing one of the property values. May be null if the property is read-only.

MappedPropertyDescriptor

public MappedPropertyDescriptor(String propertyName,
                                Method mappedGetter,
                                Method mappedSetter)
            throws IntrospectionException
This constructor takes the name of a mapped property, and Method objects for reading and writing the property.
Parameters:
propertyName - The programmatic name of the property.
mappedGetter - The method used for reading one of the property values. May be be null if the property is write-only.
mappedSetter - The method used for writing one the property values. May be null if the property is read-only.

Method Details

capitalizePropertyName

private static String capitalizePropertyName(String s)
Return a capitalized version of the specified property name.
Parameters:
s - The property name

findMappedPropertyType

private void findMappedPropertyType()
            throws IntrospectionException
Introspect our bean class to identify the corresponding getter and setter methods.

getMappedPropertyType

public Class getMappedPropertyType()
Gets the Class object for the property values.
Returns:
The Java type info for the property values. Note that the "Class" object may describe a built-in Java type such as "int". The result may be "null" if this is a mapped property that does not support non-keyed access.

This is the type that will be returned by the mappedReadMethod.


getMappedReadMethod

public Method getMappedReadMethod()
Gets the method that should be used to read one of the property value.
Returns:
The method that should be used to read the property value. May return null if the property can't be read.

getMappedWriteMethod

public Method getMappedWriteMethod()
Gets the method that should be used to write one of the property value.
Returns:
The method that should be used to write one of the property value. May return null if the property can't be written.

getMethod

private static Method getMethod(Class clazz,
                                String methodName,
                                Class[] parameterTypes)
            throws IntrospectionException
Find a method on a class with a specified parameter list.

getMethod

private static Method getMethod(Class clazz,
                                String methodName,
                                int parameterCount)
            throws IntrospectionException
Find a method on a class with a specified number of parameters.

internalGetMethod

private static Method internalGetMethod(Class initial,
                                        String methodName,
                                        int parameterCount)
Find a method on a class with a specified number of parameters.

setMappedReadMethod

public void setMappedReadMethod(Method mappedGetter)
            throws IntrospectionException
Sets the method that should be used to read one of the property value.
Parameters:
mappedGetter - The mapped getter method.

setMappedWriteMethod

public void setMappedWriteMethod(Method mappedSetter)
            throws IntrospectionException
Sets the method that should be used to write the property value.
Parameters:
mappedSetter - The mapped setter method.

Copyright (c) 2001-2007 - Apache Software Foundation