From 0250286553ca93406bfaa976d6aae61e76a9d55f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 18 Sep 2013 11:31:00 -0400
Subject: [PATCH] Removed GitWeb-style diff renderer

---
 /dev/null                                                  |  155 --------------------------------------
 src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java   |    9 -
 src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java  |   38 +++++++++
 src/test/java/com/gitblit/tests/DiffUtilsTest.java         |    3 
 src/main/distrib/data/gitblit.properties                   |    5 -
 src/main/java/com/gitblit/utils/DiffUtils.java             |   11 +-
 src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java |    6 -
 src/main/java/com/gitblit/wicket/pages/ComparePage.java    |    7 -
 8 files changed, 45 insertions(+), 189 deletions(-)

diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties
index 311152a..b25e5aa 100644
--- a/src/main/distrib/data/gitblit.properties
+++ b/src/main/distrib/data/gitblit.properties
@@ -886,11 +886,6 @@
 # SINCE 1.4.0
 web.commitMessageRenderer = plain
 
-# Choose the diff presentation style: gitblt, gitweb, or plain
-#
-# SINCE 0.5.0
-web.diffStyle = gitblit
-
 # Control if email addresses are shown in web ui
 #
 # SINCE 0.5.0
diff --git a/src/main/java/com/gitblit/utils/DiffUtils.java b/src/main/java/com/gitblit/utils/DiffUtils.java
index 67871d2..3844d10 100644
--- a/src/main/java/com/gitblit/utils/DiffUtils.java
+++ b/src/main/java/com/gitblit/utils/DiffUtils.java
@@ -53,7 +53,7 @@
 	 * Enumeration for the diff output types.
 	 */
 	public static enum DiffOutputType {
-		PLAIN, GITWEB, GITBLIT;
+		PLAIN, HTML;
 
 		public static DiffOutputType forName(String name) {
 			for (DiffOutputType type : values()) {
@@ -130,10 +130,7 @@
 			RawTextComparator cmp = RawTextComparator.DEFAULT;
 			DiffFormatter df;
 			switch (outputType) {
-			case GITWEB:
-				df = new GitWebDiffFormatter(os);
-				break;
-			case GITBLIT:
+			case HTML:
 				df = new GitBlitDiffFormatter(os);
 				break;
 			case PLAIN:
@@ -172,9 +169,9 @@
 			} else {
 				df.format(diffEntries);
 			}
-			if (df instanceof GitWebDiffFormatter) {
+			if (df instanceof GitBlitDiffFormatter) {
 				// workaround for complex private methods in DiffFormatter
-				diff = ((GitWebDiffFormatter) df).getHtml();
+				diff = ((GitBlitDiffFormatter) df).getHtml();
 			} else {
 				diff = os.toString();
 			}
diff --git a/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java b/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java
index 62966de..a00e107 100644
--- a/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java
+++ b/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java
@@ -16,12 +16,14 @@
 package com.gitblit.utils;
 
 import static org.eclipse.jgit.lib.Constants.encode;
+import static org.eclipse.jgit.lib.Constants.encodeASCII;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.text.MessageFormat;
 
+import org.eclipse.jgit.diff.DiffFormatter;
 import org.eclipse.jgit.diff.RawText;
 import org.eclipse.jgit.util.RawParseUtils;
 
@@ -31,7 +33,7 @@
  * @author James Moger
  * 
  */
-public class GitBlitDiffFormatter extends GitWebDiffFormatter {
+public class GitBlitDiffFormatter extends DiffFormatter {
 
 	private final OutputStream os;
 
@@ -69,6 +71,39 @@
 		os.write("</td></tr>\n".getBytes());
 		left = aStartLine + 1;
 		right = bStartLine + 1;
+	}
+	
+	protected void writeRange(final char prefix, final int begin, final int cnt) throws IOException {
+		os.write(' ');
+		os.write(prefix);
+		switch (cnt) {
+		case 0:
+			// If the range is empty, its beginning number must
+			// be the
+			// line just before the range, or 0 if the range is
+			// at the
+			// start of the file stream. Here, begin is always 1
+			// based,
+			// so an empty file would produce "0,0".
+			//
+			os.write(encodeASCII(begin - 1));
+			os.write(',');
+			os.write('0');
+			break;
+
+		case 1:
+			// If the range is exactly one line, produce only
+			// the number.
+			//
+			os.write(encodeASCII(begin));
+			break;
+
+		default:
+			os.write(encodeASCII(begin));
+			os.write(',');
+			os.write(encodeASCII(cnt));
+			break;
+		}
 	}
 
 	@Override
@@ -110,7 +145,6 @@
 	 * 
 	 * @return
 	 */
-	@Override
 	public String getHtml() {
 		ByteArrayOutputStream bos = (ByteArrayOutputStream) os;
 		String html = RawParseUtils.decode(bos.toByteArray());
diff --git a/src/main/java/com/gitblit/utils/GitWebDiffFormatter.java b/src/main/java/com/gitblit/utils/GitWebDiffFormatter.java
deleted file mode 100644
index e657dc5..0000000
--- a/src/main/java/com/gitblit/utils/GitWebDiffFormatter.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gitblit.utils;
-
-import static org.eclipse.jgit.lib.Constants.encode;
-import static org.eclipse.jgit.lib.Constants.encodeASCII;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.eclipse.jgit.diff.DiffFormatter;
-import org.eclipse.jgit.diff.RawText;
-import org.eclipse.jgit.util.RawParseUtils;
-
-/**
- * Returns an html snippet of the diff in the standard Gitweb style.
- * 
- * @author James Moger
- * 
- */
-public class GitWebDiffFormatter extends DiffFormatter {
-
-	private final OutputStream os;
-
-	public GitWebDiffFormatter(OutputStream os) {
-		super(os);
-		this.os = os;
-	}
-
-	/**
-	 * Output a hunk header
-	 * 
-	 * @param aStartLine
-	 *            within first source
-	 * @param aEndLine
-	 *            within first source
-	 * @param bStartLine
-	 *            within second source
-	 * @param bEndLine
-	 *            within second source
-	 * @throws IOException
-	 */
-	@Override
-	protected void writeHunkHeader(int aStartLine, int aEndLine, int bStartLine, int bEndLine)
-			throws IOException {
-		os.write("<div class=\"diff hunk_header\"><span class=\"diff hunk_info\">".getBytes());
-		os.write('@');
-		os.write('@');
-		writeRange('-', aStartLine + 1, aEndLine - aStartLine);
-		writeRange('+', bStartLine + 1, bEndLine - bStartLine);
-		os.write(' ');
-		os.write('@');
-		os.write('@');
-		os.write("</span></div>".getBytes());
-	}
-
-	protected void writeRange(final char prefix, final int begin, final int cnt) throws IOException {
-		os.write(' ');
-		os.write(prefix);
-		switch (cnt) {
-		case 0:
-			// If the range is empty, its beginning number must
-			// be the
-			// line just before the range, or 0 if the range is
-			// at the
-			// start of the file stream. Here, begin is always 1
-			// based,
-			// so an empty file would produce "0,0".
-			//
-			os.write(encodeASCII(begin - 1));
-			os.write(',');
-			os.write('0');
-			break;
-
-		case 1:
-			// If the range is exactly one line, produce only
-			// the number.
-			//
-			os.write(encodeASCII(begin));
-			break;
-
-		default:
-			os.write(encodeASCII(begin));
-			os.write(',');
-			os.write(encodeASCII(cnt));
-			break;
-		}
-	}
-
-	@Override
-	protected void writeLine(final char prefix, final RawText text, final int cur)
-			throws IOException {
-		switch (prefix) {
-		case '+':
-			os.write("<span style=\"color:#008000;\">".getBytes());
-			break;
-		case '-':
-			os.write("<span style=\"color:#800000;\">".getBytes());
-			break;
-		}
-		os.write(prefix);
-		String line = text.getString(cur);
-		line = StringUtils.escapeForHtml(line, false);
-		os.write(encode(line));
-		switch (prefix) {
-		case '+':
-		case '-':
-			os.write("</span>\n".getBytes());
-			break;
-		default:
-			os.write('\n');
-		}
-	}
-
-	/**
-	 * Workaround function for complex private methods in DiffFormatter. This
-	 * sets the html for the diff headers.
-	 * 
-	 * @return
-	 */
-	public String getHtml() {
-		ByteArrayOutputStream bos = (ByteArrayOutputStream) os;
-		String html = RawParseUtils.decode(bos.toByteArray());
-		String[] lines = html.split("\n");
-		StringBuilder sb = new StringBuilder();
-		sb.append("<div class=\"diff\">");
-		for (String line : lines) {
-			if (line.startsWith("diff")) {
-				sb.append("<div class=\"diff header\">").append(StringUtils.convertOctal(line)).append("</div>");
-			} else if (line.startsWith("---")) {
-				sb.append("<span style=\"color:#800000;\">").append(StringUtils.convertOctal(line)).append("</span><br/>");
-			} else if (line.startsWith("+++")) {
-				sb.append("<span style=\"color:#008000;\">").append(StringUtils.convertOctal(line)).append("</span><br/>");
-			} else {
-				sb.append(line).append('\n');
-			}
-		}
-		sb.append("</div>\n");
-		return sb.toString();
-	}
-}
diff --git a/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java b/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
index c297bca..8dc9d84 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
@@ -21,8 +21,6 @@
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 
-import com.gitblit.GitBlit;
-import com.gitblit.Keys;
 import com.gitblit.utils.DiffUtils;
 import com.gitblit.utils.DiffUtils.DiffOutputType;
 import com.gitblit.utils.JGitUtils;
@@ -45,19 +43,16 @@
 		Repository r = getRepository();
 		RevCommit commit = getCommit();
 
-		DiffOutputType diffType = DiffOutputType.forName(GitBlit.getString(Keys.web.diffStyle,
-				DiffOutputType.GITBLIT.name()));
-
 		String diff;
 		if (StringUtils.isEmpty(baseObjectId)) {
 			// use first parent
-			diff = DiffUtils.getDiff(r, commit, blobPath, diffType);
+			diff = DiffUtils.getDiff(r, commit, blobPath, DiffOutputType.HTML);
 			add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class,
 					WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
 		} else {
 			// base commit specified
 			RevCommit baseCommit = JGitUtils.getCommit(r, baseObjectId);
-			diff = DiffUtils.getDiff(r, baseCommit, commit, blobPath, diffType);
+			diff = DiffUtils.getDiff(r, baseCommit, commit, blobPath, DiffOutputType.HTML);
 			add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class,
 					WicketUtils.newBlobDiffParameter(repositoryName, baseObjectId, objectId,
 							blobPath)));
diff --git a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
index 0a41b67..4c802d7 100644
--- a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
@@ -30,7 +30,6 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 
 import com.gitblit.GitBlit;
-import com.gitblit.Keys;
 import com.gitblit.models.PathModel.PathChangeModel;
 import com.gitblit.models.SubmoduleModel;
 import com.gitblit.utils.DiffUtils;
@@ -51,12 +50,9 @@
 
 		Repository r = getRepository();
 
-		DiffOutputType diffType = DiffOutputType.forName(GitBlit.getString(Keys.web.diffStyle,
-				DiffOutputType.GITBLIT.name()));
-
 		RevCommit commit = getCommit();
 
-		String diff = DiffUtils.getCommitDiff(r, commit, diffType);
+		String diff = DiffUtils.getCommitDiff(r, commit, DiffOutputType.HTML);
 
 		List<String> parents = new ArrayList<String>();
 		if (commit.getParentCount() > 0) {
diff --git a/src/main/java/com/gitblit/wicket/pages/ComparePage.java b/src/main/java/com/gitblit/wicket/pages/ComparePage.java
index f5f3526..a513f00 100644
--- a/src/main/java/com/gitblit/wicket/pages/ComparePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/ComparePage.java
@@ -37,8 +37,6 @@
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 
-import com.gitblit.GitBlit;
-import com.gitblit.Keys;
 import com.gitblit.models.PathModel.PathChangeModel;
 import com.gitblit.models.RefModel;
 import com.gitblit.models.RepositoryModel;
@@ -80,9 +78,6 @@
 			Fragment comparison = new Fragment("comparison", "comparisonFragment", this);
 			add(comparison);
 			
-			DiffOutputType diffType = DiffOutputType.forName(GitBlit.getString(Keys.web.diffStyle,
-					DiffOutputType.GITBLIT.name()));
-
 			RevCommit fromCommit;
 			RevCommit toCommit;
 			
@@ -113,7 +108,7 @@
 			fromCommitId.setObject(startId);
 			toCommitId.setObject(endId);
 
-			String diff = DiffUtils.getDiff(r, fromCommit, toCommit, diffType);
+			String diff = DiffUtils.getDiff(r, fromCommit, toCommit, DiffOutputType.HTML);
 
 			// compare page links
 //			comparison.add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class,
diff --git a/src/test/java/com/gitblit/tests/DiffUtilsTest.java b/src/test/java/com/gitblit/tests/DiffUtilsTest.java
index 53eff31..b9700eb 100644
--- a/src/test/java/com/gitblit/tests/DiffUtilsTest.java
+++ b/src/test/java/com/gitblit/tests/DiffUtilsTest.java
@@ -34,8 +34,7 @@
 	@Test
 	public void testDiffOutputTypes() throws Exception {
 		assertEquals(DiffOutputType.PLAIN, DiffOutputType.forName("plain"));
-		assertEquals(DiffOutputType.GITWEB, DiffOutputType.forName("gitweb"));
-		assertEquals(DiffOutputType.GITBLIT, DiffOutputType.forName("gitblit"));
+		assertEquals(DiffOutputType.HTML, DiffOutputType.forName("html"));
 		assertEquals(null, DiffOutputType.forName(null));
 	}
 

--
Gitblit v1.9.1