org.apache.commons.beanutils
Class DynaProperty

java.lang.Object
  |
  +--org.apache.commons.beanutils.DynaProperty
All Implemented Interfaces:
java.io.Serializable

public class DynaProperty
extends java.lang.Object
implements java.io.Serializable

The metadata describing an individual property of a DynaBean.

The meta contains an optional content type property (getContentType()) for use by mapped and iterated properties. A mapped or iterated property may choose to indicate the type it expects. The DynaBean implementation may choose to enforce this type on its entries. Alternatively, an implementatin may choose to ignore this property. All keys for maps must be of type String so no meta data is needed for map keys.

Version:
$Revision: 1.13 $ $Date: 2004/02/28 13:18:33 $
Author:
Craig R. McClanahan
See Also:
Serialized Form

Field Summary
private static int BOOLEAN_TYPE
           
private static int BYTE_TYPE
           
private static int CHAR_TYPE
           
protected  java.lang.Class contentType
          The (optional) type of content elements for indexed DynaProperty
private static int DOUBLE_TYPE
           
private static int FLOAT_TYPE
           
private static int INT_TYPE
           
private static int LONG_TYPE
           
protected  java.lang.String name
          Property name
private static int SHORT_TYPE
           
protected  java.lang.Class type
          Property type
 
Constructor Summary
DynaProperty(java.lang.String name)
          Construct a property that accepts any data type.
DynaProperty(java.lang.String name, java.lang.Class type)
          Construct a property of the specified data type.
DynaProperty(java.lang.String name, java.lang.Class type, java.lang.Class contentType)
          Construct an indexed or mapped DynaProperty that supports (pseudo)-introspection of the content type.
 
Method Summary
 java.lang.Class getContentType()
          Gets the (optional) type of the indexed content for DynaProperty's that support this feature.
 java.lang.String getName()
          Get the name of this property.
 java.lang.Class getType()
          Gets the Java class representing the data type of the underlying property values.
 boolean isIndexed()
          Does this property represent an indexed value (ie an array or List)?
 boolean isMapped()
          Does this property represent a mapped value (ie a Map)?
private  java.lang.Class readAnyClass(java.io.ObjectInputStream in)
          Reads a class using safe encoding to workaround java 1.3 serialization bug.
private  void readObject(java.io.ObjectInputStream in)
          Reads field values for this object safely.
 java.lang.String toString()
          Return a String representation of this Object.
private  void writeAnyClass(java.lang.Class clazz, java.io.ObjectOutputStream out)
          Write a class using safe encoding to workaround java 1.3 serialization bug.
private  void writeObject(java.io.ObjectOutputStream out)
          Writes this object safely.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BOOLEAN_TYPE

private static final int BOOLEAN_TYPE
See Also:
Constant Field Values

BYTE_TYPE

private static final int BYTE_TYPE
See Also:
Constant Field Values

CHAR_TYPE

private static final int CHAR_TYPE
See Also:
Constant Field Values

DOUBLE_TYPE

private static final int DOUBLE_TYPE
See Also:
Constant Field Values

FLOAT_TYPE

private static final int FLOAT_TYPE
See Also:
Constant Field Values

INT_TYPE

private static final int INT_TYPE
See Also:
Constant Field Values

LONG_TYPE

private static final int LONG_TYPE
See Also:
Constant Field Values

SHORT_TYPE

private static final int SHORT_TYPE
See Also:
Constant Field Values

name

protected java.lang.String name
Property name


type

protected transient java.lang.Class type
Property type


contentType

protected transient java.lang.Class contentType
The (optional) type of content elements for indexed DynaProperty

Constructor Detail

DynaProperty

public DynaProperty(java.lang.String name)
Construct a property that accepts any data type.

Parameters:
name - Name of the property being described

DynaProperty

public DynaProperty(java.lang.String name,
                    java.lang.Class type)
Construct a property of the specified data type.

Parameters:
name - Name of the property being described
type - Java class representing the property data type

DynaProperty

public DynaProperty(java.lang.String name,
                    java.lang.Class type,
                    java.lang.Class contentType)
Construct an indexed or mapped DynaProperty that supports (pseudo)-introspection of the content type.

Parameters:
name - Name of the property being described
type - Java class representing the property data type
contentType - Class that all indexed or mapped elements are instances of
Method Detail

getName

public java.lang.String getName()
Get the name of this property.


getType

public java.lang.Class getType()

Gets the Java class representing the data type of the underlying property values.

There are issues with serializing primitive class types on certain JVM versions (including java 1.3). Therefore, this field must not be serialized using the standard methods.

Please leave this field as transient


getContentType

public java.lang.Class getContentType()
Gets the (optional) type of the indexed content for DynaProperty's that support this feature.

There are issues with serializing primitive class types on certain JVM versions (including java 1.3). Therefore, this field must not be serialized using the standard methods.

Returns:
the Class for the content type if this is an indexed DynaProperty and this feature is supported. Otherwise null.

isIndexed

public boolean isIndexed()
Does this property represent an indexed value (ie an array or List)?


isMapped

public boolean isMapped()
Does this property represent a mapped value (ie a Map)?


toString

public java.lang.String toString()
Return a String representation of this Object.

Overrides:
toString in class java.lang.Object

writeObject

private void writeObject(java.io.ObjectOutputStream out)
                  throws java.io.IOException
Writes this object safely. There are issues with serializing primitive class types on certain JVM versions (including java 1.3). This method provides a workaround.

java.io.IOException

writeAnyClass

private void writeAnyClass(java.lang.Class clazz,
                           java.io.ObjectOutputStream out)
                    throws java.io.IOException
Write a class using safe encoding to workaround java 1.3 serialization bug.

java.io.IOException

readObject

private void readObject(java.io.ObjectInputStream in)
                 throws java.io.IOException,
                        java.lang.ClassNotFoundException
Reads field values for this object safely. There are issues with serializing primitive class types on certain JVM versions (including java 1.3). This method provides a workaround.

Throws:
java.io.StreamCorruptedException - when the stream data values are outside expected range
java.io.IOException
java.lang.ClassNotFoundException

readAnyClass

private java.lang.Class readAnyClass(java.io.ObjectInputStream in)
                              throws java.io.IOException,
                                     java.lang.ClassNotFoundException
Reads a class using safe encoding to workaround java 1.3 serialization bug.

java.io.IOException
java.lang.ClassNotFoundException


Copyright (c) 2001-2004 - Apache Software Foundation