Allow pages to add HTTP headers to the response.
[Sone.git] / src / main / java / net / pterodactylus / sone / web / page / FreenetTemplatePage.java
index addbf7f..14e48ac 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - FreenetTemplatePage.java - Copyright © 2010–2012 David Roden
+ * Sone - FreenetTemplatePage.java - Copyright © 2010–2013 David Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,6 +17,8 @@
 
 package net.pterodactylus.sone.web.page;
 
+import static java.util.logging.Logger.getLogger;
+
 import java.io.IOException;
 import java.io.StringWriter;
 import java.net.URI;
@@ -28,10 +30,10 @@ import java.util.Map.Entry;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.template.Template;
 import net.pterodactylus.util.template.TemplateContext;
 import net.pterodactylus.util.template.TemplateContextFactory;
+import net.pterodactylus.util.web.Header;
 import net.pterodactylus.util.web.Method;
 import net.pterodactylus.util.web.Page;
 import net.pterodactylus.util.web.RedirectResponse;
@@ -51,7 +53,7 @@ import freenet.support.HTMLNode;
 public class FreenetTemplatePage implements FreenetPage, LinkEnabledCallback {
 
        /** The logger. */
-       private static final Logger logger = Logging.getLogger(FreenetTemplatePage.class);
+       private static final Logger logger = getLogger("Sone.Web.Freenet");
 
        /** The path of the page. */
        private final String path;
@@ -156,7 +158,7 @@ public class FreenetTemplatePage implements FreenetPage, LinkEnabledCallback {
                        long start = System.nanoTime();
                        processTemplate(request, templateContext);
                        long finish = System.nanoTime();
-                       logger.log(Level.FINEST, String.format("Template was rendered in %dms.", ((finish - start) / 1000) / 1000.0));
+                       logger.log(Level.FINEST, String.format("Template was rendered in %.2fms.", (finish - start) / 1000000.0));
                } catch (RedirectException re1) {
                        return new RedirectResponse(re1.getTarget());
                }
@@ -167,6 +169,12 @@ public class FreenetTemplatePage implements FreenetPage, LinkEnabledCallback {
 
                postProcess(request, templateContext);
 
+               for (Header header : getAdditionalHeaders(request)) {
+                       for (String value : header) {
+                               response.addHeader(header.getName(), value);
+                       }
+               }
+
                return response.setStatusCode(200).setStatusText("OK").setContentType("text/html").write(pageNode.outer.generate());
        }
 
@@ -235,6 +243,10 @@ public class FreenetTemplatePage implements FreenetPage, LinkEnabledCallback {
                return null;
        }
 
+       protected Iterable<Header> getAdditionalHeaders(FreenetRequest request) {
+               return Collections.emptyList();
+       }
+
        /**
         * Returns additional &lt;link&gt; nodes for the HTML’s &lt;head&gt; node.
         *