Class MapReferenceResolver

  • All Implemented Interfaces:
    ReferenceResolver

    public class MapReferenceResolver
    extends java.lang.Object
    implements ReferenceResolver
    Uses an IdentityObjectIntMap to track objects that have already been written. This can handle a graph with any number of objects, but is slightly slower than ListReferenceResolver for graphs with few objects. Compared to HashMapReferenceResolver, this may provide better performance since the IdentityObjectIntMap does not normally allocate for get or put.
    Author:
    Nathan Sweet
    • Constructor Summary

      Constructors 
      Constructor Description
      MapReferenceResolver()
      Creates a reference resolver with a default maximum capacity of 2048
      MapReferenceResolver​(int maximumCapacity)
      Creates a reference resolver with the specified maximum capacity.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int addWrittenObject​(java.lang.Object object)
      Returns a new ID for an object that is being written for the first time.
      java.lang.Object getReadObject​(java.lang.Class type, int id)
      Returns the object for the specified ID.
      int getWrittenId​(java.lang.Object object)
      Returns an ID for the object if it has been written previously, otherwise returns -1.
      int nextReadId​(java.lang.Class type)
      Reserves the ID for the next object that will be read.
      void reset()
      Called by Kryo.reset().
      void setKryo​(Kryo kryo)
      Sets the Kryo instance that this ClassResolver will be used for.
      void setReadObject​(int id, java.lang.Object object)
      Sets the ID for an object that has been read.
      boolean useReferences​(java.lang.Class type)
      Returns false for all primitive wrappers and enums.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • kryo

        protected Kryo kryo
      • readObjects

        protected final java.util.ArrayList<java.lang.Object> readObjects
    • Constructor Detail

      • MapReferenceResolver

        public MapReferenceResolver()
        Creates a reference resolver with a default maximum capacity of 2048
      • MapReferenceResolver

        public MapReferenceResolver​(int maximumCapacity)
        Creates a reference resolver with the specified maximum capacity. The default value of 2048 is good enough in most cases. If the average object graph is larger than the default, increasing this value can provide better performance.
        Parameters:
        maximumCapacity - the capacity to trim written and read objects to when reset() is called
    • Method Detail

      • setKryo

        public void setKryo​(Kryo kryo)
        Description copied from interface: ReferenceResolver
        Sets the Kryo instance that this ClassResolver will be used for. This is called automatically by Kryo.
        Specified by:
        setKryo in interface ReferenceResolver
      • addWrittenObject

        public int addWrittenObject​(java.lang.Object object)
        Description copied from interface: ReferenceResolver
        Returns a new ID for an object that is being written for the first time.
        Specified by:
        addWrittenObject in interface ReferenceResolver
        Returns:
        The ID, which is stored more efficiently if it is positive and must not be -1 or -2.
      • getWrittenId

        public int getWrittenId​(java.lang.Object object)
        Description copied from interface: ReferenceResolver
        Returns an ID for the object if it has been written previously, otherwise returns -1.
        Specified by:
        getWrittenId in interface ReferenceResolver
      • nextReadId

        public int nextReadId​(java.lang.Class type)
        Description copied from interface: ReferenceResolver
        Reserves the ID for the next object that will be read. This is called only the first time an object is encountered.
        Specified by:
        nextReadId in interface ReferenceResolver
        Parameters:
        type - The type of object that will be read.
        Returns:
        The ID, which is stored more efficiently if it is positive and must not be -1 or -2.
      • useReferences

        public boolean useReferences​(java.lang.Class type)
        Returns false for all primitive wrappers and enums.
        Specified by:
        useReferences in interface ReferenceResolver
        Parameters:
        type - Will never be a primitive type, but may be a primitive type wrapper.