Class CachedPC

java.lang.Object
org.datanucleus.cache.CachedPC
All Implemented Interfaces:
Serializable, Comparable<CachedPC>

public class CachedPC extends Object implements Serializable, Comparable<CachedPC>
An object that is stored in the Level2 Cache keyed by the identity of the persistable object. Comprises a map of the field values keyed by the absolute field number in the class, the loaded fields array, and the version of the object that is represented with these values.
  • Where the field is a relation field (PC, Map, Collection, array) we store the id of any referenced persistable object. This is used when regenerating the object, and recreating its relations. Note that the "id" is the DatastoreId or SingleFieldId etc where applicable otherwise is CachedId (ensuring that the class of the related object is stored).
  • Where the field contains an embedded/serialised persistable object, we store a nested CachedPC object representing that object (since it doesn't exist in its own right).
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • cls

      private Class cls
      Class of the object being cached.
    • id

      private Object id
      Identity of the object being cached. This is to allow recreation of the object when using uniqueKey lookup. This will be null if embedded/serialised.
    • fieldValues

      private Map<Integer,Object> fieldValues
      Values for the fields, keyed by the absolute field number.
    • version

      private Object version
      Version of the cached object (if any) - Long, Timestamp etc.
    • loadedFields

      private boolean[] loadedFields
      The loaded fields array. TODO Note that this could be interpreted from the keys of fieldValues.
  • Constructor Details

    • CachedPC

      public CachedPC(Class cls, boolean[] loadedFields, Object vers, Object id)
      Constructor.
      Parameters:
      cls - The class of the object
      loadedFields - The loaded fields
      vers - Version of the object (optional)
      id - Identity of the object
  • Method Details

    • getObjectClass

      public Class getObjectClass()
    • getId

      public Object getId()
    • setFieldValue

      public void setFieldValue(Integer fieldNumber, Object value)
    • getFieldValue

      public Object getFieldValue(Integer fieldNumber)
    • setVersion

      public void setVersion(Object ver)
    • getVersion

      public Object getVersion()
    • getLoadedFields

      public boolean[] getLoadedFields()
      Accessor for the loaded fields of this object. Use setLoadedField() if you want to update a flag.
      Returns:
      The loaded fields flags
    • getLoadedFieldNumbers

      public int[] getLoadedFieldNumbers()
    • setLoadedField

      public void setLoadedField(int fieldNumber, boolean loaded)
    • getCopy

      public CachedPC getCopy()
    • compareTo

      public int compareTo(CachedPC other)
      Specified by:
      compareTo in interface Comparable<CachedPC>
    • toString

      public String toString()
      Method to return a sting form of the cached object. Returns something like
       CachedPC : cls=mydomain.MyClass version=1 loadedFlags=[YY]
       
      Overrides:
      toString in class Object
      Returns:
      The string form
    • toString

      public String toString(String indent, boolean debug)
      Method to return a string form of the cached object. Returns something like
       CachedPC : cls=mydomain.MyClass version=1 loadedFlags=[YY] numValues=2
           field=0 value=101 type=class java.lang.Long
           field=1 value=Home type=class java.lang.String
       
      when debug is enabled, and omits the "field=..." parts when not using debug.
      Parameters:
      indent - Indent for this CachedPC
      debug - Whether to include the field values in the return
      Returns:
      The string form