Class DeserializationAccelerator

All Implemented Interfaces:
CanonicallyNamed, ExternalizableLite, PortableObject, QueryMapComparator, IndexAwareExtractor, Remote.Function, Remote.ToDoubleFunction, Remote.ToIntFunction, Remote.ToLongFunction, ValueExtractor, Serializable, Comparator, Function, ToDoubleFunction, ToIntFunction, ToLongFunction

public class DeserializationAccelerator extends AbstractExtractor implements IndexAwareExtractor, ExternalizableLite, PortableObject
DeserializationAccelerator is an IndexAwareExtractor implementation that is used to create a ForwardOnlyMapIndex, which in turn is used for deserialization optimization.

Below is an example how to use this feature to optimize deserialization for BinaryEntry.getValue() calls:

   NamedCache cache = ...;
   cache.addIndex(new DeserializationAccelerator(
      IdentityExtractor.INSTANCE), false, null);
 
There are two ways the DeserializationAccelerator could be used: pro-active (default) and on-demand. In the pro-active mode, the underlying ForwardOnlyMapIndex is populated every time the index is rebuilt or updated. In the on-demand mode, the ForwardOnlyMapIndex stores the values only when they are requested.
Since:
Coherence 12.1.3
Author:
gg/hr/jh 2014.03.07
See Also:
  • Field Details

    • m_extractor

      protected ValueExtractor m_extractor
      The underlying extractor.
    • m_fLazy

      protected boolean m_fLazy
      The "lazy" flag.
  • Constructor Details

    • DeserializationAccelerator

      public DeserializationAccelerator()
      Construct the DeserializationAccelerator.
    • DeserializationAccelerator

      public DeserializationAccelerator(ValueExtractor extractor)
      Construct the DeserializationAccelerator.
      Parameters:
      extractor - the extractor used by this extractor to create a ForwardOnlyMapIndex; note that the created index will be associated with this extractor in the given index map; passing null is equivalent to using the IdentityExtractor
    • DeserializationAccelerator

      public DeserializationAccelerator(ValueExtractor extractor, boolean fOnDemand)
      Construct the DeserializationAccelerator.
      Parameters:
      extractor - the extractor used by this extractor to create a ForwardOnlyMapIndex; note that the created index will be associated with this extractor in the given index map; passing null is equivalent to using the IdentityExtractor
      fOnDemand - if true, the forward index will be created "on-demand" as the values are attempted to be accessed; otherwise the forward index is populated proactively (default)
  • Method Details

    • createIndex

      public MapIndex createIndex(boolean fOrdered, Comparator comparator, Map mapIndex, BackingMapContext ctx)
      Create an index and associate it with the corresponding extractor. Important note: it is a responsibility of this method's implementations to place the necessary <ValueExtractor, MapIndex> entry into the given map of indexes.
      Specified by:
      createIndex in interface IndexAwareExtractor
      Parameters:
      fOrdered - true iff the contents of the indexed information should be ordered; false otherwise
      comparator - the Comparator object which imposes an ordering of entries in the index contents; or null if the entries' values natural ordering should be used
      mapIndex - Map<ValueExtractor, MapIndex> to be updated with the created index
      ctx - The context the index is associate with.
      Returns:
      the created index; null if the index has not been created
    • destroyIndex

      public MapIndex destroyIndex(Map mapIndex)
      Destroy an existing index and remove it from the given map of indexes.
      Specified by:
      destroyIndex in interface IndexAwareExtractor
      Parameters:
      mapIndex - map<ValueExtractor, MapIndex> to be updated by removing the index being destroyed
      Returns:
      the destroyed index; null if the index does not exist
    • extract

      public Object extract(Object oTarget)
      Using a DeserializationAccelerator to extract values in not supported.
      Specified by:
      extract in interface ValueExtractor
      Overrides:
      extract in class AbstractExtractor
      Parameters:
      oTarget - the object to extract the value from
      Returns:
      the extracted value; null is an acceptable value
      Throws:
      UnsupportedOperationException - always
    • readExternal

      public void readExternal(DataInput in) throws IOException
      Restore the contents of this object by loading the object's state from the passed DataInput object.
      Specified by:
      readExternal in interface ExternalizableLite
      Parameters:
      in - the DataInput stream to read data from in order to restore the state of this object
      Throws:
      IOException - if an I/O exception occurs
    • writeExternal

      public void writeExternal(DataOutput out) throws IOException
      Save the contents of this object by storing the object's state into the passed DataOutput object.
      Specified by:
      writeExternal in interface ExternalizableLite
      Parameters:
      out - the DataOutput stream to write the state of this object to
      Throws:
      IOException - if an I/O exception occurs
    • readExternal

      public void readExternal(PofReader in) throws IOException
      Restore the contents of a user type instance by reading its state using the specified PofReader object.
      Specified by:
      readExternal in interface PortableObject
      Parameters:
      in - the PofReader from which to read the object's state
      Throws:
      IOException - if an I/O error occurs
    • writeExternal

      public void writeExternal(PofWriter out) throws IOException
      Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
      Specified by:
      writeExternal in interface PortableObject
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs
    • equals

      public boolean equals(Object o)
      Equivalence by canonical name and target.

      When precondition AbstractExtractor.isCanonicallyEquatable(Object) is false, fall back to implementation specific equals implementation.

      Specified by:
      equals in interface Comparator
      Specified by:
      equals in interface ValueExtractor
      Overrides:
      equals in class AbstractExtractor
      Parameters:
      o - the reference object with which to compare
      Returns:
      true if canonical name match and no target mismatch
    • hashCode

      public int hashCode()
      HashCode value is hashCode of non-null canonical name; otherwise, it is the identity hashCode value.

      Subclass computes hashCode when canonical name is null.

      Specified by:
      hashCode in interface ValueExtractor
      Overrides:
      hashCode in class AbstractExtractor
      Returns:
      hashCode when canonical name set.
    • toString

      public String toString()
      Return a human-readable description for this DeserializationAccelerator.
      Overrides:
      toString in class Object
      Returns:
      a String description of the DeserializationAccelerator