Class NodeDefinitionImpl
- java.lang.Object
-
- org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl
-
- All Implemented Interfaces:
ItemDefinition,NodeDefinition
public class NodeDefinitionImpl extends Object implements NodeDefinition
This class implements theNodeDefinitioninterface. All method calls are delegated to the wrappedQNodeDefinition, performing the translation fromNames to JCR names where necessary.
-
-
Constructor Summary
Constructors Constructor Description NodeDefinitionImpl(QItemDefinition itemDef, NamePathResolver resolver)Constructor to create a definition that is based on a template.NodeDefinitionImpl(QItemDefinition itemDef, AbstractNodeTypeManager ntMgr, NamePathResolver resolver)Constructor to create a definition that is based on an existing node type.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanallowsSameNameSiblings()Reports whether this child node can have same-name siblings.booleanequals(Object o)NodeTypegetDeclaringNodeType()Gets the node type that contains the declaration of thisItemDefinition.NodeTypegetDefaultPrimaryType()Gets the default primary node type that will be assigned to the child node if it is created without an explicitly specified primary node type.StringgetDefaultPrimaryTypeName()Returns the name of the default primary node type.StringgetName()Gets the name of the child item.intgetOnParentVersion()Gets theOnParentVersionstatus of the child item.String[]getRequiredPrimaryTypeNames()Returns the names of the required primary node types.NodeType[]getRequiredPrimaryTypes()Gets the minimum set of primary node types that the child node must have.inthashCode()booleanisAutoCreated()Reports whether the item is to be automatically created when its parent node is created.booleanisMandatory()Reports whether the item is mandatory.booleanisProtected()Reports whether the child item is protected.QNodeDefinitionunwrap()Returns the wrapped node definition.-
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface javax.jcr.nodetype.ItemDefinition
getDeclaringNodeType, getName, getOnParentVersion, isAutoCreated, isMandatory, isProtected
-
-
-
-
Constructor Detail
-
NodeDefinitionImpl
public NodeDefinitionImpl(QItemDefinition itemDef, NamePathResolver resolver)
Constructor to create a definition that is based on a template.- Parameters:
itemDef- item definitionresolver-
-
NodeDefinitionImpl
public NodeDefinitionImpl(QItemDefinition itemDef, AbstractNodeTypeManager ntMgr, NamePathResolver resolver)
Constructor to create a definition that is based on an existing node type.- Parameters:
itemDef- item definitionresolver-
-
-
Method Detail
-
unwrap
public QNodeDefinition unwrap()
Returns the wrapped node definition.- Returns:
- the wrapped node definition.
-
allowsSameNameSiblings
public boolean allowsSameNameSiblings()
Reports whether this child node can have same-name siblings. In other words, whether the parent node can have more than one child node of this name.If this
NodeDefinitionis actually aNodeDefinitionTemplatethat is not part of a registered node type, then this method will return the same name siblings status as set in that template. If that template is a newly-created empty one, then this method will returnfalse.- Specified by:
allowsSameNameSiblingsin interfaceNodeDefinition- Returns:
- a boolean.
-
getDefaultPrimaryTypeName
public String getDefaultPrimaryTypeName()
Description copied from interface:NodeDefinitionReturns the name of the default primary node type.If this
NodeDefinitionis acquired from a liveNodeTypethis list will reflect the NodeType returned by getDefaultPrimaryType, above.If this
NodeDefinitionis actually aNodeDefinitionTemplatethat is not part of a registered node type, then this method will return the required primary types as set in that template. If that template is a newly-created empty one, then this method will returnnull.- Specified by:
getDefaultPrimaryTypeNamein interfaceNodeDefinition- Returns:
- a String
- Since:
- JCR 2.0
- See Also:
NodeDefinition.getDefaultPrimaryTypeName()
-
getDefaultPrimaryType
public NodeType getDefaultPrimaryType()
Gets the default primary node type that will be assigned to the child node if it is created without an explicitly specified primary node type. This node type must be a subtype of (or the same type as) the node types returned bygetRequiredPrimaryTypes.If
nullis returned this indicates that no default primary type is specified and that therefore an attempt to create this node without specifying a node type will throw aConstraintViolationException.In implementations that support node type registration an
NodeDefinitionobject may be acquired (in the form of aNodeDefinitionTemplate) that is not attached to a liveNodeType. In such cases this method returnsnull.- Specified by:
getDefaultPrimaryTypein interfaceNodeDefinition- Returns:
- a
NodeType.
-
getRequiredPrimaryTypes
public NodeType[] getRequiredPrimaryTypes()
Gets the minimum set of primary node types that the child node must have. Returns an array to support those implementations with multiple inheritance. This method never returns an empty array. If this node definition places no requirements on the primary node type, then this method will return an array containing only theNodeTypeobject representingnt:base, which is the base of all primary node types and therefore constitutes the least restrictive node type requirement. Note that any particular node instance still has only one assigned primary node type, but in multiple-inheritance-supporting implementations theRequiredPrimaryTypesattribute can be used to restrict that assigned node type to be a subtype of all of a specified set of node types.In implementations that support node type registration an
NodeDefinitionobject may be acquired (in the form of aNodeDefinitionTemplate) that is not attached to a liveNodeType. In such cases this method returnsnull.- Specified by:
getRequiredPrimaryTypesin interfaceNodeDefinition- Returns:
- an array of
NodeTypeobjects.
-
getRequiredPrimaryTypeNames
public String[] getRequiredPrimaryTypeNames()
Description copied from interface:NodeDefinitionReturns the names of the required primary node types.If this
NodeDefinitionis acquired from a liveNodeTypethis list will reflect the node types returned bygetRequiredPrimaryTypes, above.If this
NodeDefinitionis actually aNodeDefinitionTemplatethat is not part of a registered node type, then this method will return the required primary types as set in that template. If that template is a newly-created empty one, then this method will return null.- Specified by:
getRequiredPrimaryTypeNamesin interfaceNodeDefinition- Returns:
- a String array
- Since:
- JCR 2.0
- See Also:
NodeDefinition.getRequiredPrimaryTypeNames()
-
getDeclaringNodeType
public NodeType getDeclaringNodeType()
Gets the node type that contains the declaration of thisItemDefinition.In implementations that support node type registration an
ItemDefinitionobject may be acquired (in the form of aNodeDefinitionTemplateorPropertyDefinitionTemplate) that is not attached to a liveNodeType. In such cases this method returnsnull.- Specified by:
getDeclaringNodeTypein interfaceItemDefinition- Returns:
- a
NodeTypeobject.
-
getName
public String getName()
Gets the name of the child item. If"*", thisItemDefinitiondefines a residual set of child items. That is, it defines the characteristics of all those child items with names apart from the names explicitly used in other child item definitions.In implementations that support node type registration, if this
ItemDefinitionobject is actually a newly-created emptyPropertyDefinitionTemplateorNodeDefinitionTemplate, then this method will returnnull.- Specified by:
getNamein interfaceItemDefinition- Returns:
- a
Stringdenoting the name or"*".
-
getOnParentVersion
public int getOnParentVersion()
Gets theOnParentVersionstatus of the child item. This governs what occurs (in implementations that support versioning) when the parent node of this item is checked-in. One of:OnParentVersionAction.COPYOnParentVersionAction.VERSIONOnParentVersionAction.IGNOREOnParentVersionAction.INITIALIZEOnParentVersionAction.COMPUTEOnParentVersionAction.ABORT
In implementations that support node type registration, if this
ItemDefinitionobject is actually a newly-created emptyPropertyDefinitionTemplateorNodeDefinitionTemplate, then this method will returnOnParentVersionAction.COPY.- Specified by:
getOnParentVersionin interfaceItemDefinition- Returns:
- a
intconstant member ofOnParentVersionAction.
-
isAutoCreated
public boolean isAutoCreated()
Reports whether the item is to be automatically created when its parent node is created. Iftrue, then thisItemDefinitionwill necessarily not be a residual set definition but will specify an actual item name (in other words getName() will not return "*").An autocreated non-protected item must be created immediately when its parent node is created in the transient session space. Creation of autocreated non-protected items is never delayed until
save.An autocreated protected item should be created immediately when its parent node is created in the transient session space. Creation of autocreated protected items should not be delayed until
save, though doing so does not violate JCR compliance.In implementations that support node type registration, if this
ItemDefinitionobject is actually a newly-created emptyPropertyDefinitionTemplateorNodeDefinitionTemplate, then this method will returnfalse.- Specified by:
isAutoCreatedin interfaceItemDefinition- Returns:
- a
boolean.
-
isMandatory
public boolean isMandatory()
Reports whether the item is mandatory. A mandatory item is one that, if its parent node exists, must also exist.This means that a mandatory single-value property must have a value (since there is no such thing a
nullvalue). In the case of multi-value properties this means that the property must exist, though it can have zero or more values.An attempt to save a node that has a mandatory child item without first creating that child item will throw a
ConstraintViolationExceptiononsave.In implementations that support node type registration, if this
ItemDefinitionobject is actually a newly-created emptyPropertyDefinitionTemplateorNodeDefinitionTemplate, then this method will returnfalse.An item definition cannot be both residual and mandatory.
- Specified by:
isMandatoryin interfaceItemDefinition- Returns:
- a
boolean
-
isProtected
public boolean isProtected()
Reports whether the child item is protected. In level 2 implementations, a protected item is one that cannot be removed (except by removing its parent) or modified through the the standard write methods of this API (that is,Item.remove,Node.addNode,Node.setPropertyandProperty.setValue).A protected node may be removed or modified (in a level 2 implementation), however, through some mechanism not defined by this specification or as a side-effect of operations other than the standard write methods of the API.
In implementations that support node type registration, if this
ItemDefinitionobject is actually a newly-created emptyPropertyDefinitionTemplateorNodeDefinitionTemplate, then this method will returnfalse.- Specified by:
isProtectedin interfaceItemDefinition- Returns:
- a
boolean.
-
-