From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 16 Apr 2016 17:35:32 -0400 Subject: [PATCH] Proof of concept #1026 --- src/main/java/com/gitblit/manager/IRepositoryManager.java | 91 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 89 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gitblit/manager/IRepositoryManager.java b/src/main/java/com/gitblit/manager/IRepositoryManager.java index 383ca0d..f37612d 100644 --- a/src/main/java/com/gitblit/manager/IRepositoryManager.java +++ b/src/main/java/com/gitblit/manager/IRepositoryManager.java @@ -30,13 +30,14 @@ import com.gitblit.models.SearchResult; import com.gitblit.models.UserModel; -public interface IRepositoryManager { +public interface IRepositoryManager extends IManager { /** * Returns the path of the repositories folder. This method checks to see if * 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,14 +190,24 @@ * @param repositoryName * @param logError * @return repository or null + * @since 1.4.0 */ Repository getRepository(String repositoryName, boolean logError); + + /** + * Returns the list of all repository models. + * + * @return list of all repository models + * @since 1.6.1 + */ + List<RepositoryModel> getRepositoryModels(); /** * Returns the list of repository models that are accessible to the user. * * @param user * @return list of repository models accessible to user + * @since 1.4.0 */ List<RepositoryModel> getRepositoryModels(UserModel user); @@ -184,6 +218,7 @@ * @param user * @param repositoryName * @return repository model or null + * @since 1.4.0 */ RepositoryModel getRepositoryModel(UserModel user, String repositoryName); @@ -193,6 +228,7 @@ * * @param repositoryName * @return repository model or null + * @since 1.4.0 */ RepositoryModel getRepositoryModel(String repositoryName); @@ -201,6 +237,7 @@ * * @param repository * @return the star count + * @since 1.4.0 */ long getStarCount(RepositoryModel repository); @@ -209,6 +246,7 @@ * * @param n * @return true if the repository exists + * @since 1.4.0 */ boolean hasRepository(String repositoryName); @@ -218,6 +256,7 @@ * @param n * @param caseInsensitive * @return true if the repository exists + * @since 1.4.0 */ boolean hasRepository(String repositoryName, boolean caseSensitiveCheck); @@ -228,6 +267,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 +278,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 +288,7 @@ * * @param repository * @return a ForkModel + * @since 1.4.0 */ ForkModel getForkNetwork(String repository); @@ -258,6 +300,7 @@ * * @param model * @return size in bytes of the repository + * @since 1.4.0 */ long updateLastChangeFields(Repository r, RepositoryModel model); @@ -270,6 +313,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 +330,7 @@ * @param repository * @param isCreate * @throws GitBlitException + * @since 1.4.0 */ void updateRepositoryModel(String repositoryName, RepositoryModel repository, boolean isCreate) throws GitBlitException; @@ -297,8 +342,18 @@ * the Git repository * @param repository * the Gitblit repository model + * @since 1.4.0 */ void updateConfiguration(Repository r, RepositoryModel repository); + + /** + * Returns true if the repository can be deleted. + * + * @param model + * @return true if the repository can be deleted + * @since 1.6.0 + */ + boolean canDelete(RepositoryModel model); /** * Deletes the repository from the file system and removes the repository @@ -306,6 +361,7 @@ * * @param model * @return true if successful + * @since 1.4.0 */ boolean deleteRepositoryModel(RepositoryModel model); @@ -315,6 +371,7 @@ * * @param repositoryName * @return true if successful + * @since 1.4.0 */ boolean deleteRepository(String repositoryName); @@ -323,6 +380,7 @@ * .groovy extension * * @return list of available hook scripts + * @since 1.4.0 */ List<String> getAllScripts(); @@ -333,6 +391,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 +403,7 @@ * @param repository * optional parameter * @return list of available hook scripts + * @since 1.4.0 */ List<String> getPreReceiveScriptsUnused(RepositoryModel repository); @@ -354,6 +414,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 +426,7 @@ * @param repository * optional parameter * @return list of available hook scripts + * @since 1.4.0 */ List<String> getPostReceiveScriptsUnused(RepositoryModel repository); @@ -375,13 +437,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 +454,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