Skip to content

Commit a0b71ff

Browse files
authored
Merge pull request #31710 from phillip-kruger/devui-tmp-fix
Dev UI: clean up build-time-data files
2 parents e79bb61 + 8dc1723 commit a0b71ff

File tree

3 files changed

+50
-3
lines changed

3 files changed

+50
-3
lines changed

extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/BuildTimeContentProcessor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,6 @@ QuteTemplateBuildItem createIndexHtmlTemplate(
245245
String themeVars = themeVarsBuildItem.getTemplateValue();
246246
String contextRoot = nonApplicationRootPathBuildItem.getNonApplicationRootPath() + DEV_UI + SLASH;
247247

248-
// TODO: Move version and name to build time data
249-
250248
Map<String, Object> data = Map.of(
251249
"contextRoot", contextRoot,
252250
"importmap", importmap,

extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/DevUIProcessor.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,14 +152,18 @@ void registerDevUiHandlers(
152152

153153
String basepath = nonApplicationRootPathBuildItem.resolvePath(DEVUI);
154154
// For static content generated at build time
155+
Path devUiBasePath = Files.createTempDirectory("quarkus-devui");
156+
recorder.shutdownTask(shutdownContext, devUiBasePath.toString());
157+
155158
for (StaticContentBuildItem staticContentBuildItem : staticContentBuildItems) {
156159

157160
Map<String, String> urlAndPath = new HashMap<>();
158161
if (staticContentBuildItem.isInternal()) {
159162
List<DevUIContent> content = staticContentBuildItem.getContent();
160163
for (DevUIContent c : content) {
161164
String parsedContent = Qute.fmt(new String(c.getTemplate()), c.getData());
162-
Path tempFile = Files.createTempFile("quarkus-dev-ui-", c.getFileName());
165+
Path tempFile = devUiBasePath
166+
.resolve(c.getFileName());
163167
Files.write(tempFile, parsedContent.getBytes(StandardCharsets.UTF_8));
164168

165169
urlAndPath.put(c.getFileName(), tempFile.toString());

extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
package io.quarkus.devui.runtime;
22

3+
import java.io.IOException;
34
import java.net.URL;
5+
import java.nio.file.FileVisitResult;
6+
import java.nio.file.Files;
7+
import java.nio.file.Path;
8+
import java.nio.file.Paths;
9+
import java.nio.file.SimpleFileVisitor;
10+
import java.nio.file.attribute.BasicFileAttributes;
411
import java.util.List;
512
import java.util.Map;
613
import java.util.Set;
714

15+
import org.jboss.logging.Logger;
16+
817
import io.quarkus.arc.runtime.BeanContainer;
918
import io.quarkus.devui.runtime.comms.JsonRpcRouter;
1019
import io.quarkus.devui.runtime.jsonrpc.JsonRpcMethod;
@@ -18,6 +27,11 @@
1827

1928
@Recorder
2029
public class DevUIRecorder {
30+
private static final Logger LOG = Logger.getLogger(DevUIRecorder.class);
31+
32+
public void shutdownTask(ShutdownContext shutdownContext, String devUIBasePath) {
33+
shutdownContext.addShutdownTask(new DeleteDirectoryRunnable(devUIBasePath));
34+
}
2135

2236
public void createJsonRpcRouter(BeanContainer beanContainer,
2337
Map<String, Map<JsonRpcMethodName, JsonRpcMethod>> extensionMethodsMap) {
@@ -50,4 +64,35 @@ public Handler<RoutingContext> vaadinRouterHandler(String basePath) {
5064
public Handler<RoutingContext> mvnpmHandler(Set<URL> mvnpmJarFiles) {
5165
return new MvnpmHandler(mvnpmJarFiles);
5266
}
67+
68+
private static final class DeleteDirectoryRunnable implements Runnable {
69+
70+
private final Path directory;
71+
72+
private DeleteDirectoryRunnable(String directory) {
73+
this.directory = Paths.get(directory);
74+
}
75+
76+
@Override
77+
public void run() {
78+
try {
79+
Files.walkFileTree(directory,
80+
new SimpleFileVisitor<Path>() {
81+
@Override
82+
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
83+
Files.delete(dir);
84+
return FileVisitResult.CONTINUE;
85+
}
86+
87+
@Override
88+
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
89+
Files.delete(file);
90+
return FileVisitResult.CONTINUE;
91+
}
92+
});
93+
} catch (IOException e) {
94+
LOG.error("Error cleaning up dev-ui temporary directory: " + directory, e);
95+
}
96+
}
97+
}
5398
}

0 commit comments

Comments
 (0)