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

    See Also:
    Serialized Form
    • 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 mapped DynaProperty that supports (pseudo)-introspection of the content type.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(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 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.
      int hashCode()  
      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)
      Writes 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, finalize, getClass, notify, notifyAll, wait, wait, wait
    • 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

      • 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 by Object.equals(Object)
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - The object to compare to
        Returns:
        true if object is a dyna property with the same name type and content type, otherwise false
        Since:
        1.8.0
      • 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.
      • 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:
        hashCode in class java.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:
        true if the property is indexed (i.e. is a List or array), otherwise false
      • isMapped

        public boolean isMapped()
        Does this property represent a mapped value (ie a Map)?
        Returns:
        true if the property is a Map otherwise false
      • 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.
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • 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.
        Parameters:
        in - the content source.
        Throws:
        java.io.IOException - when the stream data values are outside expected range
        java.lang.ClassNotFoundException - Class of a serialized object cannot be found.
      • toString

        public java.lang.String toString()
        Return a String representation of this Object.
        Overrides:
        toString in class java.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.IOException
        Writes 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.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.
        Parameters:
        out - Where to write.
        Throws:
        java.io.IOException - if I/O errors occur while writing to the underlying stream.