Class SessionDelegate

java.lang.Object
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate

public class SessionDelegate extends Object
TODO document
  • Constructor Details

    • SessionDelegate

      public SessionDelegate(@NotNull @NotNull ContentSession contentSession, @NotNull @NotNull SecurityProvider securityProvider, @NotNull @NotNull RefreshStrategy refreshStrategy, @NotNull @NotNull ThreadLocal<Long> threadSaveCount, @NotNull @NotNull StatisticManager statisticManager, @NotNull @NotNull Clock clock, @NotNull @NotNull SessionSaveDelayer sessionSaveDelayer)
      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
      sessionSaveDelayer - the session save delay mechanism
  • Method Details

    • 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:
    • performNullable

      @Nullable public <T> T performNullable(@NotNull @NotNull SessionOperation<T> sessionOperation) throws RepositoryException
      Type Parameters:
      T - return type of sessionOperation
      Parameters:
      sessionOperation - the SessionOperation to perform
      Returns:
      the result of sessionOperation.performNullable(), which might also be null.
      Throws:
      RepositoryException
      See Also:
    • performVoid

      public void performVoid(SessionOperation<Void> sessionOperation) throws RepositoryException
      Same as perform(org.apache.jackrabbit.oak.jcr.session.operation.SessionOperation) for calls that don't expect any return value; thus calling SessionOperation.performVoid().
      Parameters:
      sessionOperation - the SessionOperation to perform.
      Throws:
      RepositoryException
      See Also:
    • safePerform

      @NotNull 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:
    • safePerformNullable

      @Nullable public <T> T safePerformNullable(SessionOperation<T> sessionOperation)
      Same as performNullable(SessionOperation) unless this method expects SessionOperation.performNullable() 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.performNullable()
    • getContentSession

      @NotNull public @NotNull 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.
    • checkAlive

      public void checkAlive() throws RepositoryException
      Check that this session is alive.
      Throws:
      RepositoryException - if this session is not alive
      See Also:
    • getUpdateCount

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

      public void setUserData(String userData)
    • commit

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

      public void commit(Root root) throws 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:
      CommitFailedException - if the commit failed
    • checkProtectedNode

      public void checkProtectedNode(String path) throws RepositoryException
      Throws:
      RepositoryException
    • getAuthInfo

      @NotNull public @NotNull AuthInfo getAuthInfo()
    • logout

      public void logout()
    • getIdManager

      @NotNull public @NotNull 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)
    • treeLookedUpByIdentifier

      protected void treeLookedUpByIdentifier(@NotNull @NotNull Tree tree)
    • 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()
    • save

      public void save(String path) throws RepositoryException
      Save the subtree rooted at the given path, or the entire transient space if given the root path or null.

      This implementation only performs the save if the subtree rooted at path contains all transient changes and will throw an UnsupportedRepositoryOperationException otherwise.

      Parameters:
      path -
      Throws:
      RepositoryException
    • 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 QueryEngine getQueryEngine()
    • getPermissionProvider

      @NotNull public @NotNull PermissionProvider getPermissionProvider()
    • getRoot

      @NotNull public @NotNull 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
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getNamespaces

      public SessionNamespaces getNamespaces()