Package org.tmatesoft.svn.core.io

## Interface ISVNSession

- All Known Implementing Classes:
    `DefaultSVNRepositoryPool`

      public interface ISVNSession

  The ISVNSession interface provides some extra handling operations over SVNRepository objects.

  For remote accessing a repository (via `svn://` and `http://`) SVNRepository drivers open socket connections to write and read data from. Session objects (implementing ISVNSession) may enable an SVNRepository object to use a single socket connection during the whole runtime, or, as an alternative, to use a new socket connection per each repository access operation (this slows the speed of operation execution since the operation needs some extra time for opening and closing a socket).

  Also ISVNSession allows to cache and retrieve commit messages during runtime.

  How to set a session object for an SVNRepository driver:

       import org.tmatesoft.svn.core.io.ISVNSession;
       import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
       import org.tmatesoft.svn.core.io.SVNRepository;
       import org.tmatesoft.svn.core.SVNURL;
       ...

           ISVNSession session;
           ...
           SVNURL url = SVNURL.parseURIEncoded("svn://host/path/to/repos");
           try{
               SVNRepository repository = SVNRepositoryFactory.create(url, session);
               ...
           }catch(SVNException svne){
               ...
           }

  Since:
    1.2
  Version:
    1.3
  Author:
    TMate Software Ltd.
  See Also:
    `SVNRepository`, `SVNRepositoryFactory`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static ISVNSession` | `DEFAULT` | The same as `KEEP_ALIVE`.
    `static ISVNSession` | `KEEP_ALIVE` | A session options implementation that simply allows to keep a single connection alive for all data i/o.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `getCommitMessage​(SVNRepository repository, long revision)` | Retrieves the cached commit message for a particular revision.
    `boolean` | `hasCommitMessage​(SVNRepository repository, long revision)` | Checks if there's a commit message in cache for a particular repository and revision.
    `boolean` | `keepConnection​(SVNRepository repository)` | Says if the given SVNRepository object should use a single socket connection (not to open/close a new one for each operation).
    `void` | `saveCommitMessage​(SVNRepository repository, long revision, java.lang.String message)` | Caches a commit message for the given revision.

- - ### Field Detail

    - #### KEEP_ALIVE

          static final ISVNSession KEEP_ALIVE

      A session options implementation that simply allows to keep a single connection alive for all data i/o. This implementation does not cache commit messages.

    - #### DEFAULT

          static final ISVNSession DEFAULT

      The same as `KEEP_ALIVE`. Left for backward compatibility.

  - ### Method Detail

    - #### keepConnection

          boolean keepConnection​(SVNRepository repository)

      Says if the given SVNRepository object should use a single socket connection (not to open/close a new one for each operation). This will certainly improve the SVNRepository object's methods performance speed.

      For examlpe, a session object may hold a number of SVNRepository object references knowing for everyone of them if it should keep a single connection or not.

      Parameters:
        `repository` - an SVNRepository driver
      Returns:
        true if `repository` should use a single socket connection during the whole runtime, false - to open/close a new connection for each repository access operation

    - #### saveCommitMessage

          void saveCommitMessage​(SVNRepository repository,
                                 long revision,
                                 java.lang.String message)

      Caches a commit message for the given revision.
      Parameters:
        `repository` - an SVNRepository driver (to distinguish that repository for which this message is actual)
        `revision` - a revision number
        `message` - the commit message for `revision`
      See Also:
        `getCommitMessage(SVNRepository, long)`

    - #### getCommitMessage

          java.lang.String getCommitMessage​(SVNRepository repository,
                                            long revision)

      Retrieves the cached commit message for a particular revision. Use `getCommitMessage()` to check if there's a message in cache.
      Parameters:
        `repository` - an SVNRepository driver (to distinguish that repository for which a commit message is requested)
        `revision` - a revision number
      Returns:
        the commit message for `revision`
      See Also:
        `saveCommitMessage(SVNRepository, long, String)`

    - #### hasCommitMessage

          boolean hasCommitMessage​(SVNRepository repository,
                                   long revision)

      Checks if there's a commit message in cache for a particular repository and revision.
      Parameters:
        `repository` - an SVNRepository driver (to distinguish that repository for which a commit message is requested)
        `revision` - a revision number
      Returns:
        true if the cache has got a message for the given repository and revision, false otherwise