X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=a173d16b035e6bb9cdff996a9646884455c0075a;hb=f46c1adf87d003ada9950708e94c9da9737e2d8d;hp=3d131c851fb4442980f3170a79706f5a05350d55;hpb=110a933c2724aba6a604fc5eed6372ff1e1e6144;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 3d131c8..a173d16 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -19,9 +19,7 @@ package net.pterodactylus.sone.web; import static com.google.common.collect.FluentIterable.from; import static java.util.logging.Logger.getLogger; -import static net.pterodactylus.util.template.TemplateParser.parse; -import java.io.StringReader; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -40,25 +38,7 @@ import javax.annotation.Nullable; import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.core.ElementLoader; -import net.pterodactylus.sone.core.event.ImageInsertAbortedEvent; -import net.pterodactylus.sone.core.event.ImageInsertFailedEvent; -import net.pterodactylus.sone.core.event.ImageInsertFinishedEvent; -import net.pterodactylus.sone.core.event.ImageInsertStartedEvent; -import net.pterodactylus.sone.core.event.MarkPostKnownEvent; -import net.pterodactylus.sone.core.event.MarkPostReplyKnownEvent; -import net.pterodactylus.sone.core.event.MarkSoneKnownEvent; -import net.pterodactylus.sone.core.event.NewPostFoundEvent; -import net.pterodactylus.sone.core.event.NewPostReplyFoundEvent; -import net.pterodactylus.sone.core.event.NewSoneFoundEvent; -import net.pterodactylus.sone.core.event.PostRemovedEvent; -import net.pterodactylus.sone.core.event.PostReplyRemovedEvent; -import net.pterodactylus.sone.core.event.SoneInsertAbortedEvent; -import net.pterodactylus.sone.core.event.SoneInsertedEvent; -import net.pterodactylus.sone.core.event.SoneInsertingEvent; -import net.pterodactylus.sone.core.event.SoneLockedEvent; -import net.pterodactylus.sone.core.event.SoneRemovedEvent; -import net.pterodactylus.sone.core.event.SoneUnlockedEvent; -import net.pterodactylus.sone.core.event.UpdateFoundEvent; +import net.pterodactylus.sone.core.event.*; import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; @@ -113,53 +93,7 @@ import net.pterodactylus.sone.web.ajax.UnlockSoneAjaxPage; import net.pterodactylus.sone.web.ajax.UntrustAjaxPage; import net.pterodactylus.sone.web.page.FreenetRequest; import net.pterodactylus.sone.web.page.TemplateRenderer; -import net.pterodactylus.sone.web.pages.AboutPage; -import net.pterodactylus.sone.web.pages.BookmarkPage; -import net.pterodactylus.sone.web.pages.BookmarksPage; -import net.pterodactylus.sone.web.pages.CreateAlbumPage; -import net.pterodactylus.sone.web.pages.CreatePostPage; -import net.pterodactylus.sone.web.pages.CreateReplyPage; -import net.pterodactylus.sone.web.pages.CreateSonePage; -import net.pterodactylus.sone.web.pages.DeleteAlbumPage; -import net.pterodactylus.sone.web.pages.DeleteImagePage; -import net.pterodactylus.sone.web.pages.DeletePostPage; -import net.pterodactylus.sone.web.pages.DeleteProfileFieldPage; -import net.pterodactylus.sone.web.pages.DeleteReplyPage; -import net.pterodactylus.sone.web.pages.DeleteSonePage; -import net.pterodactylus.sone.web.pages.DismissNotificationPage; -import net.pterodactylus.sone.web.pages.DistrustPage; -import net.pterodactylus.sone.web.pages.EditAlbumPage; -import net.pterodactylus.sone.web.pages.EditImagePage; -import net.pterodactylus.sone.web.pages.EditProfileFieldPage; -import net.pterodactylus.sone.web.pages.EditProfilePage; -import net.pterodactylus.sone.web.pages.EmptyAlbumTitlePage; -import net.pterodactylus.sone.web.pages.EmptyImageTitlePage; -import net.pterodactylus.sone.web.pages.FollowSonePage; -import net.pterodactylus.sone.web.pages.GetImagePage; -import net.pterodactylus.sone.web.pages.ImageBrowserPage; -import net.pterodactylus.sone.web.pages.IndexPage; -import net.pterodactylus.sone.web.pages.InvalidPage; -import net.pterodactylus.sone.web.pages.KnownSonesPage; -import net.pterodactylus.sone.web.pages.LikePage; -import net.pterodactylus.sone.web.pages.LockSonePage; -import net.pterodactylus.sone.web.pages.LoginPage; -import net.pterodactylus.sone.web.pages.LogoutPage; -import net.pterodactylus.sone.web.pages.MarkAsKnownPage; -import net.pterodactylus.sone.web.pages.NewPage; -import net.pterodactylus.sone.web.pages.NoPermissionPage; -import net.pterodactylus.sone.web.pages.OptionsPage; -import net.pterodactylus.sone.web.pages.RescuePage; -import net.pterodactylus.sone.web.pages.SearchPage; -import net.pterodactylus.sone.web.pages.SoneTemplatePage; -import net.pterodactylus.sone.web.pages.TrustPage; -import net.pterodactylus.sone.web.pages.UnbookmarkPage; -import net.pterodactylus.sone.web.pages.UnfollowSonePage; -import net.pterodactylus.sone.web.pages.UnlikePage; -import net.pterodactylus.sone.web.pages.UnlockSonePage; -import net.pterodactylus.sone.web.pages.UntrustPage; -import net.pterodactylus.sone.web.pages.UploadImagePage; -import net.pterodactylus.sone.web.pages.ViewPostPage; -import net.pterodactylus.sone.web.pages.ViewSonePage; +import net.pterodactylus.sone.web.pages.*; import net.pterodactylus.util.notify.Notification; import net.pterodactylus.util.notify.NotificationManager; import net.pterodactylus.util.notify.TemplateNotification; @@ -173,6 +107,7 @@ import freenet.clients.http.SessionManager.Session; import freenet.clients.http.ToadletContext; import freenet.l10n.BaseL10n; +import com.codahale.metrics.*; import com.google.common.base.Optional; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableSet; @@ -222,6 +157,7 @@ public class WebInterface implements SessionProvider { private final L10nFilter l10nFilter; private final PageToadletRegistry pageToadletRegistry; + private final MetricRegistry metricRegistry; /** The “new Sone” notification. */ private final ListNotification newSoneNotification; @@ -273,7 +209,7 @@ public class WebInterface implements SessionProvider { ParserFilter parserFilter, ShortenFilter shortenFilter, RenderFilter renderFilter, LinkedElementRenderFilter linkedElementRenderFilter, - PageToadletRegistry pageToadletRegistry) { + PageToadletRegistry pageToadletRegistry, MetricRegistry metricRegistry) { this.sonePlugin = sonePlugin; this.loaders = loaders; this.listNotificationFilter = listNotificationFilter; @@ -286,6 +222,7 @@ public class WebInterface implements SessionProvider { this.renderFilter = renderFilter; this.linkedElementRenderFilter = linkedElementRenderFilter; this.pageToadletRegistry = pageToadletRegistry; + this.metricRegistry = metricRegistry; formPassword = sonePlugin.pluginRespirator().getToadletContainer().getFormPassword(); soneTextParser = new SoneTextParser(getCore(), getCore()); l10nFilter = new L10nFilter(getL10n()); @@ -659,6 +596,8 @@ public class WebInterface implements SessionProvider { pageToadletRegistry.addPage(new EmptyImageTitlePage(this, loaders, templateRenderer)); pageToadletRegistry.addPage(new EmptyAlbumTitlePage(this, loaders, templateRenderer)); pageToadletRegistry.addPage(new DismissNotificationPage(this, loaders, templateRenderer)); + pageToadletRegistry.addPage(new DebugPage(this, loaders, templateRenderer)); + pageToadletRegistry.addDebugPage(new MetricsPage(this, loaders, templateRenderer, metricRegistry)); pageToadletRegistry.addPage(loaders.loadStaticPage("css/", "/static/css/", "text/css")); pageToadletRegistry.addPage(loaders.loadStaticPage("javascript/", "/static/javascript/", "text/javascript")); pageToadletRegistry.addPage(loaders.loadStaticPage("images/", "/static/images/", "image/png")); @@ -768,7 +707,7 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void newSoneFound(NewSoneFoundEvent newSoneFoundEvent) { - newSoneNotification.add(newSoneFoundEvent.sone()); + newSoneNotification.add(newSoneFoundEvent.getSone()); if (!hasFirstStartNotification()) { notificationManager.addNotification(newSoneNotification); } @@ -782,7 +721,7 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void newPostFound(NewPostFoundEvent newPostFoundEvent) { - Post post = newPostFoundEvent.post(); + Post post = newPostFoundEvent.getPost(); boolean isLocal = post.getSone().isLocal(); if (isLocal) { localPostNotification.add(post); @@ -808,7 +747,7 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void newReplyFound(NewPostReplyFoundEvent newPostReplyFoundEvent) { - PostReply reply = newPostReplyFoundEvent.postReply(); + PostReply reply = newPostReplyFoundEvent.getPostReply(); boolean isLocal = reply.getSone().isLocal(); if (isLocal) { localReplyNotification.add(reply); @@ -834,27 +773,27 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void markSoneKnown(MarkSoneKnownEvent markSoneKnownEvent) { - newSoneNotification.remove(markSoneKnownEvent.sone()); + newSoneNotification.remove(markSoneKnownEvent.getSone()); } @Subscribe public void markPostKnown(MarkPostKnownEvent markPostKnownEvent) { - removePost(markPostKnownEvent.post()); + removePost(markPostKnownEvent.getPost()); } @Subscribe public void markReplyKnown(MarkPostReplyKnownEvent markPostReplyKnownEvent) { - removeReply(markPostReplyKnownEvent.postReply()); + removeReply(markPostReplyKnownEvent.getPostReply()); } @Subscribe public void soneRemoved(SoneRemovedEvent soneRemovedEvent) { - newSoneNotification.remove(soneRemovedEvent.sone()); + newSoneNotification.remove(soneRemovedEvent.getSone()); } @Subscribe public void postRemoved(PostRemovedEvent postRemovedEvent) { - removePost(postRemovedEvent.post()); + removePost(postRemovedEvent.getPost()); } private void removePost(Post post) { @@ -867,7 +806,7 @@ public class WebInterface implements SessionProvider { @Subscribe public void replyRemoved(PostReplyRemovedEvent postReplyRemovedEvent) { - removeReply(postReplyRemovedEvent.postReply()); + removeReply(postReplyRemovedEvent.getPostReply()); } private void removeReply(PostReply reply) { @@ -886,7 +825,7 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void soneLocked(SoneLockedEvent soneLockedEvent) { - final Sone sone = soneLockedEvent.sone(); + final Sone sone = soneLockedEvent.getSone(); ScheduledFuture tickerObject = ticker.schedule(new Runnable() { @Override @@ -907,8 +846,8 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void soneUnlocked(SoneUnlockedEvent soneUnlockedEvent) { - lockedSonesNotification.remove(soneUnlockedEvent.sone()); - lockedSonesTickerObjects.remove(soneUnlockedEvent.sone()).cancel(false); + lockedSonesNotification.remove(soneUnlockedEvent.getSone()); + lockedSonesTickerObjects.remove(soneUnlockedEvent.getSone()).cancel(false); } /** @@ -919,9 +858,9 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void soneInserting(SoneInsertingEvent soneInsertingEvent) { - TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertingEvent.sone()); + TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertingEvent.getSone()); soneInsertNotification.set("soneStatus", "inserting"); - if (soneInsertingEvent.sone().getOptions().isSoneInsertNotificationEnabled()) { + if (soneInsertingEvent.getSone().getOptions().isSoneInsertNotificationEnabled()) { notificationManager.addNotification(soneInsertNotification); } } @@ -934,10 +873,10 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void soneInserted(SoneInsertedEvent soneInsertedEvent) { - TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertedEvent.sone()); + TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertedEvent.getSone()); soneInsertNotification.set("soneStatus", "inserted"); - soneInsertNotification.set("insertDuration", soneInsertedEvent.insertDuration() / 1000); - if (soneInsertedEvent.sone().getOptions().isSoneInsertNotificationEnabled()) { + soneInsertNotification.set("insertDuration", soneInsertedEvent.getInsertDuration() / 1000); + if (soneInsertedEvent.getSone().getOptions().isSoneInsertNotificationEnabled()) { notificationManager.addNotification(soneInsertNotification); } } @@ -950,10 +889,10 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void soneInsertAborted(SoneInsertAbortedEvent soneInsertAbortedEvent) { - TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertAbortedEvent.sone()); + TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertAbortedEvent.getSone()); soneInsertNotification.set("soneStatus", "insert-aborted"); - soneInsertNotification.set("insert-error", soneInsertAbortedEvent.cause()); - if (soneInsertAbortedEvent.sone().getOptions().isSoneInsertNotificationEnabled()) { + soneInsertNotification.set("insert-error", soneInsertAbortedEvent.getCause()); + if (soneInsertAbortedEvent.getSone().getOptions().isSoneInsertNotificationEnabled()) { notificationManager.addNotification(soneInsertNotification); } } @@ -966,10 +905,10 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void updateFound(UpdateFoundEvent updateFoundEvent) { - newVersionNotification.set("latestVersion", updateFoundEvent.version()); - newVersionNotification.set("latestEdition", updateFoundEvent.latestEdition()); - newVersionNotification.set("releaseTime", updateFoundEvent.releaseTime()); - newVersionNotification.set("disruptive", updateFoundEvent.disruptive()); + newVersionNotification.set("latestVersion", updateFoundEvent.getVersion()); + newVersionNotification.set("latestEdition", updateFoundEvent.getLatestEdition()); + newVersionNotification.set("releaseTime", updateFoundEvent.getReleaseTime()); + newVersionNotification.set("disruptive", updateFoundEvent.isDisruptive()); notificationManager.addNotification(newVersionNotification); } @@ -981,7 +920,7 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void imageInsertStarted(ImageInsertStartedEvent imageInsertStartedEvent) { - insertingImagesNotification.add(imageInsertStartedEvent.image()); + insertingImagesNotification.add(imageInsertStartedEvent.getImage()); notificationManager.addNotification(insertingImagesNotification); } @@ -993,7 +932,7 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void imageInsertAborted(ImageInsertAbortedEvent imageInsertAbortedEvent) { - insertingImagesNotification.remove(imageInsertAbortedEvent.image()); + insertingImagesNotification.remove(imageInsertAbortedEvent.getImage()); } /** @@ -1004,8 +943,8 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void imageInsertFinished(ImageInsertFinishedEvent imageInsertFinishedEvent) { - insertingImagesNotification.remove(imageInsertFinishedEvent.image()); - insertedImagesNotification.add(imageInsertFinishedEvent.image()); + insertingImagesNotification.remove(imageInsertFinishedEvent.getImage()); + insertedImagesNotification.add(imageInsertFinishedEvent.getImage()); notificationManager.addNotification(insertedImagesNotification); } @@ -1017,9 +956,14 @@ public class WebInterface implements SessionProvider { */ @Subscribe public void imageInsertFailed(ImageInsertFailedEvent imageInsertFailedEvent) { - insertingImagesNotification.remove(imageInsertFailedEvent.image()); - imageInsertFailedNotification.add(imageInsertFailedEvent.image()); + insertingImagesNotification.remove(imageInsertFailedEvent.getImage()); + imageInsertFailedNotification.add(imageInsertFailedEvent.getImage()); notificationManager.addNotification(imageInsertFailedNotification); } + @Subscribe + public void debugActivated(@Nonnull DebugActivatedEvent debugActivatedEvent) { + pageToadletRegistry.activateDebugMode(); + } + }