Skip to content

Commit 3e365d6

Browse files
Merge pull request #48385 from michalvavrik/feature/fix-dev-ui-access-denied-ex
Prevent AccessDeniedException in DEV mode when DEV UI is locating workspace item
2 parents 45ecb98 + 3fa48ad commit 3e365d6

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.IOException;
44
import java.io.UncheckedIOException;
55
import java.net.URI;
6+
import java.nio.file.AccessDeniedException;
67
import java.nio.file.FileVisitResult;
78
import java.nio.file.Files;
89
import java.nio.file.Path;
@@ -74,7 +75,8 @@ void locateWorkspaceItems(BuildSystemTargetBuildItem buildSystemTarget,
7475
Files.walkFileTree(projectRoot, new SimpleFileVisitor<Path>() {
7576
@Override
7677
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
77-
if (Files.isHidden(dir) || ignoreFolders.contains(dir.getFileName().toString())) {
78+
if (Files.isHidden(dir) || ignoreFolders.contains(dir.getFileName().toString())
79+
|| !Files.isReadable(dir) || !Files.isExecutable(dir)) {
7880
return FileVisitResult.SKIP_SUBTREE;
7981
}
8082
return FileVisitResult.CONTINUE;
@@ -84,7 +86,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
8486
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
8587
String fileName = file.getFileName().toString();
8688
boolean shouldIgnore = Files.isHidden(file)
87-
|| file.startsWith(outputDir)
89+
|| file.startsWith(outputDir) || !Files.isReadable(file) || !Files.isExecutable(file)
8890
|| ignoreFilePatterns.stream().anyMatch(p -> p.matcher(fileName).matches());
8991

9092
if (!shouldIgnore) {
@@ -93,6 +95,18 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO
9395
}
9496
return FileVisitResult.CONTINUE;
9597
}
98+
99+
@Override
100+
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
101+
if (exc instanceof AccessDeniedException) {
102+
if (Files.isDirectory(file)) {
103+
return FileVisitResult.SKIP_SUBTREE;
104+
} else {
105+
return FileVisitResult.CONTINUE;
106+
}
107+
}
108+
return super.visitFileFailed(file, exc);
109+
}
96110
});
97111

98112
} catch (IOException e) {

0 commit comments

Comments
 (0)