-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add test showing how to use @{...}
and @{'...'}
in html templates
#524
Conversation
@@ -39,5 +39,10 @@ <h1>Hello, ${who}!</h1> | |||
<img id="img-from-play-local-file" src="/app/public/img/banksy-kyiv-7.jpeg" width="300"/> | |||
</div> | |||
|
|||
<div> | |||
<a id="repeat" href="@{controllers.HelloWorld.repeat(666)}">Repeat 666 times</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice trick! 👍
Thanks for the hint!
Remove "play.templates.ExecutableTemplates#__reverseWithCheck*()" methods as the only consumer ("play.templates.GroovyTemplateCompiler#action()") was gone with this "play.templates.ExecutableTemplates" class' debut in commit 185ca44. Andrei's guess is that most of code in ExecutableTemplates is not used anymore. It was used in "default" groovy templates in Play1 which were replaced by "faster groovy templates" in Replay. But leave that cleanup for later! While at it, improve their counterpart in fastergt plugin ("GTJavaBase1xImpl" and "GTPreCompiler1xImpl" classes and PR replay-framework#524), to use the other two methods: "__reverseWithCheck_absolute_true()" and "__reverseWithCheck_absolute_false()". Ref: https://github.com/replay-framework/replay/pull/506/files#r1951693547 Fixes: 185ca44 ("remove old html templates implementation play.templates.TemplateCompiler")
Interesting! Workflow failed on test
The test output is:
And no outputs. 🤷 Testing locally (with HelloWorldSpec > openHelloWorldPage() STANDARD_OUT
09:56:31,180 INFO [play.PlayLoggingSetup] ~ Logging configuration: jar:file:/path/to/re-play1/framework/build/libs/framework-2.6.4-SNAPSHOT.jar!/log4j.properties
09:56:31,184 INFO [play.Play] ~ Starting /path/to/re-play1/replay-tests/helloworld
09:56:31,186 INFO [play.plugins.PluginCollection] ~ Found plugin descriptors: [play.plugins]
09:56:31,205 INFO [play.Invoker] ~ Replay thread pool size: 17, mode: PROD
09:56:31,220 INFO [play.jobs.JobsPlugin] ~ Init jobs pool of size 10
09:56:31,221 INFO [play.db.jpa.JPAPlugin] ~ JPA initialized in 0 ms.
09:56:31,469 INFO [play.Play] ~ Application 'helloworld' is now started !
09:56:31,476 INFO [play.server.javanet.Server] ~ Listening for HTTP at http://0.0.0.0:46205 ...
09:56:31,734 INFO [com.codeborne.selenide.WebDriverThreadLocalContainer] ~ No webdriver is bound to current thread: 1 - let's create a new webdriver
09:56:32,896 WARN [org.openqa.selenium.firefox.FirefoxDriver] ~ CDP support for Firefox is deprecated and will be removed in future versions. Please switch to WebDriver BiDi.
09:56:32,905 INFO [com.codeborne.selenide.webdriver.BrowserResizer] ~ Set browser size to 1366x768
09:56:33,174 INFO [com.codeborne.selenide.webdriver.WebDriverFactory] ~ Selenide 7.7.1 / Selenium 4.28.0 / firefox 135.0 linux
09:56:34,241 ERROR [play.server.javanet.PlayHandler] ~ serveStatic for request GET /img/benks-kyiv-4.jpeg
java.lang.RuntimeException: java.nio.file.FileAlreadyExistsException: /path/to/re-play1/replay-tests/helloworld/tmp/errors/404.txt
at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:93)
at play.templates.TemplateLoader.load(TemplateLoader.java:82)
at play.server.ServerHelper.generateNotFoundResponse(ServerHelper.java:73)
at play.server.javanet.PlayHandler.serve404(PlayHandler.java:536)
at play.server.javanet.PlayHandler.serveStatic(PlayHandler.java:605)
at play.server.javanet.PlayHandler$JavaNetInvocation.init(PlayHandler.java:365)
at play.server.javanet.PlayHandler$JavaNetInvocation.run(PlayHandler.java:405)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.nio.file.FileAlreadyExistsException: /path/to/re-play1/replay-tests/helloworld/tmp/errors/404.txt
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:94)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:218)
at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:484)
at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
at java.base/java.nio.file.Files.copy(Files.java:3160)
at org.apache.commons.io.file.PathUtils.copy(PathUtils.java:279)
at org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1121)
at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:91)
... 12 more
HelloWorldSpec > openHelloWorldPage() FAILED
Element not found {#link-to-image}
Expected: attribute href="/app/public/img/banksy-kyiv-7.jpeg"
Screenshot: file:/path/to/re-play1/replay-tests/helloworld/build/reports/tests/1739350598393.0.png
Page source: file:/path/to/re-play1/replay-tests/helloworld/build/reports/tests/1739350598393.0.html
Timeout: 4 s.
Caused by: NoSuchElementException: Unable to locate element: #link-to-image
at app//com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:68)
at app//com.codeborne.selenide.impl.ElementFinder.createElementNotFoundError(ElementFinder.java:122)
at app//com.codeborne.selenide.impl.WebElementSource.handleError(WebElementSource.java:119)
at app//com.codeborne.selenide.impl.WebElementSource.checkConditionAndReturnElement(WebElementSource.java:102)
at app//com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:78)
at app//com.codeborne.selenide.commands.Should.execute(Should.java:24)
at app//com.codeborne.selenide.FluentCommand.execute(FluentCommand.java:27)
at app//com.codeborne.selenide.FluentCommand.execute(FluentCommand.java:19)
at app//com.codeborne.selenide.commands.Commands.execute(Commands.java:160)
at app//com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:131)
at app//com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:83)
at app/jdk.proxy3/jdk.proxy3.$Proxy27.shouldHave(Unknown Source)
at app//ui.hello.HelloWorldSpec.openHelloWorldPage(HelloWorldSpec.java:18)
Caused by:
org.openqa.selenium.NoSuchElementException: Unable to locate element: #link-to-image So how the hell can the |
Concurrency? 🙈 EDIT: EDIT2: $ git diff -- gradle.properties
diff --git a/gradle.properties b/gradle.properties
index 36549a3..a23e3a4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.daemon=false
org.gradle.configureondemand=true
-org.gradle.parallel=true
+org.gradle.parallel=false
org.gradle.jvmargs=-Xmx256m -Dfile.encoding=US-ASCII |
@@ -11,5 +13,8 @@ public class HelloWorldSpec extends BaseSpec { | |||
public void openHelloWorldPage() { | |||
open("/"); | |||
$("h1").shouldHave(text("Hello, world!")); | |||
$("#repeat").shouldHave(text("Repeat 666 times")).click(); | |||
$("h1").shouldHave(text("Hello, world #666!")); | |||
$("#link-to-image").shouldHave(attribute("href", "/app/public/img/banksy-kyiv-7.jpeg")).click(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you too lazy? Or just testing if I'm a good reviewer? I'm not! 😀
$("#link-to-image").shouldHave(attribute("href", "/app/public/img/banksy-kyiv-7.jpeg")).click(); | |
$("#link-to-static-file").shouldHave(href("/public/img/banksy-kyiv-7.jpeg")).click(); |
Don't forget to change the imports!
-import static com.codeborne.selenide.Condition.attribute;
+import static com.codeborne.selenide.Condition.href;
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM but only with the suggested test changes! 🙂
Remove "play.templates.ExecutableTemplates#__reverseWithCheck*()" methods as the only consumer ("play.templates.GroovyTemplateCompiler#action()") was gone with this "play.templates.ExecutableTemplates" class' debut in commit 185ca44. Andrei's guess is that most of code in ExecutableTemplates is not used anymore. It was used in "default" groovy templates in Play1 which were replaced by "faster groovy templates" in Replay. But leave that cleanup for later! While at it, improve their counterpart in fastergt plugin ("GTJavaBase1xImpl" and "GTPreCompiler1xImpl" classes and PR #524), to use the other two methods: "__reverseWithCheck_absolute_true()" and "__reverseWithCheck_absolute_false()". Ref: https://github.com/replay-framework/replay/pull/506/files#r1951693547 Fixes: 185ca44 ("remove old html templates implementation play.templates.TemplateCompiler")
import static com.codeborne.selenide.Condition.text; | ||
import static com.codeborne.selenide.Selenide.$; | ||
import static com.codeborne.selenide.Selenide.open; | ||
import static com.codeborne.selenide.Selenide.sleep; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That sleep
would be an unused static import!
import static com.codeborne.selenide.Selenide.sleep; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
Workflow died again! Gradle output:
Test output:
So yeah, Netty4 + renderStatic (#157) strikes again! 😕 And of course, it doesn't reproduce locally. 🤷♀️ |
Nitpicking
|
When handling @{'...'}, method `Router.__reverseWithCheck()` is used.
* we need the latest version "org.apache.commons:commons-lang3:3.17.0", but * "rest-assured-common:5.5.0" brings an old version "org.apache.commons:commons-lang3:3.11".
Don't re-create file "./tmp/errors/404.txt" on every "404 Not Found" page generation. Now 1. files "tmp/..." are stored only once in an hour, and 2. the writing method is synchronized (so that 2 parallel threads don't obstacle each other).
3a90ae2
to
925b164
Compare
for such templates found in files (not jars) TemplateLoader will just read the file itself without copying it to "tmp" folder.
925b164
to
3d6ed81
Compare
Oh yes, thank you for the hint! Should be fixed now. |
} catch (IOException e) { | ||
throw new RuntimeException(e); | ||
} | ||
return TemplateLoader.load(Play.file("tmp/" + path)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the record: this commit (unintentionally? 🙂 ) fixed and old bug introduced by commit cfe9ff1:
When
Play.tmpDir
differs from the default "tmp", then loading templates
from the classpath fails miserably.
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
This was (unintentionally?) fixed in PR replay-framework#524. For reference, the original description is below. Looks like it never worked since its debut in commit cfe9ff1 ("load "errors/40x.html" templates from classpath"). The serve500 is caused by the "missing" meta.html template, and then the NPE is caused by the "missing" errors/500.html template: 02:52:45,238 TRACE [play.server.netty4.PlayHandler] ~ serve500: begin 02:52:45,240 ERROR [play.server.netty4.PlayHandler] ~ Internal Server Error (500) for GET / (GTRuntimeExceptionWithSourceInfo) play.template2.exceptions.GTRuntimeExceptionWithSourceInfo: Cannot find template ./meta.html at /tmp/hello.html.(line:6) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:146) at play.template2.GTJavaBase.internalRenderTemplate(GTJavaBase.java:110) at play.modules.gtengineplugin.gt_integration.GTJavaBase1xImpl.internalRenderTemplate(GTJavaBase1xImpl.java:96) at play.template2.GTJavaBase.renderTemplate(GTJavaBase.java:104) at play.modules.gtengineplugin.GTTemplate.renderGTTemplate(GTTemplate.java:67) at play.modules.gtengineplugin.GTTemplate.internalGTRender(GTTemplate.java:54) at play.modules.gtengineplugin.GTTemplate.internalRender(GTTemplate.java:38) at play.modules.gtengineplugin.GTTemplate.render(GTTemplate.java:73) at play.rebel.View.renderView(View.java:71) at play.rebel.View.apply(View.java:50) at play.mvc.ActionInvoker.applyResult(ActionInvoker.java:191) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158) at play.server.netty4.PlayHandler$Netty4Invocation.execute(PlayHandler.java:278) at play.server.netty4.PlayHandler$Netty4Invocation.lambda$run$0(PlayHandler.java:247) at play.db.jpa.JPA.withTransaction(JPA.java:271) at play.db.jpa.JPA.withinFilter(JPA.java:172) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:245) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: play.template2.exceptions.GTTemplateRuntimeException: Cannot find template ./meta.html at play.template2.compile.GTInternalFastTags.tag_include(GTInternalFastTags.java:119) ... 24 more 02:52:45,242 ERROR [play.server.netty4.PlayHandler] ~ Error during the 500 response generation java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "file" is null at play.Play.relativePath(Play.java:376) at play.modules.gtengineplugin.TemplateLoader.load(TemplateLoader.java:69) at play.modules.gtengineplugin.GTEnginePlugin.loadTemplate(GTEnginePlugin.java:50) at play.plugins.PluginCollection.lambda$loadTemplate$29(PluginCollection.java:340) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647) at play.plugins.PluginCollection.loadTemplate(PluginCollection.java:342) at play.templates.TemplateLoader.load(TemplateLoader.java:35) at play.templates.TemplateLoader.loadTemplateFromClasspath(TemplateLoader.java:95) at play.templates.TemplateLoader.load(TemplateLoader.java:82) at play.server.ServerHelper.generateErrorResponse(ServerHelper.java:83) at play.server.netty4.PlayHandler.serve500(PlayHandler.java:625) at play.server.netty4.PlayHandler$Netty4Invocation.run(PlayHandler.java:260) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) 02:52:45,242 TRACE [play.server.netty4.PlayHandler] ~ serve500: end Refs: a6db7e1 ("fix concurrency issue in TemplateLoader")
When handling
@{'...'}
, methodRouter.__reverseWithCheck()
is used.@xabolcs