Class AbstractNodeState

    • Constructor Detail

      • AbstractNodeState

        public AbstractNodeState()
    • Method Detail

      • isValidName

        public static boolean isValidName​(String name)
      • getBoolean

        public static boolean getBoolean​(NodeState state,
                                         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 of base state with this 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
      • hasProperty

        public boolean hasProperty​(@NotNull
                                   @NotNull String name)
        Description copied from interface: NodeState
        Checks whether the named property exists. The implementation is equivalent to getProperty(name) != null, but may be optimized to avoid having to load the property value.
        Specified by:
        hasProperty in interface NodeState
        Parameters:
        name - property name
        Returns:
        true if the named property exists, false otherwise
      • getBoolean

        public boolean getBoolean​(@NotNull
                                  @NotNull 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 interface NodeState
        Parameters:
        name - property name
        Returns:
        boolean value of the named property, or false
      • getLong

        public long getLong​(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;
         }
         
         
        Specified by:
        getLong in interface NodeState
        Parameters:
        name - property name
        Returns:
        long value of the named property, or zero
      • getString

        public String getString​(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;
         }
         
         
        Specified by:
        getString in interface NodeState
        Parameters:
        name - property name
        Returns:
        string value of the named property, or null
      • getStrings

        @NotNull
        public @NotNull Iterable<String> getStrings​(@NotNull
                                                    @NotNull 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 interface NodeState
        Parameters:
        name - property name
        Returns:
        string values of the named property, or an empty collection
      • getName

        @Nullable
        public @Nullable String getName​(@NotNull
                                        @NotNull 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;
         }
         
         
        Specified by:
        getName in interface NodeState
        Parameters:
        name - property name
        Returns:
        name value of the named property, or null
      • getNames

        @NotNull
        public @NotNull Iterable<String> getNames​(@NotNull
                                                  @NotNull 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();
         }
         
         
        Specified by:
        getNames in interface NodeState
        Parameters:
        name - property name
        Returns:
        name values of the named property, or an empty collection
      • getProperty

        public PropertyState getProperty​(@NotNull
                                         @NotNull String name)
        Description copied from interface: NodeState
        Returns the named property, or null if no such property exists.
        Specified by:
        getProperty in interface NodeState
        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 interface NodeState
        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 interface NodeState
        Parameters:
        max - the maximum number of entries to traverse
        Returns:
        number of iterable child nodes
      • getChildNodeNames

        public Iterable<String> getChildNodeNames()
        Description copied from interface: NodeState
        Returns the names of all iterable child nodes.
        Specified by:
        getChildNodeNames in interface NodeState
        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 interface NodeState
        Parameters:
        base - base state
        diff - handler of node state differences
        Returns:
        true if the full diff was performed, or false if it was aborted as requested by the handler (see the NodeStateDiff contract for more details)
      • toString

        public String toString()
        Returns a string representation of this node state.
        Overrides:
        toString in class Object
        Returns:
        string representation
      • equals

        public boolean equals​(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 class 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 the equals(Object) method is implemented. The current implementation simply returns zero for everything since NodeState instances are not intended for use as hash keys.
        Overrides:
        hashCode in class Object
        Returns:
        hash code