Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Green2014-12-11 00:45:47 +0000
committerDavid Green2014-12-11 01:00:06 +0000
commit927c0b039ebc9f04c2590b31d0ad5096837ba23f (patch)
tree1836e7b876c1978300d12e8c305bd48bb2f7ea7a
parent03b156ac898aed31b5015afeb9c4e37e802c2cc4 (diff)
downloadorg.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
-rw-r--r--org.eclipse.mylyn.wikitext.confluence.core/src/org/eclipse/mylyn/internal/wikitext/confluence/core/ConfluenceDocumentBuilder.java4
-rw-r--r--org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/ConfluenceDocumentBuilderTest.java20
-rw-r--r--org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/confluence/core/ConfluenceLanguageTest.java8
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");

Back to the top