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/GitBlitWebApp.java |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index cdae093..74ccac7 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -15,7 +15,9 @@
  */
 package com.gitblit.wicket;
 
+import java.util.HashMap;
 import java.util.Locale;
+import java.util.Map;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.Page;
@@ -70,6 +72,8 @@
 public class GitBlitWebApp extends WebApplication {
 
 	public final static Class<? extends BasePage> HOME_PAGE_CLASS = MyDashboardPage.class;
+	
+	private final Map<String, CacheControl> cacheablePages = new HashMap<String, CacheControl>();
 	
 	@Override
 	public void init() {
@@ -149,6 +153,12 @@
 			parameters = new String[] {};
 		}
 		mount(new GitblitParamUrlCodingStrategy(location, clazz, parameters));
+		
+		// map the mount point to the cache control definition 
+		if (clazz.isAnnotationPresent(CacheControl.class)) {
+			CacheControl cacheControl = clazz.getAnnotation(CacheControl.class);
+			cacheablePages.put(location.substring(1), cacheControl);
+		}
 	}
 
 	@Override
@@ -156,6 +166,14 @@
 		return HOME_PAGE_CLASS;
 	}
 	
+	public boolean isCacheablePage(String mountPoint) {
+		return cacheablePages.containsKey(mountPoint);
+	}
+
+	public CacheControl getCacheControl(String mountPoint) {
+		return cacheablePages.get(mountPoint);
+	}
+
 	@Override
 	public final Session newSession(Request request, Response response) {
 		GitBlitWebSession gitBlitWebSession = new GitBlitWebSession(request);

--
Gitblit v1.9.1