org.apache.axis.utils

Class BeanPropertyDescriptor

public class BeanPropertyDescriptor extends Object

This class represents a field/property in a value type (a class with either bean-style getters/setters or public fields). It is essentially a thin wrapper around the PropertyDescriptor from the JavaBean utilities. We wrap it with this class so that we can create the subclass FieldPropertyDescriptor and access public fields (who wouldn't have PropertyDescriptors normally) via the same interface. There are also some interesting tricks where indexed properties are concerned, mostly involving the fact that we manage the arrays here rather than relying on the value type class to do it itself.

Author: Rich Scheuerle Glen Daniels (gdaniels@apache.org)

Field Summary
protected static Loglog
protected PropertyDescriptormyPD
protected static Object[]noArgs
Constructor Summary
BeanPropertyDescriptor(PropertyDescriptor pd)
Constructor (takes a PropertyDescriptor)
protected BeanPropertyDescriptor()
Protected constructor for use by our children
Method Summary
Objectget(Object obj)
Get the property value
Objectget(Object obj, int i)
Get an indexed property
ClassgetActualType()
StringgetName()
Get our property name.
ClassgetType()
Get the type of a property
protected voidgrowArrayToSize(Object obj, Class componentType, int i)
Grow the array
booleanisArray()
Query if property is an array (excluded byte[]).
booleanisIndexed()
Query if property is indexed
booleanisIndexedOrArray()
Query if property is indexed or if it' an array.
booleanisReadable()
Query if property is readable
booleanisWriteable()
Query if property is writeable
voidset(Object obj, Object newValue)
Set the property value
voidset(Object obj, int i, Object newValue)
Set an indexed property value

Field Detail

log

protected static Log log

myPD

protected PropertyDescriptor myPD

noArgs

protected static final Object[] noArgs

Constructor Detail

BeanPropertyDescriptor

public BeanPropertyDescriptor(PropertyDescriptor pd)
Constructor (takes a PropertyDescriptor)

Parameters: pd

BeanPropertyDescriptor

protected BeanPropertyDescriptor()
Protected constructor for use by our children

Method Detail

get

public Object get(Object obj)
Get the property value

Parameters: obj is the object

Returns: the entire propery value

get

public Object get(Object obj, int i)
Get an indexed property

Parameters: obj is the object i the index

Returns: the object at the indicated index

getActualType

public Class getActualType()

getName

public String getName()
Get our property name.

getType

public Class getType()
Get the type of a property

Returns: the type of the property

growArrayToSize

protected void growArrayToSize(Object obj, Class componentType, int i)
Grow the array

Parameters: obj componentType i

Throws: InvocationTargetException IllegalAccessException

isArray

public boolean isArray()
Query if property is an array (excluded byte[]).

Returns: true if it's an array (excluded byte[])

isIndexed

public boolean isIndexed()
Query if property is indexed

Returns: true if indexed methods exist

isIndexedOrArray

public boolean isIndexedOrArray()
Query if property is indexed or if it' an array.

Returns: true if indexed methods exist or if it's an array

isReadable

public boolean isReadable()
Query if property is readable

Returns: true if readable

isWriteable

public boolean isWriteable()
Query if property is writeable

Returns: true if writeable

set

public void set(Object obj, Object newValue)
Set the property value

Parameters: obj is the object newValue is the new value

set

public void set(Object obj, int i, Object newValue)
Set an indexed property value

Parameters: obj is the object i the index newValue is the new value

Copyright B) 2005 Apache Web Services Project. All Rights Reserved.