Class SingleFieldIdentity

java.lang.Object
javax.jdo.identity.SingleFieldIdentity
All Implemented Interfaces:
Externalizable, Serializable, Comparable
Direct Known Subclasses:
ByteIdentity, CharIdentity, IntIdentity, LongIdentity, ObjectIdentity, ShortIdentity, StringIdentity

public abstract class SingleFieldIdentity extends Object implements Externalizable, 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:
  • Field Details

    • msg

      protected static I18NHelper msg
      The Internationalization message helper.
    • targetClass

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

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

      protected int hashCode
      The hashCode.
    • keyAsObject

      protected Object keyAsObject
      The key as an Object.
  • Constructor Details

    • SingleFieldIdentity

      protected SingleFieldIdentity(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 Details

    • setKeyAsObject

      protected void setKeyAsObject(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(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 Class getTargetClass()
      Return the target class.
      Returns:
      the target class.
      Since:
      2.0
    • getTargetClassName

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

      public 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 Object createKeyAsObject()
      Create the key as an Object.
      Returns:
      the key as an Object;
      Since:
      2.0
    • equals

      public boolean equals(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 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 Object
      Returns:
      the cached hash code.
    • writeExternal

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

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Read from the input stream. Creates a new instance with the target class name set
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      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