Replace Reader with String in Parser interface
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 25 Jun 2016 20:13:36 +0000 (22:13 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 25 Jun 2016 20:13:36 +0000 (22:13 +0200)
src/main/java/net/pterodactylus/sone/template/ParserFilter.java
src/main/java/net/pterodactylus/sone/text/Parser.java
src/main/java/net/pterodactylus/sone/text/ParserContext.java
src/main/java/net/pterodactylus/sone/text/SoneTextParser.java
src/main/java/net/pterodactylus/sone/web/WebInterface.java
src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java

index 109222e..6c74f0b 100644 (file)
@@ -102,7 +102,7 @@ public class ParserFilter implements Filter {
                SoneTextParserContext context = new SoneTextParserContext(request, (Sone) sone);
                StringWriter parsedTextWriter = new StringWriter();
                try {
-                       Iterable<Part> parts = soneTextParser.parse(context, new StringReader(text));
+                       Iterable<Part> parts = soneTextParser.parse(context, text);
                        if (length > -1) {
                                int allPartsLength = 0;
                                List<Part> shortenedParts = new ArrayList<Part>();
@@ -253,7 +253,7 @@ public class ParserFilter implements Filter {
                SoneTextParser parser = new SoneTextParser(core, core);
                SoneTextParserContext parserContext = new SoneTextParserContext(null, postPart.getPost().getSone());
                try {
-                       Iterable<Part> parts = parser.parse(parserContext, new StringReader(postPart.getPost().getText()));
+                       Iterable<Part> parts = parser.parse(parserContext, postPart.getPost().getText());
                        StringBuilder excerpt = new StringBuilder();
                        for (Part part : parts) {
                                excerpt.append(part.getText());
index f5f8f1b..e654223 100644 (file)
@@ -41,6 +41,6 @@ public interface Parser<C extends ParserContext> {
         * @throws IOException
         *             if an I/O error occurs
         */
-       public Iterable<Part> parse(C context, Reader source) throws IOException;
+       public Iterable<Part> parse(C context, String source) throws IOException;
 
 }
index 9782008..da60a72 100644 (file)
@@ -20,7 +20,7 @@ package net.pterodactylus.sone.text;
 /**
  * Context for the {@link Parser}. This interface needs to be implemented by
  * {@link Parser}s that need to provide more information than just the text to
- * parse to {@link Parser#parse(ParserContext, java.io.Reader)}.
+ * parse to {@link Parser#parse(ParserContext, String)}.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
index f338286..18ac467 100644 (file)
@@ -21,7 +21,7 @@ import static java.util.logging.Logger.getLogger;
 
 import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.Reader;
+import java.io.StringReader;
 import java.net.MalformedURLException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -118,9 +118,9 @@ public class SoneTextParser implements Parser<SoneTextParserContext> {
         * {@inheritDoc}
         */
        @Override
-       public Iterable<Part> parse(SoneTextParserContext context, Reader source) throws IOException {
+       public Iterable<Part> parse(SoneTextParserContext context, String source) throws IOException {
                PartContainer parts = new PartContainer();
-               BufferedReader bufferedReader = (source instanceof BufferedReader) ? (BufferedReader) source : new BufferedReader(source);
+               BufferedReader bufferedReader = new BufferedReader(new StringReader(source));
                try {
                        String line;
                        boolean lastLineEmpty = true;
@@ -272,9 +272,7 @@ public class SoneTextParser implements Parser<SoneTextParserContext> {
                                lastLineEmpty = false;
                        }
                } finally {
-                       if (bufferedReader != source) {
-                               Closer.close(bufferedReader);
-                       }
+                       Closer.close(bufferedReader);
                }
                for (int partIndex = parts.size() - 1; partIndex >= 0; --partIndex) {
                        Part part = parts.getPart(partIndex);
index 4185c93..f08ad5d 100644 (file)
@@ -796,7 +796,7 @@ public class WebInterface {
                /* we need no context to find mentioned Sones. */
                Set<Sone> mentionedSones = new HashSet<Sone>();
                try {
-                       for (Part part : soneTextParser.parse(null, new StringReader(text))) {
+                       for (Part part : soneTextParser.parse(null, text)) {
                                if (part instanceof SonePart) {
                                        mentionedSones.add(((SonePart) part).getSone());
                                }
index 051c235..b630ac5 100644 (file)
@@ -53,17 +53,17 @@ public class SoneTextParserTest extends TestCase {
                Iterable<Part> parts;
 
                /* check basic operation. */
-               parts = soneTextParser.parse(null, new StringReader("Test."));
+               parts = soneTextParser.parse(null, "Test.");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Test.", convertText(parts, PlainTextPart.class));
 
                /* check empty lines at start and end. */
-               parts = soneTextParser.parse(null, new StringReader("\nTest.\n\n"));
+               parts = soneTextParser.parse(null, "\nTest.\n\n");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Test.", convertText(parts, PlainTextPart.class));
 
                /* check duplicate empty lines in the text. */
-               parts = soneTextParser.parse(null, new StringReader("\nTest.\n\n\nTest."));
+               parts = soneTextParser.parse(null, "\nTest.\n\n\nTest.");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Test.\n\nTest.", convertText(parts, PlainTextPart.class));
        }
@@ -80,17 +80,17 @@ public class SoneTextParserTest extends TestCase {
                Iterable<Part> parts;
 
                /* check basic links. */
-               parts = soneTextParser.parse(null, new StringReader("KSK@gpl.txt"));
+               parts = soneTextParser.parse(null, "KSK@gpl.txt");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "[KSK@gpl.txt|gpl.txt|gpl.txt]", convertText(parts, FreenetLinkPart.class));
 
                /* check embedded links. */
-               parts = soneTextParser.parse(null, new StringReader("Link is KSK@gpl.txt\u200b."));
+               parts = soneTextParser.parse(null, "Link is KSK@gpl.txt\u200b.");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Link is [KSK@gpl.txt|gpl.txt|gpl.txt]\u200b.", convertText(parts, PlainTextPart.class, FreenetLinkPart.class));
 
                /* check embedded links and line breaks. */
-               parts = soneTextParser.parse(null, new StringReader("Link is KSK@gpl.txt\nKSK@test.dat\n"));
+               parts = soneTextParser.parse(null, "Link is KSK@gpl.txt\nKSK@test.dat\n");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Link is [KSK@gpl.txt|gpl.txt|gpl.txt]\n[KSK@test.dat|test.dat|test.dat]", convertText(parts, PlainTextPart.class, FreenetLinkPart.class));
        }
@@ -107,7 +107,7 @@ public class SoneTextParserTest extends TestCase {
                Iterable<Part> parts;
 
                /* check basic links. */
-               parts = soneTextParser.parse(null, new StringReader("Some text.\n\nLink to sone://DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU and stuff."));
+               parts = soneTextParser.parse(null, "Some text.\n\nLink to sone://DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU and stuff.");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Some text.\n\nLink to [Sone|DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU] and stuff.", convertText(parts, PlainTextPart.class, SonePart.class));
        }
@@ -125,7 +125,7 @@ public class SoneTextParserTest extends TestCase {
                Iterable<Part> parts;
 
                /* check empty http links. */
-               parts = soneTextParser.parse(null, new StringReader("Some text. Empty link: http:// – nice!"));
+               parts = soneTextParser.parse(null, "Some text. Empty link: http:// – nice!");
                assertNotNull("Parts", parts);
                assertEquals("Part Text", "Some text. Empty link: http:// – nice!", convertText(parts, PlainTextPart.class));
        }