diff --git a/fastergt/src/play/modules/gtengineplugin/gt_integration/GTFileResolver1xImpl.java b/fastergt/src/play/modules/gtengineplugin/gt_integration/GTFileResolver1xImpl.java index 70c70e80..513e0540 100644 --- a/fastergt/src/play/modules/gtengineplugin/gt_integration/GTFileResolver1xImpl.java +++ b/fastergt/src/play/modules/gtengineplugin/gt_integration/GTFileResolver1xImpl.java @@ -5,7 +5,10 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import play.ClasspathResource; import play.Play; import play.template2.GTFileResolver; @@ -13,6 +16,7 @@ import play.templates.TemplateLoader; public class GTFileResolver1xImpl implements GTFileResolver.Resolver { + private static final Logger logger = LoggerFactory.getLogger(GTFileResolver1xImpl.class); private final List templateFolders; public GTFileResolver1xImpl(List templatesPaths) { @@ -87,9 +91,11 @@ public GTTemplateLocationReal getTemplateLocationFromRelativePath(String relativ URL url = null; if (vf == null) { try { - final String classloadedPrefix = "/" + Play.tmpDir.getName() + "/" + TemplateLoader.CLASSPATH_LOADED_TEMPLATE_TMP_PATH_PREFIX; + final String classloadedPrefix = "/" + (Play.tmpDir == null ? "" : Play.tmpDir.getName() + "/") + TemplateLoader.CLASSPATH_LOADED_TEMPLATE_TMP_PATH_PREFIX; if (relativePath.startsWith(classloadedPrefix)) { relativePath = relativePath.split(classloadedPrefix, 2) [1]; + } else { + logger.error("appRoot: {}, relpath: {}, prefix: {}", Play.appRoot.getName(), relativePath, classloadedPrefix); } ClasspathResource cf = null; // do the search as the TemplateLoader.loadTemplateFromClasspath()'s usage: @@ -101,6 +107,7 @@ public GTTemplateLocationReal getTemplateLocationFromRelativePath(String relativ } url = cf.url(); } catch (Exception e) { + logger.trace("Ignoring exception while resolving {}", relativePath, e); return null; } } diff --git a/framework/src/play/mvc/Router.java b/framework/src/play/mvc/Router.java index 1dc0954a..f16ec77b 100644 --- a/framework/src/play/mvc/Router.java +++ b/framework/src/play/mvc/Router.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; @@ -71,7 +72,7 @@ private static void loadRoutesFromFile() { // This automatically added route is needed to serve the static files extracted from classpath. // The "public" postfix (!) on the end is to prevent unwanted leakage of classpath resource files! // TODO: automatically expose routes (e.g. with "staticDir:" parsing or with application.conf settings from dependencies instead of hardcoded "public" - addRoute("GET", "/public/", "staticDir:" + Play.tmpDir.getName() + "/" + SERVER_HELPER_FIND_FILE_TMP_PATH_PREFIX + "public"); + addRoute("GET", "/public/", "staticDir:" + Optional.ofNullable(Play.tmpDir).orElse(new File("")).getName() + "/" + SERVER_HELPER_FIND_FILE_TMP_PATH_PREFIX + "public"); lastLoading = System.currentTimeMillis(); } diff --git a/framework/src/play/server/ServerHelper.java b/framework/src/play/server/ServerHelper.java index 01c17f9c..3482484e 100644 --- a/framework/src/play/server/ServerHelper.java +++ b/framework/src/play/server/ServerHelper.java @@ -14,6 +14,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.stream.Stream; import javax.annotation.CheckReturnValue; import javax.annotation.Nonnull; @@ -125,8 +126,7 @@ public static File findFile(String resource) { } } if (file == null) { - final String pr = SERVER_HELPER_FIND_FILE_TMP_PATH_PREFIX + resource; - file = new File(Play.tmpDir, SERVER_HELPER_FIND_FILE_TMP_PATH_PREFIX + resource); + file = new File(Optional.ofNullable(Play.tmpDir).orElse(Play.appRoot), SERVER_HELPER_FIND_FILE_TMP_PATH_PREFIX + resource); if (file.exists()) return file; try { diff --git a/replay-tests/multi-module-app/app/src/main/resources/conf/application.app.conf b/replay-tests/multi-module-app/app/src/main/resources/conf/application.app.conf index 6cfec49d..e3597086 100644 --- a/replay-tests/multi-module-app/app/src/main/resources/conf/application.app.conf +++ b/replay-tests/multi-module-app/app/src/main/resources/conf/application.app.conf @@ -1 +1,3 @@ application.app.included=app.conf included! +%test.play.tmp=none +play.tmp=none