import net.pterodactylus.sone.web.ajax.GetTranslationPage;
import net.pterodactylus.sone.web.ajax.LikeAjaxPage;
import net.pterodactylus.sone.web.ajax.LockSoneAjaxPage;
-import net.pterodactylus.sone.web.ajax.MarkPostAsKnownPage;
-import net.pterodactylus.sone.web.ajax.MarkReplyAsKnownPage;
+import net.pterodactylus.sone.web.ajax.MarkAsKnownAjaxPage;
import net.pterodactylus.sone.web.ajax.MoveProfileFieldAjaxPage;
import net.pterodactylus.sone.web.ajax.TrustAjaxPage;
import net.pterodactylus.sone.web.ajax.UnfollowSoneAjaxPage;
import net.pterodactylus.sone.web.page.PageToadlet;
import net.pterodactylus.sone.web.page.PageToadletFactory;
import net.pterodactylus.sone.web.page.StaticPage;
+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.logging.Logging;
import net.pterodactylus.util.notify.Notification;
import net.pterodactylus.util.notify.NotificationManager;
pageToadlets.add(pageToadletFactory.createPageToadlet(new CreateReplyAjaxPage(this)));
pageToadlets.add(pageToadletFactory.createPageToadlet(new GetReplyAjaxPage(this, replyTemplate)));
pageToadlets.add(pageToadletFactory.createPageToadlet(new GetPostAjaxPage(this, postTemplate)));
- pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkPostAsKnownPage(this)));
- pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkReplyAsKnownPage(this)));
+ pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkAsKnownAjaxPage(this)));
pageToadlets.add(pageToadletFactory.createPageToadlet(new DeletePostAjaxPage(this)));
pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteReplyAjaxPage(this)));
pageToadlets.add(pageToadletFactory.createPageToadlet(new LockSoneAjaxPage(this)));
*/
private class ClassPathTemplateProvider implements Provider {
+ /** Cache for templates. */
+ private final Cache<String, Template> templateCache = new MemoryCache<String, Template>(new ValueRetriever<String, Template>() {
+
+ @Override
+ @SuppressWarnings("synthetic-access")
+ public CacheItem<Template> retrieve(String key) throws CacheException {
+ Template template = findTemplate(key);
+ if (template != null) {
+ return new DefaultCacheItem<Template>(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;