X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FPageToadlet.java;h=17a1bab5a1004f8f82dd360dd2f1bf996201f62b;hp=222aa72f74915d9f92ccc0f99657462f14c6705e;hb=e6eb262fba58e7d1264e9ee8146353eaa0a86716;hpb=23202a30c41448d317a34ef87210bc236030ff89 diff --git a/src/main/java/net/pterodactylus/sone/web/page/PageToadlet.java b/src/main/java/net/pterodactylus/sone/web/page/PageToadlet.java index 222aa72..17a1bab 100644 --- a/src/main/java/net/pterodactylus/sone/web/page/PageToadlet.java +++ b/src/main/java/net/pterodactylus/sone/web/page/PageToadlet.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.OutputStream; import java.net.URI; +import net.pterodactylus.sone.utils.AutoCloseableBucket; import net.pterodactylus.util.web.Header; import net.pterodactylus.util.web.Method; import net.pterodactylus.util.web.Page; @@ -33,9 +34,7 @@ import freenet.clients.http.Toadlet; import freenet.clients.http.ToadletContext; import freenet.clients.http.ToadletContextClosedException; import freenet.support.MultiValueTable; -import freenet.support.api.Bucket; import freenet.support.api.HTTPRequest; -import freenet.support.io.Closer; /** * {@link Toadlet} implementation that is wrapped around a {@link Page}. @@ -145,31 +144,18 @@ public class PageToadlet extends Toadlet implements LinkEnabledCallback, LinkFil * if the toadlet context is closed */ private void handleRequest(FreenetRequest pageRequest) throws IOException, ToadletContextClosedException { - Bucket pageBucket = null; - OutputStream pageBucketOutputStream = null; - Response pageResponse; - try { - pageBucket = pageRequest.getToadletContext().getBucketFactory().makeBucket(-1); - pageBucketOutputStream = pageBucket.getOutputStream(); - pageResponse = page.handleRequest(pageRequest, new Response(pageBucketOutputStream)); - } catch (IOException ioe1) { - Closer.close(pageBucket); - throw ioe1; - } finally { - Closer.close(pageBucketOutputStream); - } - MultiValueTable headers = new MultiValueTable(); - if (pageResponse.getHeaders() != null) { - for (Header header : pageResponse.getHeaders()) { - for (String value : header) { - headers.put(header.getName(), value); + try (AutoCloseableBucket pageBucket = new AutoCloseableBucket(pageRequest.getToadletContext().getBucketFactory().makeBucket(-1)); + OutputStream pageBucketOutputStream = pageBucket.getBucket().getOutputStream()) { + Response pageResponse = page.handleRequest(pageRequest, new Response(pageBucketOutputStream)); + MultiValueTable headers = new MultiValueTable(); + if (pageResponse.getHeaders() != null) { + for (Header header : pageResponse.getHeaders()) { + for (String value : header) { + headers.put(header.getName(), value); + } } } - } - try { - writeReply(pageRequest.getToadletContext(), pageResponse.getStatusCode(), pageResponse.getContentType(), pageResponse.getStatusText(), headers, pageBucket); - } finally { - Closer.close(pageBucket); + writeReply(pageRequest.getToadletContext(), pageResponse.getStatusCode(), pageResponse.getContentType(), pageResponse.getStatusText(), headers, pageBucket.getBucket()); } }