Class ReadWriteVersionManager

    • Constructor Detail

      • ReadWriteVersionManager

        public ReadWriteVersionManager​(NodeBuilder versionStorageNode,
                                       NodeBuilder workspaceRoot)
    • Method Detail

      • getOrCreateVersionHistory

        @NotNull
        public @NotNull NodeBuilder getOrCreateVersionHistory​(@NotNull
                                                              @NotNull NodeBuilder versionable,
                                                              @NotNull
                                                              @NotNull java.util.Map<java.lang.String,​java.lang.Object> infoMap)
        Gets or creates the version history for the given versionable node.
        Parameters:
        versionable - the versionable node.
        infoMap - The additional information as provided by CommitInfo.getInfo()
        Returns:
        the version history node.
        Throws:
        java.lang.IllegalArgumentException - if the given node does not have a jcr:uuid property.
      • checkout

        public void checkout​(NodeBuilder versionable)
      • restore

        public void restore​(@NotNull
                            @NotNull NodeBuilder versionable,
                            @NotNull
                            @NotNull java.lang.String versionUUID,
                            @Nullable
                            @Nullable org.apache.jackrabbit.oak.plugins.version.VersionSelector selector)
                     throws CommitFailedException
        Throws:
        CommitFailedException
      • removeVersionLabel

        public void removeVersionLabel​(@NotNull
                                       @NotNull java.lang.String historyRelPath,
                                       @NotNull
                                       @NotNull java.lang.String label)
                                throws CommitFailedException
        Removes a version label from the jcr:versionLabels node of the referenced version history.
        Parameters:
        historyRelPath - relative path from the jcr:versionStorage node to the version history node.
        label - the version label.
        Throws:
        CommitFailedException - if there is no such version history or if there is no label with the given name.
      • calculateVersion

        protected java.lang.String calculateVersion​(@NotNull
                                                    @NotNull NodeBuilder history,
                                                    @NotNull
                                                    @NotNull NodeBuilder versionable)
                                             throws java.lang.IllegalStateException
        Copied from Apache Jackrabbit Core

        Calculates the name of the new version that will be created by a checkin call. The name is determined as follows:

        • first the predecessor version with the shortest name is searched.
        • if that predecessor version is the root version, the new version gets the name "{number of successors}+1" + ".0"
        • if that predecessor version has no successor, the last digit of it's version number is incremented.
        • if that predecessor version has successors but the incremented name does not exist, that name is used.
        • otherwise a ".0" is added to the name until a non conflicting name is found.

        Example Graph:

         jcr:rootVersion
          |     |
         1.0   2.0
          |
         1.1
          |
         1.2 ---\  ------\
          |      \        \
         1.3   1.2.0   1.2.0.0
          |      |
         1.4   1.2.1 ----\
          |      |        \
         1.5   1.2.2   1.2.1.0
          |      |        |
         1.6     |     1.2.1.1
          |-----/
         1.7
         
        Parameters:
        history - the version history
        versionable - the node to checkin
        Returns:
        the new version name
        Throws:
        java.lang.IllegalStateException - if mandatory version properties are missing.