import java.io.Reader;
import java.io.StringReader;
import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
@Nonnull
@Override
public Iterable<Part> parse(@Nonnull String source, @Nullable SoneTextParserContext context) {
- PartContainer parts = new PartContainer();
+ List<Part> parts = new ArrayList<>();
try (Reader sourceReader = new StringReader(source);
BufferedReader bufferedReader = new BufferedReader(sourceReader)) {
String line;
throw new RuntimeException(ioe1);
}
for (int partIndex = parts.size() - 1; partIndex >= 0; --partIndex) {
- Part part = parts.getPart(partIndex);
+ Part part = parts.get(partIndex);
if (!(part instanceof PlainTextPart) || !"\n".equals(part.getText())) {
break;
}
- parts.removePart(partIndex);
+ parts.remove(partIndex);
}
return parts;
}
return Optional.fromNullable(earliestNextLink);
}
- private void renderSoneLink(PartContainer parts, String line) {
+ private void renderSoneLink(List<Part> parts, String line) {
if (line.length() >= (7 + 43)) {
String soneId = line.substring(7, 50);
Optional<Sone> sone = soneProvider.getSone(soneId);
}
}
- private void renderPostLink(PartContainer parts, String line) {
+ private void renderPostLink(List<Part> parts, String line) {
if (line.length() >= (7 + 36)) {
String postId = line.substring(7, 43);
Optional<Post> post = postProvider.getPost(postId);
}
}
- private void renderFreenetLink(PartContainer parts, String link, LinkType linkType, @Nullable SoneTextParserContext context) {
+ private void renderFreenetLink(List<Part> parts, String link, LinkType linkType, @Nullable SoneTextParserContext context) {
String name = link;
+ String linkWithoutParameters = link;
if (name.indexOf('?') > -1) {
- name = name.substring(0, name.indexOf('?'));
+ linkWithoutParameters = name = name.substring(0, name.indexOf('?'));
}
if (name.endsWith("/")) {
name = name.substring(0, name.length() - 1);
name = link.substring(0, Math.min(9, link.length()));
}
boolean fromPostingSone = ((linkType == LinkType.SSK) || (linkType == LinkType.USK)) && (context != null) && (context.getPostingSone() != null) && link.substring(4, Math.min(link.length(), 47)).equals(context.getPostingSone().getId());
- parts.add(new FreenetLinkPart(link, name, fromPostingSone));
+ parts.add(new FreenetLinkPart(link, name, linkWithoutParameters, fromPostingSone));
} catch (MalformedURLException mue1) {
/* not a valid link, insert as plain text. */
parts.add(new PlainTextPart(link));
}
}
- private void renderHttpLink(PartContainer parts, String link, LinkType linkType) {
- String name;
- name = link.substring(linkType == LinkType.HTTP ? 7 : 8);
+ private void renderHttpLink(List<Part> parts, String link, LinkType linkType) {
+ String name = link.substring(linkType == LinkType.HTTP ? 7 : 8);
int firstSlash = name.indexOf('/');
int lastSlash = name.lastIndexOf('/');
if ((lastSlash - firstSlash) > 3) {
parts.add(new LinkPart(link, name));
}
- private void renderFreemailLink(PartContainer parts, String line) {
+ private void renderFreemailLink(List<Part> parts, String line) {
int separator = line.indexOf('@');
String freemailId = line.substring(separator + 1, separator + 53);
String identityId = Base64.encode(Base32.decode(freemailId));