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)  
      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

        equals, 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
        Throws:
        RepositoryException
      • 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