From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001
From: Gerard Smyth <gerard.smyth@gmail.com>
Date: Thu, 08 May 2014 13:09:30 -0400
Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored.

---
 src/main/java/com/gitblit/manager/IRepositoryManager.java |   72 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/gitblit/manager/IRepositoryManager.java b/src/main/java/com/gitblit/manager/IRepositoryManager.java
index a400191..69177f1 100644
--- a/src/main/java/com/gitblit/manager/IRepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/IRepositoryManager.java
@@ -37,6 +37,7 @@
 	 * Gitblit is running on a cloud service and may return an adjusted path.
 	 *
 	 * @return the repositories folder path
+ 	 * @since 1.4.0
 	 */
 	File getRepositoriesFolder();
 
@@ -45,6 +46,7 @@
 	 * Gitblit is running on a cloud service and may return an adjusted path.
 	 *
 	 * @return the Groovy hook scripts folder path
+ 	 * @since 1.4.0
 	 */
 	File getHooksFolder();
 
@@ -53,6 +55,7 @@
 	 * Gitblit is running on a cloud service and may return an adjusted path.
 	 *
 	 * @return the Groovy grapes folder path
+ 	 * @since 1.4.0
 	 */
 	File getGrapesFolder();
 
@@ -60,6 +63,7 @@
 	 * Returns the most recent change date of any repository served by Gitblit.
 	 *
 	 * @return a date
+ 	 * @since 1.4.0
 	 */
 	Date getLastActivityDate();
 
@@ -69,6 +73,7 @@
 	 *
 	 * @param user
 	 * @return the effective list of permissions for the user
+ 	 * @since 1.4.0
 	 */
 	List<RegistrantAccessPermission> getUserAccessPermissions(UserModel user);
 
@@ -79,6 +84,7 @@
 	 *
 	 * @param repository
 	 * @return a list of RegistrantAccessPermissions
+ 	 * @since 1.4.0
 	 */
 	List<RegistrantAccessPermission> getUserAccessPermissions(RepositoryModel repository);
 
@@ -88,6 +94,7 @@
 	 * @param repository
 	 * @param permissions
 	 * @return true if the user models have been updated
+ 	 * @since 1.4.0
 	 */
 	boolean setUserAccessPermissions(RepositoryModel repository, Collection<RegistrantAccessPermission> permissions);
 
@@ -98,6 +105,7 @@
 	 * @see IUserService.getUsernamesForRepositoryRole(String)
 	 * @param repository
 	 * @return list of all usernames that have an access permission for the repository
+ 	 * @since 1.4.0
 	 */
 	List<String> getRepositoryUsers(RepositoryModel repository);
 
@@ -108,6 +116,7 @@
 	 *
 	 * @param repository
 	 * @return a list of RegistrantAccessPermissions
+ 	 * @since 1.4.0
 	 */
 	List<RegistrantAccessPermission> getTeamAccessPermissions(RepositoryModel repository);
 
@@ -117,6 +126,7 @@
 	 * @param repository
 	 * @param permissions
 	 * @return true if the team models have been updated
+ 	 * @since 1.4.0
 	 */
 	boolean setTeamAccessPermissions(RepositoryModel repository, Collection<RegistrantAccessPermission> permissions);
 
@@ -127,6 +137,7 @@
 	 * @see IUserService.getTeamnamesForRepositoryRole(String)
 	 * @param repository
 	 * @return list of all teamnames with explicit access permissions to the repository
+ 	 * @since 1.4.0
 	 */
 	List<String> getRepositoryTeams(RepositoryModel repository);
 
@@ -135,20 +146,32 @@
 	 * configured to cache the repository list.
 	 *
 	 * @param model
+ 	 * @since 1.4.0
 	 */
 	void addToCachedRepositoryList(RepositoryModel model);
 
 	/**
 	 * Resets the repository list cache.
 	 *
+ 	 * @since 1.4.0
+	 *
 	 */
 	void resetRepositoryListCache();
+
+	/**
+	 * Reset all caches for this repository.
+	 *
+	 * @param repositoryName
+	 * @since 1.5.1
+	 */
+	void resetRepositoryCache(String repositoryName);
 
 	/**
 	 * Returns the list of all repositories available to Gitblit. This method
 	 * does not consider user access permissions.
 	 *
 	 * @return list of all repositories
+ 	 * @since 1.4.0
 	 */
 	List<String> getRepositoryList();
 
@@ -157,6 +180,7 @@
 	 *
 	 * @param repositoryName
 	 * @return repository or null
+ 	 * @since 1.4.0
 	 */
 	Repository getRepository(String repositoryName);
 
@@ -166,6 +190,7 @@
 	 * @param repositoryName
 	 * @param logError
 	 * @return repository or null
+ 	 * @since 1.4.0
 	 */
 	Repository getRepository(String repositoryName, boolean logError);
 
@@ -174,6 +199,7 @@
 	 *
 	 * @param user
 	 * @return list of repository models accessible to user
+ 	 * @since 1.4.0
 	 */
 	List<RepositoryModel> getRepositoryModels(UserModel user);
 
@@ -184,6 +210,7 @@
 	 * @param user
 	 * @param repositoryName
 	 * @return repository model or null
+ 	 * @since 1.4.0
 	 */
 	RepositoryModel getRepositoryModel(UserModel user, String repositoryName);
 
@@ -193,6 +220,7 @@
 	 *
 	 * @param repositoryName
 	 * @return repository model or null
+ 	 * @since 1.4.0
 	 */
 	RepositoryModel getRepositoryModel(String repositoryName);
 
@@ -201,6 +229,7 @@
 	 *
 	 * @param repository
 	 * @return the star count
+ 	 * @since 1.4.0
 	 */
 	long getStarCount(RepositoryModel repository);
 
@@ -209,6 +238,7 @@
 	 *
 	 * @param n
 	 * @return true if the repository exists
+ 	 * @since 1.4.0
 	 */
 	boolean hasRepository(String repositoryName);
 
@@ -218,6 +248,7 @@
 	 * @param n
 	 * @param caseInsensitive
 	 * @return true if the repository exists
+ 	 * @since 1.4.0
 	 */
 	boolean hasRepository(String repositoryName, boolean caseSensitiveCheck);
 
@@ -228,6 +259,7 @@
 	 * @param username
 	 * @param origin
 	 * @return true the if the user has a fork
+ 	 * @since 1.4.0
 	 */
 	boolean hasFork(String username, String origin);
 
@@ -238,6 +270,7 @@
 	 * @param username
 	 * @param origin
 	 * @return the name of the user's fork, null otherwise
+ 	 * @since 1.4.0
 	 */
 	String getFork(String username, String origin);
 
@@ -247,6 +280,7 @@
 	 *
 	 * @param repository
 	 * @return a ForkModel
+ 	 * @since 1.4.0
 	 */
 	ForkModel getForkNetwork(String repository);
 
@@ -258,6 +292,7 @@
 	 *
 	 * @param model
 	 * @return size in bytes of the repository
+ 	 * @since 1.4.0
 	 */
 	long updateLastChangeFields(Repository r, RepositoryModel model);
 
@@ -270,6 +305,7 @@
 	 * @param model
 	 * @param repository
 	 * @return a new array list of metrics
+ 	 * @since 1.4.0
 	 */
 	List<Metric> getRepositoryDefaultMetrics(RepositoryModel model, Repository repository);
 
@@ -286,6 +322,7 @@
 	 * @param repository
 	 * @param isCreate
 	 * @throws GitBlitException
+ 	 * @since 1.4.0
 	 */
 	void updateRepositoryModel(String repositoryName, RepositoryModel repository, boolean isCreate)
 			throws GitBlitException;
@@ -297,6 +334,7 @@
 	 *            the Git repository
 	 * @param repository
 	 *            the Gitblit repository model
+ 	 * @since 1.4.0
 	 */
 	void updateConfiguration(Repository r, RepositoryModel repository);
 
@@ -306,6 +344,7 @@
 	 *
 	 * @param model
 	 * @return true if successful
+ 	 * @since 1.4.0
 	 */
 	boolean deleteRepositoryModel(RepositoryModel model);
 
@@ -315,6 +354,7 @@
 	 *
 	 * @param repositoryName
 	 * @return true if successful
+ 	 * @since 1.4.0
 	 */
 	boolean deleteRepository(String repositoryName);
 
@@ -323,6 +363,7 @@
 	 * .groovy extension
 	 *
 	 * @return list of available hook scripts
+ 	 * @since 1.4.0
 	 */
 	List<String> getAllScripts();
 
@@ -333,6 +374,7 @@
 	 * @param repository
 	 *            if null only the globally specified scripts are returned
 	 * @return a list of scripts
+ 	 * @since 1.4.0
 	 */
 	List<String> getPreReceiveScriptsInherited(RepositoryModel repository);
 
@@ -344,6 +386,7 @@
 	 * @param repository
 	 *            optional parameter
 	 * @return list of available hook scripts
+ 	 * @since 1.4.0
 	 */
 	List<String> getPreReceiveScriptsUnused(RepositoryModel repository);
 
@@ -354,6 +397,7 @@
 	 * @param repository
 	 *            if null only the globally specified scripts are returned
 	 * @return a list of scripts
+ 	 * @since 1.4.0
 	 */
 	List<String> getPostReceiveScriptsInherited(RepositoryModel repository);
 
@@ -365,6 +409,7 @@
 	 * @param repository
 	 *            optional parameter
 	 * @return list of available hook scripts
+ 	 * @since 1.4.0
 	 */
 	List<String> getPostReceiveScriptsUnused(RepositoryModel repository);
 
@@ -375,13 +420,15 @@
 	 * @param page
 	 * @param pageSize
 	 * @param repositories
-	 * @return
+	 * @return a list of search results
+ 	 * @since 1.4.0
 	 */
 	List<SearchResult> search(String query, int page, int pageSize, List<String> repositories);
 
 	/**
 	 *
 	 * @return true if we are running the gc executor
+ 	 * @since 1.4.0
 	 */
 	boolean isCollectingGarbage();
 
@@ -390,7 +437,30 @@
 	 *
 	 * @param repositoryName
 	 * @return true if actively collecting garbage
+ 	 * @since 1.4.0
 	 */
 	boolean isCollectingGarbage(String repositoryName);
 
+	/**
+	 * Ensures that all cached repositories are completely closed and their resources
+	 * are properly released.
+ 	 * @since 1.4.0
+	 */
+	void closeAll();
+
+	/**
+	 * Ensures that a cached repository is completely closed and it's resources
+	 * are properly released.
+ 	 * @since 1.4.0
+	 */
+	void close(String repository);
+
+	/**
+	 * Returns true if the repository is idle (not being accessed).
+	 *
+	 * @param repository
+	 * @return true if the repository is idle
+ 	 * @since 1.4.0
+	 */
+	boolean isIdle(Repository repository);
 }
\ No newline at end of file

--
Gitblit v1.9.1