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 the NodeDefinition interface. All method calls are delegated to the wrapped QNodeDefinition, performing the translation from Names to JCR names where necessary.
  • Constructor Details

    • NodeDefinitionImpl

      public NodeDefinitionImpl(QItemDefinition itemDef, NamePathResolver resolver)
      Constructor to create a definition that is based on a template.
      Parameters:
      itemDef - item definition
      resolver -
    • 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 definition
      resolver -
  • Method Details

    • 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 a NodeDefinitionTemplate 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 return false.

      Specified by:
      allowsSameNameSiblings in interface NodeDefinition
      Returns:
      a boolean.
    • getDefaultPrimaryTypeName

      public String getDefaultPrimaryTypeName()
      Description copied from interface: NodeDefinition
      Returns the name of the default primary node type.

      If this NodeDefinition is acquired from a live NodeType this list will reflect the NodeType returned by getDefaultPrimaryType, above.

      If this NodeDefinition is actually a NodeDefinitionTemplate 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:
      getDefaultPrimaryTypeName in interface NodeDefinition
      Returns:
      a String
      Since:
      JCR 2.0
      See Also:
    • 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 by getRequiredPrimaryTypes.

      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 a ConstraintViolationException.

      In implementations that support node type registration an NodeDefinition object may be acquired (in the form of a NodeDefinitionTemplate) that is not attached to a live NodeType. In such cases this method returns null.

      Specified by:
      getDefaultPrimaryType in interface NodeDefinition
      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 the NodeType object representing nt: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 the RequiredPrimaryTypes 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 a NodeDefinitionTemplate) that is not attached to a live NodeType. In such cases this method returns null.

      Specified by:
      getRequiredPrimaryTypes in interface NodeDefinition
      Returns:
      an array of NodeType objects.
    • getRequiredPrimaryTypeNames

      public String[] getRequiredPrimaryTypeNames()
      Description copied from interface: NodeDefinition
      Returns the names of the required primary node types.

      If this NodeDefinition is acquired from a live NodeType this list will reflect the node types returned by getRequiredPrimaryTypes, above.

      If this NodeDefinition is actually a NodeDefinitionTemplate 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 interface NodeDefinition
      Returns:
      a String array
      Since:
      JCR 2.0
      See Also:
    • getDeclaringNodeType

      public NodeType getDeclaringNodeType()
      Gets the node type that contains the declaration of this ItemDefinition.

      In implementations that support node type registration an ItemDefinition object may be acquired (in the form of a NodeDefinitionTemplate or PropertyDefinitionTemplate) that is not attached to a live NodeType. In such cases this method returns null.

      Specified by:
      getDeclaringNodeType in interface ItemDefinition
      Returns:
      a NodeType object.
    • getName

      public String getName()
      Gets the name of the child item. If "*", 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 child item definitions.

      In implementations that support node type registration, if this ItemDefinition object is actually a newly-created empty PropertyDefinitionTemplate or NodeDefinitionTemplate, then this method will return null.

      Specified by:
      getName in interface ItemDefinition
      Returns:
      a String denoting the name or "*".
    • getOnParentVersion

      public int getOnParentVersion()
      Gets the OnParentVersion 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 empty PropertyDefinitionTemplate or NodeDefinitionTemplate, then this method will return OnParentVersionAction.COPY.

      Specified by:
      getOnParentVersion in interface ItemDefinition
      Returns:
      a int constant member of OnParentVersionAction.
    • isAutoCreated

      public boolean isAutoCreated()
      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 "*").

      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 empty PropertyDefinitionTemplate or NodeDefinitionTemplate, then this method will return false.

      Specified by:
      isAutoCreated in interface ItemDefinition
      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 on save.

      In implementations that support node type registration, if this ItemDefinition object is actually a newly-created empty PropertyDefinitionTemplate or NodeDefinitionTemplate, then this method will return false.

      An item definition cannot be both residual and mandatory.

      Specified by:
      isMandatory in interface ItemDefinition
      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 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.

      In implementations that support node type registration, if this ItemDefinition object is actually a newly-created empty PropertyDefinitionTemplate or NodeDefinitionTemplate, then this method will return false.

      Specified by:
      isProtected in interface ItemDefinition
      Returns:
      a boolean.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object