Class SingleFieldIdentity

  • All Implemented Interfaces:
    java.io.Externalizable, java.io.Serializable, java.lang.Comparable
    Direct Known Subclasses:
    ByteIdentity, CharIdentity, IntIdentity, LongIdentity, ObjectIdentity, ShortIdentity, StringIdentity

    public abstract class SingleFieldIdentity
    extends java.lang.Object
    implements java.io.Externalizable, java.lang.Comparable
    This class is the abstract base class for all single field identity classes. A common case of application identity uses exactly one persistent field in the class to represent identity. In this case, the application can use a standard JDO class instead of creating a new user-defined class for the purpose.
    Version:
    2.0
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int hashCode
      The hashCode.
      protected java.lang.Object keyAsObject
      The key as an Object.
      protected static I18NHelper msg
      The Internationalization message helper.
      private java.lang.Class targetClass
      The class of the target object.
      private java.lang.String targetClassName
      The name of the class of the target object.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        SingleFieldIdentity()
      Constructor only for Externalizable.
      protected SingleFieldIdentity​(java.lang.Class pcClass)
      Constructor with target class.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void assertKeyNotNull​(java.lang.Object key)
      Assert that the key is not null.
      protected int compare​(SingleFieldIdentity o)
      Determine the ordering of identity objects.
      protected java.lang.Object createKeyAsObject()
      Create the key as an Object.
      boolean equals​(java.lang.Object obj)
      Check the class and class name and object type.
      java.lang.Object getKeyAsObject()
      Return the key as an Object.
      java.lang.Class getTargetClass()
      Return the target class.
      java.lang.String getTargetClassName()
      Return the target class name.
      protected int hashClassName()
      Return the hash code of the class name.
      int hashCode()
      Return the cached hash code.
      void readExternal​(java.io.ObjectInput in)
      Read from the input stream.
      protected void setKeyAsObject​(java.lang.Object key)
      Set the given key as the key for this instance.
      void writeExternal​(java.io.ObjectOutput out)
      Write to the output stream.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Comparable

        compareTo
    • Field Detail

      • msg

        protected static I18NHelper msg
        The Internationalization message helper.
      • targetClass

        private transient java.lang.Class targetClass
        The class of the target object.
      • targetClassName

        private java.lang.String targetClassName
        The name of the class of the target object.
      • hashCode

        protected int hashCode
        The hashCode.
      • keyAsObject

        protected java.lang.Object keyAsObject
        The key as an Object.
    • Constructor Detail

      • SingleFieldIdentity

        protected SingleFieldIdentity​(java.lang.Class pcClass)
        Constructor with target class.
        Parameters:
        pcClass - the class of the target
        Since:
        2.0
      • SingleFieldIdentity

        public SingleFieldIdentity()
        Constructor only for Externalizable.
        Since:
        2.0
    • Method Detail

      • setKeyAsObject

        protected void setKeyAsObject​(java.lang.Object key)
        Set the given key as the key for this instance. Compute the hash code for the instance.
        Parameters:
        key - The key to use
        Since:
        2.0
      • assertKeyNotNull

        protected void assertKeyNotNull​(java.lang.Object key)
        Assert that the key is not null. Throw a JDONullIdentityException if the given key is null.
        Parameters:
        key - The key to check
        Since:
        2.0
      • getTargetClass

        public java.lang.Class getTargetClass()
        Return the target class.
        Returns:
        the target class.
        Since:
        2.0
      • getTargetClassName

        public java.lang.String getTargetClassName()
        Return the target class name.
        Returns:
        the target class name.
        Since:
        2.0
      • getKeyAsObject

        public java.lang.Object getKeyAsObject()
        Return the key as an Object. The method is synchronized to avoid race conditions in multi-threaded environments.
        Returns:
        the key as an Object.
        Since:
        2.0
      • createKeyAsObject

        protected java.lang.Object createKeyAsObject()
        Create the key as an Object.
        Returns:
        the key as an Object;
        Since:
        2.0
      • equals

        public boolean equals​(java.lang.Object obj)
        Check the class and class name and object type. If restored from serialization, class will be null so compare class name.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the other object
        Returns:
        true if the class or class name is the same
      • hashClassName

        protected int hashClassName()
        Return the hash code of the class name.
        Returns:
        the hash code of the class name
        Since:
        2.0
      • hashCode

        public int hashCode()
        Return the cached hash code.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the cached hash code.
      • writeExternal

        public void writeExternal​(java.io.ObjectOutput out)
                           throws java.io.IOException
        Write to the output stream.
        Specified by:
        writeExternal in interface java.io.Externalizable
        Parameters:
        out - the stream
        Throws:
        java.io.IOException
      • readExternal

        public void readExternal​(java.io.ObjectInput in)
                          throws java.io.IOException,
                                 java.lang.ClassNotFoundException
        Read from the input stream. Creates a new instance with the target class name set
        Specified by:
        readExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • compare

        protected int compare​(SingleFieldIdentity o)
        Determine the ordering of identity objects. Only the class name is compared. This method is only used by subclasses.
        Parameters:
        o - Other identity
        Returns:
        The relative ordering between the objects
        Since:
        2.2