Class TreeUtil

java.lang.Object
org.apache.jackrabbit.oak.plugins.tree.TreeUtil

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

    Modifier and Type
    Method
    Description
    static @NotNull org.apache.jackrabbit.oak.api.Tree
    addChild(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String childName, @NotNull String primaryTypeName)
    Adds a new child tree with the given name and primary type name.
    static @NotNull org.apache.jackrabbit.oak.api.Tree
    addChild(@NotNull org.apache.jackrabbit.oak.api.Tree parent, @NotNull String name, @Nullable String typeName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable String userID)
     
    static void
    addMixin(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String mixinName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable String userID)
    Add a mixin type to the given tree.
    static void
    addMixin(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull Function<org.apache.jackrabbit.oak.api.Tree,Iterable<String>> existingMixins, @NotNull String mixinName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable String userID)
    Add a mixin type to the given tree.
    static void
    autoCreateItems(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull org.apache.jackrabbit.oak.api.Tree type, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable String userID)
     
    static @Nullable org.apache.jackrabbit.oak.api.PropertyState
    autoCreateProperty(@NotNull String name, @NotNull org.apache.jackrabbit.oak.api.Tree definition, @Nullable String userID)
     
    static @Nullable String
    findDefaultPrimaryType(@NotNull org.apache.jackrabbit.oak.api.Tree definitions, boolean sns)
     
    static boolean
    getBoolean(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String propertyName)
    Returns the boolean representation of the property with the specified propertyName.
    static @Nullable String
    getDefaultChildType(@NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @NotNull org.apache.jackrabbit.oak.api.Tree parent, @NotNull String childName)
    Finds the default primary type for a new child node with the given name.
    static @NotNull List<org.apache.jackrabbit.oak.api.Tree>
    getEffectiveType(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot)
    Returns the effective node types of the given node.
    static long
    getLong(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String name, long defaultValue)
     
    static @NotNull Iterable<String>
    getMixinTypeNames(@NotNull org.apache.jackrabbit.oak.api.Tree tree)
     
    static @NotNull Iterable<String>
    getMixinTypeNames(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull org.apache.jackrabbit.oak.commons.LazyValue<org.apache.jackrabbit.oak.api.Tree> readOnlyTree)
     
    static @Nullable String
    getName(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String name)
     
    static @NotNull Iterable<String>
    getNames(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String name)
     
    static @NotNull org.apache.jackrabbit.oak.api.Tree
    getOrAddChild(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String childName, @NotNull String primaryTypeName)
    Combination of Tree.getChild(String) and adding a child including its jcr:primaryType property (i.e.
    static @Nullable String
    getPrimaryTypeName(@NotNull org.apache.jackrabbit.oak.api.Tree tree)
     
    static @Nullable String
    getPrimaryTypeName(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull org.apache.jackrabbit.oak.commons.LazyValue<org.apache.jackrabbit.oak.api.Tree> readOnlyTree)
     
    static @Nullable String
    getString(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String propertyName)
     
    static @Nullable String
    getString(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String name, @Nullable String defaultValue)
     
    static @Nullable Iterable<String>
    getStrings(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull String propertyName)
     
    static @Nullable org.apache.jackrabbit.oak.api.Tree
    getTree(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull 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 org.apache.jackrabbit.oak.api.Tree tree, @NotNull String typeName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot)
     
    static boolean
    isReadOnlyTree(@NotNull org.apache.jackrabbit.oak.api.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 Details

    • getPrimaryTypeName

      @Nullable public static @Nullable String getPrimaryTypeName(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree)
    • getPrimaryTypeName

      @Nullable public static @Nullable String getPrimaryTypeName(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull org.apache.jackrabbit.oak.commons.LazyValue<org.apache.jackrabbit.oak.api.Tree> readOnlyTree)
    • getMixinTypeNames

      @NotNull public static @NotNull Iterable<String> getMixinTypeNames(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree)
    • getMixinTypeNames

      @NotNull public static @NotNull Iterable<String> getMixinTypeNames(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull org.apache.jackrabbit.oak.commons.LazyValue<org.apache.jackrabbit.oak.api.Tree> readOnlyTree)
    • getStrings

      @Nullable public static @Nullable Iterable<String> getStrings(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String propertyName)
    • getString

      @Nullable public static @Nullable String getString(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String propertyName)
    • getString

      @Nullable public static @Nullable String getString(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String name, @Nullable @Nullable String defaultValue)
    • getBoolean

      public static boolean getBoolean(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull 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 String getName(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String name)
    • getNames

      @NotNull public static @NotNull Iterable<String> getNames(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String name)
    • getLong

      public static long getLong(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String name, long defaultValue)
    • getTree

      @Nullable public static @Nullable org.apache.jackrabbit.oak.api.Tree getTree(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull 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 org.apache.jackrabbit.oak.api.Tree addChild(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree parent, @NotNull @NotNull String name, @Nullable @Nullable String typeName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable String userID) throws RepositoryException
      Throws:
      RepositoryException
    • addChild

      @NotNull public static @NotNull org.apache.jackrabbit.oak.api.Tree addChild(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String childName, @NotNull @NotNull 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 org.apache.jackrabbit.oak.api.Tree getOrAddChild(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String childName, @NotNull @NotNull 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 org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String mixinName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable 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 org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull Function<org.apache.jackrabbit.oak.api.Tree,Iterable<String>> existingMixins, @NotNull @NotNull String mixinName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable 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 org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree type, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable String userID) throws RepositoryException
      Throws:
      RepositoryException
    • autoCreateProperty

      @Nullable public static @Nullable org.apache.jackrabbit.oak.api.PropertyState autoCreateProperty(@NotNull @NotNull String name, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree definition, @Nullable @Nullable String userID)
    • getDefaultChildType

      @Nullable public static @Nullable String getDefaultChildType(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree parent, @NotNull @NotNull 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 List<org.apache.jackrabbit.oak.api.Tree> getEffectiveType(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot)
      Returns the effective node types of the given node.
    • findDefaultPrimaryType

      @Nullable public static @Nullable String findDefaultPrimaryType(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree definitions, boolean sns)
    • isNodeType

      public static boolean isNodeType(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull String typeName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot)
    • isReadOnlyTree

      public static boolean isReadOnlyTree(@NotNull @NotNull org.apache.jackrabbit.oak.api.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: