diff options
author | Jeremie Bresson | 2016-04-25 15:22:26 +0000 |
---|---|---|
committer | David Green | 2016-04-26 21:00:51 +0000 |
commit | 0d068d25366ce2601e00e585a5401ffc10c955df (patch) | |
tree | 7296c62d04af1636ac56e2d3642b9129ae41745f /org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java | |
parent | ff87ee5530e92ae2e331c9e03267dde425583ac8 (diff) | |
download | org.eclipse.mylyn.docs-0d068d25366ce2601e00e585a5401ffc10c955df.tar.gz org.eclipse.mylyn.docs-0d068d25366ce2601e00e585a5401ffc10c955df.tar.xz org.eclipse.mylyn.docs-0d068d25366ce2601e00e585a5401ffc10c955df.zip |
468237: Errors processing wikimedia templates
Fix in WikiTemplateResolver and refactoring for unit tests
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=468237
Signed-off-by: Alain Picard <picard@castortech.com>
Signed-off-by: Jeremie Bresson <dev@jmini.fr>
Change-Id: Ia3297a91f17fd7de5958ce77cae8d4094a121430
Diffstat (limited to 'org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java')
-rw-r--r-- | org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java b/org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java index fa283c5b1..1c416fdce 100644 --- a/org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java +++ b/org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java @@ -11,13 +11,10 @@ package org.eclipse.mylyn.internal.wikitext.mediawiki.core; -import java.io.BufferedInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringWriter; import java.net.URL; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.text.MessageFormat; import java.util.logging.Level; import java.util.logging.Logger; @@ -25,9 +22,11 @@ import java.util.logging.Logger; import org.eclipse.mylyn.wikitext.mediawiki.core.Template; import org.eclipse.mylyn.wikitext.mediawiki.core.TemplateResolver; +import com.google.common.io.Resources; + /** * compute the contents of a template based on - * + * * @author dgreen */ public class WikiTemplateResolver extends TemplateResolver { @@ -47,25 +46,21 @@ public class WikiTemplateResolver extends TemplateResolver { if (wikiBaseUrl != null) { int indexOf = templateName.indexOf(':'); if (indexOf == 0) { - templateName = "Template" + templateName; //$NON-NLS-1$ + templateName = templateName.substring(1); } else if (indexOf == -1) { templateName = "Template:" + templateName; //$NON-NLS-1$ } URL url = computeRawUrl(templateName); if (url != null) { - Reader input; try { - input = new InputStreamReader(new BufferedInputStream(url.openStream()), "UTF-8"); //$NON-NLS-1$ - try { - String content = readFully(input); - Template template = new Template(); - String basicName = templateName.toLowerCase().startsWith("template:") ? templateName.substring(templateName.lastIndexOf(':') + 1) : templateName; //$NON-NLS-1$ - template.setName(basicName); - template.setTemplateMarkup(content); - return template; - } finally { - input.close(); - } + String content = readContent(url); + Template template = new Template(); + String basicName = templateName.toLowerCase().startsWith("template:") //$NON-NLS-1$ + ? templateName.substring(templateName.lastIndexOf(':') + 1) + : templateName; + template.setName(basicName); + template.setTemplateMarkup(content); + return template; } catch (final IOException e) { final String message = MessageFormat.format("Cannot read from {0}: {1}", url, e.getMessage()); //$NON-NLS-1$ Logger.getLogger(WikiTemplateResolver.class.getName()).log(Level.WARNING, message, e); @@ -75,13 +70,8 @@ public class WikiTemplateResolver extends TemplateResolver { return null; } - private String readFully(Reader input) throws IOException { - StringWriter content = new StringWriter(1024); - int i; - while ((i = input.read()) != -1) { - content.write(i); - } - return content.toString(); + protected String readContent(URL url) throws IOException { + return Resources.toString(url, StandardCharsets.UTF_8); } private URL computeRawUrl(String path) { |