Use optional session in web interface.
[Sone.git] / src / main / java / net / pterodactylus / sone / web / WebInterface.java
index 96c76f7..02a5dd5 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.web;
 
+import static java.util.logging.Logger.getLogger;
 import static net.pterodactylus.util.template.TemplateParser.parse;
 
 import java.io.IOException;
@@ -128,7 +129,6 @@ 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.io.Closer;
-import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.notify.Notification;
 import net.pterodactylus.util.notify.NotificationManager;
 import net.pterodactylus.util.notify.TemplateNotification;
@@ -152,6 +152,7 @@ import net.pterodactylus.util.web.RedirectPage;
 import net.pterodactylus.util.web.StaticPage;
 import net.pterodactylus.util.web.TemplatePage;
 
+import com.google.common.base.Optional;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.eventbus.Subscribe;
@@ -173,7 +174,7 @@ import freenet.support.api.HTTPRequest;
 public class WebInterface {
 
        /** The logger. */
-       private static final Logger logger = Logging.getLogger(WebInterface.class);
+       private static final Logger logger = getLogger("Sone.Web.Main");
 
        /** The notification manager. */
        private final NotificationManager notificationManager = new NotificationManager();
@@ -360,37 +361,16 @@ public class WebInterface {
                return templateContextFactory;
        }
 
-       /**
-        * Returns the current session, creating a new session if there is no
-        * current session.
-        *
-        * @param toadletContenxt
-        *            The toadlet context
-        * @return The current session, or {@code null} if there is no current
-        *         session
-        */
        public Session getCurrentSession(ToadletContext toadletContenxt) {
-               return getCurrentSession(toadletContenxt, true);
+               return getCurrentSession(toadletContenxt, true).get();
        }
 
-       /**
-        * Returns the current session, creating a new session if there is no
-        * current session and {@code create} is {@code true}.
-        *
-        * @param toadletContenxt
-        *            The toadlet context
-        * @param create
-        *            {@code true} to create a new session if there is no current
-        *            session, {@code false} otherwise
-        * @return The current session, or {@code null} if there is no current
-        *         session
-        */
-       public Session getCurrentSession(ToadletContext toadletContenxt, boolean create) {
+       public Optional<Session> getCurrentSession(ToadletContext toadletContenxt, boolean createSession) {
                Session session = getSessionManager().useSession(toadletContenxt);
-               if (create && (session == null)) {
+               if (createSession && (session == null)) {
                        session = getSessionManager().createSession(UUID.randomUUID().toString(), toadletContenxt);
                }
-               return session;
+               return Optional.fromNullable(session);
        }
 
        /**
@@ -410,18 +390,18 @@ public class WebInterface {
         *
         * @param toadletContext
         *            The toadlet context
-        * @param create
+        * @param createSession
         *            {@code true} to create a new session if no session exists,
         *            {@code false} to not create a new session
         * @return The currently logged in Sone, or {@code null} if no Sone is
         *         currently logged in
         */
-       public Sone getCurrentSone(ToadletContext toadletContext, boolean create) {
+       public Sone getCurrentSone(ToadletContext toadletContext, boolean createSession) {
                Collection<Sone> localSones = getCore().getLocalSones();
                if (localSones.size() == 1) {
                        return localSones.iterator().next();
                }
-               return getCurrentSone(getCurrentSession(toadletContext, create));
+               return getCurrentSone(getCurrentSession(toadletContext, createSession));
        }
 
        /**
@@ -432,15 +412,15 @@ public class WebInterface {
         * @return The currently logged in Sone, or {@code null} if no Sone is
         *         currently logged in
         */
-       public Sone getCurrentSone(Session session) {
-               if (session == null) {
+       public Sone getCurrentSone(Optional<Session> session) {
+               if (!session.isPresent()) {
                        return null;
                }
-               String soneId = (String) session.getAttribute("Sone.CurrentSone");
+               String soneId = (String) session.get().getAttribute("Sone.CurrentSone");
                if (soneId == null) {
                        return null;
                }
-               return getCore().getLocalSone(soneId, false);
+               return getCore().getLocalSone(soneId);
        }
 
        /**