From eee533b4583854b9c875221f1c1f50dfb092868d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 03 Jan 2013 17:22:21 -0500
Subject: [PATCH] Cache and re-use project markdown content (issue-172)

---
 src/com/gitblit/wicket/pages/ProjectPage.java |   33 +++++++--------------------------
 1 files changed, 7 insertions(+), 26 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/ProjectPage.java b/src/com/gitblit/wicket/pages/ProjectPage.java
index e10ca90..7eba033 100644
--- a/src/com/gitblit/wicket/pages/ProjectPage.java
+++ b/src/com/gitblit/wicket/pages/ProjectPage.java
@@ -15,9 +15,6 @@
  */
 package com.gitblit.wicket.pages;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
 import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -37,7 +34,6 @@
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
-import org.eclipse.jgit.lib.Constants;
 
 import com.gitblit.GitBlit;
 import com.gitblit.Keys;
@@ -46,7 +42,6 @@
 import com.gitblit.models.Metric;
 import com.gitblit.models.ProjectModel;
 import com.gitblit.models.RepositoryModel;
-import com.gitblit.models.UserModel;
 import com.gitblit.utils.ActivityUtils;
 import com.gitblit.utils.MarkdownUtils;
 import com.gitblit.utils.StringUtils;
@@ -111,23 +106,14 @@
 		add(WicketUtils.syndicationDiscoveryLink(SyndicationServlet.getTitle(project.getDisplayName(),
 				null), feedLink));
 		
-		final String projectPath;
-		if (project.isRoot) {
-			projectPath = "";
-		} else {
-			projectPath = projectName + "/";
-		}
-		
 		// project markdown message
-		File pmkd = new File(GitBlit.getRepositoriesFolder(),  projectPath + "project.mkd");
-		String pmessage = readMarkdown(projectName, pmkd);
+		String pmessage = transformMarkdown(project.projectMarkdown);
 		Component projectMessage = new Label("projectMessage", pmessage)
 				.setEscapeModelStrings(false).setVisible(pmessage.length() > 0);
 		add(projectMessage);
 
 		// markdown message above repositories list
-		File rmkd = new File(GitBlit.getRepositoriesFolder(),  projectPath + "repositories.mkd");
-		String rmessage = readMarkdown(projectName, rmkd);
+		String rmessage = transformMarkdown(project.repositoriesMarkdown);
 		Component repositoriesMessage = new Label("repositoriesMessage", rmessage)
 				.setEscapeModelStrings(false).setVisible(rmessage.length() > 0);
 		add(repositoriesMessage);
@@ -352,20 +338,15 @@
 		}
 		return menu;
 	}
-
-
-	private String readMarkdown(String projectName, File projectMessage) {
+	
+	private String transformMarkdown(String markdown) {
 		String message = "";
-		if (projectMessage.exists()) {
+		if (!StringUtils.isEmpty(markdown)) {
 			// Read user-supplied message
 			try {
-				FileInputStream fis = new FileInputStream(projectMessage);
-				InputStreamReader reader = new InputStreamReader(fis,
-						Constants.CHARACTER_ENCODING);
-				message = MarkdownUtils.transformMarkdown(reader);
-				reader.close();
+				message = MarkdownUtils.transformMarkdown(markdown);
 			} catch (Throwable t) {
-				message = getString("gb.failedToRead") + " " + projectMessage;
+				message = getString("gb.failedToRead") + " " + markdown;
 				warn(message, t);
 			}
 		}

--
Gitblit v1.9.1