From f6859d040f36a3ec915f22c86cc26473026725d7 Mon Sep 17 00:00:00 2001 From: James Maes Date: Sun, 15 Jun 2025 10:36:11 -0500 Subject: [PATCH] Refactored to use the constructor instead of the class/static method to load properties - makes unit test runtime cleaning --- .../SimpleFileSystemDirectoryRouter.java | 30 +++++++++---------- .../QApplicationJavalinServerTest.java | 24 +++++++++++++++ 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/routeproviders/SimpleFileSystemDirectoryRouter.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/routeproviders/SimpleFileSystemDirectoryRouter.java index 89e424e2..e30c94a9 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/routeproviders/SimpleFileSystemDirectoryRouter.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/routeproviders/SimpleFileSystemDirectoryRouter.java @@ -51,8 +51,21 @@ public class SimpleFileSystemDirectoryRouter implements QJavalinRouteProviderInt private static final QLogger LOG = QLogger.getLogger(SimpleFileSystemDirectoryRouter.class); public static boolean loadStaticFilesFromJar = false; - static + + private final String hostedPath; + private final String fileSystemPath; + private QCodeReference routeAuthenticator; + private QInstance qInstance; + + /******************************************************************************* + ** Constructor + ** + *******************************************************************************/ + public SimpleFileSystemDirectoryRouter(String hostedPath, String fileSystemPath) { + this.hostedPath = hostedPath; + this.fileSystemPath = fileSystemPath; + /////////////////////////////////////////////////////////////////////////////////////////////////////// // read the property to see if we should load static files from the jar file or from the file system // // Javan only supports loading via one method per path, so its a choice of one or the other... // @@ -72,21 +85,6 @@ public class SimpleFileSystemDirectoryRouter implements QJavalinRouteProviderInt } } - private final String hostedPath; - private final String fileSystemPath; - private QCodeReference routeAuthenticator; - private QInstance qInstance; - - /******************************************************************************* - ** Constructor - ** - *******************************************************************************/ - public SimpleFileSystemDirectoryRouter(String hostedPath, String fileSystemPath) - { - this.hostedPath = hostedPath; - this.fileSystemPath = fileSystemPath; - } - /*************************************************************************** diff --git a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServerTest.java b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServerTest.java index 1d3c8e72..a9524022 100644 --- a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServerTest.java +++ b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServerTest.java @@ -29,6 +29,7 @@ import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.instances.AbstractQQQApplication; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.javalin.TestUtils; +import com.kingsrook.qqq.middleware.javalin.routeproviders.SimpleFileSystemDirectoryRouter; import com.kingsrook.qqq.middleware.javalin.specs.v1.MiddlewareVersionV1; import io.javalin.http.HttpStatus; import kong.unirest.HttpResponse; @@ -70,6 +71,7 @@ class QApplicationJavalinServerTest { javalinServer.stop(); TestApplication.callCount = 0; + System.clearProperty("qqq.javalin.enableStaticFilesFromJar"); } @@ -226,6 +228,28 @@ class QApplicationJavalinServerTest + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testStaticRouterFilesFromClasspath() throws Exception + { + System.setProperty("qqq.javalin.enableStaticFilesFromJar", "true"); + + javalinServer = new QApplicationJavalinServer(new QApplicationJavalinServerTest.TestApplication()) + .withServeFrontendMaterialDashboard(false) + .withPort(PORT) + .withAdditionalRouteProvider(new SimpleFileSystemDirectoryRouter("/statically-served-from-jar", "static-site-from-jar/")); + + javalinServer.start(); + + Unirest.config().setDefaultResponseEncoding("UTF-8"); + HttpResponse response = Unirest.get("http://localhost:" + PORT + "/statically-served-from-jar/foo-in-jar.html").asString(); + assertEquals("Foo in a Jar!\n", response.getBody()); + } + + + /******************************************************************************* ** *******************************************************************************/