Class ModifiedNodeState
java.lang.Object
org.apache.jackrabbit.oak.spi.state.AbstractNodeState
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState
- All Implemented Interfaces:
NodeState
Immutable snapshot of a mutable node state.
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescription@NotNull NodeBuilder
builder()
Returns a builder for constructing a new node state based on this state, i.e.boolean
compareAgainstBaseState
(NodeState base, NodeStateDiff diff) Since we keep track of an explicit base node state for aModifiedNodeState
instance, we can do this in two steps: first compare all the modified properties and child nodes to those of the given base state, and then compare the base states to each other, ignoring all changed properties and child nodes that were already covered earlier.boolean
exists()
Checks whether this node exists.@NotNull NodeState
@NotNull NodeState
getChildNode
(@NotNull String name) Returns the named, possibly non-existent, child node.long
getChildNodeCount
(long max) Returns the number of iterable child nodes of this node.@NotNull Iterable<? extends ChildNodeEntry>
Returns the iterable child node entries of this instance.Returns the names of all iterable child nodes.@NotNull Iterable<? extends PropertyState>
Returns an iterable of the properties of this node.getProperty
(@NotNull String name) Returns the named property, ornull
if no such property exists.long
Returns the number of properties of this node.boolean
hasChildNode
(@NotNull String name) Checks whether the named child node exists.boolean
hasProperty
(@NotNull String name) Checks whether the named property exists.static NodeState
"Squeezes"ModifiedNodeState
instances into equivalentMemoryNodeState
s.Methods inherited from class org.apache.jackrabbit.oak.spi.state.AbstractNodeState
checkValidName, compareAgainstBaseState, comparePropertiesAgainstBaseState, count, equals, equals, getBoolean, getBoolean, getLong, getLong, getName, getName, getNames, getNames, getString, getString, getStrings, getStrings, hashCode, isValidName, toString, toString
-
Method Details
-
squeeze
"Squeezes"ModifiedNodeState
instances into equivalentMemoryNodeState
s. Other kinds of states are returned as-is. -
getBaseState
-
builder
Description copied from interface:NodeState
Returns a builder for constructing a new node state based on this state, i.e. starting with all the properties and child nodes of this state.- Returns:
- node builder based on this state
-
exists
public boolean exists()Description copied from interface:NodeState
Checks whether this node exists. See the above discussion about the existence of node states.- Returns:
true
if this node exists,false
if not
-
getPropertyCount
public long getPropertyCount()Description copied from interface:NodeState
Returns the number of properties of this node.- Specified by:
getPropertyCount
in interfaceNodeState
- Overrides:
getPropertyCount
in classAbstractNodeState
- Returns:
- number of properties
-
hasProperty
Description copied from interface:NodeState
Checks whether the named property exists. The implementation is equivalent togetProperty(name) != null
, but may be optimized to avoid having to load the property value.- Specified by:
hasProperty
in interfaceNodeState
- Overrides:
hasProperty
in classAbstractNodeState
- Parameters:
name
- property name- Returns:
true
if the named property exists,false
otherwise
-
getProperty
Description copied from interface:NodeState
Returns the named property, ornull
if no such property exists.- Specified by:
getProperty
in interfaceNodeState
- Overrides:
getProperty
in classAbstractNodeState
- Parameters:
name
- name of the property to return- Returns:
- named property, or
null
if not found
-
getProperties
Description copied from interface:NodeState
Returns an iterable of the properties of this node. Multiple iterations are guaranteed to return the properties in the same order, but the specific order used is implementation-dependent and may change across different states of the same node.- Returns:
- properties in some stable order
-
getChildNodeCount
public long getChildNodeCount(long max) Description copied from interface:NodeState
Returns the number of iterable child nodes of this node.If an implementation knows the exact value, it returns it (even if the value is higher than max). If the implementation does not know the exact value, and the child node count is higher than max, it may return Long.MAX_VALUE. The cost of the operation is at most O(max).
- Specified by:
getChildNodeCount
in interfaceNodeState
- Overrides:
getChildNodeCount
in classAbstractNodeState
- Parameters:
max
- the maximum number of entries to traverse- Returns:
- number of iterable child nodes
-
hasChildNode
Description copied from interface:NodeState
Checks whether the named child node exists. The implementation is equivalent togetChildNode(name).exists()
, except that passing an invalid name as argument will result in afalse
return value instead of anIllegalArgumentException
.- Parameters:
name
- name of the child node- Returns:
true
if the named child node exists,false
otherwise
-
getChildNode
Description copied from interface:NodeState
Returns the named, possibly non-existent, child node. Use theNodeState.exists()
method on the returned child node to determine whether the node exists or not.- Parameters:
name
- name of the child node to return- Returns:
- named child node
-
getChildNodeNames
Description copied from interface:NodeState
Returns the names of all iterable child nodes.- Specified by:
getChildNodeNames
in interfaceNodeState
- Overrides:
getChildNodeNames
in classAbstractNodeState
- Returns:
- child node names in some stable order
-
getChildNodeEntries
Description copied from interface:NodeState
Returns the iterable child node entries of this instance. Multiple iterations are guaranteed to return the child nodes in the same order, but the specific order used is implementation dependent and may change across different states of the same node.Note on cost and performance: while it is possible to iterate over all child
NodeState
s with the two methodsNodeState.getChildNodeNames()
andNodeState.getChildNode(String)
, this method is considered more efficient because an implementation can potentially perform the retrieval of the name andNodeState
in one call. This results in O(n) vs. O(n log n) when iterating over the child node names and then look up theNodeState
by name.- Returns:
- child node entries in some stable order
-
compareAgainstBaseState
Since we keep track of an explicit base node state for aModifiedNodeState
instance, we can do this in two steps: first compare all the modified properties and child nodes to those of the given base state, and then compare the base states to each other, ignoring all changed properties and child nodes that were already covered earlier.- Specified by:
compareAgainstBaseState
in interfaceNodeState
- Overrides:
compareAgainstBaseState
in classAbstractNodeState
- Parameters:
base
- base statediff
- handler of node state differences- Returns:
true
if the full diff was performed, orfalse
if it was aborted as requested by the handler (see theNodeStateDiff
contract for more details)
-