X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FFreenetTemplatePage.kt;h=c9ec17398eba15355c48abda1e9d82dad2da4143;hp=792c0ba444529dabdf14d2e12969b6eb1506706b;hb=e3da46d8947ab8a542a156069b3b24c13fd011df;hpb=1e6ed6655b808480d7dfed38afed70a84872f938 diff --git a/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt b/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt index 792c0ba..c9ec173 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt @@ -21,7 +21,6 @@ import freenet.clients.http.* import net.pterodactylus.sone.main.* import net.pterodactylus.util.template.* import net.pterodactylus.util.web.* -import java.io.* import java.lang.String.* import java.net.* import java.util.logging.* @@ -33,7 +32,7 @@ import java.util.logging.Logger.* */ open class FreenetTemplatePage( private val path: String, - private val templateContextFactory: TemplateContextFactory, + private val templateRenderer: TemplateRenderer, loaders: Loaders, template: Template, private val invalidFormPasswordRedirectTarget: String @@ -84,20 +83,19 @@ open class FreenetTemplatePage( } shortcutIcon?.let { pageNode.addForwardLink("icon", it) } - val templateContext = templateContextFactory.createTemplateContext() - templateContext.mergeContext(template.initialContext) - try { + val output = try { val start = System.nanoTime() - processTemplate(request, templateContext) - val finish = System.nanoTime() - logger.log(Level.FINEST, format("Template was rendered in %.2fms.", (finish - start) / 1000000.0)) + templateRenderer.render(template) { templateContext -> + processTemplate(request, templateContext) + }.also { + val finish = System.nanoTime() + logger.log(Level.FINEST, format("Template was rendered in %.2fms.", (finish - start) / 1000000.0)) + } } catch (re1: RedirectException) { return RedirectResponse(re1.target ?: "") } - val stringWriter = StringWriter() - template.render(templateContext, stringWriter) - pageNode.content.addChild("%", stringWriter.toString()) + pageNode.content.addChild("%", output) return response.setStatusCode(200).setStatusText("OK").setContentType("text/html").write(pageNode.outer.generate()) }