Class SelectionContext

java.lang.Object
org.nuxeo.ecm.core.storage.sql.SelectionContext

public class SelectionContext extends Object
A SelectionContext holds information for a set Selection objects, mostly acting as a cache.

Some of the information is identical to what's in the database and can be safely be GC'ed, so it lives in a memory-sensitive map (softMap), otherwise it's moved to a normal map (hardMap) (creation or deletion).

  • Field Details

    • hardMap

      public final Map<Serializable,Selection> hardMap
    • registry

      protected final io.dropwizard.metrics5.MetricRegistry registry
    • modifiedInTransactionCount

      protected final io.dropwizard.metrics5.Counter modifiedInTransactionCount
    • cacheHitCount

      protected final io.dropwizard.metrics5.Counter cacheHitCount
    • cacheGetTimer

      protected final io.dropwizard.metrics5.Timer cacheGetTimer
  • Constructor Details

  • Method Details

    • clearCaches

      public int clearCaches()
    • getSize

      public int getSize()
    • getSelectionOrNull

      protected Selection getSelectionOrNull(Serializable selId)
      Gets the proper selection cache, if it exists, otherwise returns null.
      Since:
      9.2
    • applicable

      public boolean applicable(SimpleFragment fragment)
    • recordCreated

      public void recordCreated(SimpleFragment fragment)
      Records the fragment as a just-created selection member.
    • newSelection

      public void newSelection(Serializable selId)
      Notes that a new empty selection should be created.
    • recordExisting

      public void recordExisting(SimpleFragment fragment, boolean invalidate)
      Parameters:
      invalidate - true if this is for a fragment newly created by internal database process (copy, etc.) and must notified to other session; false if this is a normal read
    • recordRemoved

      public void recordRemoved(SimpleFragment fragment)
      Removes a selection item from the selection.
    • recordRemoved

      public void recordRemoved(Serializable id, Serializable selId)
      Removes a selection item from the selection.
    • recordRemovedSelection

      public void recordRemovedSelection(Serializable selId)
      Records a selection as removed.
    • getSelectionFragment

      public SimpleFragment getSelectionFragment(Serializable selId, String filter)
      Find a fragment given its selection id and value.

      If the fragment is not in the context, fetch it from the mapper.

      Parameters:
      selId - the selection id
      filter - the value to filter on
      Returns:
      the fragment, or null if not found
    • getSelectionFragments

      public List<SimpleFragment> getSelectionFragments(Serializable selId, String filter)
      Finds all the selection fragments for a given id.

      No sorting on value is done.

      Parameters:
      selId - the selection id
      filter - the value to filter on, or null for all
      Returns:
      the list of fragments
    • getSelectionIds

      public Set<Serializable> getSelectionIds(List<Serializable> values)
      Gets all the selection fragment ids for a given list of values.
      Since:
      9.2
    • postSave

      public void postSave()
    • markInvalidated

      public void markInvalidated(Set<RowId> modified)
      Marks locally all the invalidations gathered by a Mapper operation (like a version restore).
    • gatherInvalidations

      public void gatherInvalidations(VCSInvalidations invalidations)
      Gathers invalidations from this session.

      Called post-transaction to gathers invalidations to be sent to others.

    • processReceivedInvalidations

      public void processReceivedInvalidations(Set<RowId> modified)
      Processes all invalidations accumulated.

      Called pre-transaction.