From: David ‘Bombe’ Roden Date: Sat, 18 Jul 2015 19:31:14 +0000 (+0200) Subject: Merge branch 'release/0.9.1' X-Git-Tag: 0.9.1^0 X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=commitdiff_plain;h=36f646119c5dd6cf5f4db43c269c69bd790f1a4a;hp=59f2d124406df88153b8c5e05bdb524c9b594116 Merge branch 'release/0.9.1' --- diff --git a/pom.xml b/pom.xml index 048b777..b5a7c8b 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 net.pterodactylus sone - 0.9 + 0.9.1 net.pterodactylus diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 1153c0f..95b4bfe 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -641,16 +641,18 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, } logger.info(String.format("Adding Sone from OwnIdentity: %s", ownIdentity)); Sone sone = database.newSoneBuilder().local().from(ownIdentity).build(); - sone.setLatestEdition(fromNullable(tryParse(ownIdentity.getProperty("Sone.LatestEdition"))).or(0L)); + String property = fromNullable(ownIdentity.getProperty("Sone.LatestEdition")).or("0"); + sone.setLatestEdition(fromNullable(tryParse(property)).or(0L)); sone.setClient(new Client("Sone", SonePlugin.VERSION.toString())); sone.setKnown(true); + loadSone(sone); + sone.setStatus(SoneStatus.idle); + database.storeSone(sone); SoneInserter soneInserter = new SoneInserter(this, eventBus, freenetInterface, ownIdentity.getId()); eventBus.register(soneInserter); synchronized (soneInserters) { soneInserters.put(sone, soneInserter); } - loadSone(sone); - sone.setStatus(SoneStatus.idle); soneInserter.start(); return sone; } @@ -1084,7 +1086,6 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, for (Album album : topLevelAlbums) { sone.getRootAlbum().addAlbum(album); } - database.storeSone(sone); synchronized (soneInserters) { soneInserters.get(sone).setLastInsertFingerprint(lastInsertFingerprint); } diff --git a/src/main/java/net/pterodactylus/sone/main/ReparseFilter.java b/src/main/java/net/pterodactylus/sone/main/ReparseFilter.java new file mode 100644 index 0000000..acad00b --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/main/ReparseFilter.java @@ -0,0 +1,33 @@ +package net.pterodactylus.sone.main; + +import java.io.StringReader; +import java.io.StringWriter; +import java.util.Map; + +import net.pterodactylus.util.template.Filter; +import net.pterodactylus.util.template.Template; +import net.pterodactylus.util.template.TemplateContext; +import net.pterodactylus.util.template.TemplateException; +import net.pterodactylus.util.template.TemplateParser; + +/** + * Takes the input and parses it as a new {@link Template}. + * + * @author David ‘Bombe’ Roden + */ +public class ReparseFilter implements Filter { + + @Override + public Object format(TemplateContext templateContext, Object data, Map parameters) { + Template template = TemplateParser.parse(new StringReader(String.valueOf(data))); + StringWriter stringWriter = new StringWriter(); + try { + template.render(templateContext, stringWriter); + } catch (TemplateException e) { + throw new RuntimeException(e); + } finally { + return stringWriter.toString(); + } + } + +} diff --git a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java index c5620f6..3960479 100644 --- a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java +++ b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java @@ -116,12 +116,12 @@ public class SonePlugin implements FredPlugin, FredPluginFCP, FredPluginL10n, Fr } /** The version. */ - public static final Version VERSION = new Version(0, 9); + public static final Version VERSION = new Version(0, 9, 1); /** The current year at time of release. */ private static final int YEAR = 2015; private static final String SONE_HOMEPAGE = "USK@nwa8lHa271k2QvJ8aa0Ov7IHAV-DFOCFgmDt3X6BpCI,DuQSUZiI~agF8c-6tjsFFGuZ8eICrzWCILB60nT8KKo,AQACAAE/sone/"; - private static final int LATEST_EDITION = 66; + private static final int LATEST_EDITION = 68; /** The logger. */ private static final Logger logger = getLogger("Sone.Plugin"); diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 1ce8f8e..e813179 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -72,6 +72,7 @@ import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.freenet.L10nFilter; import net.pterodactylus.sone.freenet.wot.Identity; import net.pterodactylus.sone.freenet.wot.Trust; +import net.pterodactylus.sone.main.ReparseFilter; import net.pterodactylus.sone.main.SonePlugin; import net.pterodactylus.sone.notify.ListNotification; import net.pterodactylus.sone.template.AlbumAccessor; @@ -274,6 +275,7 @@ public class WebInterface { templateContextFactory.addFilter("css", new CssClassNameFilter()); templateContextFactory.addFilter("js", new JavascriptFilter()); templateContextFactory.addFilter("parse", parserFilter = new ParserFilter(getCore(), templateContextFactory, soneTextParser)); + templateContextFactory.addFilter("reparse", new ReparseFilter()); templateContextFactory.addFilter("unknown", new UnknownDateFilter(getL10n(), "View.Sone.Text.UnknownDate")); templateContextFactory.addFilter("format", new FormatFilter()); templateContextFactory.addFilter("sort", new CollectionSortFilter()); diff --git a/src/main/resources/templates/about.html b/src/main/resources/templates/about.html index f38db21..dbdb019 100644 --- a/src/main/resources/templates/about.html +++ b/src/main/resources/templates/about.html @@ -11,7 +11,7 @@

<%= Page.About.Homepage.Title|l10n|html>

- <%= Page.About.Homepage.Description|l10n|html|replace needle=="{link}" replacement==''|replace needle=="{/link}" replacement==''> + <%= Page.About.Homepage.Description|l10n|html|replace needle=="{link}" replacement==''|reparse|replace needle=="{/link}" replacement==''>

<%= Page.About.License.Title|l10n|html>

diff --git a/src/test/java/net/pterodactylus/sone/main/ReparseFilterTest.java b/src/test/java/net/pterodactylus/sone/main/ReparseFilterTest.java new file mode 100644 index 0000000..879fe36 --- /dev/null +++ b/src/test/java/net/pterodactylus/sone/main/ReparseFilterTest.java @@ -0,0 +1,29 @@ +package net.pterodactylus.sone.main; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; + +import java.util.Collections; + +import net.pterodactylus.util.template.TemplateContext; + +import org.junit.Test; + +/** + * Unit test for {@link ReparseFilter}. + * + * @author David ‘Bombe’ Roden + */ +public class ReparseFilterTest { + + private final ReparseFilter reparseFilter = new ReparseFilter(); + + @Test + public void filterParsesTemplateCorrectly() { + TemplateContext templateContext = new TemplateContext(); + templateContext.set("bar", "baz"); + assertThat(reparseFilter.format(templateContext, "foo <% bar>", Collections.emptyMap()), + is((Object) "foo baz")); + } + +}