From 2a81783f291805594d4b97da6830aee94292f8c8 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 17 Aug 2012 15:35:38 -0400 Subject: [PATCH] Eliminated unnecessary repository enumeration (issue 103) --- docs/04_releases.mkd | 1 + src/com/gitblit/wicket/pages/RootPage.java | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd index 5c89d9a..af70dff 100644 --- a/docs/04_releases.mkd +++ b/docs/04_releases.mkd @@ -11,6 +11,7 @@ #### fixes +- Eliminated an unnecessary reopsitory enumeration call on the root page which should result in faster page loads (issue 103) - Gitblit could not delete a Lucene index in a working copy on index upgrade - Do not index submodule links (issue 119) - Restore original user or team object on failure to update (issue 118) diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java index 636ed00..eaa2542 100644 --- a/src/com/gitblit/wicket/pages/RootPage.java +++ b/src/com/gitblit/wicket/pages/RootPage.java @@ -64,6 +64,7 @@ IModel<String> username = new Model<String>(""); IModel<String> password = new Model<String>(""); + List<RepositoryModel> repositoryModels = new ArrayList<RepositoryModel>(); public RootPage() { super(); @@ -223,6 +224,15 @@ } } } + + protected List<RepositoryModel> getRepositoryModels() { + if (repositoryModels.isEmpty()) { + final UserModel user = GitBlitWebSession.get().getUser(); + List<RepositoryModel> repositories = GitBlit.self().getRepositoryModels(user); + repositoryModels.addAll(repositories); + } + return repositoryModels; + } protected void addDropDownMenus(List<PageRegistration> pages) { @@ -231,7 +241,7 @@ protected List<DropDownMenuItem> getRepositoryFilterItems(PageParameters params) { final UserModel user = GitBlitWebSession.get().getUser(); Set<DropDownMenuItem> filters = new LinkedHashSet<DropDownMenuItem>(); - List<RepositoryModel> repositories = GitBlit.self().getRepositoryModels(user); + List<RepositoryModel> repositories = getRepositoryModels(); // accessible repositories by federation set Map<String, AtomicInteger> setMap = new HashMap<String, AtomicInteger>(); @@ -307,9 +317,8 @@ } protected List<RepositoryModel> getRepositories(PageParameters params) { - final UserModel user = GitBlitWebSession.get().getUser(); if (params == null) { - return GitBlit.self().getRepositoryModels(user); + return getRepositoryModels(); } boolean hasParameter = false; @@ -319,7 +328,7 @@ String team = WicketUtils.getTeam(params); int daysBack = params.getInt("db", 0); - List<RepositoryModel> availableModels = GitBlit.self().getRepositoryModels(user); + List<RepositoryModel> availableModels = getRepositoryModels(); Set<RepositoryModel> models = new HashSet<RepositoryModel>(); if (!StringUtils.isEmpty(repositoryName)) { -- Gitblit v1.9.1