- java.lang.Object
-
- org.eclipse.jgit.lib.RepositoryCache
-
public class RepositoryCache extends Object
Cache of activeRepositoryinstances.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classRepositoryCache.FileKeyLocation of a Repository, using the standard java.io.File API.static interfaceRepositoryCache.KeyAbstract hash key forRepositoryCacheentries.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidclear()Unregister all repositories from the cache.static voidclose(Repository db)Close and remove a repository from the cache.static Collection<RepositoryCache.Key>getRegisteredKeys()Get the locations of all repositories registered in the cache.static Repositoryopen(RepositoryCache.Key location)Open an existing repository, reusing a cached instance if possible.static Repositoryopen(RepositoryCache.Key location, boolean mustExist)Open a repository, reusing a cached instance if possible.static voidregister(Repository db)Register one repository into the cache.static voidunregister(Repository db)Remove a repository from the cache.static voidunregister(RepositoryCache.Key location)Remove a repository from the cache.
-
-
-
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 aRepositoryCache.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 aRepositoryCache.FileKey.mustExist- If true, and the repository is not found, throwsRepositoryNotFoundException. 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 ifmustExistis 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.FileKeyfor the repository'sRepository.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(@NonNull Repository db)
Close and remove a repository from the cache.Removes a repository from the cache, if it is still registered here, and close it.
- Parameters:
db- repository to unregister.
-
unregister
public static void unregister(Repository db)
Remove a repository from the cache.Removes a repository from the cache, if it is still registered here. This method will not close the repository, only remove it from the cache. See
close(Repository)to remove and close the repository.- Parameters:
db- repository to unregister.- Since:
- 4.3
-
unregister
public static void unregister(RepositoryCache.Key location)
Remove a repository from the cache.Removes a repository from the cache, if it is still registered here. This method will not close the repository, only remove it from the cache. See
close(Repository)to remove and close the repository.- Parameters:
location- location of the repository to remove.- Since:
- 4.1
-
getRegisteredKeys
public static Collection<RepositoryCache.Key> getRegisteredKeys()
Get the locations of all repositories registered in the cache.- Returns:
- the locations of all repositories registered in the cache.
- Since:
- 4.1
-
clear
public static void clear()
Unregister all repositories from the cache.
-
-