From 2c545280196ded9c042c0a8fa564048338bc19de Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Fri, 01 Apr 2016 14:02:37 -0400
Subject: [PATCH] Merge pull request #1035 from gitblit/1034-RepositoryPageLifecycle

---
 src/main/java/com/gitblit/wicket/pages/RepositoryPage.java |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
index 8958eb2..36c5ae1 100644
--- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -269,8 +269,15 @@
 
 	@Override
 	protected void setupPage(String repositoryName, String pageName) {
+		
+		//This method should only be called once in the page lifecycle.
+		//However, it must be called after the constructor has run, hence not in onInitialize
+		//It may be attempted to be called again if an info or error message is displayed.
+		if (get("projectTitle") != null) { return; }
+		
 		String projectName = StringUtils.getFirstPathElement(repositoryName);
 		ProjectModel project = app().projects().getProjectModel(projectName);
+
 		if (project.isUserProject()) {
 			// user-as-project
 			add(new LinkPanel("projectTitle", null, project.getDisplayName(),
@@ -662,15 +669,7 @@
 		}
 	}
 
-	@Override
-	protected void onInitialize() {
 
-		super.onInitialize();
-
-		// setup page header and footer
-		setupPage(getRepositoryName(), "/ " + getPageName());
-	}
-	
 	@Override
 	protected void onBeforeRender() {
 		// dispose of repository object
@@ -678,6 +677,9 @@
 			r.close();
 			r = null;
 		}
+		
+		// setup page header and footer
+		setupPage(getRepositoryName(), "/ " + getPageName());
 
 		super.onBeforeRender();
 	}

--
Gitblit v1.9.1