From: David ‘Bombe’ Roden Date: Tue, 7 Apr 2020 19:12:22 +0000 (+0200) Subject: 🔥 Delegate session provider in web interface X-Git-Tag: v82^2~23 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=75682f86e69230600e6da4efce9d0f4bf9adf714;p=Sone.git 🔥 Delegate session provider in web interface --- diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index d8d5e26..40e5708 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -23,7 +23,6 @@ import static java.util.logging.Logger.getLogger; import java.util.Collection; import java.util.Set; import java.util.TimeZone; -import java.util.UUID; import java.util.logging.Logger; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -88,15 +87,12 @@ import net.pterodactylus.util.template.TemplateContextFactory; import net.pterodactylus.util.web.RedirectPage; import net.pterodactylus.util.web.TemplatePage; -import freenet.clients.http.SessionManager; -import freenet.clients.http.SessionManager.Session; -import freenet.clients.http.ToadletContext; - import com.codahale.metrics.*; import com.google.common.base.Optional; import com.google.common.collect.ImmutableSet; import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; +import freenet.clients.http.ToadletContext; /** * Bundles functionality that a web interface of a Freenet plugin needs, e.g. @@ -140,6 +136,7 @@ public class WebInterface implements SessionProvider { private final PageToadletRegistry pageToadletRegistry; private final MetricRegistry metricRegistry; private final Translation translation; + private final SessionProvider sessionProvider; /** The “new post” notification. */ private final ListNotification newPostNotification; @@ -162,7 +159,8 @@ public class WebInterface implements SessionProvider { RenderFilter renderFilter, LinkedElementRenderFilter linkedElementRenderFilter, PageToadletRegistry pageToadletRegistry, MetricRegistry metricRegistry, Translation translation, L10nFilter l10nFilter, - NotificationManager notificationManager, @Named("newRemotePost") ListNotification newPostNotification, + NotificationManager notificationManager, SessionProvider sessionProvider, + @Named("newRemotePost") ListNotification newPostNotification, @Named("newRemotePostReply") ListNotification newReplyNotification, @Named("localPost") ListNotification localPostNotification, @Named("localReply") ListNotification localReplyNotification) { @@ -182,6 +180,7 @@ public class WebInterface implements SessionProvider { this.l10nFilter = l10nFilter; this.translation = translation; this.notificationManager = notificationManager; + this.sessionProvider = sessionProvider; this.newPostNotification = newPostNotification; this.newReplyNotification = newReplyNotification; this.localPostNotification = localPostNotification; @@ -216,75 +215,15 @@ public class WebInterface implements SessionProvider { return templateContextFactory; } - private Session getCurrentSessionWithoutCreation(ToadletContext toadletContenxt) { - return getSessionManager().useSession(toadletContenxt); - } - - private Session getOrCreateCurrentSession(ToadletContext toadletContenxt) { - Session session = getCurrentSessionWithoutCreation(toadletContenxt); - if (session == null) { - session = getSessionManager().createSession(UUID.randomUUID().toString(), toadletContenxt); - } - return session; - } - - public Sone getCurrentSoneCreatingSession(ToadletContext toadletContext) { - Collection localSones = getCore().getLocalSones(); - if (localSones.size() == 1) { - return localSones.iterator().next(); - } - return getCurrentSone(getOrCreateCurrentSession(toadletContext)); - } - - public Sone getCurrentSoneWithoutCreatingSession(ToadletContext toadletContext) { - Collection localSones = getCore().getLocalSones(); - if (localSones.size() == 1) { - return localSones.iterator().next(); - } - return getCurrentSone(getCurrentSessionWithoutCreation(toadletContext)); - } - - /** - * Returns the currently logged in Sone. - * - * @param session - * The session - * @return The currently logged in Sone, or {@code null} if no Sone is - * currently logged in - */ - private Sone getCurrentSone(Session session) { - if (session == null) { - return null; - } - String soneId = (String) session.getAttribute("Sone.CurrentSone"); - if (soneId == null) { - return null; - } - return getCore().getLocalSone(soneId); - } - - @Override @Nullable + @Override public Sone getCurrentSone(@Nonnull ToadletContext toadletContext) { - return getCurrentSoneWithoutCreatingSession(toadletContext); + return sessionProvider.getCurrentSone(toadletContext); } - /** - * Sets the currently logged in Sone. - * - * @param toadletContext - * The toadlet context - * @param sone - * The Sone to set as currently logged in - */ @Override public void setCurrentSone(@Nonnull ToadletContext toadletContext, @Nullable Sone sone) { - Session session = getOrCreateCurrentSession(toadletContext); - if (sone == null) { - session.removeAttribute("Sone.CurrentSone"); - } else { - session.setAttribute("Sone.CurrentSone", sone.getId()); - } + sessionProvider.setCurrentSone(toadletContext, sone); } /** @@ -311,15 +250,6 @@ public class WebInterface implements SessionProvider { } /** - * Returns the session manager of the node. - * - * @return The node’s session manager - */ - public SessionManager getSessionManager() { - return sonePlugin.pluginRespirator().getSessionManager("Sone"); - } - - /** * Returns the node’s form password. * * @return The form password diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/TestObjects.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/TestObjects.kt index 6f77a9c..ffd6f15 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/ajax/TestObjects.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/ajax/TestObjects.kt @@ -81,8 +81,6 @@ open class TestObjects { init { whenever(webInterface.templateContextFactory).thenReturn(TemplateContextFactory()) whenever(webInterface.getCurrentSone(ArgumentMatchers.eq(toadletContext))).thenReturn(currentSone) - whenever(webInterface.getCurrentSoneCreatingSession(toadletContext)).thenReturn(currentSone) - whenever(webInterface.getCurrentSoneWithoutCreatingSession(toadletContext)).thenReturn(currentSone) whenever(webInterface.core).thenReturn(core) whenever(webInterface.formPassword).then { formPassword } whenever(webInterface.getNotifications(currentSone)).thenAnswer { notifications.values } @@ -140,8 +138,6 @@ open class TestObjects { protected fun unsetCurrentSone() { whenever(webInterface.getCurrentSone(ArgumentMatchers.eq(toadletContext))).thenReturn(null) - whenever(webInterface.getCurrentSoneWithoutCreatingSession(toadletContext)).thenReturn(null) - whenever(webInterface.getCurrentSoneCreatingSession(toadletContext)).thenReturn(null) } protected fun postRequest() { diff --git a/src/test/kotlin/net/pterodactylus/sone/web/pages/WebPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/pages/WebPageTest.kt index 096b3e6..badc2bc 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/pages/WebPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/pages/WebPageTest.kt @@ -104,9 +104,7 @@ open class WebPageTest(pageSupplier: (WebInterface, Loaders, TemplateRenderer) - } private fun setupWebInterface() { - whenever(webInterface.getCurrentSoneCreatingSession(eq(toadletContext))).thenReturn(currentSone) whenever(webInterface.getCurrentSone(eq(toadletContext))).thenReturn(currentSone) - whenever(webInterface.getCurrentSoneWithoutCreatingSession(eq(toadletContext))).thenReturn(currentSone) whenever(webInterface.getNotifications(currentSone)).then { notifications.values } whenever(webInterface.getNotification(anyString())).then { notifications[it[0]].asOptional() } whenever(webInterface.translation).thenReturn(translation) @@ -172,9 +170,7 @@ open class WebPageTest(pageSupplier: (WebInterface, Loaders, TemplateRenderer) - } fun unsetCurrentSone() { - whenever(webInterface.getCurrentSoneCreatingSession(eq(toadletContext))).thenReturn(null) whenever(webInterface.getCurrentSone(eq(toadletContext))).thenReturn(null) - whenever(webInterface.getCurrentSoneWithoutCreatingSession(eq(toadletContext))).thenReturn(null) } fun addOwnIdentity(ownIdentity: OwnIdentity) {