James Moger
2013-10-18 0365f6248d6aaa7c765ac63273c282d16161a623
Replaced MarkdownPapers with pegdown

Change-Id: I11eb50ba1ef0bef8ac47bf6f7b17e0f79ecd3f2d
12 files modified
170 ■■■■■ changed files
.classpath 8 ●●●● patch | view | raw | blame | history
NOTICE 18 ●●●● patch | view | raw | blame | history
build.moxie 2 ●●● patch | view | raw | blame | history
gitblit.iml 72 ●●●●● patch | view | raw | blame | history
releases.moxie 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/GitBlit.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/utils/MarkdownUtils.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/MarkdownPage.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/RepositoryPage.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/SummaryPage.java 4 ●●●● patch | view | raw | blame | history
src/site/design.mkd 2 ●●● patch | view | raw | blame | history
src/test/java/com/gitblit/tests/MarkdownUtilsTest.java 14 ●●●● patch | view | raw | blame | history
.classpath
@@ -20,7 +20,13 @@
    <classpathentry kind="lib" path="ext/lucene-memory-3.6.1.jar" sourcepath="ext/src/lucene-memory-3.6.1.jar" />
    <classpathentry kind="lib" path="ext/lucene-queries-3.6.1.jar" sourcepath="ext/src/lucene-queries-3.6.1.jar" />
    <classpathentry kind="lib" path="ext/jakarta-regexp-1.4.jar" />
    <classpathentry kind="lib" path="ext/markdownpapers-core-1.3.2.jar" sourcepath="ext/src/markdownpapers-core-1.3.2.jar" />
    <classpathentry kind="lib" path="ext/pegdown-1.4.1.jar" sourcepath="ext/src/pegdown-1.4.1.jar" />
    <classpathentry kind="lib" path="ext/parboiled-java-1.1.5.jar" sourcepath="ext/src/parboiled-java-1.1.5.jar" />
    <classpathentry kind="lib" path="ext/parboiled-core-1.1.5.jar" sourcepath="ext/src/parboiled-core-1.1.5.jar" />
    <classpathentry kind="lib" path="ext/asm-4.1.jar" sourcepath="ext/src/asm-4.1.jar" />
    <classpathentry kind="lib" path="ext/asm-tree-4.1.jar" sourcepath="ext/src/asm-tree-4.1.jar" />
    <classpathentry kind="lib" path="ext/asm-analysis-4.1.jar" sourcepath="ext/src/asm-analysis-4.1.jar" />
    <classpathentry kind="lib" path="ext/asm-util-4.1.jar" sourcepath="ext/src/asm-util-4.1.jar" />
    <classpathentry kind="lib" path="ext/org.eclipse.jgit-3.1.0.201310021548-r.jar" sourcepath="ext/src/org.eclipse.jgit-3.1.0.201310021548-r.jar" />
    <classpathentry kind="lib" path="ext/jsch-0.1.46.jar" sourcepath="ext/src/jsch-0.1.46.jar" />
    <classpathentry kind="lib" path="ext/JavaEWAH-0.5.6.jar" sourcepath="ext/src/JavaEWAH-0.5.6.jar" />
NOTICE
@@ -56,14 +56,6 @@
   https://github.com/wicketstuff/core/wiki/GoogleCharts   
   
---------------------------------------------------------------------------
MarkdownPapers
---------------------------------------------------------------------------
   MarkdownPapers, released under the
   Apache Software License, Version 2.0.
   http://markdown.tautua.org
---------------------------------------------------------------------------
Jetty
---------------------------------------------------------------------------
   Jetty, released under the
@@ -318,4 +310,12 @@
   Apache License 2.0.
   
   http://commons.apache.org/proper/commons-codec
---------------------------------------------------------------------------
pegdown
---------------------------------------------------------------------------
   pegdown, release under the
   Apache License 2.0.
   https://github.com/sirthias/pegdown
build.moxie
@@ -135,7 +135,7 @@
- compile 'org.apache.lucene:lucene-core:${lucene.version}' :war :fedclient
- compile 'org.apache.lucene:lucene-highlighter:${lucene.version}' :war :fedclient
- compile 'org.apache.lucene:lucene-memory:${lucene.version}' :war :fedclient
- compile 'org.tautua.markdownpapers:markdownpapers-core:1.3.2' :war
- compile 'org.pegdown:pegdown:1.4.1' :war
- compile 'org.eclipse.jgit:org.eclipse.jgit:${jgit.version}' :war :fedclient :manager :authority
- compile 'org.eclipse.jgit:org.eclipse.jgit.http.server:${jgit.version}' :war :fedclient :manager :authority
- compile 'org.bouncycastle:bcprov-jdk15on:${bouncycastle.version}' :war :authority
gitblit.iml
@@ -196,13 +196,79 @@
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="markdownpapers-core-1.3.2.jar">
      <library name="pegdown-1.4.1.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/markdownpapers-core-1.3.2.jar!/" />
          <root url="jar://$MODULE_DIR$/ext/pegdown-1.4.1.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/markdownpapers-core-1.3.2.jar!/" />
          <root url="jar://$MODULE_DIR$/ext/src/pegdown-1.4.1.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="parboiled-java-1.1.5.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/parboiled-java-1.1.5.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/parboiled-java-1.1.5.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="parboiled-core-1.1.5.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/parboiled-core-1.1.5.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/parboiled-core-1.1.5.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="asm-4.1.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/asm-4.1.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/asm-4.1.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="asm-tree-4.1.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/asm-tree-4.1.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/asm-tree-4.1.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="asm-analysis-4.1.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/asm-analysis-4.1.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/asm-analysis-4.1.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="asm-util-4.1.jar">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/ext/asm-util-4.1.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES>
          <root url="jar://$MODULE_DIR$/ext/src/asm-util-4.1.jar!/" />
        </SOURCES>
      </library>
    </orderEntry>
releases.moxie
@@ -32,6 +32,7 @@
    dependencyChanges:
    - updated to Jetty 7.6.13
    - updated to JGit 3.1.0
    - replaced MarkdownPapers with pegdown 1.4.1
    settings:
    - { name: 'git.createRepositoriesShared', defaultValue: 'false' }
    - { name: 'git.allowAnonymousPushes', defaultValue: 'false' }
src/main/java/com/gitblit/GitBlit.java
@@ -32,7 +32,6 @@
import java.nio.charset.Charset;
import java.security.Principal;
import java.text.MessageFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -2713,7 +2712,7 @@
            try {
                String prepared = processCommitMessageRegex(repository.name, text);
                return MarkdownUtils.transformMarkdown(prepared);
            } catch (ParseException e) {
            } catch (Exception e) {
                logger.error("Failed to render commit message as markdown", e);
            }
            break;
src/main/java/com/gitblit/utils/MarkdownUtils.java
@@ -15,14 +15,14 @@
 */
package com.gitblit.utils;
import static org.pegdown.Extensions.ALL;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import org.slf4j.LoggerFactory;
import org.tautua.markdownpapers.Markdown;
import org.tautua.markdownpapers.parser.ParseException;
import org.apache.commons.io.IOUtils;
import org.pegdown.PegDownProcessor;
/**
 * Utility methods for transforming raw markdown text to html.
@@ -39,17 +39,10 @@
     * @return html version of markdown text
     * @throws java.text.ParseException
     */
    public static String transformMarkdown(String markdown) throws java.text.ParseException {
        try {
            StringReader reader = new StringReader(markdown);
            String html = transformMarkdown(reader);
            reader.close();
            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);
        }
    public static String transformMarkdown(String markdown) {
        PegDownProcessor pd = new PegDownProcessor(ALL);
        String html = pd.markdownToHtml(markdown);
        return html;
    }
    /**
@@ -60,22 +53,13 @@
     * @return html version of the markdown text
     * @throws java.text.ParseException
     */
    public static String transformMarkdown(Reader markdownReader) throws java.text.ParseException {
    public static String transformMarkdown(Reader markdownReader) throws IOException {
        // 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().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);
            IOUtils.copy(markdownReader, writer);
            String markdown = writer.toString();
            return transformMarkdown(markdown);
        } finally {
            try {
                writer.close();
src/main/java/com/gitblit/wicket/pages/MarkdownPage.java
@@ -16,7 +16,6 @@
package com.gitblit.wicket.pages;
import java.text.MessageFormat;
import java.text.ParseException;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
@@ -60,7 +59,8 @@
        String htmlText;
        try {
            htmlText = MarkdownUtils.transformMarkdown(markdownText);
        } catch (ParseException p) {
        } catch (Exception e) {
            logger.error("failed to transform markdown", e);
            markdownText = MessageFormat.format("<div class=\"alert alert-error\"><strong>{0}:</strong> {1}</div>{2}", getString("gb.error"), getString("gb.markdownFailure"), markdownText);
            htmlText = StringUtils.breakLinesForHtml(markdownText);
        }
src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -75,7 +75,7 @@
public abstract class RepositoryPage extends RootPage {
    private final Logger logger = LoggerFactory.getLogger(getClass());
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    private final String PARAM_STAR = "star";
src/main/java/com/gitblit/wicket/pages/SummaryPage.java
@@ -18,7 +18,6 @@
import java.awt.Color;
import java.awt.Dimension;
import java.text.MessageFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
@@ -166,7 +165,8 @@
                    markdownText = JGitUtils.getStringContent(r, head.getTree(), readme, encodings);
                    htmlText = MarkdownUtils.transformMarkdown(markdownText);
                }
            } catch (ParseException p) {
            } catch (Exception e) {
                logger.error("failed to transform markdown", e);
                markdownText = MessageFormat.format("<div class=\"alert alert-error\"><strong>{0}:</strong> {1}</div>{2}", getString("gb.error"), getString("gb.markdownFailure"), markdownText);
                htmlText = StringUtils.breakLinesForHtml(markdownText);
            }
src/site/design.mkd
@@ -29,7 +29,6 @@
- [JGit][jgit] (EDL 1.0)
- [Wicket](http://wicket.apache.org) (Apache 2.0)
- [WicketStuff GoogleCharts](https://github.com/wicketstuff/core/wiki/GoogleCharts) (Apache 2.0)
- [MarkdownPapers](http://markdown.tautua.org) (Apache 2.0)
- [Jetty](http://eclipse.org/jetty) (Apache 2.0, EPL 1.0)
- [SLF4J](http://www.slf4j.org) (MIT/X11)
- [Log4j](http://logging.apache.org/log4j) (Apache 2.0)
@@ -53,6 +52,7 @@
- [Guava](https://code.google.com/p/guava-libraries) (Apache 2.0)
- [libpam4j](https://github.com/kohsuke/libpam4j) (MIT)
- [commons-codec](http://commons.apache.org/proper/commons-codec) (Apache 2.0)
- [pegdown](https://github.com/sirthias/pegdown) (Apache 2.0)
### Other Build Dependencies
- [Fancybox image viewer](http://fancybox.net) (MIT and GPL dual-licensed)
src/test/java/com/gitblit/tests/MarkdownUtilsTest.java
@@ -16,9 +16,6 @@
package com.gitblit.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.text.ParseException;
import org.junit.Test;
@@ -28,8 +25,8 @@
    @Test
    public void testMarkdown() throws Exception {
        assertEquals("<h1> H1</h1>", MarkdownUtils.transformMarkdown("# H1"));
        assertEquals("<h2> H2</h2>", MarkdownUtils.transformMarkdown("## H2"));
        assertEquals("<h1>H1</h1>", MarkdownUtils.transformMarkdown("# H1"));
        assertEquals("<h2>H2</h2>", MarkdownUtils.transformMarkdown("## H2"));
        assertEquals("<p><strong>THIS</strong> is a test</p>",
                MarkdownUtils.transformMarkdown("**THIS** is a test"));
        assertEquals("<p>** THIS ** is a test</p>",
@@ -43,12 +40,5 @@
                MarkdownUtils.transformMarkdown("<table><tr><td>test</td></tr></table>"));
        assertEquals("<table><tr><td>&lt;test&gt;</td></tr></table>",
                MarkdownUtils.transformMarkdown("<table><tr><td>&lt;test&gt;</td></tr></table>"));
        try {
            MarkdownUtils.transformMarkdown((String) null);
            assertTrue(false);
        } catch (ParseException p) {
            assertTrue(p != null);
        }
    }
}