SVNKit Home

## org.tmatesoft.svn.core.wc
Class DefaultSVNRepositoryPool

    java.lang.Object
      org.tmatesoft.svn.core.wc.DefaultSVNRepositoryPool

All Implemented Interfaces:
  ISVNConnectionListener, ISVNRepositoryPool, ISVNSession

public class DefaultSVNRepositoryPool
extends Object
implements ISVNRepositoryPool, ISVNSession, ISVNConnectionListener

The DefaultSVNRepositoryPool class is a default implementation of the ISVNRepositoryPool interface.

It creates SVNRepository objects that may be stored in a common pool and reused later. The objects common pool may be shared by different threads, but each thread can retrieve only those objects, that have been created within that thread. So, DefaultSVNRepositoryPool is thread-safe. An objects pool may be global during runtime, or it may be private - one separate pool per one DefaultSVNRepositoryPool object. Also there's a possibility to have a DefaultSVNRepositoryPool object with the pool feature disabled (SVNRepository objects instantiated by such a creator are never cached).

DefaultSVNRepositoryPool caches one SVNRepository object per one url protocol (per one thread), that is the number of protocols used equals to the number of objects cached per one thread (if all objects are created as reusable).

Also DefaultSVNRepositoryPool is able to create SVNRepository objects that use a single socket connection (i.e. don't close a connection after every repository access operation but reuse a single one).

Version:
  1.1.1
Author:
  TMate Software Ltd.

Field Summary
`static int` `INSTANCE_POOL` Deprecated.
`static int` `NO_POOL` Deprecated.
`static int` `RUNTIME_POOL` Deprecated.

Fields inherited from interface org.tmatesoft.svn.core.io.ISVNSession
`DEFAULT, KEEP_ALIVE`

Constructor Summary
`DefaultSVNRepositoryPool(ISVNAuthenticationManager authManager, ISVNTunnelProvider tunnelProvider)` Constructs a DefaultSVNRepositoryPool instance that represents `RUNTIME_POOL` objects pool.
`DefaultSVNRepositoryPool(ISVNAuthenticationManager authManager, ISVNTunnelProvider tunnelProvider, boolean keepConnections, int poolMode)` Deprecated.
`DefaultSVNRepositoryPool(ISVNAuthenticationManager authManager, ISVNTunnelProvider tunnelProvider, long timeout, boolean keepConnection)` Constructs a DefaultSVNRepositoryPool instance that represents `RUNTIME_POOL` objects pool.

Method Summary
`void` `connectionClosed(SVNRepository repository)`
`void` `connectionOpened(SVNRepository repository)`
`SVNRepository` `createRepository(SVNURL url, boolean mayReuse)` Creates a new SVNRepository driver object.
`void` `dispose()`
`String` `getCommitMessage(SVNRepository repository, long revision)` Returns null.
`boolean` `hasCommitMessage(SVNRepository repository, long revision)` Returns false.
`boolean` `keepConnection(SVNRepository repository)` Says if the given SVNRepository driver object should keep a connection opened.
`void` `saveCommitMessage(SVNRepository repository, long revision, String message)` Does nothing.
`void` `setAuthenticationManager(ISVNAuthenticationManager authManager)` Updates authentication manager instance referenced by SVNRepository objects currently in the pool.
`void` `setCanceller(ISVNCanceller canceller)` Updates canceller instance referenced by SVNRepository objects currently in the pool.
`void` `setDebugLog(org.tmatesoft.svn.util.ISVNDebugLog log)` Updates debug log instance referenced by SVNRepository objects currently in the pool.
`void` `shutdownConnections(boolean shutdownAll)` Closes connections of cached SVNRepository objects.
`static void` `shutdownTimer()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### RUNTIME_POOL

    public static final int RUNTIME_POOL

  Deprecated.

  Defines a common shared objects pool. All objects that will be created by different threads will be stored in this common pool.

  See Also:
    Constant Field Values

### INSTANCE_POOL

    public static final int INSTANCE_POOL

  Deprecated.

  Defines a private pool. All objects that will be created by different threads will be stored only within this pool object. This allows to have more than one separate pools.

  See Also:
    Constant Field Values

### NO_POOL

    public static final int NO_POOL

  Deprecated.

  Defines a without-pool configuration. Objects that are created by this DefaultSVNRepositoryPool object are not cached, the pool feature is disabled.

  See Also:
    Constant Field Values

Constructor Detail

### DefaultSVNRepositoryPool

    public DefaultSVNRepositoryPool(ISVNAuthenticationManager authManager,
                                    ISVNTunnelProvider tunnelProvider)

  Constructs a DefaultSVNRepositoryPool instance that represents `RUNTIME_POOL` objects pool. SVNRepository objects created by this instance will use a single socket connection.

Parameters:
  `authManager` - an authentication driver
  `tunnelProvider` - a tunnel provider

### DefaultSVNRepositoryPool

    public DefaultSVNRepositoryPool(ISVNAuthenticationManager authManager,
                                    ISVNTunnelProvider tunnelProvider,
                                    long timeout,
                                    boolean keepConnection)

  Constructs a DefaultSVNRepositoryPool instance that represents `RUNTIME_POOL` objects pool. SVNRepository objects created by this instance will use a single socket connection.

Parameters:
  `authManager` - an authentication driver
  `tunnelProvider` - a tunnel provider
  `timeout` - inactivity timeout after which open connections should be closed
  `keepConnection` - whether to left connection open

### DefaultSVNRepositoryPool

    public DefaultSVNRepositoryPool(ISVNAuthenticationManager authManager,
                                    ISVNTunnelProvider tunnelProvider,
                                    boolean keepConnections,
                                    int poolMode)

  Deprecated.

  Constructs a DefaultSVNRepositoryPool instance.

Parameters:
  `authManager` - an authentication driver
  `tunnelProvider` - a tunnel provider
  `keepConnections` - if true then SVNRepository objects will keep a single connection for accessing a repository, if false - open a new connection per each repository access operation
  `poolMode` - a mode of this object represented by one of the constant fields of DefaultSVNRepositoryPool

Method Detail

### createRepository

    public SVNRepository createRepository(SVNURL url,
                                          boolean mayReuse)
                                   throws SVNException

  Creates a new SVNRepository driver object. if `mayReuse` is true and the mode of this DefaultSVNRepositoryPool object is not `NO_POOL` then first tries to find the SVNRepository object in the pool for the given protocol. If the object is not found, creates a new one for that protocol, caches it in the pool and returns back.

  NOTE: be careful when simultaneously using several SVNRepository drivers for the same protocol - since there can be only one driver object in the pool per a protocol, creating two objects for the same protocol with `mayReuse` set to true, actually returns the same single object stored in the thread pool.

  Specified by:
    `createRepository` in interface `ISVNRepositoryPool`
  Parameters:
    `url` - a repository location for which a driver is to be created
    `mayReuse` - if true then SVNRepository object is reusable
  Returns:
    a new SVNRepository driver object
  Throws:
    `SVNException`
  See Also:
    `SVNRepository`

### setAuthenticationManager

    public void setAuthenticationManager(ISVNAuthenticationManager authManager)

  Description copied from interface: `ISVNRepositoryPool`
  Updates authentication manager instance referenced by SVNRepository objects currently in the pool.

  Specified by:
    `setAuthenticationManager` in interface `ISVNRepositoryPool`

### keepConnection

    public boolean keepConnection(SVNRepository repository)

  Says if the given SVNRepository driver object should keep a connection opened. If this object was created with `keepConnections` set to true and if `repository` is not created for the "svn+ssh" protocol (since for this protocol there's no extra need to keep a connection opened - it remains opened), this method returns true.

  Specified by:
    `keepConnection` in interface `ISVNSession`
  Parameters:
    `repository` - an SVNRepository driver
  Returns:
    true if the driver should keep a connection

### shutdownConnections

    public void shutdownConnections(boolean shutdownAll)

  Closes connections of cached SVNRepository objects.

  Specified by:
    `shutdownConnections` in interface `ISVNRepositoryPool`
  Parameters:
    `shutdownAll` - if true - closes connections of all the cached objects, otherwise only connections of those cached objects which owner threads have already disposed
  See Also:
    `SVNRepository`

### dispose

    public void dispose()

  Specified by:
    `dispose` in interface `ISVNRepositoryPool`

### shutdownTimer

    public static void shutdownTimer()

### saveCommitMessage

    public void saveCommitMessage(SVNRepository repository,
                                  long revision,
                                  String message)

  Does nothing.

  Specified by:
    `saveCommitMessage` in interface `ISVNSession`
  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:
    `ISVNSession.getCommitMessage(SVNRepository, long)`

### getCommitMessage

    public String getCommitMessage(SVNRepository repository,
                                   long revision)

  Returns null.

  Specified by:
    `getCommitMessage` in interface `ISVNSession`
  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:
    `ISVNSession.saveCommitMessage(SVNRepository, long, String)`

### hasCommitMessage

    public boolean hasCommitMessage(SVNRepository repository,
                                    long revision)

  Returns false.

  Specified by:
    `hasCommitMessage` in interface `ISVNSession`
  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

### connectionClosed

    public void connectionClosed(SVNRepository repository)

  Specified by:
    `connectionClosed` in interface `ISVNConnectionListener`

### connectionOpened

    public void connectionOpened(SVNRepository repository)

  Specified by:
    `connectionOpened` in interface `ISVNConnectionListener`

### setCanceller

    public void setCanceller(ISVNCanceller canceller)

  Description copied from interface: `ISVNRepositoryPool`
  Updates canceller instance referenced by SVNRepository objects currently in the pool.

  Specified by:
    `setCanceller` in interface `ISVNRepositoryPool`

### setDebugLog

    public void setDebugLog(org.tmatesoft.svn.util.ISVNDebugLog log)

  Description copied from interface: `ISVNRepositoryPool`
  Updates debug log instance referenced by SVNRepository objects currently in the pool.

  Specified by:
    `setDebugLog` in interface `ISVNRepositoryPool`

SVNKit Home

Copyright © 2004-2008 TMate Software Ltd. All Rights Reserved.