Class SessionDelegate


  • public class SessionDelegate
    extends Object
    TODO document
    • Constructor Detail

      • SessionDelegate

        public SessionDelegate​(@NotNull
                               @NotNull org.apache.jackrabbit.oak.api.ContentSession contentSession,
                               @NotNull
                               @NotNull org.apache.jackrabbit.oak.spi.security.SecurityProvider securityProvider,
                               @NotNull
                               @NotNull RefreshStrategy refreshStrategy,
                               @NotNull
                               @NotNull ThreadLocal<Long> threadSaveCount,
                               @NotNull
                               @NotNull org.apache.jackrabbit.oak.stats.StatisticManager statisticManager,
                               @NotNull
                               @NotNull org.apache.jackrabbit.oak.stats.Clock clock)
        Create a new session delegate for a ContentSession. The refresh behaviour of the session is governed by the value of the refreshInterval argument: if the session has been idle longer than that value, an implicit refresh will take place. In addition a refresh can always be scheduled from the next access by an explicit call to refreshAtNextAccess(). This is typically done from within the observation event dispatcher in order.
        Parameters:
        contentSession - the content session
        securityProvider - the security provider
        refreshStrategy - the refresh strategy used for auto refreshing this session
        statisticManager - the statistics manager for tracking session operations
    • Method Detail

      • getSessionStats

        @NotNull
        public @NotNull SessionStats getSessionStats()
      • refreshAtNextAccess

        public void refreshAtNextAccess()
      • sync

        public <T> Iterator<T> sync​(Iterator<T> iterator)
        Wrap the passed iterator in an iterator that synchronizes all access to the underlying session.
        Type Parameters:
        T -
        Parameters:
        iterator - iterator to synchronized
        Returns:
        synchronized iterator
      • perform

        @NotNull
        public <T> T perform​(@NotNull
                             @NotNull SessionOperation<T> sessionOperation)
                      throws RepositoryException
        Performs the passed SessionOperation in a safe execution context. This context ensures that the session is refreshed if necessary and that refreshing occurs before the session operation is performed and the refreshing is done only once.
        Type Parameters:
        T - return type of sessionOperation
        Parameters:
        sessionOperation - the SessionOperation to perform
        Returns:
        the result of sessionOperation.perform()
        Throws:
        RepositoryException
        See Also:
        getRoot()
      • safePerform

        public <T> T safePerform​(SessionOperation<T> sessionOperation)
        Same as perform(SessionOperation) unless this method expects SessionOperation.perform() not to throw a RepositoryException. Such exceptions will be wrapped into a RuntimeException and rethrown as they are considered an internal error.
        Type Parameters:
        T - return type of sessionOperation
        Parameters:
        sessionOperation - the SessionOperation to perform
        Returns:
        the result of sessionOperation.perform()
        See Also:
        getRoot()
      • getContentSession

        @NotNull
        public @NotNull org.apache.jackrabbit.oak.api.ContentSession getContentSession()
      • isAlive

        public boolean isAlive()
        Determine whether this session is alive and has not been logged out or become stale by other means.
        Returns:
        true if this session is alive, false otherwise.
      • getUpdateCount

        public long getUpdateCount()
        Returns:
        session update counter
      • setUserData

        public void setUserData​(String userData)
      • commit

        public void commit()
                    throws org.apache.jackrabbit.oak.api.CommitFailedException
        Commits the changes currently in the transient space. TODO: Consolidate with save().
        Throws:
        org.apache.jackrabbit.oak.api.CommitFailedException - if the commit failed
      • commit

        public void commit​(org.apache.jackrabbit.oak.api.Root root)
                    throws org.apache.jackrabbit.oak.api.CommitFailedException
        Commits the changes applied to the given root. The user data (if any) currently attached to this session is passed as the commit message. Used both for normal save() calls and for the various direct-to-workspace operations.
        Throws:
        org.apache.jackrabbit.oak.api.CommitFailedException - if the commit failed
      • getAuthInfo

        @NotNull
        public @NotNull org.apache.jackrabbit.oak.api.AuthInfo getAuthInfo()
      • logout

        public void logout()
      • getIdManager

        @NotNull
        public @NotNull org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager getIdManager()
      • getRootNode

        @Nullable
        public @Nullable NodeDelegate getRootNode()
      • getNode

        @Nullable
        public @Nullable NodeDelegate getNode​(String path)
        NodeDelegate at the given path
        Parameters:
        path - Oak path
        Returns:
        The NodeDelegate at path or null if none exists or not accessible.
      • getItem

        @Nullable
        public @Nullable ItemDelegate getItem​(String path)
        Returns the node or property delegate at the given path.
        Parameters:
        path - Oak path
        Returns:
        node or property delegate, or null if none exists
      • getNodeByIdentifier

        @Nullable
        public @Nullable NodeDelegate getNodeByIdentifier​(String id)
      • getProperty

        @Nullable
        public @Nullable PropertyDelegate getProperty​(String path)
        PropertyDelegate at the given path
        Parameters:
        path - Oak path
        Returns:
        The PropertyDelegate at path or null if none exists or not accessible.
      • hasPendingChanges

        public boolean hasPendingChanges()
      • refresh

        public void refresh​(boolean keepChanges)
      • getWorkspaceName

        @NotNull
        public @NotNull String getWorkspaceName()
      • move

        public void move​(String srcPath,
                         String destPath,
                         boolean transientOp)
                  throws RepositoryException
        Move a node
        Parameters:
        srcPath - oak path to the source node to copy
        destPath - oak path to the destination
        transientOp - whether or not to perform the move in transient space
        Throws:
        RepositoryException
      • getQueryEngine

        @NotNull
        public @NotNull org.apache.jackrabbit.oak.api.QueryEngine getQueryEngine()
      • getPermissionProvider

        @NotNull
        public @NotNull org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider getPermissionProvider()
      • getRoot

        @NotNull
        public @NotNull org.apache.jackrabbit.oak.api.Root getRoot()
        The current Root instance this session delegate instance operates on. To ensure the returned root reflects the correct repository revision access should only be done from within a SessionOperation closure through perform(SessionOperation).
        Returns:
        current root