From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 19 Oct 2012 22:47:33 -0400
Subject: [PATCH] Exclude submodules from zip downloads (issue 151)

---
 src/com/gitblit/utils/MarkdownUtils.java |   58 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 37 insertions(+), 21 deletions(-)

diff --git a/src/com/gitblit/utils/MarkdownUtils.java b/src/com/gitblit/utils/MarkdownUtils.java
index 15d59cf..0b8c9c5 100644
--- a/src/com/gitblit/utils/MarkdownUtils.java
+++ b/src/com/gitblit/utils/MarkdownUtils.java
@@ -20,46 +20,63 @@
 import java.io.StringReader;
 import java.io.StringWriter;
 
+import org.slf4j.LoggerFactory;
 import org.tautua.markdownpapers.Markdown;
 import org.tautua.markdownpapers.parser.ParseException;
 
+/**
+ * Utility methods for transforming raw markdown text to html.
+ * 
+ * @author James Moger
+ * 
+ */
 public class MarkdownUtils {
 
+	/**
+	 * Returns the html version of the markdown source text.
+	 * 
+	 * @param markdown
+	 * @return html version of markdown text
+	 * @throws java.text.ParseException
+	 */
 	public static String transformMarkdown(String markdown) throws java.text.ParseException {
-		// Read raw markdown content and transform it to html
-		StringReader reader = new StringReader(markdown);
-		StringWriter writer = new StringWriter();
 		try {
-			Markdown md = new Markdown();
-			md.transform(reader, writer);
-			return writer.toString();
-		} catch (ParseException p) {
-			throw new java.text.ParseException(p.getMessage(), 0);
-		} finally {
+			StringReader reader = new StringReader(markdown);
+			String html = transformMarkdown(reader);
 			reader.close();
-			try {
-				writer.close();
-			} catch (IOException e) {
-				// IGNORE
-			}
+			return html;
+		} catch (IllegalArgumentException e) {
+			throw new java.text.ParseException(e.getMessage(), 0);
+		} catch (NullPointerException p) {
+			throw new java.text.ParseException("Markdown string is null!", 0);
 		}
 	}
 
+	/**
+	 * Returns the html version of the markdown source reader. The reader is
+	 * closed regardless of success or failure.
+	 * 
+	 * @param markdownReader
+	 * @return html version of the markdown text
+	 * @throws java.text.ParseException
+	 */
 	public static String transformMarkdown(Reader markdownReader) throws java.text.ParseException {
 		// Read raw markdown content and transform it to html
 		StringWriter writer = new StringWriter();
 		try {
 			Markdown md = new Markdown();
 			md.transform(markdownReader, writer);
-			return writer.toString();
+			return writer.toString().trim();
+		} catch (StringIndexOutOfBoundsException e) {
+			LoggerFactory.getLogger(MarkdownUtils.class).error("MarkdownPapers failed to parse Markdown!", e);
+			throw new java.text.ParseException(e.getMessage(), 0);
 		} catch (ParseException p) {
+			LoggerFactory.getLogger(MarkdownUtils.class).error("MarkdownPapers failed to parse Markdown!", p);
 			throw new java.text.ParseException(p.getMessage(), 0);
+		} catch (Exception e) {
+			LoggerFactory.getLogger(MarkdownUtils.class).error("MarkdownPapers failed to parse Markdown!", e);
+			throw new java.text.ParseException(e.getMessage(), 0);
 		} finally {
-			try {
-				markdownReader.close();
-			} catch (IOException e) {
-				// IGNORE
-			}
 			try {
 				writer.close();
 			} catch (IOException e) {
@@ -67,5 +84,4 @@
 			}
 		}
 	}
-
 }

--
Gitblit v1.9.1