8.2.14.3 VersionHistory Interface

A VersionHistory object provides an interface for an nt:versionHistory node. It provides convenient access to version history information.

javax.jcr.version.
VersionHistory extends Node

String

getVersionableUUID()

Returns the UUID of the versionable node for which this is the version history.

A RepositoryException is thrown if an error occurs.

Version

getRootVersion()

Returns the root version of this version history.

A RepositoryException is thrown if an error occurs.

VersionIterator

getAllVersions()

Returns an iterator over all the versions within this version history. The order of the returned objects will not necessarily correspond to the order of versions in terms of the successor relation. To traverse the version graph one must traverse the jcr:successors REFERENCE properties starting with the root version (see above). A version history will always have at least one version, the root version. Therefore, this method will always return an iterator of at least size 1.

A RepositoryException is thrown if an error occurs.

Version

getVersion(String versionName)

Retrieves a particular version from this version history by version name.

Throws a VersionException if the specified version is not in this version history.

A RepositoryException is thrown if an error occurs.

Version

getVersionByLabel(String label)

Retrieves a particular version from this version history by version label.

Throws a VersionException if the specified label is not in this version history.

A RepositoryException is thrown if an error occurs.

void

addVersionLabel(String versionName,
String label,
boolean moveLabel)

Adds the specified label to the specified version. This corresponds to adding a value to the jcr:versionLabels multi-value property of the nt:version node that represents the specified version.

Note that this change is made immediately; there is no need to call save. In fact, since the version storage is read-only with respect to normal repository methods, save does not even function in this context.

Within a particular version history, a given label may appear a maximum of once. If the specified label is already assigned to a version in this history and moveLabel is true then the label is removed from its current location and added to the version with the specified versionName. If moveLabel is false, then an attempt to add a label that already exists in this version history will throw a VersionException.

A VersionException is also thrown if the named version is not in this VersionHistory or if it is the root version (jcr:rootVersion).

A RepositoryException is thrown if another error occurs.

boolean

hasVersionLabel(String label)

Returns true if any version in the history has the given label.

A RepositoryException is thrown if an error occurs.

boolean

hasVersionLabel(Version version, String label)

Returns true if the given version has the given label.

A RepositoryException is thrown if an error occurs.

String[]

getVersionLabels()

Returns all version labels of the history or an empty array if there are none.

A RepositoryException is thrown if an error occurs.

String[]

getVersionLabels(Version version)

Returns all version labels of the given version - empty array if none.

Throws a VersionException if the specified version is not in this version history.

Throws a RepositoryException if another error occurs.

Void

removeVersionLabel(String label)

Removes the specified label from among the labels of this version history. This corresponds to removing a property from the jcr:versionLabels child node of the nt:versionHistory node that represents this version history.

Note that this change is made immediately; there is no need to call save. In fact, since the version storage is read-only with respect to normal repository methods, save does not even function in this context.

If a label is specified that does not exist in this version history, a VersionException is thrown.

A RepositoryException is thrown if another error occurs.

Void

removeVersion(String versionName)

Removes the named version from this version history and automatically repairs the version graph. If the version to be removed is V, V's predecessor set is P and V's successor set is S, then the version graph is repaired s follows:

  • For each member of P, remove the reference to V from its successor list and add references to each member of S.

  • For each member of S, remove the reference to V from its predecessor list and add references to each member of P.

Note that this change is made immediately; there is no need to call save. In fact, since the version storage is read-only with respect to normal repository methods, save does not even function in this context.

A ReferentialIntegrityException will be thrown if the specified version is currently the target of a REFERENCE property elsewhere in the repository (not necessarily in this workspace) and the current Session has read access to that REFERENCE property.

An AccessDeniedException will be thrown if the current Session does not have permission to remove the specified version or if the specified version is currently the target of a REFERENCE property elsewhere in the repository (not necessarily in this workspace) and the current Session does not have read access to that REFERENCE property.

Throws an UnsupportedRepositoryOperationException if this operation is not supported by the implementation.

Throws a VersionException if the named version is not in this VersionHistory.

Throws a RepositoryException if another error occurs.