Class ReadOnlyNodeTypeManager
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager
-
- All Implemented Interfaces:
NodeTypeManager,DefinitionProvider,EffectiveNodeTypeProvider
- Direct Known Subclasses:
ReadWriteNodeTypeManager
public abstract class ReadOnlyNodeTypeManager extends Object implements NodeTypeManager, EffectiveNodeTypeProvider, DefinitionProvider
Base implementation of aNodeTypeManagerwith support for reading node types from theTreereturned bygetTypes(). Methods related to node type modifications throwUnsupportedRepositoryOperationException.
-
-
Constructor Summary
Constructors Constructor Description ReadOnlyNodeTypeManager()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description NodeDefinitionTemplatecreateNodeDefinitionTemplate()NodeTypeTemplatecreateNodeTypeTemplate()NodeTypeTemplatecreateNodeTypeTemplate(NodeTypeDefinition ntd)PropertyDefinitionTemplatecreatePropertyDefinitionTemplate()NodeTypeIteratorgetAllNodeTypes()@NotNull NodeDefinitiongetDefinition(@NotNull Tree parent, @NotNull String nodeName)Returns the node definition for a child node ofparentnamednodeNamewith a default primary type.@NotNull PropertyDefinitiongetDefinition(@NotNull Tree parent, @NotNull PropertyState property, boolean exactTypeMatch)Calculates the applicable definition for the property state under the given parent tree.@NotNull NodeDefinitiongetDefinition(@NotNull Tree parent, @NotNull Tree targetNode)Calculates the applicable definition for the child node under the given parent node.@NotNull EffectiveNodeTypegetEffectiveNodeType(@NotNull Node node)Returns all the node types of the given node, in a breadth-first traversal order of the type hierarchy.@NotNull EffectiveNodeTypegetEffectiveNodeType(@NotNull Tree tree)Calculates and returns the effective node types of the given tree.static @NotNull ReadOnlyNodeTypeManagergetInstance(Root root, NamePathMapper namePathMapper)Return a new instance ofReadOnlyNodeTypeManagerthat reads node type information from the tree atNodeTypeConstants.NODE_TYPES_PATH.NodeTypeIteratorgetMixinNodeTypes()protected @NotNull NamePathMappergetNamePathMapper()Returns aNameMapperto be used by this node type manager.NodeTypegetNodeType(String name)protected @NotNull StringgetOakName(String jcrName)Returns the internal name for the specified JCR name.NodeTypeIteratorgetPrimaryNodeTypes()@NotNull NodeDefinitiongetRootDefinition()protected abstract @NotNull TreegetTypes()Returns theTreeinstance where the node types are stored.protected @Nullable ValueFactorygetValueFactory()The value factory to be used byPropertyDefinition.getDefaultValues().booleanhasNodeType(String name)booleanisNodeType(@NotNull String typeName, @NotNull String superName)ReturnstrueiftypeNameis of the specified primary node type or mixin type, or a subtype thereof.booleanisNodeType(@NotNull Tree tree, @NotNull String oakNtName)Returnstrueif this tree is of the specified primary node type or mixin type, or a subtype thereof respecting the effective node type of thetree.booleanisNodeType(@Nullable String primaryTypeName, @NotNull Supplier<Iterable<String>> mixinTypes, @NotNull String nodeTypeName)ReturnstrueiftypeNameis of the specified primary node type or mixin type, or a subtype thereof.NodeTyperegisterNodeType(NodeTypeDefinition ntd, boolean allowUpdate)This implementation always throws aUnsupportedRepositoryOperationException.NodeTypeIteratorregisterNodeTypes(NodeTypeDefinition[] ntds, boolean allowUpdate)This implementation always throws aUnsupportedRepositoryOperationException.voidunregisterNodeType(String name)This implementation always throws aUnsupportedRepositoryOperationException.voidunregisterNodeTypes(String[] names)This implementation always throws aUnsupportedRepositoryOperationException.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.jackrabbit.oak.spi.nodetype.EffectiveNodeTypeProvider
isNodeType, isNodeType
-
-
-
-
Method Detail
-
getOakName
@NotNull protected final @NotNull String getOakName(String jcrName) throws RepositoryException
Returns the internal name for the specified JCR name.- Parameters:
jcrName- JCR node type name.- Returns:
- the internal representation of the given JCR name.
- Throws:
RepositoryException- If there is no valid internal representation of the specified JCR name.
-
getTypes
@NotNull protected abstract @NotNull Tree getTypes()
Returns theTreeinstance where the node types are stored. This method never returnsnulland may return aTreethat does not exist (seeTree.exists()when there are no types stored.- Returns:
Treeinstance where the node types are stored.
-
getValueFactory
@Nullable protected @Nullable ValueFactory getValueFactory()
The value factory to be used byPropertyDefinition.getDefaultValues(). Ifnullthe former returnsnull.- Returns:
ValueFactoryinstance ornull.
-
getNamePathMapper
@NotNull protected @NotNull NamePathMapper getNamePathMapper()
Returns aNameMapperto be used by this node type manager. This implementation returns theNamePathMapper.DEFAULTinstance. A subclass may override this method and provide a different implementation.- Returns:
NameMapperinstance.
-
getInstance
@NotNull public static @NotNull ReadOnlyNodeTypeManager getInstance(Root root, NamePathMapper namePathMapper)
Return a new instance ofReadOnlyNodeTypeManagerthat reads node type information from the tree atNodeTypeConstants.NODE_TYPES_PATH.- Parameters:
root- The root to read node types from.namePathMapper- TheNamePathMapperto use.- Returns:
- a new instance of
ReadOnlyNodeTypeManager.
-
hasNodeType
public boolean hasNodeType(String name) throws RepositoryException
- Specified by:
hasNodeTypein interfaceNodeTypeManager- Throws:
RepositoryException
-
getNodeType
public NodeType getNodeType(String name) throws RepositoryException
- Specified by:
getNodeTypein interfaceNodeTypeManager- Throws:
RepositoryException
-
getAllNodeTypes
public NodeTypeIterator getAllNodeTypes() throws RepositoryException
- Specified by:
getAllNodeTypesin interfaceNodeTypeManager- Throws:
RepositoryException
-
getPrimaryNodeTypes
public NodeTypeIterator getPrimaryNodeTypes() throws RepositoryException
- Specified by:
getPrimaryNodeTypesin interfaceNodeTypeManager- Throws:
RepositoryException
-
getMixinNodeTypes
public NodeTypeIterator getMixinNodeTypes() throws RepositoryException
- Specified by:
getMixinNodeTypesin interfaceNodeTypeManager- Throws:
RepositoryException
-
createNodeTypeTemplate
public NodeTypeTemplate createNodeTypeTemplate() throws RepositoryException
- Specified by:
createNodeTypeTemplatein interfaceNodeTypeManager- Throws:
RepositoryException
-
createNodeTypeTemplate
public NodeTypeTemplate createNodeTypeTemplate(NodeTypeDefinition ntd) throws RepositoryException
- Specified by:
createNodeTypeTemplatein interfaceNodeTypeManager- Throws:
RepositoryException
-
createNodeDefinitionTemplate
public NodeDefinitionTemplate createNodeDefinitionTemplate() throws RepositoryException
- Specified by:
createNodeDefinitionTemplatein interfaceNodeTypeManager- Throws:
RepositoryException
-
createPropertyDefinitionTemplate
public PropertyDefinitionTemplate createPropertyDefinitionTemplate() throws RepositoryException
- Specified by:
createPropertyDefinitionTemplatein interfaceNodeTypeManager- Throws:
RepositoryException
-
registerNodeType
public NodeType registerNodeType(NodeTypeDefinition ntd, boolean allowUpdate) throws RepositoryException
This implementation always throws aUnsupportedRepositoryOperationException.- Specified by:
registerNodeTypein interfaceNodeTypeManager- Throws:
RepositoryException
-
registerNodeTypes
public NodeTypeIterator registerNodeTypes(NodeTypeDefinition[] ntds, boolean allowUpdate) throws RepositoryException
This implementation always throws aUnsupportedRepositoryOperationException.- Specified by:
registerNodeTypesin interfaceNodeTypeManager- Throws:
RepositoryException
-
unregisterNodeType
public void unregisterNodeType(String name) throws RepositoryException
This implementation always throws aUnsupportedRepositoryOperationException.- Specified by:
unregisterNodeTypein interfaceNodeTypeManager- Throws:
RepositoryException
-
unregisterNodeTypes
public void unregisterNodeTypes(String[] names) throws RepositoryException
This implementation always throws aUnsupportedRepositoryOperationException.- Specified by:
unregisterNodeTypesin interfaceNodeTypeManager- Throws:
RepositoryException
-
isNodeType
public boolean isNodeType(@NotNull @NotNull Tree tree, @NotNull @NotNull String oakNtName)Description copied from interface:EffectiveNodeTypeProviderReturnstrueif this tree is of the specified primary node type or mixin type, or a subtype thereof respecting the effective node type of thetree. Returnsfalseotherwise. Note: caution must be taken while calling this api because it doesn't offer the same strict guarantees as theNode#isNodeType(String)method in the case where the session doesn't have access to thejcr:mixinTypesproperty.- Specified by:
isNodeTypein interfaceEffectiveNodeTypeProvider- Parameters:
tree- The tree to be tested.oakNtName- The internal oak name of the node type to be tested.- Returns:
- true if the specified node is of the given node type.
-
isNodeType
public boolean isNodeType(@Nullable @Nullable String primaryTypeName, @NotNull @NotNull Supplier<Iterable<String>> mixinTypes, @NotNull @NotNull String nodeTypeName)Description copied from interface:EffectiveNodeTypeProviderReturnstrueiftypeNameis of the specified primary node type or mixin type, or a subtype thereof. Returnsfalseotherwise.- Specified by:
isNodeTypein interfaceEffectiveNodeTypeProvider- Parameters:
primaryTypeName- the internal oak name of the node to testmixinTypes- the internal oak names of the node to test.nodeTypeName- The internal oak name of the node type to be tested.- Returns:
trueif the specified node type is of the given node type.
-
isNodeType
public boolean isNodeType(@NotNull @NotNull String typeName, @NotNull @NotNull String superName)Description copied from interface:EffectiveNodeTypeProviderReturnstrueiftypeNameis of the specified primary node type or mixin type, or a subtype thereof. Returnsfalseotherwise.- Specified by:
isNodeTypein interfaceEffectiveNodeTypeProvider- Parameters:
typeName- the internal oak name of the node type to testsuperName- The internal oak name of the super type to be tested for.- Returns:
trueif the specified node type is of the given node type.
-
getEffectiveNodeType
@NotNull public @NotNull EffectiveNodeType getEffectiveNodeType(@NotNull @NotNull Node node) throws RepositoryException
Returns all the node types of the given node, in a breadth-first traversal order of the type hierarchy.- Specified by:
getEffectiveNodeTypein interfaceEffectiveNodeTypeProvider- Parameters:
node- node instance- Returns:
- all types of the given node
- Throws:
RepositoryException- if the type information can not be accessed- See Also:
- JCR 2.0 Specification, Section 3.7.6.5
-
getEffectiveNodeType
@NotNull public @NotNull EffectiveNodeType getEffectiveNodeType(@NotNull @NotNull Tree tree) throws RepositoryException
Description copied from interface:EffectiveNodeTypeProviderCalculates and returns the effective node types of the given tree. Also see JCR 2.0 Specification, Section 3.7.6.5 for the definition of the effective node type.- Specified by:
getEffectiveNodeTypein interfaceEffectiveNodeTypeProvider- Parameters:
tree- the tree- Returns:
- all node types of the given tree
- Throws:
RepositoryException- if the type information can not be accessed,- See Also:
- JCR 2.0 Specification, Section 3.7.6.5
-
getRootDefinition
@NotNull public @NotNull NodeDefinition getRootDefinition() throws RepositoryException
- Specified by:
getRootDefinitionin interfaceDefinitionProvider- Throws:
RepositoryException
-
getDefinition
@NotNull public @NotNull NodeDefinition getDefinition(@NotNull @NotNull Tree parent, @NotNull @NotNull String nodeName) throws RepositoryException
Description copied from interface:DefinitionProviderReturns the node definition for a child node ofparentnamednodeNamewith a default primary type. First the non-residual child node definitions ofparentare checked matching the given node name. Then the residual definitions are checked.- Specified by:
getDefinitionin interfaceDefinitionProvider- Parameters:
parent- the parent node.nodeName- The internal oak name of the child node.- Returns:
- the applicable node definition.
- Throws:
ConstraintViolationException- If no matching definition can be found.RepositoryException- If another error occurs.
-
getDefinition
@NotNull public @NotNull NodeDefinition getDefinition(@NotNull @NotNull Tree parent, @NotNull @NotNull Tree targetNode) throws RepositoryException
Description copied from interface:DefinitionProviderCalculates the applicable definition for the child node under the given parent node.- Specified by:
getDefinitionin interfaceDefinitionProvider- Parameters:
parent- The parent node.targetNode- The child node for which the definition is calculated.- Returns:
- the definition of the target node.
- Throws:
ConstraintViolationException- If no matching definition can be found.RepositoryException- If another error occurs.
-
getDefinition
@NotNull public @NotNull PropertyDefinition getDefinition(@NotNull @NotNull Tree parent, @NotNull @NotNull PropertyState property, boolean exactTypeMatch) throws RepositoryException
Description copied from interface:DefinitionProviderCalculates the applicable definition for the property state under the given parent tree.- Specified by:
getDefinitionin interfaceDefinitionProvider- Parameters:
parent- The parent tree.property- The target property.- Returns:
- the definition for the target property.
- Throws:
ConstraintViolationException- If no matching definition can be found.RepositoryException- If another error occurs.
-
-