Class AbstractNodeState
- java.lang.Object
-
- org.apache.jackrabbit.oak.spi.state.AbstractNodeState
-
- All Implemented Interfaces:
NodeState
- Direct Known Subclasses:
AbstractDecoratedNodeState
,ModifiedNodeState
public abstract class AbstractNodeState extends java.lang.Object implements NodeState
Abstract base class forNodeState
implementations. This base class contains default implementations of theequals(Object)
andhashCode()
methods based on the implemented interface.This class also implements trivial (and potentially very slow) versions of the
getProperty(String)
andgetPropertyCount()
methods based onNodeState.getProperties()
. ThegetChildNodeCount(long)
method is similarly implemented based onNodeState.getChildNodeEntries()
. Subclasses should normally override these method with a more efficient alternatives.
-
-
Constructor Summary
Constructors Constructor Description AbstractNodeState()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
checkValidName(java.lang.String name)
boolean
compareAgainstBaseState(NodeState base, NodeStateDiff diff)
Generic default comparison algorithm that simply walks through the property and child node lists of the given base state and compares the entries one by one with corresponding ones (if any) in this state.static boolean
compareAgainstBaseState(NodeState state, NodeState base, NodeStateDiff diff)
Generic default comparison algorithm that simply walks through the property and child node lists of the given base state and compares the entries one by one with corresponding ones (if any) in this state.static boolean
comparePropertiesAgainstBaseState(NodeState state, NodeState base, NodeStateDiff diff)
Compares the properties ofbase
state withthis
state.boolean
equals(java.lang.Object that)
Checks whether the given object is equal to this one.static boolean
equals(NodeState a, NodeState b)
boolean
getBoolean(@NotNull java.lang.String name)
Returns the boolean value of the named property.static boolean
getBoolean(NodeState state, java.lang.String name)
long
getChildNodeCount(long max)
Returns the number of iterable child nodes of this node.java.lang.Iterable<java.lang.String>
getChildNodeNames()
Returns the names of all iterable child nodes.long
getLong(java.lang.String name)
Returns the long value of the named property.static long
getLong(NodeState state, java.lang.String name)
@Nullable java.lang.String
getName(@NotNull java.lang.String name)
Returns the name value of the named property.static java.lang.String
getName(NodeState state, java.lang.String name)
@NotNull java.lang.Iterable<java.lang.String>
getNames(@NotNull java.lang.String name)
Returns the name values of the named property.static java.lang.Iterable<java.lang.String>
getNames(NodeState state, java.lang.String name)
PropertyState
getProperty(@NotNull java.lang.String name)
Returns the named property, ornull
if no such property exists.long
getPropertyCount()
Returns the number of properties of this node.java.lang.String
getString(java.lang.String name)
Returns the string value of the named property.static java.lang.String
getString(NodeState state, java.lang.String name)
@NotNull java.lang.Iterable<java.lang.String>
getStrings(@NotNull java.lang.String name)
Returns the string values of the named property.static java.lang.Iterable<java.lang.String>
getStrings(NodeState state, java.lang.String name)
int
hashCode()
Returns a hash code that's compatible with how theequals(Object)
method is implemented.boolean
hasProperty(@NotNull java.lang.String name)
Checks whether the named property exists.static boolean
isValidName(java.lang.String name)
java.lang.String
toString()
Returns a string representation of this node state.static java.lang.String
toString(NodeState state)
-
Methods inherited from interface org.apache.jackrabbit.oak.spi.state.NodeState
builder, exists, getChildNode, getChildNodeEntries, getProperties, hasChildNode
-
-
-
-
Method Detail
-
isValidName
public static boolean isValidName(java.lang.String name)
-
checkValidName
public static void checkValidName(java.lang.String name) throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
-
getBoolean
public static boolean getBoolean(NodeState state, java.lang.String name)
-
getLong
public static long getLong(NodeState state, java.lang.String name)
-
getString
public static java.lang.String getString(NodeState state, java.lang.String name)
-
getStrings
public static java.lang.Iterable<java.lang.String> getStrings(NodeState state, java.lang.String name)
-
getName
public static java.lang.String getName(NodeState state, java.lang.String name)
-
getNames
public static java.lang.Iterable<java.lang.String> getNames(NodeState state, java.lang.String name)
-
compareAgainstBaseState
public static boolean compareAgainstBaseState(NodeState state, NodeState base, NodeStateDiff diff)
Generic default comparison algorithm that simply walks through the property and child node lists of the given base state and compares the entries one by one with corresponding ones (if any) in this state.
-
comparePropertiesAgainstBaseState
public static boolean comparePropertiesAgainstBaseState(NodeState state, NodeState base, NodeStateDiff diff)
Compares the properties ofbase
state withthis
state.- Parameters:
state
- the head node state.base
- the base node state.diff
- the node state diff.- Returns:
true
to continue the comparison,false
to stop
-
toString
public static java.lang.String toString(NodeState state)
-
hasProperty
public boolean hasProperty(@NotNull @NotNull java.lang.String name)
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
- Parameters:
name
- property name- Returns:
true
if the named property exists,false
otherwise
-
getBoolean
public boolean getBoolean(@NotNull @NotNull java.lang.String name)
Description copied from interface:NodeState
Returns the boolean value of the named property. The implementation is equivalent to the following code, but may be optimized.PropertyState property = state.getProperty(name); return property != null && property.getType() == Type.BOOLEAN && property.getValue(Type.BOOLEAN);
- Specified by:
getBoolean
in interfaceNodeState
- Parameters:
name
- property name- Returns:
- boolean value of the named property, or
false
-
getLong
public long getLong(java.lang.String name)
Description copied from interface:NodeState
Returns the long value of the named property. The implementation is equivalent to the following code, but may be optimized.PropertyState property = state.getProperty(name); if (property != null && property.getType() == Type.LONG) { return property.getValue(Type.LONG); } else { return 0; }
-
getString
public java.lang.String getString(java.lang.String name)
Description copied from interface:NodeState
Returns the string value of the named property. The implementation is equivalent to the following code, but may be optimized.PropertyState property = state.getProperty(name); if (property != null && property.getType() == Type.STRING) { return property.getValue(Type.STRING); } else { return null; }
-
getStrings
@NotNull public @NotNull java.lang.Iterable<java.lang.String> getStrings(@NotNull @NotNull java.lang.String name)
Description copied from interface:NodeState
Returns the string values of the named property. The implementation is equivalent to the following code, but may be optimized.PropertyState property = state.getProperty(name); if (property != null && property.getType() == Type.STRINGS) { return property.getValue(Type.STRINGS); } else { return Collections.emptyList(); }
- Specified by:
getStrings
in interfaceNodeState
- Parameters:
name
- property name- Returns:
- string values of the named property, or an empty collection
-
getName
@Nullable public @Nullable java.lang.String getName(@NotNull @NotNull java.lang.String name)
Description copied from interface:NodeState
Returns the name value of the named property. The implementation is equivalent to the following code, but may be optimized.PropertyState property = state.getProperty(name); if (property != null && property.getType() == Type.NAME) { return property.getValue(Type.NAME); } else { return null; }
-
getNames
@NotNull public @NotNull java.lang.Iterable<java.lang.String> getNames(@NotNull @NotNull java.lang.String name)
Description copied from interface:NodeState
Returns the name values of the named property. The implementation is equivalent to the following code, but may be optimized.PropertyState property = state.getProperty(name); if (property != null && property.getType() == Type.NAMES) { return property.getValue(Type.NAMES); } else { return Collections.emptyList(); }
-
getProperty
public PropertyState getProperty(@NotNull @NotNull java.lang.String name)
Description copied from interface:NodeState
Returns the named property, ornull
if no such property exists.- Specified by:
getProperty
in interfaceNodeState
- Parameters:
name
- name of the property to return- Returns:
- named property, or
null
if not found
-
getPropertyCount
public long getPropertyCount()
Description copied from interface:NodeState
Returns the number of properties of this node.- Specified by:
getPropertyCount
in interfaceNodeState
- Returns:
- number of properties
-
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
- Parameters:
max
- the maximum number of entries to traverse- Returns:
- number of iterable child nodes
-
getChildNodeNames
public java.lang.Iterable<java.lang.String> getChildNodeNames()
Description copied from interface:NodeState
Returns the names of all iterable child nodes.- Specified by:
getChildNodeNames
in interfaceNodeState
- Returns:
- child node names in some stable order
-
compareAgainstBaseState
public boolean compareAgainstBaseState(NodeState base, NodeStateDiff diff)
Generic default comparison algorithm that simply walks through the property and child node lists of the given base state and compares the entries one by one with corresponding ones (if any) in this state.- Specified by:
compareAgainstBaseState
in interfaceNodeState
- 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)
-
toString
public java.lang.String toString()
Returns a string representation of this node state.- Overrides:
toString
in classjava.lang.Object
- Returns:
- string representation
-
equals
public boolean equals(java.lang.Object that)
Checks whether the given object is equal to this one. Two node states are considered equal if all their properties and child nodes match, regardless of ordering. Subclasses may override this method with a more efficient equality check if one is available.- Overrides:
equals
in classjava.lang.Object
- Parameters:
that
- target of the comparison- Returns:
true
if the objects are equal,false
otherwise
-
hashCode
public int hashCode()
Returns a hash code that's compatible with how theequals(Object)
method is implemented. The current implementation simply returns zero for everything sinceNodeState
instances are not intended for use as hash keys.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- hash code
-
-