X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FJsonPage.java;h=95834371dff6db2602e5bf899eab96f2f9075301;hp=eee28ec7ac145bc9e52fa7d16b5c3e55d50e2555;hb=7cb7c8616e8504cfccde43926f7dbc97fafef277;hpb=128580ddb154ce7d4f12108a8a70a8fe12488ffe diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/JsonPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/JsonPage.java index eee28ec..9583437 100644 --- a/src/main/java/net/pterodactylus/sone/web/ajax/JsonPage.java +++ b/src/main/java/net/pterodactylus/sone/web/ajax/JsonPage.java @@ -23,20 +23,20 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import java.net.URI; import java.util.logging.Level; import java.util.logging.Logger; +import javax.annotation.Nonnull; + import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.web.SessionProvider; import net.pterodactylus.sone.web.WebInterface; -import net.pterodactylus.sone.web.page.FreenetPage; import net.pterodactylus.sone.web.page.FreenetRequest; import net.pterodactylus.util.io.Closer; import net.pterodactylus.util.web.Page; import net.pterodactylus.util.web.Response; import com.fasterxml.jackson.databind.ObjectMapper; -import freenet.clients.http.SessionManager.Session; import freenet.clients.http.ToadletContext; /** @@ -45,7 +45,7 @@ import freenet.clients.http.ToadletContext; * * @author David ‘Bombe’ Roden */ -public abstract class JsonPage implements FreenetPage { +public abstract class JsonPage implements Page { /** The logger. */ private static final Logger logger = getLogger(JsonPage.class.getName()); @@ -58,6 +58,7 @@ public abstract class JsonPage implements FreenetPage { /** The Sone web interface. */ protected final WebInterface webInterface; + private final SessionProvider sessionProvider; /** * Creates a new JSON page at the given path. @@ -70,26 +71,19 @@ public abstract class JsonPage implements FreenetPage { public JsonPage(String path, WebInterface webInterface) { this.path = path; this.webInterface = webInterface; + this.sessionProvider = webInterface; } // // ACCESSORS // - /** - * Returns the currently logged in Sone. - * - * @param toadletContext - * The toadlet context - * @return The currently logged in Sone, or {@code null} if no Sone is - * currently logged in - */ protected Sone getCurrentSone(ToadletContext toadletContext) { - return webInterface.getCurrentSoneCreatingSession(toadletContext); + return sessionProvider.getCurrentSone(toadletContext, true); } - protected Sone getCurrentSoneWithoutCreatingSession(ToadletContext toadletContext) { - return webInterface.getCurrentSoneWithoutCreatingSession(toadletContext); + protected Sone getCurrentSone(ToadletContext toadletContext, boolean createSession) { + return sessionProvider.getCurrentSone(toadletContext, createSession); } // @@ -104,7 +98,8 @@ public abstract class JsonPage implements FreenetPage { * The request to handle * @return The created JSON object */ - protected abstract JsonReturnObject createJsonObject(FreenetRequest request); + @Nonnull + protected abstract JsonReturnObject createJsonObject(@Nonnull FreenetRequest request); /** * Returns whether this command needs the form password for authentication @@ -138,6 +133,7 @@ public abstract class JsonPage implements FreenetPage { * * @return A reply signaling success */ + @Nonnull protected static JsonReturnObject createSuccessJsonObject() { return new JsonReturnObject(true); } @@ -149,6 +145,7 @@ public abstract class JsonPage implements FreenetPage { * The error that has occured * @return The JSON object, signalling failure and the error code */ + @Nonnull protected static JsonReturnObject createErrorJsonObject(String error) { return new JsonErrorReturnObject(error); } @@ -188,7 +185,7 @@ public abstract class JsonPage implements FreenetPage { } } if (requiresLogin()) { - if (getCurrentSoneWithoutCreatingSession(request.getToadletContext()) == null) { + if (getCurrentSone(request.getToadletContext(), false) == null) { return response.setStatusCode(403).setStatusText("Forbidden").setContentType("application/json").write(objectMapper.writeValueAsString(new JsonErrorReturnObject("auth-required"))); } } @@ -201,14 +198,6 @@ public abstract class JsonPage implements FreenetPage { } } - /** - * {@inheritDoc} - */ - @Override - public boolean isLinkExcepted(URI link) { - return false; - } - // // PRIVATE METHODS // @@ -226,10 +215,10 @@ public abstract class JsonPage implements FreenetPage { OutputStreamWriter writer = null; PrintWriter printWriter = null; try { - writer = new OutputStreamWriter(byteArrayOutputStream, "uTF-8"); + writer = new OutputStreamWriter(byteArrayOutputStream, "UTF-8"); printWriter = new PrintWriter(writer); t.printStackTrace(printWriter); - byteArrayOutputStream.flush(); + printWriter.flush(); return byteArrayOutputStream.toByteArray(); } catch (IOException ioe1) { /* quite not possible. */