Explicitly declare RepositoryPage subclasses that reference commits
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index 0c97861..d19630c 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -175,9 +175,9 @@
 
 		// setup the standard gitweb-ish urls
 		mount("/repositories", RepositoriesPage.class);
-		mount("/overview", OverviewPage.class, "r", "h");
+		mount("/overview", OverviewPage.class, "r");
 		mount("/summary", SummaryPage.class, "r");
-		mount("/reflog", ReflogPage.class, "r", "h");
+		mount("/reflog", ReflogPage.class, "r");
 		mount("/commits", LogPage.class, "r", "h");
 		mount("/log", LogPage.class, "r", "h");
 		mount("/tags", TagsPage.class, "r");
diff --git a/src/main/java/com/gitblit/wicket/pages/BlamePage.java b/src/main/java/com/gitblit/wicket/pages/BlamePage.java
index c2280a2..3c850f2 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlamePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlamePage.java
@@ -235,6 +235,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return TreePage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java b/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
index 27678ec..9cc3eae 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
@@ -82,6 +82,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return TreePage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/BlobPage.java b/src/main/java/com/gitblit/wicket/pages/BlobPage.java
index e84056b..3c244f9 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlobPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlobPage.java
@@ -224,6 +224,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return TreePage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
index 71a5ea6..d827c44 100644
--- a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
@@ -197,6 +197,11 @@
 	}
 
 	@Override
+	protected boolean isCommitPage() {
+		return true;
+	}
+
+	@Override
 	protected Class<? extends BasePage> getRepoNavPageClass() {
 		return LogPage.class;
 	}
diff --git a/src/main/java/com/gitblit/wicket/pages/CommitPage.java b/src/main/java/com/gitblit/wicket/pages/CommitPage.java
index 6fadec5..072bb20 100644
--- a/src/main/java/com/gitblit/wicket/pages/CommitPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/CommitPage.java
@@ -248,6 +248,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return LogPage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/DocPage.java b/src/main/java/com/gitblit/wicket/pages/DocPage.java
index 567c6fb..5ed9c40 100644
--- a/src/main/java/com/gitblit/wicket/pages/DocPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/DocPage.java
@@ -102,6 +102,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return DocsPage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/DocsPage.java b/src/main/java/com/gitblit/wicket/pages/DocsPage.java
index 97b1604..8be9a57 100644
--- a/src/main/java/com/gitblit/wicket/pages/DocsPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/DocsPage.java
@@ -167,4 +167,10 @@
 	protected String getPageName() {

 		return getString("gb.docs");

 	}

+

+	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

 }

diff --git a/src/main/java/com/gitblit/wicket/pages/HistoryPage.java b/src/main/java/com/gitblit/wicket/pages/HistoryPage.java
index f7f188d..3021cb3 100644
--- a/src/main/java/com/gitblit/wicket/pages/HistoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/HistoryPage.java
@@ -67,6 +67,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return TreePage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/LogPage.java b/src/main/java/com/gitblit/wicket/pages/LogPage.java
index 092f719..411d7ed 100644
--- a/src/main/java/com/gitblit/wicket/pages/LogPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/LogPage.java
@@ -69,4 +69,10 @@
 	protected String getPageName() {

 		return getString("gb.log");

 	}

+

+	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

 }

diff --git a/src/main/java/com/gitblit/wicket/pages/MetricsPage.java b/src/main/java/com/gitblit/wicket/pages/MetricsPage.java
index 7ae4e4e..96113b0 100644
--- a/src/main/java/com/gitblit/wicket/pages/MetricsPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/MetricsPage.java
@@ -61,24 +61,24 @@
 					MessageFormat.format(getString("gb.branchStats"), metricsTotal.count,

 							metricsTotal.tag, getTimeUtils().duration(metricsTotal.duration))));

 		}

-		

+

 		Charts charts =  new Flotr2Charts();

-	

+

 		add(WicketUtils.newBlankImage("commitsChart"));

 		add(WicketUtils.newBlankImage("dayOfWeekChart"));

 		add(WicketUtils.newBlankImage("authorsChart"));

-			

+

 		createLineChart(charts, "commitsChart", metrics);

 		createBarChart(charts, "dayOfWeekChart", getDayOfWeekMetrics(r, objectId));

 		createPieChart(charts, "authorsChart", getAuthorMetrics(r, objectId));

-		

+

 		add(new HeaderContributor(charts));

 

 	}

 

 	private void createLineChart(Charts charts, String id, List<Metric> metrics) {

 		if ((metrics != null) && (metrics.size() > 0)) {

-			

+

 			Chart chart = charts.createLineChart(id, "", "day",

 					getString("gb.commits"));

 			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

@@ -102,22 +102,22 @@
 					chart.addHighlight(date, (int)metric.count);

 				}

 			}

-			charts.addChart(chart);	

+			charts.addChart(chart);

 		}

 	}

-	

+

 	private void createPieChart(Charts charts, String id, List<Metric> metrics) {

 		if ((metrics != null) && (metrics.size() > 0)) {

-			

+

 			Chart chart = charts.createPieChart(id, "", "day",

 					getString("gb.commits"));

 			for (Metric metric : metrics) {

 				chart.addValue(metric.name, (int)metric.count);

 			}

-			charts.addChart(chart);	

+			charts.addChart(chart);

 		}

 	}

-	

+

 	private void createBarChart(Charts charts, String id, List<Metric> metrics) {

 		if ((metrics != null) && (metrics.size() > 0)) {

 			Chart chart = charts.createBarChart(id, "", "day",

@@ -125,7 +125,7 @@
 			for (Metric metric : metrics) {

 				chart.addValue(metric.name, (int)metric.count);

 			}

-			charts.addChart(chart);	

+			charts.addChart(chart);

 		}

 	}

 

@@ -179,6 +179,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return SummaryPage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/NoDocsPage.java b/src/main/java/com/gitblit/wicket/pages/NoDocsPage.java
index 868e5d0..7dcc022 100644
--- a/src/main/java/com/gitblit/wicket/pages/NoDocsPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/NoDocsPage.java
@@ -33,6 +33,11 @@
 	}
 
 	@Override
+	protected boolean isCommitPage() {
+		return true;
+	}
+
+	@Override
 	protected Class<? extends BasePage> getRepoNavPageClass() {
 		return DocsPage.class;
 	}
diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
index b3250a6..134ee04 100644
--- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -201,11 +201,13 @@
 			objectParams = params;

 

 			// preserve the objectid iff the objectid directly (or indirectly) refers to a ref

-			if (!StringUtils.isEmpty(objectId)) {

+			if (isCommitPage() && !StringUtils.isEmpty(objectId)) {

 				RevCommit commit = JGitUtils.getCommit(r, objectId);

-				String bestId = getBestCommitId(commit);

-				if (!commit.getName().equals(bestId)) {

-					objectParams = WicketUtils.newObjectParameter(getRepositoryName(), bestId);

+				if (commit != null) {

+					String bestId = getBestCommitId(commit);

+					if (!commit.getName().equals(bestId)) {

+						objectParams = WicketUtils.newObjectParameter(getRepositoryName(), bestId);

+					}

 				}

 			}

 		}

@@ -574,6 +576,10 @@
 

 	protected abstract String getPageName();

 

+	protected boolean isCommitPage() {

+		return false;

+	}

+

 	protected Component createPersonPanel(String wicketId, PersonIdent identity,

 			Constants.SearchType searchType) {

 		String name = identity == null ? "" : identity.getName();

diff --git a/src/main/java/com/gitblit/wicket/pages/TagPage.java b/src/main/java/com/gitblit/wicket/pages/TagPage.java
index afade81..9eed279 100644
--- a/src/main/java/com/gitblit/wicket/pages/TagPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TagPage.java
@@ -101,6 +101,11 @@
 	}

 

 	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

+	@Override

 	protected Class<? extends BasePage> getRepoNavPageClass() {

 		return LogPage.class;

 	}

diff --git a/src/main/java/com/gitblit/wicket/pages/TreePage.java b/src/main/java/com/gitblit/wicket/pages/TreePage.java
index 722b824..9ddbecf 100644
--- a/src/main/java/com/gitblit/wicket/pages/TreePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TreePage.java
@@ -186,4 +186,10 @@
 	protected String getPageName() {

 		return getString("gb.tree");

 	}

+

+	@Override

+	protected boolean isCommitPage() {

+		return true;

+	}

+

 }