Skip to content

Commit

Permalink
Monitor config additional locations for hot deployment.
Browse files Browse the repository at this point in the history
(cherry picked from commit d3d70ac)
  • Loading branch information
radcortez authored and gsmet committed Apr 26, 2021
1 parent 6617dbb commit 9967783
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@

import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem;
import io.quarkus.runtime.ConfigConfig;
import io.quarkus.runtime.LiveReloadConfig;

class DevModeBuildStep {

@BuildStep
List<HotDeploymentWatchedFileBuildItem> watchChanges(LiveReloadConfig config) {
List<HotDeploymentWatchedFileBuildItem> watchChanges(ConfigConfig config, LiveReloadConfig liveReloadConfig) {
List<String> names = new ArrayList<>();
names.add("META-INF/microprofile-config.properties");
names.add("application.properties");
names.add(Paths.get(".env").toAbsolutePath().toString());
config.watchedResources.ifPresent(names::addAll);
config.locations.ifPresent(names::addAll);
liveReloadConfig.watchedResources.ifPresent(names::addAll);
return names.stream().map(HotDeploymentWatchedFileBuildItem::new).collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.quarkus.runtime;

import java.util.List;
import java.util.Optional;

import io.quarkus.runtime.annotations.ConfigItem;
Expand All @@ -19,7 +20,7 @@ public class ConfigConfig {
* separated by a comma and each must represent a valid {@link java.net.URI}.
*/
@ConfigItem(name = "config.locations")
public Optional<String> locations;
public Optional<List<String>> locations;

/**
* Accepts a single configuration profile name. If a configuration property cannot be found in the current active
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package io.quarkus.extest;

import static org.hamcrest.core.Is.is;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;

import org.eclipse.microprofile.config.Config;
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.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.runtime.StartupEvent;
import io.quarkus.test.QuarkusDevModeTest;
import io.restassured.RestAssured;
import io.restassured.filter.log.RequestLoggingFilter;
import io.restassured.filter.log.ResponseLoggingFilter;
import io.vertx.ext.web.Router;

public class AdditionalLocationsTest {
@RegisterExtension
static final QuarkusDevModeTest TEST = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(DevBean.class)
.addAsResource(new StringAsset("quarkus.config.locations=additional.properties\n"),
"application.properties")
.addAsResource(new StringAsset("additional.property=1234\n"), "additional.properties"));

@BeforeAll
static void beforeAll() {
RestAssured.filters(new RequestLoggingFilter(), new ResponseLoggingFilter());
}

@Test
void additionalLocations() {
// A combination of QuarkusUnitTest and QuarkusProdModeTest tests ordering may mess with the port leaving it in
// 8081 and QuarkusDevModeTest does not changes to the right port.
RestAssured.port = -1;

RestAssured.when().get("/config").then()
.statusCode(200)
.body(is("1234"));

TEST.modifyResourceFile("additional.properties", s -> "additional.property=5678\n");

RestAssured.when().get("/config").then()
.statusCode(200)
.body(is("5678"));
}

@ApplicationScoped
public static class DevBean {
@Inject
Router router;
@Inject
Config config;

public void register(@Observes StartupEvent ev) {
router.get("/config").handler(rc -> rc.response().end(config.getValue("additional.property", String.class)));
}
}
}

0 comments on commit 9967783

Please sign in to comment.