From a7db5748622e1b322b67fbbd72aed4e6efff7690 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 19 Jul 2013 10:50:32 -0400 Subject: [PATCH] Implemented optional page caching --- src/main/java/com/gitblit/wicket/pages/ProjectPage.java | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/ProjectPage.java b/src/main/java/com/gitblit/wicket/pages/ProjectPage.java index 97a31f9..c938891 100644 --- a/src/main/java/com/gitblit/wicket/pages/ProjectPage.java +++ b/src/main/java/com/gitblit/wicket/pages/ProjectPage.java @@ -33,6 +33,8 @@ import com.gitblit.models.UserModel; import com.gitblit.utils.MarkdownUtils; import com.gitblit.utils.StringUtils; +import com.gitblit.wicket.CacheControl; +import com.gitblit.wicket.CacheControl.LastModified; import com.gitblit.wicket.GitBlitWebApp; import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.GitblitRedirectException; @@ -42,6 +44,7 @@ import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.FilterableRepositoryList; +@CacheControl(LastModified.PROJECT) public class ProjectPage extends DashboardPage { List<ProjectModel> projectModels = new ArrayList<ProjectModel>(); @@ -60,6 +63,26 @@ return RepositoriesPage.class; } + @Override + protected void setLastModified() { + if (getClass().isAnnotationPresent(CacheControl.class)) { + CacheControl cacheControl = getClass().getAnnotation(CacheControl.class); + switch (cacheControl.value()) { + case PROJECT: + String projectName = WicketUtils.getProjectName(getPageParameters()); + if (!StringUtils.isEmpty(projectName)) { + ProjectModel project = getProjectModel(projectName); + if (project != null) { + setLastModified(project.lastChange); + } + } + break; + default: + super.setLastModified(); + } + } + } + private void setup(PageParameters params) { setupPage("", ""); // check to see if we should display a login message -- Gitblit v1.9.1