diff --git a/core/devmode/src/main/java/io/quarkus/dev/DevModeMain.java b/core/devmode/src/main/java/io/quarkus/dev/DevModeMain.java index 13eebfc408a8e..47e6b773f4b00 100644 --- a/core/devmode/src/main/java/io/quarkus/dev/DevModeMain.java +++ b/core/devmode/src/main/java/io/quarkus/dev/DevModeMain.java @@ -87,6 +87,7 @@ public void start() throws Exception { runtimeUpdatesProcessor = setupRuntimeCompilation(context); if (runtimeUpdatesProcessor != null) { + runtimeUpdatesProcessor.checkForFileChange(); runtimeUpdatesProcessor.checkForChangedClasses(); } //TODO: we can't handle an exception on startup with hot replacement, as Undertow might not have started diff --git a/core/devmode/src/main/java/io/quarkus/dev/RuntimeUpdatesProcessor.java b/core/devmode/src/main/java/io/quarkus/dev/RuntimeUpdatesProcessor.java index 5799fdb93a7af..4892e5cd677b2 100644 --- a/core/devmode/src/main/java/io/quarkus/dev/RuntimeUpdatesProcessor.java +++ b/core/devmode/src/main/java/io/quarkus/dev/RuntimeUpdatesProcessor.java @@ -283,7 +283,7 @@ private String getFileExtension(File file) { return name.substring(lastIndexOf); } - private Set checkForFileChange() { + Set checkForFileChange() { Set ret = new HashSet<>(); for (DevModeContext.ModuleInfo module : context.getModules()) { final Set moduleResources = correspondingResources.computeIfAbsent(module.getName(), diff --git a/extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/files/StaticResourceDeletionBeforeFirstRequestTest.java b/extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/files/StaticResourceDeletionBeforeFirstRequestTest.java new file mode 100644 index 0000000000000..80732803efbb6 --- /dev/null +++ b/extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/files/StaticResourceDeletionBeforeFirstRequestTest.java @@ -0,0 +1,26 @@ +package io.quarkus.resteasy.test.files; + +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.test.QuarkusDevModeTest; +import io.restassured.RestAssured; + +public class StaticResourceDeletionBeforeFirstRequestTest { + + public static final String META_INF_RESOURCES_STATIC_RESOURCE_TXT = "META-INF/resources/static-resource.txt"; + + @RegisterExtension + static final QuarkusDevModeTest test = new QuarkusDevModeTest() + .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) + .addAsResource(new StringAsset("static resource content"), META_INF_RESOURCES_STATIC_RESOURCE_TXT)); + + @Test + public void shouldReturn404HttpStatusCode() { + test.deleteResourceFile(META_INF_RESOURCES_STATIC_RESOURCE_TXT); // delete the resource + RestAssured.when().get("/static-resource.txt").then().statusCode(404); + } +}