diff options
author | David Green | 2014-12-11 00:45:47 +0000 |
---|---|---|
committer | David Green | 2014-12-11 01:00:06 +0000 |
commit | 927c0b039ebc9f04c2590b31d0ad5096837ba23f (patch) | |
tree | 1836e7b876c1978300d12e8c305bd48bb2f7ea7a | |
parent | 03b156ac898aed31b5015afeb9c4e37e802c2cc4 (diff) | |
download | org.eclipse.mylyn.docs-927c0b039ebc9f04c2590b31d0ad5096837ba23f.tar.gz org.eclipse.mylyn.docs-927c0b039ebc9f04c2590b31d0ad5096837ba23f.tar.xz org.eclipse.mylyn.docs-927c0b039ebc9f04c2590b31d0ad5096837ba23f.zip |
454822: Avoid NPE when emmitting Conluence link with no href
Change-Id: I66c8c5b697ea66c454243d19f2865124890cd204
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=454822
3 files changed, 31 insertions, 1 deletions
diff --git a/org.eclipse.mylyn.wikitext.confluence.core/src/org/eclipse/mylyn/internal/wikitext/confluence/core/ConfluenceDocumentBuilder.java b/org.eclipse.mylyn.wikitext.confluence.core/src/org/eclipse/mylyn/internal/wikitext/confluence/core/ConfluenceDocumentBuilder.java index 3ff60c0e9..a9a524a9b 100644 --- a/org.eclipse.mylyn.wikitext.confluence.core/src/org/eclipse/mylyn/internal/wikitext/confluence/core/ConfluenceDocumentBuilder.java +++ b/org.eclipse.mylyn.wikitext.confluence.core/src/org/eclipse/mylyn/internal/wikitext/confluence/core/ConfluenceDocumentBuilder.java @@ -189,7 +189,9 @@ public class ConfluenceDocumentBuilder extends AbstractMarkupDocumentBuilder { ConfluenceDocumentBuilder.this.emitContent(content); ConfluenceDocumentBuilder.this.emitContent(" | "); //$NON-NLS-1$ } - ConfluenceDocumentBuilder.this.emitContent(attributes.getHref()); + if (attributes.getHref() != null) { + ConfluenceDocumentBuilder.this.emitContent(attributes.getHref()); + } if (!Strings.isNullOrEmpty(attributes.getTitle())) { ConfluenceDocumentBuilder.this.emitContent(" | "); //$NON-NLS-1$ ConfluenceDocumentBuilder.this.emitContent(attributes.getTitle()); diff --git a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/ConfluenceDocumentBuilderTest.java b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/ConfluenceDocumentBuilderTest.java index cdba9687d..7603d1e81 100644 --- a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/ConfluenceDocumentBuilderTest.java +++ b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/ConfluenceDocumentBuilderTest.java @@ -460,6 +460,26 @@ public class ConfluenceDocumentBuilderTest extends TestCase { assertEquals("prefix [Test 123 | #test] suffix\n\n", markup); } + public void testLinkSpanNoHref() { + builder.beginDocument(); + + builder.characters("prefix "); + + LinkAttributes attributes = new LinkAttributes(); + builder.beginSpan(SpanType.LINK, attributes); + builder.endSpan(); + + builder.characters(" suffix"); + + builder.endDocument(); + + String markup = out.toString(); + + TestUtil.println(markup); + + assertEquals("prefix [] suffix\n\n", markup); + } + public void testTableWithEmptyCells() { builder.beginDocument(); builder.beginBlock(BlockType.TABLE, new Attributes()); diff --git a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/confluence/core/ConfluenceLanguageTest.java b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/confluence/core/ConfluenceLanguageTest.java index 7235445cc..d91f9d6e1 100644 --- a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/confluence/core/ConfluenceLanguageTest.java +++ b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/confluence/core/ConfluenceLanguageTest.java @@ -23,6 +23,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.regex.Pattern; + import org.eclipse.mylyn.wikitext.core.osgi.OsgiServiceLocator; import org.eclipse.mylyn.wikitext.core.parser.builder.DocBookDocumentBuilder; import org.eclipse.mylyn.wikitext.core.parser.builder.HtmlDocumentBuilder; @@ -287,6 +288,13 @@ public class ConfluenceLanguageTest extends AbstractMarkupGenerationTest<Conflue } @Test + public void testHyperlinkNoText() { + String html = parser.parseToHtml("a [] nothing"); + TestUtil.println("HTML: \n" + html); + assertTrue(html.contains("<body><p>a [] nothing</p></body>")); + } + + @Test public void testHyperlinkPartiallyExpressed() { // bug 290434 String html = parser.parseToHtml("a [ |] hyperlink"); |