Class TreeUtil
java.lang.Object
org.apache.jackrabbit.oak.plugins.tree.TreeUtil
Utility providing common operations for the
Tree that are not provided
by the API.-
Method Summary
Modifier and TypeMethodDescriptionstatic @NotNull TreeAdds a new child tree with the given name and primary type name.static @NotNull TreeaddChild(@NotNull Tree parent, @NotNull String name, @Nullable String typeName, @NotNull Tree typeRoot, @Nullable String userID) static voidaddMixin(@NotNull Tree tree, @NotNull String mixinName, @NotNull Tree typeRoot, @Nullable String userID) Add a mixin type to the giventree.static voidaddMixin(@NotNull Tree tree, @NotNull Function<Tree, Iterable<String>> existingMixins, @NotNull String mixinName, @NotNull Tree typeRoot, @Nullable String userID) Add a mixin type to the giventree.static voidautoCreateItems(@NotNull Tree tree, @NotNull Tree type, @NotNull Tree typeRoot, @Nullable String userID) static @Nullable PropertyStateautoCreateProperty(@NotNull String name, @NotNull Tree definition, @Nullable String userID) static @Nullable StringfindDefaultPrimaryType(@NotNull Tree definitions, boolean sns) static booleangetBoolean(@NotNull Tree tree, @NotNull String propertyName) Returns the boolean representation of the property with the specifiedpropertyName.static @Nullable StringgetDefaultChildType(@NotNull Tree typeRoot, @NotNull Tree parent, @NotNull String childName) Finds the default primary type for a new child node with the given name.getEffectiveType(@NotNull Tree tree, @NotNull Tree typeRoot) Returns the effective node types of the given node.static longgetMixinTypeNames(@NotNull Tree tree) getMixinTypeNames(@NotNull Tree tree, @NotNull LazyValue<Tree> readOnlyTree) static @Nullable Stringstatic @NotNull TreegetOrAddChild(@NotNull Tree tree, @NotNull String childName, @NotNull String primaryTypeName) Combination ofTree.getChild(String)and adding a child including its jcr:primaryType property (i.e.static @Nullable StringgetPrimaryTypeName(@NotNull Tree tree) static @Nullable StringgetPrimaryTypeName(@NotNull Tree tree, @NotNull LazyValue<Tree> readOnlyTree) static @Nullable Stringstatic @Nullable StringgetStrings(@NotNull Tree tree, @NotNull String propertyName) static @Nullable TreeReturn the possibly non existing tree located at the passedpathfrom the location of the starttreeornullifpathresults in a parent of the root.static booleanisNodeType(@NotNull Tree tree, @NotNull String typeName, @NotNull Tree typeRoot) static booleanisReadOnlyTree(@NotNull Tree tree) Returnstrueif the specifiedtreeis a read-only tree..
-
Method Details
-
getPrimaryTypeName
-
getPrimaryTypeName
-
getMixinTypeNames
-
getMixinTypeNames
-
getStrings
-
getString
-
getString
-
getBoolean
public static boolean getBoolean(@NotNull @NotNull Tree tree, @NotNull @NotNull String propertyName) Returns the boolean representation of the property with the specifiedpropertyName. If the property does not exist oris an arraythis method returnsfalse.- 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
falseif the property does not exist or is an multivalued property.
-
getName
-
getNames
-
getLong
-
getTree
@Nullable public static @Nullable Tree getTree(@NotNull @NotNull Tree tree, @NotNull @NotNull String path) Return the possibly non existing tree located at the passedpathfrom the location of the starttreeornullifpathresults in a parent of the root.- Parameters:
tree- start treepath- path from the start tree- Returns:
- tree located at
pathfromstartornull
-
addChild
@NotNull public static @NotNull Tree addChild(@NotNull @NotNull Tree parent, @NotNull @NotNull String name, @Nullable @Nullable String typeName, @NotNull @NotNull Tree typeRoot, @Nullable @Nullable String userID) throws RepositoryException - Throws:
RepositoryException
-
addChild
@NotNull public static @NotNull Tree addChild(@NotNull @NotNull 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 callingTree.addChild(String)andTree.setProperty(String, Object, org.apache.jackrabbit.oak.api.Type)where the property name isJcrConstants.JCR_PRIMARYTYPE. Note, that this method in addition verifies if the created tree exists and is accessible in order to avoidIllegalStateExceptionupon 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 String childName, @NotNull @NotNull String primaryTypeName) throws AccessDeniedException Combination ofTree.getChild(String)and adding a child including its jcr:primaryType property (i.e.Tree.addChild(String)andTree.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 String mixinName, @NotNull @NotNull Tree typeRoot, @Nullable @Nullable String userID) throws RepositoryException Add a mixin type to the giventree. The implementation checks the effective type of the tree and will not add the mixin if it determines the tree is already of typemixinNamethrough 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 ornullif unknown.- Throws:
RepositoryException- ifmixinNamedoes 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 Function<Tree, Iterable<String>> existingMixins, @NotNull @NotNull String mixinName, @NotNull @NotNull Tree typeRoot, @Nullable @Nullable String userID) throws RepositoryExceptionAdd a mixin type to the giventree. The implementation checks the effective type of the tree and will not add the mixin if it determines the tree is already of typemixinNamethrough 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 ornullif unknown.- Throws:
RepositoryException- ifmixinNamedoes 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 String userID) throws RepositoryException - Throws:
RepositoryException
-
autoCreateProperty
@Nullable public static @Nullable PropertyState autoCreateProperty(@NotNull @NotNull String name, @NotNull @NotNull Tree definition, @Nullable @Nullable String userID) -
getDefaultChildType
@Nullable public static @Nullable String getDefaultChildType(@NotNull @NotNull Tree typeRoot, @NotNull @NotNull 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:nodeTypestreeparent- parent nodechildName- name of the new child node- Returns:
- name of the default type, or
nullif not available
-
getEffectiveType
@NotNull public static @NotNull List<Tree> getEffectiveType(@NotNull @NotNull Tree tree, @NotNull @NotNull Tree typeRoot) Returns the effective node types of the given node. -
findDefaultPrimaryType
-
isNodeType
-
isReadOnlyTree
Returnstrueif the specifiedtreeis a read-only tree..- Parameters:
tree- The tree object to be tested.- Returns:
trueif the specified tree is an immutable read-only tree.- See Also:
-