From a7a0b8ea01dca14602fdb49047d987c36461e861 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 26 Nov 2013 16:07:04 -0500
Subject: [PATCH] Refactor access to home page class

---
 src/main/java/com/gitblit/wicket/pages/BasePage.java        |    2 +-
 src/main/java/com/gitblit/wicket/AuthorizationStrategy.java |   10 +++++++---
 src/main/java/com/gitblit/wicket/pages/DashboardPage.java   |    2 +-
 src/main/java/com/gitblit/wicket/GitBlitWebApp.java         |   10 ++++------
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/AuthorizationStrategy.java b/src/main/java/com/gitblit/wicket/AuthorizationStrategy.java
index e3774d8..a00e2e2 100644
--- a/src/main/java/com/gitblit/wicket/AuthorizationStrategy.java
+++ b/src/main/java/com/gitblit/wicket/AuthorizationStrategy.java
@@ -19,6 +19,7 @@
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.authorization.IUnauthorizedComponentInstantiationListener;
 import org.apache.wicket.authorization.strategies.page.AbstractPageAuthorizationStrategy;
+import org.apache.wicket.markup.html.WebPage;
 
 import com.gitblit.GitBlit;
 import com.gitblit.Keys;
@@ -28,13 +29,16 @@
 public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements
 		IUnauthorizedComponentInstantiationListener {
 
-	public AuthorizationStrategy() {
+	Class<? extends WebPage> homepageClass;
+
+	public AuthorizationStrategy(Class<? extends WebPage> homepageClass) {
+		this.homepageClass = homepageClass;
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
 	@Override
 	protected boolean isPageAuthorized(Class pageClass) {
-		if (GitBlitWebApp.HOME_PAGE_CLASS.equals(pageClass)) {
+		if (homepageClass.equals(pageClass)) {
 			// allow all requests to get to the HomePage with its inline
 			// authentication form
 			return true;
@@ -79,7 +83,7 @@
 	public void onUnauthorizedInstantiation(Component component) {
 
 		if (component instanceof BasePage) {
-			throw new RestartResponseException(GitBlitWebApp.HOME_PAGE_CLASS);
+			throw new RestartResponseException(homepageClass);
 		}
 	}
 }
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index 70aa1a6..8cbda46 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -20,7 +20,6 @@
 import java.util.Map;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.Page;
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
 import org.apache.wicket.Session;
@@ -31,7 +30,6 @@
 import com.gitblit.Keys;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.pages.ActivityPage;
-import com.gitblit.wicket.pages.BasePage;
 import com.gitblit.wicket.pages.BlamePage;
 import com.gitblit.wicket.pages.BlobDiffPage;
 import com.gitblit.wicket.pages.BlobPage;
@@ -69,7 +67,7 @@
 
 public class GitBlitWebApp extends WebApplication {
 
-	public final static Class<? extends BasePage> HOME_PAGE_CLASS = MyDashboardPage.class;
+	private final Class<? extends WebPage> homePageClass = MyDashboardPage.class;
 
 	private final Map<String, CacheControl> cacheablePages = new HashMap<String, CacheControl>();
 
@@ -81,7 +79,7 @@
 		boolean useAuthentication = GitBlit.getBoolean(Keys.web.authenticateViewPages, false)
 				|| GitBlit.getBoolean(Keys.web.authenticateAdminPages, false);
 		if (useAuthentication) {
-			AuthorizationStrategy authStrategy = new AuthorizationStrategy();
+			AuthorizationStrategy authStrategy = new AuthorizationStrategy(homePageClass);
 			getSecuritySettings().setAuthorizationStrategy(authStrategy);
 			getSecuritySettings().setUnauthorizedComponentInstantiationListener(authStrategy);
 		}
@@ -158,8 +156,8 @@
 	}
 
 	@Override
-	public Class<? extends Page> getHomePage() {
-		return HOME_PAGE_CLASS;
+	public Class<? extends WebPage> getHomePage() {
+		return homePageClass;
 	}
 
 	public boolean isCacheablePage(String mountPoint) {
diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java
index ec69a71..9bae378 100644
--- a/src/main/java/com/gitblit/wicket/pages/BasePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BasePage.java
@@ -212,7 +212,7 @@
 			add(new Label("title", siteName));
 		}
 
-		String rootLinkUrl = GitBlit.getString(Keys.web.rootLink, urlFor(GitBlitWebApp.HOME_PAGE_CLASS, null).toString());
+		String rootLinkUrl = GitBlit.getString(Keys.web.rootLink, urlFor(GitBlitWebApp.get().getHomePage(), null).toString());
 		ExternalLink rootLink = new ExternalLink("rootLink", rootLinkUrl);
 		WicketUtils.setHtmlTooltip(rootLink, GitBlit.getString(Keys.web.siteName, Constants.NAME));
 		add(rootLink);
diff --git a/src/main/java/com/gitblit/wicket/pages/DashboardPage.java b/src/main/java/com/gitblit/wicket/pages/DashboardPage.java
index 5c72b8b..46adcff 100644
--- a/src/main/java/com/gitblit/wicket/pages/DashboardPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/DashboardPage.java
@@ -146,7 +146,7 @@
 		PageParameters params = getPageParameters();
 
 		DropDownMenuRegistration menu = new DropDownMenuRegistration("gb.filters",
-				GitBlitWebApp.HOME_PAGE_CLASS);
+				GitBlitWebApp.get().getHomePage());
 
 		// preserve repository filter option on time choices
 		menu.menuItems.addAll(getTimeFilterItems(params));

--
Gitblit v1.9.1