Class TreeUtil


  • public final class TreeUtil
    extends java.lang.Object
    Utility providing common operations for the Tree that are not provided by the API.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static @NotNull Tree addChild​(@NotNull Tree tree, @NotNull java.lang.String childName, @NotNull java.lang.String primaryTypeName)
      Adds a new child tree with the given name and primary type name.
      static @NotNull Tree addChild​(@NotNull Tree parent, @NotNull java.lang.String name, @Nullable java.lang.String typeName, @NotNull Tree typeRoot, @Nullable java.lang.String userID)  
      static void addMixin​(@NotNull Tree tree, @NotNull java.lang.String mixinName, @NotNull Tree typeRoot, @Nullable java.lang.String userID)
      Add a mixin type to the given tree.
      static void addMixin​(@NotNull Tree tree, @NotNull java.util.function.Function<Tree,​java.lang.Iterable<java.lang.String>> existingMixins, @NotNull java.lang.String mixinName, @NotNull Tree typeRoot, @Nullable java.lang.String userID)
      Add a mixin type to the given tree.
      static void autoCreateItems​(@NotNull Tree tree, @NotNull Tree type, @NotNull Tree typeRoot, @Nullable java.lang.String userID)  
      static @Nullable PropertyState autoCreateProperty​(@NotNull java.lang.String name, @NotNull Tree definition, @Nullable java.lang.String userID)  
      static @Nullable java.lang.String findDefaultPrimaryType​(@NotNull Tree definitions, boolean sns)  
      static boolean getBoolean​(@NotNull Tree tree, @NotNull java.lang.String propertyName)
      Returns the boolean representation of the property with the specified propertyName.
      static @Nullable java.lang.String getDefaultChildType​(@NotNull Tree typeRoot, @NotNull Tree parent, @NotNull java.lang.String childName)
      Finds the default primary type for a new child node with the given name.
      static @NotNull java.util.List<Tree> getEffectiveType​(@NotNull Tree tree, @NotNull Tree typeRoot)
      Returns the effective node types of the given node.
      static long getLong​(@NotNull Tree tree, @NotNull java.lang.String name, long defaultValue)  
      static @NotNull java.lang.Iterable<java.lang.String> getMixinTypeNames​(@NotNull Tree tree)  
      static @NotNull java.lang.Iterable<java.lang.String> getMixinTypeNames​(@NotNull Tree tree, @NotNull LazyValue<Tree> readOnlyTree)  
      static @Nullable java.lang.String getName​(@NotNull Tree tree, @NotNull java.lang.String name)  
      static @NotNull java.lang.Iterable<java.lang.String> getNames​(@NotNull Tree tree, @NotNull java.lang.String name)  
      static @NotNull Tree getOrAddChild​(@NotNull Tree tree, @NotNull java.lang.String childName, @NotNull java.lang.String primaryTypeName)
      Combination of Tree.getChild(String) and adding a child including its jcr:primaryType property (i.e.
      static @Nullable java.lang.String getPrimaryTypeName​(@NotNull Tree tree)  
      static @Nullable java.lang.String getPrimaryTypeName​(@NotNull Tree tree, @NotNull LazyValue<Tree> readOnlyTree)  
      static @Nullable java.lang.String getString​(@NotNull Tree tree, @NotNull java.lang.String propertyName)  
      static @Nullable java.lang.String getString​(@NotNull Tree tree, @NotNull java.lang.String name, @Nullable java.lang.String defaultValue)  
      static @Nullable java.lang.Iterable<java.lang.String> getStrings​(@NotNull Tree tree, @NotNull java.lang.String propertyName)  
      static @Nullable Tree getTree​(@NotNull Tree tree, @NotNull java.lang.String path)
      Return the possibly non existing tree located at the passed path from the location of the start tree or null if path results in a parent of the root.
      static boolean isNodeType​(@NotNull Tree tree, @NotNull java.lang.String typeName, @NotNull Tree typeRoot)  
      static boolean isReadOnlyTree​(@NotNull Tree tree)
      Returns true if the specified tree is a read-only tree..
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getPrimaryTypeName

        @Nullable
        public static @Nullable java.lang.String getPrimaryTypeName​(@NotNull
                                                                    @NotNull Tree tree)
      • getPrimaryTypeName

        @Nullable
        public static @Nullable java.lang.String getPrimaryTypeName​(@NotNull
                                                                    @NotNull Tree tree,
                                                                    @NotNull
                                                                    @NotNull LazyValue<Tree> readOnlyTree)
      • getMixinTypeNames

        @NotNull
        public static @NotNull java.lang.Iterable<java.lang.String> getMixinTypeNames​(@NotNull
                                                                                      @NotNull Tree tree)
      • getMixinTypeNames

        @NotNull
        public static @NotNull java.lang.Iterable<java.lang.String> getMixinTypeNames​(@NotNull
                                                                                      @NotNull Tree tree,
                                                                                      @NotNull
                                                                                      @NotNull LazyValue<Tree> readOnlyTree)
      • getStrings

        @Nullable
        public static @Nullable java.lang.Iterable<java.lang.String> getStrings​(@NotNull
                                                                                @NotNull Tree tree,
                                                                                @NotNull
                                                                                @NotNull java.lang.String propertyName)
      • getString

        @Nullable
        public static @Nullable java.lang.String getString​(@NotNull
                                                           @NotNull Tree tree,
                                                           @NotNull
                                                           @NotNull java.lang.String propertyName)
      • getString

        @Nullable
        public static @Nullable java.lang.String getString​(@NotNull
                                                           @NotNull Tree tree,
                                                           @NotNull
                                                           @NotNull java.lang.String name,
                                                           @Nullable
                                                           @Nullable java.lang.String defaultValue)
      • getBoolean

        public static boolean getBoolean​(@NotNull
                                         @NotNull Tree tree,
                                         @NotNull
                                         @NotNull java.lang.String propertyName)
        Returns the boolean representation of the property with the specified propertyName. If the property does not exist or is an array this method returns false.
        Parameters:
        tree - The target tree.
        propertyName - The name of the property.
        Returns:
        the boolean representation of the property state with the given name. This utility returns false if the property does not exist or is an multivalued property.
      • getName

        @Nullable
        public static @Nullable java.lang.String getName​(@NotNull
                                                         @NotNull Tree tree,
                                                         @NotNull
                                                         @NotNull java.lang.String name)
      • getNames

        @NotNull
        public static @NotNull java.lang.Iterable<java.lang.String> getNames​(@NotNull
                                                                             @NotNull Tree tree,
                                                                             @NotNull
                                                                             @NotNull java.lang.String name)
      • getLong

        public static long getLong​(@NotNull
                                   @NotNull Tree tree,
                                   @NotNull
                                   @NotNull java.lang.String name,
                                   long defaultValue)
      • getTree

        @Nullable
        public static @Nullable Tree getTree​(@NotNull
                                             @NotNull Tree tree,
                                             @NotNull
                                             @NotNull java.lang.String path)
        Return the possibly non existing tree located at the passed path from the location of the start tree or null if path results in a parent of the root.
        Parameters:
        tree - start tree
        path - path from the start tree
        Returns:
        tree located at path from start or null
      • addChild

        @NotNull
        public static @NotNull Tree addChild​(@NotNull
                                             @NotNull Tree parent,
                                             @NotNull
                                             @NotNull java.lang.String name,
                                             @Nullable
                                             @Nullable java.lang.String typeName,
                                             @NotNull
                                             @NotNull Tree typeRoot,
                                             @Nullable
                                             @Nullable java.lang.String userID)
                                      throws RepositoryException
        Throws:
        RepositoryException
      • addChild

        @NotNull
        public static @NotNull Tree addChild​(@NotNull
                                             @NotNull Tree tree,
                                             @NotNull
                                             @NotNull java.lang.String childName,
                                             @NotNull
                                             @NotNull java.lang.String primaryTypeName)
                                      throws AccessDeniedException
        Adds a new child tree with the given name and primary type name. This method is a shortcut for calling Tree.addChild(String) and Tree.setProperty(String, Object, org.apache.jackrabbit.oak.api.Type) where the property name is JcrConstants.JCR_PRIMARYTYPE. Note, that this method in addition verifies if the created tree exists and is accessible in order to avoid IllegalStateException upon subsequent modification of the new child.
        Parameters:
        childName - The Oak name of the child item.
        primaryTypeName - The Oak name of the primary node type.
        Returns:
        The new child tree with the specified name and primary type.
        Throws:
        AccessDeniedException - If the child does not exist after creation.
      • getOrAddChild

        @NotNull
        public static @NotNull Tree getOrAddChild​(@NotNull
                                                  @NotNull Tree tree,
                                                  @NotNull
                                                  @NotNull java.lang.String childName,
                                                  @NotNull
                                                  @NotNull java.lang.String primaryTypeName)
                                           throws AccessDeniedException
        Combination of Tree.getChild(String) and adding a child including its jcr:primaryType property (i.e. Tree.addChild(String) and Tree.setProperty(PropertyState)) in case no tree exists with the specified name.
        Parameters:
        childName - The Oak name of the child item.
        primaryTypeName - The Oak name of the primary node type.
        Returns:
        The new child node with the specified name and primary type.
        Throws:
        AccessDeniedException - If the child does not exist after creation.
      • addMixin

        public static void addMixin​(@NotNull
                                    @NotNull Tree tree,
                                    @NotNull
                                    @NotNull java.lang.String mixinName,
                                    @NotNull
                                    @NotNull Tree typeRoot,
                                    @Nullable
                                    @Nullable java.lang.String userID)
                             throws RepositoryException
        Add a mixin type to the given tree. The implementation checks the effective type of the tree and will not add the mixin if it determines the tree is already of type mixinName through the currently set primary or mixin types, directly or indirectly by type inheritance.
        Parameters:
        tree - tree where the mixin type is to be added.
        mixinName - name of the mixin to add.
        typeRoot - tree where type information is stored.
        userID - user id or null if unknown.
        Throws:
        RepositoryException - if mixinName does not refer to an existing type or the type it refers to is abstract or the type it refers to is a primary type.
      • addMixin

        public static void addMixin​(@NotNull
                                    @NotNull Tree tree,
                                    @NotNull
                                    @NotNull java.util.function.Function<Tree,​java.lang.Iterable<java.lang.String>> existingMixins,
                                    @NotNull
                                    @NotNull java.lang.String mixinName,
                                    @NotNull
                                    @NotNull Tree typeRoot,
                                    @Nullable
                                    @Nullable java.lang.String userID)
                             throws RepositoryException
        Add a mixin type to the given tree. The implementation checks the effective type of the tree and will not add the mixin if it determines the tree is already of type mixinName through the currently set primary or mixin types, directly or indirectly by type inheritance.
        Parameters:
        tree - tree where the mixin type is to be added.
        existingMixins - function to get the currently set mixin types from a tree.
        mixinName - name of the mixin to add.
        typeRoot - tree where type information is stored.
        userID - user id or null if unknown.
        Throws:
        RepositoryException - if mixinName does not refer to an existing type or the type it refers to is abstract or the type it refers to is a primary type.
      • autoCreateItems

        public static void autoCreateItems​(@NotNull
                                           @NotNull Tree tree,
                                           @NotNull
                                           @NotNull Tree type,
                                           @NotNull
                                           @NotNull Tree typeRoot,
                                           @Nullable
                                           @Nullable java.lang.String userID)
                                    throws RepositoryException
        Throws:
        RepositoryException
      • autoCreateProperty

        @Nullable
        public static @Nullable PropertyState autoCreateProperty​(@NotNull
                                                                 @NotNull java.lang.String name,
                                                                 @NotNull
                                                                 @NotNull Tree definition,
                                                                 @Nullable
                                                                 @Nullable java.lang.String userID)
      • getDefaultChildType

        @Nullable
        public static @Nullable java.lang.String getDefaultChildType​(@NotNull
                                                                     @NotNull Tree typeRoot,
                                                                     @NotNull
                                                                     @NotNull Tree parent,
                                                                     @NotNull
                                                                     @NotNull java.lang.String childName)
        Finds the default primary type for a new child node with the given name.
        Parameters:
        typeRoot - root of the /jcr:system/jcr:nodeTypes tree
        parent - parent node
        childName - name of the new child node
        Returns:
        name of the default type, or null if not available
      • getEffectiveType

        @NotNull
        public static @NotNull java.util.List<Tree> getEffectiveType​(@NotNull
                                                                     @NotNull Tree tree,
                                                                     @NotNull
                                                                     @NotNull Tree typeRoot)
        Returns the effective node types of the given node.
      • findDefaultPrimaryType

        @Nullable
        public static @Nullable java.lang.String findDefaultPrimaryType​(@NotNull
                                                                        @NotNull Tree definitions,
                                                                        boolean sns)
      • isNodeType

        public static boolean isNodeType​(@NotNull
                                         @NotNull Tree tree,
                                         @NotNull
                                         @NotNull java.lang.String typeName,
                                         @NotNull
                                         @NotNull Tree typeRoot)
      • isReadOnlyTree

        public static boolean isReadOnlyTree​(@NotNull
                                             @NotNull Tree tree)
        Returns true if the specified tree is a read-only tree..
        Parameters:
        tree - The tree object to be tested.
        Returns:
        true if the specified tree is an immutable read-only tree.
        See Also:
        ReadOnly