Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremie Bresson2016-04-25 15:22:26 +0000
committerDavid Green2016-04-26 21:00:51 +0000
commit0d068d25366ce2601e00e585a5401ffc10c955df (patch)
tree7296c62d04af1636ac56e2d3642b9129ae41745f /org.eclipse.mylyn.wikitext.mediawiki.core/src/org/eclipse/mylyn/internal/wikitext/mediawiki/core/WikiTemplateResolver.java
parentff87ee5530e92ae2e331c9e03267dde425583ac8 (diff)
downloadorg.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.java40
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) {

Back to the top