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

set<Property>(String key, Object value),

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

Version: $Revision: 1.18.2.1 $ $Date: 2004/07/27 21:44:26 $

Author: Rey Franois Gregor Raman

See Also: java.beans.PropertyDescriptor

Field Summary
static HashtabledeclaredMethodCache
ClassmappedPropertyType
The underlying data type of the property we are describing.
MethodmappedReadMethod
The reader method for this property (if any).
MethodmappedWriteMethod
The writer method for this property (if any).
static Class[]stringClassArray
The parameter types array for the reader method signature.
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
static StringcapitalizePropertyName(String s)
Return a capitalized version of the specified property name.
voidfindMappedPropertyType()
Introspect our bean class to identify the corresponding getter and setter methods.
static MethodfindMethod(Class cls, String methodName, int argCount)
Find a target methodName on a given class.
static MethodfindMethod(Class cls, String methodName, int argCount, Class[] args)
Find a target methodName with specific parameter list on a given class.
ClassgetMappedPropertyType()
Gets the Class object for the property values.
MethodgetMappedReadMethod()
Gets the method that should be used to read one of the property value.
MethodgetMappedWriteMethod()
Gets the method that should be used to write one of the property value.
static Method[]getPublicDeclaredMethods(Class clz)
static MethodinternalFindMethod(Class start, String methodName, int argCount)
Internal support for finding a target methodName on a given class.
static MethodinternalFindMethod(Class start, String methodName, int argCount, Class[] args)
Internal support for finding a target methodName with a given parameter list on a given class.
static booleanisSubclass(Class a, Class b)
Return true if class a is either equivalent to class b, or if class a is a subclass of class b, ie if a either "extends" or "implements" b.
voidsetMappedReadMethod(Method mappedGetter)
Sets the method that should be used to read one of the property value.
voidsetMappedWriteMethod(Method mappedSetter)
Sets the method that should be used to write the property value.
booleanthrowsException(Method method, Class exception)
Return true iff the given method throws the given exception.

Field Detail

declaredMethodCache

private static Hashtable declaredMethodCache

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).

stringClassArray

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

Constructor Detail

MappedPropertyDescriptor

public 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). 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.

Throws: IntrospectionException if an exception occurs during introspection.

MappedPropertyDescriptor

public 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.

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.

Throws: IntrospectionException if an exception occurs during introspection.

MappedPropertyDescriptor

public 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.

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.

Throws: IntrospectionException if an exception occurs during introspection.

Method Detail

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()
Introspect our bean class to identify the corresponding getter and setter methods.

findMethod

static Method findMethod(Class cls, String methodName, int argCount)
Find a target methodName on a given class.

findMethod

static Method findMethod(Class cls, String methodName, int argCount, Class[] args)
Find a target methodName with specific parameter list on a given class.

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.

getPublicDeclaredMethods

private static Method[] getPublicDeclaredMethods(Class clz)

internalFindMethod

private static Method internalFindMethod(Class start, String methodName, int argCount)
Internal support for finding a target methodName on a given class.

internalFindMethod

private static Method internalFindMethod(Class start, String methodName, int argCount, Class[] args)
Internal support for finding a target methodName with a given parameter list on a given class.

isSubclass

static boolean isSubclass(Class a, Class b)
Return true if class a is either equivalent to class b, or if class a is a subclass of class b, ie if a either "extends" or "implements" b. Note tht either or both "Class" objects may represent interfaces.

setMappedReadMethod

public void setMappedReadMethod(Method mappedGetter)
Sets the method that should be used to read one of the property value.

Parameters: mappedGetter The new getter method.

setMappedWriteMethod

public void setMappedWriteMethod(Method mappedSetter)
Sets the method that should be used to write the property value.

Parameters: mappedSetter The new setter method.

throwsException

private boolean throwsException(Method method, Class exception)
Return true iff the given method throws the given exception.
Copyright (c) 2001-2004 - Apache Software Foundation