Skip to content

Commit ef4b536

Browse files
committed
Add access-filter file with fixed path
1 parent 9e9703c commit ef4b536

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

common/utils/src/main/java/org/graalvm/buildtools/agent/AgentConfiguration.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ public AgentConfiguration(Collection<String> callerFilterFiles,
8787
AgentMode agentMode) {
8888
this.callerFilterFiles = callerFilterFiles;
8989
this.accessFilterFiles = accessFilterFiles;
90-
addDefaultAccessFilter();
9190
this.builtinCallerFilter = builtinCallerFilter;
9291
this.builtinHeuristicFilter = builtinHeuristicFilter;
9392
this.experimentalPredefinedClasses = experimentalPredefinedClasses;
@@ -97,6 +96,7 @@ public AgentConfiguration(Collection<String> callerFilterFiles,
9796
}
9897

9998
public List<String> getAgentCommandLine() {
99+
addDefaultAccessFilter();
100100
List<String> cmdLine = new ArrayList<>(agentMode.getAgentCommandLine());
101101
appendOptionToValues("caller-filter-file=", callerFilterFiles, cmdLine);
102102
appendOptionToValues("access-filter-file=", accessFilterFiles, cmdLine);
@@ -137,11 +137,27 @@ private void addToCmd(String option, Boolean value, List<String> cmdLine) {
137137
}
138138

139139
private void addDefaultAccessFilter() {
140+
if (accessFilterFiles == null) {
141+
// this could only happen if we instantiated disabled agent configuration
142+
return;
143+
}
144+
145+
String tempDir = System.getProperty("java.io.tmpdir");
146+
Path agentDir = Path.of(tempDir).resolve("agent-config");
147+
Path accessFilterFile = agentDir.resolve("access-filter.json");
148+
if (Files.exists(accessFilterFile)) {
149+
accessFilterFiles.add(accessFilterFile.toString());
150+
return;
151+
}
152+
140153
try(InputStream accessFilter = AgentConfiguration.class.getResourceAsStream(DEFAULT_ACCESS_FILTER_FILE)) {
141154
if (accessFilter != null) {
142-
Path accessFilterPath = Files.createTempFile("access-filter", ".json");
143-
Files.copy(accessFilter, accessFilterPath, StandardCopyOption.REPLACE_EXISTING);
144-
accessFilterFiles.add(accessFilterPath.toString());
155+
if (!Files.exists(agentDir)) {
156+
Files.createDirectory(agentDir);
157+
}
158+
159+
Files.copy(accessFilter, accessFilterFile, StandardCopyOption.REPLACE_EXISTING);
160+
accessFilterFiles.add(accessFilterFile.toString());
145161
} else {
146162
throw new IOException("Cannot find access-filter.json on default location: " + DEFAULT_ACCESS_FILTER_FILE);
147163
}

0 commit comments

Comments
 (0)