Class NodeDefinitionImpl
- java.lang.Object
-
- org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl
-
- All Implemented Interfaces:
ItemDefinition
,NodeDefinition
public class NodeDefinitionImpl extends java.lang.Object implements NodeDefinition
This class implements theNodeDefinition
interface. All method calls are delegated to the wrappedQNodeDefinition
, performing the translation fromName
s 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 boolean
allowsSameNameSiblings()
Reports whether this child node can have same-name siblings.boolean
equals(java.lang.Object o)
NodeType
getDeclaringNodeType()
Gets the node type that contains the declaration of thisItemDefinition
.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.java.lang.String
getDefaultPrimaryTypeName()
Returns the name of the default primary node type.java.lang.String
getName()
Gets the name of the child item.int
getOnParentVersion()
Gets theOnParentVersion
status of the child item.java.lang.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.int
hashCode()
boolean
isAutoCreated()
Reports whether the item is to be automatically created when its parent node is created.boolean
isMandatory()
Reports whether the item is mandatory.boolean
isProtected()
Reports whether the child item is protected.QNodeDefinition
unwrap()
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
NodeDefinition
is actually aNodeDefinitionTemplate
that 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:
allowsSameNameSiblings
in interfaceNodeDefinition
- Returns:
- a boolean.
-
getDefaultPrimaryTypeName
public java.lang.String getDefaultPrimaryTypeName()
Description copied from interface:NodeDefinition
Returns the name of the default primary node type.If this
NodeDefinition
is acquired from a liveNodeType
this list will reflect the NodeType returned by getDefaultPrimaryType, above.If this
NodeDefinition
is actually aNodeDefinitionTemplate
that 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:
getDefaultPrimaryTypeName
in 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
null
is 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
NodeDefinition
object may be acquired (in the form of aNodeDefinitionTemplate
) that is not attached to a liveNodeType
. In such cases this method returnsnull
.- Specified by:
getDefaultPrimaryType
in 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 theNodeType
object 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 theRequiredPrimaryTypes
attribute 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
NodeDefinition
object may be acquired (in the form of aNodeDefinitionTemplate
) that is not attached to a liveNodeType
. In such cases this method returnsnull
.- Specified by:
getRequiredPrimaryTypes
in interfaceNodeDefinition
- Returns:
- an array of
NodeType
objects.
-
getRequiredPrimaryTypeNames
public java.lang.String[] getRequiredPrimaryTypeNames()
Description copied from interface:NodeDefinition
Returns the names of the required primary node types.If this
NodeDefinition
is acquired from a liveNodeType
this list will reflect the node types returned bygetRequiredPrimaryTypes
, above.If this
NodeDefinition
is actually aNodeDefinitionTemplate
that 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:
getRequiredPrimaryTypeNames
in 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
ItemDefinition
object may be acquired (in the form of aNodeDefinitionTemplate
orPropertyDefinitionTemplate
) that is not attached to a liveNodeType
. In such cases this method returnsnull
.- Specified by:
getDeclaringNodeType
in interfaceItemDefinition
- Returns:
- a
NodeType
object.
-
getName
public java.lang.String getName()
Gets the name of the child item. If"*"
, thisItemDefinition
defines 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
ItemDefinition
object is actually a newly-created emptyPropertyDefinitionTemplate
orNodeDefinitionTemplate
, then this method will returnnull
.- Specified by:
getName
in interfaceItemDefinition
- Returns:
- a
String
denoting the name or"*"
.
-
getOnParentVersion
public int getOnParentVersion()
Gets theOnParentVersion
status 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.COPY
OnParentVersionAction.VERSION
OnParentVersionAction.IGNORE
OnParentVersionAction.INITIALIZE
OnParentVersionAction.COMPUTE
OnParentVersionAction.ABORT
In implementations that support node type registration, if this
ItemDefinition
object is actually a newly-created emptyPropertyDefinitionTemplate
orNodeDefinitionTemplate
, then this method will returnOnParentVersionAction.COPY
.- Specified by:
getOnParentVersion
in interfaceItemDefinition
- Returns:
- a
int
constant member ofOnParentVersionAction
.
-
isAutoCreated
public boolean isAutoCreated()
Reports whether the item is to be automatically created when its parent node is created. Iftrue
, then thisItemDefinition
will 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
ItemDefinition
object is actually a newly-created emptyPropertyDefinitionTemplate
orNodeDefinitionTemplate
, then this method will returnfalse
.- Specified by:
isAutoCreated
in 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
null
value). 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
ConstraintViolationException
onsave
.In implementations that support node type registration, if this
ItemDefinition
object is actually a newly-created emptyPropertyDefinitionTemplate
orNodeDefinitionTemplate
, then this method will returnfalse
.An item definition cannot be both residual and mandatory.
- Specified by:
isMandatory
in 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.setProperty
andProperty.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
ItemDefinition
object is actually a newly-created emptyPropertyDefinitionTemplate
orNodeDefinitionTemplate
, then this method will returnfalse
.- Specified by:
isProtected
in interfaceItemDefinition
- Returns:
- a
boolean
.
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
-