Class ConditionalExtractor<T,E>

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

public class ConditionalExtractor<T,E> extends AbstractExtractor<T,E> implements IndexAwareExtractor<T,E>, ExternalizableLite, PortableObject
An IndexAwareExtractor implementation that is only used to create a ConditionalIndex.

Note: the underlying ValueExtractor is used for value extraction during index creation and is the extractor that is associated with the created ConditionalIndex in the given index map. Using the ConditionalExtractor to extract values in not supported.

Since:
Coherence 3.6
Author:
tb 2010.02.08
See Also:
  • Field Details

    • m_filter

      protected Filter m_filter
      The filter used by this extractor.
    • m_extractor

      protected ValueExtractor<T,E> m_extractor
      The underlying extractor.
    • m_fForwardIndex

      protected boolean m_fForwardIndex
      Specifies whether or not this extractor will create a ConditionalIndex that supports a forward index.
    • m_fOptimizeMV

      protected boolean m_fOptimizeMV
      For an indexed value that is a multi-value (Collection or array) this flag specifies whether an attempt should be made to search the forward map for an existing reference that is "equal" to the specified multi-value and use it instead (if available) to reduce the index memory footprint.

      Note, that even if this optimization is allowed, the full search could be quite expensive and our algorithm will always limit the number of cycles it spends on the search.

  • Constructor Details

    • ConditionalExtractor

      public ConditionalExtractor()
      Construct the ConditionalExtractor.
    • ConditionalExtractor

      public ConditionalExtractor(Filter filter, ValueExtractor<T,E> extractor, boolean fForwardIndex)
      Construct the ConditionalExtractor.
      Parameters:
      filter - the filter used by this extractor to create a ConditionalIndex; must not be null.
      extractor - the extractor used by this extractor to create a ConditionalIndex; Note that the created index will be associated with this extractor in the given index map; must not be null
      fForwardIndex - specifies whether or not this extractor will create a ConditionalIndex that supports a forward map
    • ConditionalExtractor

      public ConditionalExtractor(Filter filter, ValueExtractor<T,E> extractor, boolean fForwardIndex, boolean fOptimizeMV)
      Construct the ConditionalExtractor.
      Parameters:
      filter - the filter used by this extractor to create a ConditionalIndex; must not be null.
      extractor - the extractor used by this extractor to create a ConditionalIndex; Note that the created index will be associated with this extractor in the given index map; must not be null
      fForwardIndex - specifies whether or not this extractor will create a ConditionalIndex that supports a forward map
      fOptimizeMV - specifies whether an attempt should be made to search the forward map for an existing reference that is "equal" to the specified multi-value and use it instead (if available) to reduce the index memory footprint
  • Method Details

    • createIndex

      public MapIndex createIndex(boolean fOrdered, Comparator comparator, Map<ValueExtractor<T,E>,MapIndex> 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<T,E>
      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<ValueExtractor<T,E>,MapIndex> mapIndex)
      Destroy an existing index and remove it from the given map of indexes.
      Specified by:
      destroyIndex in interface IndexAwareExtractor<T,E>
      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
    • getExtractor

      public ValueExtractor getExtractor()
    • extract

      public E extract(Object oTarget)
      Using a ConditionalExtractor to extract values in not supported.
      Specified by:
      extract in interface ValueExtractor<T,E>
      Overrides:
      extract in class AbstractExtractor<T,E>
      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<T>
      Specified by:
      equals in interface ValueExtractor<T,E>
      Overrides:
      equals in class AbstractExtractor<T,E>
      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<T,E>
      Overrides:
      hashCode in class AbstractExtractor<T,E>
      Returns:
      hashCode when canonical name set.
    • toString

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