X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=inline;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=00f8cf9c5fe7a1f1c0d0894e232c54651ebdc7a0;hb=ef127cf3748476d8dffc518f11bf4860d0b5b03e;hp=daa20e8019a4baa8100ee57bcfe2d755ec614d26;hpb=0acd68634f3e73c62087609c1faa2dfc53da506d;p=Sone.git
diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java
index daa20e8..00f8cf9 100644
--- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java
+++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java
@@ -103,18 +103,13 @@ import net.pterodactylus.sone.web.ajax.UntrustAjaxPage;
import net.pterodactylus.sone.web.page.FreenetRequest;
import net.pterodactylus.sone.web.page.PageToadlet;
import net.pterodactylus.sone.web.page.PageToadletFactory;
-import net.pterodactylus.util.cache.Cache;
-import net.pterodactylus.util.cache.CacheException;
-import net.pterodactylus.util.cache.CacheItem;
-import net.pterodactylus.util.cache.DefaultCacheItem;
-import net.pterodactylus.util.cache.MemoryCache;
-import net.pterodactylus.util.cache.ValueRetriever;
import net.pterodactylus.util.collection.SetBuilder;
import net.pterodactylus.util.collection.filter.Filters;
import net.pterodactylus.util.logging.Logging;
import net.pterodactylus.util.notify.Notification;
import net.pterodactylus.util.notify.NotificationManager;
import net.pterodactylus.util.notify.TemplateNotification;
+import net.pterodactylus.util.template.ClassPathTemplateProvider;
import net.pterodactylus.util.template.CollectionSortFilter;
import net.pterodactylus.util.template.ContainsFilter;
import net.pterodactylus.util.template.DateFilter;
@@ -122,15 +117,14 @@ import net.pterodactylus.util.template.FormatFilter;
import net.pterodactylus.util.template.HtmlFilter;
import net.pterodactylus.util.template.MatchFilter;
import net.pterodactylus.util.template.ModFilter;
-import net.pterodactylus.util.template.Provider;
+import net.pterodactylus.util.template.PaginationFilter;
import net.pterodactylus.util.template.ReflectionAccessor;
import net.pterodactylus.util.template.ReplaceFilter;
import net.pterodactylus.util.template.StoreFilter;
import net.pterodactylus.util.template.Template;
-import net.pterodactylus.util.template.TemplateContext;
import net.pterodactylus.util.template.TemplateContextFactory;
-import net.pterodactylus.util.template.TemplateException;
import net.pterodactylus.util.template.TemplateParser;
+import net.pterodactylus.util.template.TemplateProvider;
import net.pterodactylus.util.template.XmlFilter;
import net.pterodactylus.util.thread.Ticker;
import net.pterodactylus.util.version.Version;
@@ -221,7 +215,6 @@ public class WebInterface implements CoreListener {
* @param sonePlugin
* The Sone plugin
*/
- @SuppressWarnings("synthetic-access")
public WebInterface(SonePlugin sonePlugin) {
this.sonePlugin = sonePlugin;
formPassword = sonePlugin.pluginRespirator().getToadletContainer().getFormPassword();
@@ -259,8 +252,9 @@ public class WebInterface implements CoreListener {
templateContextFactory.addFilter("in", new ContainsFilter());
templateContextFactory.addFilter("unique", new UniqueElementFilter());
templateContextFactory.addFilter("mod", new ModFilter());
- templateContextFactory.addProvider(Provider.TEMPLATE_CONTEXT_PROVIDER);
- templateContextFactory.addProvider(new ClassPathTemplateProvider());
+ templateContextFactory.addFilter("paginate", new PaginationFilter());
+ templateContextFactory.addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER);
+ templateContextFactory.addProvider(new ClassPathTemplateProvider(WebInterface.class, "/templates/"));
templateContextFactory.addTemplateObject("webInterface", this);
templateContextFactory.addTemplateObject("formPassword", formPassword);
@@ -749,7 +743,7 @@ public class WebInterface implements CoreListener {
}
}
} catch (IOException ioe1) {
- logger.log(Level.WARNING, "Could not parse post text: " + text, ioe1);
+ logger.log(Level.WARNING, String.format("Could not parse post text: %s", text), ioe1);
}
return Filters.filteredSet(mentionedSones, Sone.LOCAL_SONE_FILTER);
}
@@ -1011,66 +1005,4 @@ public class WebInterface implements CoreListener {
notificationManager.addNotification(imageInsertFailedNotification);
}
- /**
- * Template provider implementation that uses
- * {@link WebInterface#createReader(String)} to load templates for
- * inclusion.
- *
- * @author David âBombeâ Roden
- */
- private class ClassPathTemplateProvider implements Provider {
-
- /** Cache for templates. */
- private final Cache templateCache = new MemoryCache(new ValueRetriever() {
-
- @Override
- @SuppressWarnings("synthetic-access")
- public CacheItem retrieve(String key) throws CacheException {
- Template template = findTemplate(key);
- if (template != null) {
- return new DefaultCacheItem(template);
- }
- return null;
- }
- });
-
- /**
- * {@inheritDoc}
- */
- @Override
- @SuppressWarnings("synthetic-access")
- public Template getTemplate(TemplateContext templateContext, String templateName) {
- try {
- return templateCache.get(templateName);
- } catch (CacheException ce1) {
- logger.log(Level.WARNING, "Could not get template for " + templateName + "!", ce1);
- return null;
- }
- }
-
- /**
- * Locates a template in the class path.
- *
- * @param templateName
- * The name of the template to load
- * @return The loaded template, or {@code null} if no template could be
- * found
- */
- @SuppressWarnings("synthetic-access")
- private Template findTemplate(String templateName) {
- Reader templateReader = createReader("/templates/" + templateName);
- if (templateReader == null) {
- return null;
- }
- Template template = null;
- try {
- template = TemplateParser.parse(templateReader);
- } catch (TemplateException te1) {
- logger.log(Level.WARNING, "Could not parse template â" + templateName + "â for inclusion!", te1);
- }
- return template;
- }
-
- }
-
}