X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=3900ad8144d814cf68eb7331109b8dc4f4a424c4;hb=80064be52c34c9d691da252d2628aa1f39debd23;hp=d6b64ba01ebe24b63f922ce4c6f5f4b208fd171b;hpb=adc8230792298a693a8f9ba01a6db04753d15b47;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java index d6b64ba..3900ad8 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -1,5 +1,5 @@ /* - * Sone - ParserFilter.java - Copyright © 2011–2012 David Roden + * Sone - ParserFilter.java - Copyright © 2011–2013 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +20,9 @@ package net.pterodactylus.sone.template; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; +import java.io.UnsupportedEncodingException; import java.io.Writer; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -82,9 +84,6 @@ public class ParserFilter implements Filter { this.soneTextParser = soneTextParser; } - /** - * {@inheritDoc} - */ @Override public Object format(TemplateContext templateContext, Object data, Map parameters) { String text = String.valueOf(data); @@ -92,7 +91,7 @@ public class ParserFilter implements Filter { int cutOffLength = Numbers.safeParseInteger(parameters.get("cut-off-length"), Numbers.safeParseInteger(templateContext.get(String.valueOf(parameters.get("cut-off-length"))), length)); Object sone = parameters.get("sone"); if (sone instanceof String) { - sone = core.getSone((String) sone, false); + sone = core.getSone((String) sone).orNull(); } FreenetRequest request = (FreenetRequest) templateContext.get("request"); SoneTextParserContext context = new SoneTextParserContext(request, (Sone) sone); @@ -213,7 +212,12 @@ public class ParserFilter implements Filter { * The part to render */ private void render(Writer writer, LinkPart linkPart) { - renderLink(writer, "/external-link/?_CHECKED_HTTP_=" + linkPart.getLink(), linkPart.getText(), linkPart.getTitle(), "internet"); + try { + renderLink(writer, "/external-link/?_CHECKED_HTTP_=" + URLEncoder.encode(linkPart.getLink(), "UTF-8"), linkPart.getText(), linkPart.getTitle(), "internet"); + } catch (UnsupportedEncodingException uee1) { + /* not possible for UTF-8. */ + throw new RuntimeException("The JVM does not support UTF-8 encoding!", uee1); + } } /** @@ -241,7 +245,7 @@ public class ParserFilter implements Filter { * The part to render */ private void render(Writer writer, PostPart postPart) { - SoneTextParser parser = new SoneTextParser(core, core); + SoneTextParser parser = new SoneTextParser(core.getDatabase()); SoneTextParserContext parserContext = new SoneTextParserContext(null, postPart.getPost().getSone()); try { Iterable parts = parser.parse(parserContext, new StringReader(postPart.getPost().getText()));