Interface TreeNode<Self extends TreeNode<? extends Self>>

    • Method Detail

      • addChild

        void addChild​(Self node)
        Adds a node as a child of this node, and sets the parent of the node to this node.
        Parameters:
        node - Future child node. If null or the node is already amongst the children list, no action is done.
      • addChild

        void addChild​(int index,
                      Self node)
        Adds a node as a child of this node, and sets the parent of the node to this node.
        Parameters:
        index - Index at which the specified element is to be inserted
        node - Future child node. If null or the node is already amongst the children list, no action is done.
      • getChild

        Optional<Self> getChild​(String id)
        Returns a node by ID. If there are more nodes with the same ID, any node from those may be returned.
        Parameters:
        id -
        Returns:
      • getChildren

        List<Self> getChildren()
        Returns the children of the current node. Order does matter.
        Returns:
        Read-only list of the children. Never returns null.
      • getEdgeProperties

        Map<String,​Object> getEdgeProperties()
        Parent-to-this-node edge properties. For example, import/no-import mode or sync mode belongs here.
        Returns:
        Returns properties of the edge from the parent to this node. Never returns null.
      • getEdgeProperty

        <V> Optional<V> getEdgeProperty​(String key,
                                        Class<V> clazz)
        Convenience method for obtaining a single parent-to-this-node edge property.
        Type Parameters:
        V -
        Parameters:
        key -
        clazz -
        Returns:
        Optional with a property value if it exists. Never returns null
      • getId

        String getId()
        Returns ID of the node, which could match e.g. ID of the component with storage definition.
        Returns:
        Node ID
      • getNodeProperties

        Map<String,​Object> getNodeProperties()
        Properties of the this node. In storage context, properties of the single map storage represented by this node, for example read-only/read-write flag.
        Returns:
        Returns properties of the storage managed in this node. Never returns null.
      • getNodeProperty

        <V> Optional<V> getNodeProperty​(String key,
                                        Class<V> clazz)
        Convenience method for obtaining a single property of this node.
        Type Parameters:
        V -
        Parameters:
        key -
        clazz -
        Returns:
        Optional with a property value if it exists. Never returns null
      • getTreeProperties

        Map<String,​Object> getTreeProperties()
        Properties of the whole tree. For example, kind of the stored objects, e.g. realms or clients.
        Returns:
        Returns properties of the tree that contains in this node. Never returns null.
      • getTreeProperty

        <V> Optional<V> getTreeProperty​(String key,
                                        Class<V> clazz)
        Convenience method for obtaining a single property of tree that this node belongs to.
        Type Parameters:
        V -
        Parameters:
        key -
        clazz -
        Returns:
        Optional with a property value if it exists. Never returns null
      • removeChild

        Optional<Self> removeChild​(Self node)
        Removes the given child node.
        Parameters:
        node - Node to remove
        Returns:
        Removed node
      • removeChild

        int removeChild​(Predicate<Self> shouldRemove)
        Removes child nodes satisfying the given predicate.
        Parameters:
        node - Predicate on node returning true for each node that should be removed
        Returns:
        Number of removed nodes
      • getParent

        Optional<Self> getParent()
        Returns parent node or an empty Optional if this node is a root node.
        Returns:
        See description. Never returns null.
      • setParent

        void setParent​(Self parent)
        Sets the parent node to the given parent. If this node was a child of another node, also removes this node from the children of the previous parent.
        Parameters:
        parent - New parent node or null if this node should be parentless.
      • findFirstDfs

        Optional<Self> findFirstDfs​(Predicate<Self> visitor)
        Depth-first search for a node.
        Parameters:
        visitor - Predicate on nodes, returns true when a search condition is satisfied which terminates the search.
        Returns:
        Leftmost first node that matches the predicate, null when no node matches.
      • findFirstBottommostDfs

        Optional<Self> findFirstBottommostDfs​(Predicate<Self> visitor)
        Depth-first search for a node that is bottommost from those matching DFS.
        Parameters:
        visitor - Predicate on nodes, returns true when a search condition is satisfied which terminates the search.
        Returns:
        Leftmost and bottommost node that matches the predicate, null when no node matches.
      • findFirstBfs

        Optional<Self> findFirstBfs​(Predicate<Self> visitor)
        Breadth-first search for a node.
        Parameters:
        visitor - Predicate on nodes, returns true when a search condition is satisfied which terminates the search.
        Returns:
        First node that matches the predicate, null when no node matches.
      • getParentsStream

        Stream<Self> getParentsStream()
        Returns a stream of the nodes laying on the path from this node (exclusive) to the root of the tree (inclusive).
        Returns:
      • forEachParent

        void forEachParent​(Consumer<Self> visitor)
        Calls the given visitor on each node laying on the path from this node (exclusive) to the root of the tree (inclusive).
        Parameters:
        visitor -
      • walkDfs

        void walkDfs​(Consumer<Self> visitorUponEntry,
                     Consumer<Self> visitorAfterChildrenVisited)
        Walks the tree with the given visitor in depth-first search manner.
        Parameters:
        visitorUponEntry - Visitor called upon entry of the node. May be null, in that case no action is performed.
        visitorAfterChildrenVisited - Visitor called before exit of the node. May be null, in that case no action is performed.
      • walkBfs

        void walkBfs​(Consumer<Self> visitor)
        Walks the tree with the given visitor in breadth-first search manner.
        Parameters:
        visitor -