Class ReadOnlyVersionManager

    • Constructor Detail

      • ReadOnlyVersionManager

        public ReadOnlyVersionManager()
    • Method Detail

      • getVersionStorage

        @NotNull
        protected abstract @NotNull Tree getVersionStorage()
        Returns:
        the read-only Tree for the jcr:versionStorage node. The returned Tree instance must be up-to-date with the Root returned by getWorkspaceRoot().
      • getWorkspaceRoot

        @NotNull
        protected abstract @NotNull Root getWorkspaceRoot()
        /**
        Returns:
        the Root of the workspace.
      • getNodeTypeManager

        @NotNull
        protected abstract @NotNull ReadOnlyNodeTypeManager getNodeTypeManager()
        Returns:
        the node type manager of this repository.
      • getInstance

        @NotNull
        public static @NotNull ReadOnlyVersionManager getInstance​(Root root,
                                                                  NamePathMapper namePathMapper)
        Return a new instance of ReadOnlyVersionManager that reads version information from the tree at VersionConstants.VERSION_STORE_PATH.
        Parameters:
        root - The root to read version information from.
        namePathMapper - The NamePathMapper to use.
        Returns:
        a new instance of ReadOnlyVersionManager.
      • isCheckedOut

        public boolean isCheckedOut​(@NotNull
                                    @NotNull Tree tree)
        Returns true if the tree is checked out; otherwise false. The root node is always considered checked out.
        Parameters:
        tree - the tree to check.
        Returns:
        whether the tree is checked out or not.
      • getVersion

        @Nullable
        public @Nullable Tree getVersion​(@NotNull
                                         @NotNull String uuid)
        Returns the version tree with the given uuid.
        Parameters:
        uuid - the uuid of the version tree.
        Returns:
        the version tree or null if there is none.
      • getVersionHistoryPath

        @NotNull
        public @NotNull String getVersionHistoryPath​(@NotNull
                                                     @NotNull String uuid)
        Returns the path of the version history for the given uuid. The returned path is relative to the version storage tree as returned by getVersionStorage().
        Parameters:
        uuid - the uuid of the versionable node
        Returns:
        the relative path of the version history for the given uuid.
      • getBaseVersion

        @Nullable
        public @Nullable Tree getBaseVersion​(@NotNull
                                             @NotNull Tree versionable)
                                      throws UnsupportedRepositoryOperationException,
                                             RepositoryException
        Returns the tree representing the base version of the given versionable tree or null if none exists yet. This is the case when a versionable node is created, but is not yet saved.
        Parameters:
        versionable - the versionable tree.
        Returns:
        the tree representing the base version or null.
        Throws:
        UnsupportedRepositoryOperationException - if the versionable tree is not actually versionable.
        RepositoryException - if an error occurs while checking the node type of the tree.
      • isVersionStoreTree

        public static boolean isVersionStoreTree​(@NotNull
                                                 @NotNull Tree tree)
        Returns true if the specified tree has VersionConstants.REP_VERSIONSTORAGE defines as primary node type i.e. is part of the intermediate version storage structure that contains the version histories and the versions.
        Parameters:
        tree - The tree to be tested.
        Returns:
        true if the target node has VersionConstants.REP_VERSIONSTORAGE defines as primary node type; false otherwise.
      • getVersionable

        @Nullable
        public @Nullable Tree getVersionable​(@NotNull
                                             @NotNull Tree versionTree,
                                             @NotNull
                                             @NotNull String workspaceName)
        Tries to retrieve the tree corresponding to specified versionTree outside of the version storage based on versionable path information stored with the version history. The following cases are distinguished:
        • Version History: If the given tree is a version history the associated versionable tree in the specified workspace is being returned based on the information stored in the versionable path property. If no versionable path property is present null is returned.
        • Version: Same as for version history.
        • Version Labels: Same as for version history.
        • Frozen Node: If the given tree forms part of a frozen node the path of the target node is computed from the versionable path and the relative path of the frozen node.
        • Other Nodes: If the specified tree is not part of the tree structure defined by a version history, null will be returned.
        Please note that this method will not verify if the tree at the versionable path or the computed subtree actually exists. This must be asserted by the caller before operating on the tree.
        Parameters:
        versionTree - The tree from within the version storage for which that versionable correspondent should be retrieved.
        workspaceName - The name of the workspace for which the target should be retrieved.
        Returns:
        A existing or non-existing tree pointing to the location of the correspondent tree outside of the version storage or null if the versionable path property for the specified workspace is missing or if the given tree is not located within the tree structure defined by a version history.
        See Also:
        VersionConstants.MIX_REP_VERSIONABLE_PATHS
      • getIdentifierManager

        protected IdentifierManager getIdentifierManager()
        Returns:
        an identifier manager that is able to resolve identifiers of nodes in the version storage.
      • isVersionable

        protected boolean isVersionable​(@NotNull
                                        @NotNull Tree tree)
        Returns true if the given tree is of type mix:versionable; false otherwise.
        Parameters:
        tree - the tree to check.
        Returns:
        whether the tree is versionable.