Add support for multiple add-opens CLI args to CordaCaplet

This commit is contained in:
jakub.zadroga
2024-06-18 15:32:53 +01:00
parent 5be80254e8
commit a2a89d3f96

View File

@ -34,6 +34,8 @@ public class CordaCaplet extends Capsule {
private Config nodeConfig = null; private Config nodeConfig = null;
private String baseDir = null; private String baseDir = null;
private final List<String> cmdLineAddOpens = new ArrayList<>();
protected CordaCaplet(Capsule pred) { protected CordaCaplet(Capsule pred) {
super(pred); super(pred);
} }
@ -101,6 +103,7 @@ public class CordaCaplet extends Capsule {
protected ProcessBuilder prelaunch(List<String> jvmArgs, List<String> args) { protected ProcessBuilder prelaunch(List<String> jvmArgs, List<String> args) {
checkJavaVersion(); checkJavaVersion();
nodeConfig = parseConfigFile(args); nodeConfig = parseConfigFile(args);
cmdLineAddOpens.addAll(jvmArgs.stream().filter(arg -> arg.startsWith("--add-opens")).collect(toList()));
return super.prelaunch(jvmArgs, args); return super.prelaunch(jvmArgs, args);
} }
@ -119,7 +122,9 @@ public class CordaCaplet extends Capsule {
@Override @Override
protected int launch(ProcessBuilder pb) throws IOException, InterruptedException { protected int launch(ProcessBuilder pb) throws IOException, InterruptedException {
List<String> args = pb.command(); List<String> args = pb.command();
args.addAll(1, getNodeJvmArgs()); List<String> nodeJvmArgs = getNodeJvmArgs();
nodeJvmArgs.addAll(cmdLineAddOpens);
args.addAll(1, nodeJvmArgs);
pb.command(args); pb.command(args);
return super.launch(pb); return super.launch(pb);
} }
@ -168,6 +173,7 @@ public class CordaCaplet extends Capsule {
boolean defaultOutOfMemoryErrorHandling = true; boolean defaultOutOfMemoryErrorHandling = true;
try { try {
List<String> configJvmArgs = nodeConfig.getStringList("custom.jvmArgs"); List<String> configJvmArgs = nodeConfig.getStringList("custom.jvmArgs");
cmdLineAddOpens.addAll(configJvmArgs.stream().filter(arg -> arg.startsWith("--add-opens")).collect(toList()));
jvmArgs.clear(); jvmArgs.clear();
jvmArgs.addAll(configJvmArgs); jvmArgs.addAll(configJvmArgs);
log(LOG_VERBOSE, "Configured JVM args = " + jvmArgs); log(LOG_VERBOSE, "Configured JVM args = " + jvmArgs);