org.eclipse.jgit.lib

## Class RepositoryCache

- java.lang.Object
- - org.eclipse.jgit.lib.RepositoryCache

    public class RepositoryCache
    extends Object

Cache of active `Repository` instances.

### Nested Class Summary

Nested Classes
`static class` `RepositoryCache.FileKey` Location of a Repository, using the standard java.io.File API.
`static interface` `RepositoryCache.Key` Abstract hash key for `RepositoryCache` entries.

### Method Summary

All Methods Static Methods Concrete Methods
`static void` `clear()` Unregister all repositories from the cache.
`static void` `close(Repository db)` Remove a repository from the cache.
`static Repository` `open(RepositoryCache.Key location)` Open an existing repository, reusing a cached instance if possible.
`static Repository` `open(RepositoryCache.Key location, boolean mustExist)` Open a repository, reusing a cached instance if possible.
`static void` `register(Repository db)` Register one repository into the cache.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### open

    public static Repository open(RepositoryCache.Key location)
                           throws IOException,
                                  RepositoryNotFoundException

Open an existing repository, reusing a cached instance if possible.

When done with the repository, the caller must call `Repository.close()` to decrement the repository's usage counter.

Parameters:
  `location` - where the local repository is. Typically a `RepositoryCache.FileKey`.
Returns:
  the repository instance requested; caller must close when done.
Throws:
  `IOException` - the repository could not be read (likely its core.version property is not supported).
  `RepositoryNotFoundException` - there is no repository at the given location.

#### open

    public static Repository open(RepositoryCache.Key location,
                                  boolean mustExist)
                           throws IOException

Open a repository, reusing a cached instance if possible.

When done with the repository, the caller must call `Repository.close()` to decrement the repository's usage counter.

Parameters:
  `location` - where the local repository is. Typically a `RepositoryCache.FileKey`.
  `mustExist` - If true, and the repository is not found, throws `RepositoryNotFoundException`. If false, a repository instance is created and registered anyway.
Returns:
  the repository instance requested; caller must close when done.
Throws:
  `IOException` - the repository could not be read (likely its core.version property is not supported).
  `RepositoryNotFoundException` - There is no repository at the given location, only thrown if `mustExist` is true.

#### register

    public static void register(Repository db)

Register one repository into the cache.

During registration the cache automatically increments the usage counter, permitting it to retain the reference. A `RepositoryCache.FileKey` for the repository's `Repository.getDirectory()` is used to index the repository in the cache.

If another repository already is registered in the cache at this location, the other instance is closed.

Parameters:
  `db` - repository to register.

#### close

    public static void close(Repository db)

Remove a repository from the cache.

Removes a repository from the cache, if it is still registered here, permitting it to close.

Parameters:
  `db` - repository to unregister.

#### clear

    public static void clear()

Unregister all repositories from the cache.