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
`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

Methods
`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