Class TreeUtil
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.tree.TreeUtil
-
public final class TreeUtil extends java.lang.Object
Utility providing common operations for theTree
that are not provided by the API.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static @NotNull org.apache.jackrabbit.oak.api.Tree
addChild(@NotNull org.apache.jackrabbit.oak.api.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 org.apache.jackrabbit.oak.api.Tree
addChild(@NotNull org.apache.jackrabbit.oak.api.Tree parent, @NotNull java.lang.String name, @Nullable java.lang.String typeName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable java.lang.String userID)
static void
addMixin(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String mixinName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable java.lang.String userID)
Add a mixin type to the giventree
.static void
addMixin(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.util.function.Function<org.apache.jackrabbit.oak.api.Tree,java.lang.Iterable<java.lang.String>> existingMixins, @NotNull java.lang.String mixinName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable java.lang.String userID)
Add a mixin type to the giventree
.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 java.lang.String userID)
static @Nullable org.apache.jackrabbit.oak.api.PropertyState
autoCreateProperty(@NotNull java.lang.String name, @NotNull org.apache.jackrabbit.oak.api.Tree definition, @Nullable java.lang.String userID)
static @Nullable java.lang.String
findDefaultPrimaryType(@NotNull org.apache.jackrabbit.oak.api.Tree definitions, boolean sns)
static boolean
getBoolean(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String propertyName)
Returns the boolean representation of the property with the specifiedpropertyName
.static @Nullable java.lang.String
getDefaultChildType(@NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @NotNull org.apache.jackrabbit.oak.api.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<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 java.lang.String name, long defaultValue)
static @NotNull java.lang.Iterable<java.lang.String>
getMixinTypeNames(@NotNull org.apache.jackrabbit.oak.api.Tree tree)
static @NotNull java.lang.Iterable<java.lang.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 java.lang.String
getName(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String name)
static @NotNull java.lang.Iterable<java.lang.String>
getNames(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String name)
static @NotNull org.apache.jackrabbit.oak.api.Tree
getOrAddChild(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String childName, @NotNull java.lang.String primaryTypeName)
Combination ofTree.getChild(String)
and adding a child including its jcr:primaryType property (i.e.static @Nullable java.lang.String
getPrimaryTypeName(@NotNull org.apache.jackrabbit.oak.api.Tree tree)
static @Nullable java.lang.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 java.lang.String
getString(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String propertyName)
static @Nullable java.lang.String
getString(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String name, @Nullable java.lang.String defaultValue)
static @Nullable java.lang.Iterable<java.lang.String>
getStrings(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String propertyName)
static @Nullable org.apache.jackrabbit.oak.api.Tree
getTree(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String path)
Return the possibly non existing tree located at the passedpath
from the location of the starttree
ornull
ifpath
results in a parent of the root.static boolean
isNodeType(@NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull java.lang.String typeName, @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot)
static boolean
isReadOnlyTree(@NotNull org.apache.jackrabbit.oak.api.Tree tree)
Returnstrue
if the specifiedtree
is a read-only tree..
-
-
-
Method Detail
-
getPrimaryTypeName
@Nullable public static @Nullable java.lang.String getPrimaryTypeName(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree)
-
getPrimaryTypeName
@Nullable public static @Nullable java.lang.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 java.lang.Iterable<java.lang.String> getMixinTypeNames(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree)
-
getMixinTypeNames
@NotNull public static @NotNull java.lang.Iterable<java.lang.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 java.lang.Iterable<java.lang.String> getStrings(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String propertyName)
-
getString
@Nullable public static @Nullable java.lang.String getString(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String propertyName)
-
getString
@Nullable public static @Nullable java.lang.String getString(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String name, @Nullable @Nullable java.lang.String defaultValue)
-
getBoolean
public static boolean getBoolean(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String propertyName)
Returns the boolean representation of the property with the specifiedpropertyName
. If the property does not exist oris an array
this 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
false
if the property does not exist or is an multivalued property.
-
getName
@Nullable public static @Nullable java.lang.String getName(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String name)
-
getNames
@NotNull public static @NotNull java.lang.Iterable<java.lang.String> getNames(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String name)
-
getLong
public static long getLong(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.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 java.lang.String path)
Return the possibly non existing tree located at the passedpath
from the location of the starttree
ornull
ifpath
results in a parent of the root.- Parameters:
tree
- start treepath
- path from the start tree- Returns:
- tree located at
path
fromstart
ornull
-
addChild
@NotNull public static @NotNull org.apache.jackrabbit.oak.api.Tree addChild(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree parent, @NotNull @NotNull java.lang.String name, @Nullable @Nullable java.lang.String typeName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable java.lang.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 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 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 avoidIllegalStateException
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 java.lang.String childName, @NotNull @NotNull java.lang.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 org.apache.jackrabbit.oak.api.Tree tree, @NotNull @NotNull java.lang.String mixinName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable java.lang.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 typemixinName
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 ornull
if unknown.- Throws:
RepositoryException
- ifmixinName
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 java.util.function.Function<org.apache.jackrabbit.oak.api.Tree,java.lang.Iterable<java.lang.String>> existingMixins, @NotNull @NotNull java.lang.String mixinName, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @Nullable @Nullable java.lang.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 typemixinName
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 ornull
if unknown.- Throws:
RepositoryException
- ifmixinName
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 java.lang.String userID) throws RepositoryException
- Throws:
RepositoryException
-
autoCreateProperty
@Nullable public static @Nullable org.apache.jackrabbit.oak.api.PropertyState autoCreateProperty(@NotNull @NotNull java.lang.String name, @NotNull @NotNull org.apache.jackrabbit.oak.api.Tree definition, @Nullable @Nullable java.lang.String userID)
-
getDefaultChildType
@Nullable public static @Nullable java.lang.String getDefaultChildType(@NotNull @NotNull org.apache.jackrabbit.oak.api.Tree typeRoot, @NotNull @NotNull org.apache.jackrabbit.oak.api.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
treeparent
- parent nodechildName
- 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<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 java.lang.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 java.lang.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)
Returnstrue
if the specifiedtree
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
-
-