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.SerializableThe 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.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static intBOOLEAN_TYPEprivate static intBYTE_TYPEprivate static intCHAR_TYPEprotected java.lang.Class<?>contentTypeThe (optional) type of content elements for indexedDynaPropertyprivate static intDOUBLE_TYPEprivate static intFLOAT_TYPEprivate static intINT_TYPEprivate static intLONG_TYPEprotected java.lang.StringnameProperty nameprivate static longserialVersionUIDprivate static intSHORT_TYPEprotected java.lang.Class<?>typeProperty type
-
Constructor Summary
Constructors Constructor Description 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 mappedDynaPropertythat supports (pseudo)-introspection of the content type.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(java.lang.Object obj)Checks this instance against the specified Object for equality.java.lang.Class<?>getContentType()Gets the (optional) type of the indexed content forDynaProperty's that support this feature.java.lang.StringgetName()Get the name of this property.java.lang.Class<?>getType()Gets the Java class representing the data type of the underlying property values.inthashCode()booleanisIndexed()Does this property represent an indexed value (ie an array or List)?booleanisMapped()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 voidreadObject(java.io.ObjectInputStream in)Reads field values for this object safely.java.lang.StringtoString()Return a String representation of this Object.private voidwriteAnyClass(java.lang.Class<?> clazz, java.io.ObjectOutputStream out)Writes a class using safe encoding to workaround java 1.3 serialization bug.private voidwriteObject(java.io.ObjectOutputStream out)Writes this object safely.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
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 indexedDynaProperty
-
-
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 describedtype- 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 mappedDynaPropertythat supports (pseudo)-introspection of the content type.- Parameters:
name- Name of the property being describedtype- Java class representing the property data typecontentType- Class that all indexed or mapped elements are instances of
-
-
Method Detail
-
equals
public boolean equals(java.lang.Object obj)
Checks this instance against the specified Object for equality. Overrides the default refererence test for equality provided byObject.equals(Object)- Overrides:
equalsin classjava.lang.Object- Parameters:
obj- The object to compare to- Returns:
trueif object is a dyna property with the same name type and content type, otherwisefalse- Since:
- 1.8.0
-
getContentType
public java.lang.Class<?> getContentType()
Gets the (optional) type of the indexed content forDynaProperty'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
DynaPropertyand this feature is supported. Otherwise null.
-
getName
public java.lang.String getName()
Get the name of this property.- Returns:
- the name of the 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- Returns:
- the property type
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object- Returns:
- the hashcode for this dyna property
- Since:
- 1.8.0
- See Also:
Object.hashCode()
-
isIndexed
public boolean isIndexed()
Does this property represent an indexed value (ie an array or List)?- Returns:
trueif the property is indexed (i.e. is a List or array), otherwisefalse
-
isMapped
public boolean isMapped()
Does this property represent a mapped value (ie a Map)?- Returns:
trueif the property is a Map otherwisefalse
-
readAnyClass
private java.lang.Class<?> readAnyClass(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundExceptionReads a class using safe encoding to workaround java 1.3 serialization bug.- Throws:
java.io.IOExceptionjava.lang.ClassNotFoundException
-
readObject
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundExceptionReads 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.- Parameters:
in- the content source.- Throws:
java.io.IOException- when the stream data values are outside expected rangejava.lang.ClassNotFoundException- Class of a serialized object cannot be found.
-
toString
public java.lang.String toString()
Return a String representation of this Object.- Overrides:
toStringin classjava.lang.Object- Returns:
- a String representation of the dyna property
-
writeAnyClass
private void writeAnyClass(java.lang.Class<?> clazz, java.io.ObjectOutputStream out) throws java.io.IOExceptionWrites a class using safe encoding to workaround java 1.3 serialization bug.- Throws:
java.io.IOException- if I/O errors occur while writing to the underlying stream.
-
writeObject
private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOExceptionWrites this object safely. There are issues with serializing primitive class types on certain JVM versions (including java 1.3). This method provides a workaround.- Parameters:
out- Where to write.- Throws:
java.io.IOException- if I/O errors occur while writing to the underlying stream.
-
-