Class DocumentNodeState

    • Method Detail

      • withRootRevision

        public DocumentNodeState withRootRevision​(@NotNull
                                                  @NotNull RevisionVector root,
                                                  boolean externalChange)
        Creates a copy of this DocumentNodeState with the rootRevision set to the given root revision. This method returns this instance if the given root revision is the same as the one in this instance and the fromExternalChange flags are equal.
        Specified by:
        withRootRevision in class AbstractDocumentNodeState
        Parameters:
        root - the root revision for the copy of this node state.
        externalChange - if the fromExternalChange flag must be set on the returned node state.
        Returns:
        a copy of this node state with the given root revision and external change flag.
      • isFromExternalChange

        public boolean isFromExternalChange()
        Specified by:
        isFromExternalChange in class AbstractDocumentNodeState
        Returns:
        true if this node state was created as a result of an external change; false otherwise.
      • getRootRevision

        @NotNull
        public @NotNull RevisionVector getRootRevision()
        Returns the root revision for this node state. This is the root revision passed from the parent node state. This revision therefore reflects the revision of the root node state where the traversal down the tree started.
        Specified by:
        getRootRevision in class AbstractDocumentNodeState
        Returns:
        the revision of the root node 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.
        Specified by:
        exists in interface NodeState
        Returns:
        true if this node exists, false if not
      • getProperty

        public PropertyState getProperty​(@NotNull
                                         @NotNull java.lang.String name)
        Description copied from interface: NodeState
        Returns the named property, or null if no such property exists.
        Specified by:
        getProperty in interface NodeState
        Overrides:
        getProperty in class AbstractNodeState
        Parameters:
        name - name of the property to return
        Returns:
        named property, or null if not found
      • 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 to getProperty(name) != null, but may be optimized to avoid having to load the property value.
        Specified by:
        hasProperty in interface NodeState
        Overrides:
        hasProperty in class AbstractNodeState
        Parameters:
        name - property name
        Returns:
        true if the named property exists, false otherwise
      • getProperties

        @NotNull
        public @NotNull java.lang.Iterable<? extends PropertyState> 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.
        Specified by:
        getProperties in interface NodeState
        Returns:
        properties in some stable order
      • hasChildNode

        public boolean hasChildNode​(@NotNull
                                    @NotNull java.lang.String name)
        Description copied from interface: NodeState
        Checks whether the named child node exists. The implementation is equivalent to getChildNode(name).exists(), except that passing an invalid name as argument will result in a false return value instead of an IllegalArgumentException.
        Specified by:
        hasChildNode in interface NodeState
        Parameters:
        name - name of the child node
        Returns:
        true if the named child node exists, false otherwise
      • getChildNode

        @NotNull
        public @NotNull NodeState getChildNode​(@NotNull
                                               @NotNull java.lang.String name)
        Description copied from interface: NodeState
        Returns the named, possibly non-existent, child node. Use the NodeState.exists() method on the returned child node to determine whether the node exists or not.
        Specified by:
        getChildNode in interface NodeState
        Parameters:
        name - name of the child node to return
        Returns:
        named child node
      • getChildIfCached

        @Nullable
        public @Nullable DocumentNodeState getChildIfCached​(java.lang.String name)
        /** Returns the child node for the given name from the cache. This method returns null if the cache does not have an entry for the child node.

        Please note, the returned node state may also represent a node that does not exist. In which case exists() of the returned node state will return false.

        Parameters:
        name - the name of the child node.
        Returns:
        the node state or null if the cache does not have an entry for the child node.
      • 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
        Overrides:
        getChildNodeCount in class AbstractNodeState
        Parameters:
        max - the maximum number of entries to traverse
        Returns:
        number of iterable child nodes
      • getChildNodeEntries

        @NotNull
        public @NotNull java.lang.Iterable<? extends ChildNodeEntry> 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 NodeStates with the two methods NodeState.getChildNodeNames() and NodeState.getChildNode(String), this method is considered more efficient because an implementation can potentially perform the retrieval of the name and NodeState in one call. This results in O(n) vs. O(n log n) when iterating over the child node names and then look up the NodeState by name.

        Specified by:
        getChildNodeEntries in interface NodeState
        Returns:
        child node entries in some stable order
      • builder

        @NotNull
        public @NotNull NodeBuilder 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.
        Specified by:
        builder in interface NodeState
        Returns:
        node builder based on this state
      • getBundledChildNodeNames

        public java.util.Set<java.lang.String> getBundledChildNodeNames()
      • hasOnlyBundledChildren

        public boolean hasOnlyBundledChildren()
      • toString

        public java.lang.String toString()
        Description copied from class: AbstractNodeState
        Returns a string representation of this node state.
        Overrides:
        toString in class AbstractNodeState
        Returns:
        string representation
      • getMemory

        public int getMemory()
        Description copied from interface: CacheValue
        The estimated amount of memory used by this object, in bytes.
        Specified by:
        getMemory in interface CacheValue
        Returns:
        the estimated number of bytes
      • getAllBundledNodesStates

        public java.lang.Iterable<DocumentNodeState> getAllBundledNodesStates()
      • getAllBundledProperties

        public java.util.Map<java.lang.String,​java.lang.String> getAllBundledProperties()
        Returns all properties, including bundled, as Json serialized value.
        Returns:
        all properties, including bundled.