
io.quarkus.container.image.deployment.devconsole.RebuildHandler Maven / Gradle / Ivy
package io.quarkus.container.image.deployment.devconsole;
import java.time.Duration;
import java.util.List;
import java.util.Map;
import io.quarkus.bootstrap.app.ArtifactResult;
import io.quarkus.bootstrap.app.AugmentResult;
import io.quarkus.bootstrap.app.CuratedApplication;
import io.quarkus.bootstrap.app.QuarkusBootstrap;
import io.quarkus.dev.console.DevConsoleManager;
import io.quarkus.dev.console.TempSystemProperties;
import io.quarkus.devconsole.runtime.spi.DevConsolePostHandler;
import io.vertx.core.MultiMap;
import io.vertx.ext.web.RoutingContext;
public class RebuildHandler extends DevConsolePostHandler {
private final Map config;
public RebuildHandler(Map config) {
this.config = config;
}
@Override
protected void handlePostAsync(RoutingContext event, MultiMap form) throws Exception {
QuarkusBootstrap existing = (QuarkusBootstrap) DevConsoleManager.getQuarkusBootstrap();
try (TempSystemProperties properties = new TempSystemProperties()) {
for (Map.Entry i : config.entrySet()) {
properties.set(i.getKey(), i.getValue());
}
for (Map.Entry i : form.entries()) {
if (!i.getValue().isEmpty()) {
properties.set(i.getKey(), i.getValue());
}
}
QuarkusBootstrap quarkusBootstrap = existing.clonedBuilder()
.setMode(QuarkusBootstrap.Mode.PROD)
.setIsolateDeployment(true).build();
try (CuratedApplication bootstrap = quarkusBootstrap.bootstrap()) {
AugmentResult augmentResult = bootstrap
.createAugmentor().createProductionApplication();
List containerArtifactResults = augmentResult
.resultsMatchingType((s) -> s.contains("container"));
if (containerArtifactResults.size() >= 1) {
flashMessage(event,
"Container-image: " + containerArtifactResults.get(0).getMetadata().get("container-image")
+ " created.",
Duration.ofSeconds(10));
}
}
}
;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy