6.7.12 ItemDefinition

The ItemDefinition is the super-interface of PropertyDefinition and NodeDefinition. It encapsulates the methods common to both.




Gets the node type that contains the declaration of this ItemDefinition.



Gets the name of the item to which this definition applies. If “*”, then this ItemDefinition 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 item definitions. See 6.7.15 Residual Definitions.



Reports whether the item is to be automatically created when its parent node is created. If true then this ItemDefinition will necessarily not be a residual set definition but will specify an actual item name (in other words getName() will not return “*”). See 6.7.15 Residual Definitions).



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 (in a level 2 implementation) to save a node that has a mandatory child item without first creating that child item will throw a ConstraintViolationException on save.



Gets the OnParentVersion status of the property. This governs what occurs (in implementations that support versioning) when the parent node of this item is checked-in. See 8.2 Versioning.



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 directly through this API (that is, Item.remove, Node.addNode, Node.setProperty and Property.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.