public interface NodeFilter
Known Indirect Subclasses

NodeFilter is used to update nodes and complete children of nodes while applying queries on the fly and keeping track of any child changes. This class does not track value changes as value changes depend on more than just the node itself. Different kind of queries require different kind of implementations of this interface.

Nested Class Summary

interface NodeFilter.CompleteChildSource Since updates to filtered nodes might require nodes to be pulled in from "outside" the node, this interface can help to get complete children that can be pulled in. 

Public Method Summary

abstract boolean
filtersNodes()
Returns true if children might be filtered due to query criteria
abstract Index
getIndex()
Returns the index that this filter uses
abstract NodeFilter
getIndexedFilter()
Returns the index filter that this filter uses to get a NodeFilter that doesn't filter any children.
abstract IndexedNode
updateChild(IndexedNode node, ChildKey key, Node newChild, Path affectedPath, NodeFilter.CompleteChildSource source, ChildChangeAccumulator optChangeAccumulator)
Update a single complete child in the snap.
abstract IndexedNode
updateFullNode(IndexedNode oldSnap, IndexedNode newSnap, ChildChangeAccumulator optChangeAccumulator)
Update a node in full and output any resulting change from this complete update.
abstract IndexedNode
updatePriority(IndexedNode oldSnap, Node newPriority)
Update the priority of the root node

Public Methods

public abstract boolean filtersNodes ()

Returns true if children might be filtered due to query criteria

public abstract Index getIndex ()

Returns the index that this filter uses

public abstract NodeFilter getIndexedFilter ()

Returns the index filter that this filter uses to get a NodeFilter that doesn't filter any children.

public abstract IndexedNode updateChild (IndexedNode node, ChildKey key, Node newChild, Path affectedPath, NodeFilter.CompleteChildSource source, ChildChangeAccumulator optChangeAccumulator)

Update a single complete child in the snap. If the child equals the old child in the snap, this is a no-op. The method expects an indexed snap.

Parameters
node
key
newChild
affectedPath
source
optChangeAccumulator

public abstract IndexedNode updateFullNode (IndexedNode oldSnap, IndexedNode newSnap, ChildChangeAccumulator optChangeAccumulator)

Update a node in full and output any resulting change from this complete update.

Parameters
oldSnap
newSnap
optChangeAccumulator

public abstract IndexedNode updatePriority (IndexedNode oldSnap, Node newPriority)

Update the priority of the root node

Parameters
oldSnap
newPriority