8.2.6 Check Out

In order to alter a versionable node (and its non-versionable subtree) the node must be checked-out. The checked-out state indicates to the repository and other clients that the current base version (the one pointed to be jcr:baseVersion) of N is “being worked on” and will (usually) be checked-in again at some point in the future, thus creating a new version. When a versionable node is first created (or an existing node is first made versionable, in those implementations that allow that) it will already be in the checked-out state (its jcr:checkedOut property is set to true).

To check-out a versionable node N, the client calls N.checkout. If the node is already checked out, this method has no effect. If N is not versionable then an UnsupportedRepositoryOperationException is thrown. Otherwise, a N.checkout will cause the following series of events:

This method acts directly on the workspace and the version storage. All changes are persisted immediately. There is no need to call save.