8.2.2.6 nt:frozenNode

The nt:frozenNode node type has the following definition (repeated from 6.7.22.16 nt:frozenNode):

NodeTypeName

nt:frozenNode

Supertypes

nt:base

mix:referenceable

IsMixin

false

HasOrderableChildNodes

true

PrimaryItemName

null

PropertyDefinition

Name jcr:frozenPrimaryType

RequiredType NAME

ValueConstraints []

DefaultValues null

AutoCreated true

Mandatory true

OnParentVersion ABORT

Protected true

Multiple false

PropertyDefinition

Name jcr:frozenMixinTypes

RequiredType NAME

ValueConstraints []

DefaultValues null

AutoCreated false

Mandatory false

OnParentVersion ABORT

Protected true

Multiple true

PropertyDefinition

Name jcr:frozenUuid

RequiredType STRING

ValueConstraints []

DefaultValues null

AutoCreated true

Mandatory true

OnParentVersion ABORT

Protected true

Multiple false

PropertyDefinition

Name *

RequiredType UNDEFINED

ValueConstraints []

DefaultValues null

AutoCreated false

Mandatory false

OnParentVersion ABORT

Protected true

Multiple false

PropertyDefinition

Name *

RequiredType UNDEFINED

ValueConstraints []

DefaultValues null

AutoCreated false

Mandatory false

OnParentVersion ABORT

Protected true

Multiple true

ChildNodeDefinition

Name *

RequiredPrimaryTypes [nt:base]

DefaultPrimaryType null

AutoCreated false

Mandatory false

OnParentVersion ABORT

Protected true

SameNameSiblings true


The properties and child nodes of the versioned node (call it N) are dealt with according to their respective OnParentVersion attribute, as defined in the node type of N. Those child nodes and properties of N with OnParentVersion=COPY are copied to jcr:frozenNode. The residual property and child node definitions in nt:frozenNode provide the “space” into which these copies are placed.

Those child nodes and properties of N with OnParentVersion=IGNORE are not copied.

Those versionable child nodes of N (i.e., children of N that are themselves also versionable) with OnParentVersion=VERSION are dealt with in a special way: a node with the same name as the child node but of type nt:versionedChild is placed as a child of jcr:frozenNode. This special node is not a copy of the child node of N but instead holds a single reference property (called jcr:childVersionHistory) that points to the version history of the child of N. The OnParentVersion mechanism has other options as well, for a full discussion, see 8.2.11 The OnParentVersion Attribute.

Among the properties of N that are copied over to jcr:frozenNode, a special exception must be made for jcr:primaryType, jcr:mixinTypes and jcr:uuid. These properties cannot be copied to their corresponding jcr:frozenNode node without conflicting with that node’s existing properties of the same name (recall for example, that jcr:frozenNode is of type nt:frozenNode, and so its jcr:primaryType property will, of course, hold the value “nt:frozenNode”, not the node type of N). To address this problem, the copies are renamed jcr:frozenPrimaryType, jcr:frozenMixinTypes, and jcr:frozenUuid, respectively.