This is an automated email from the ASF dual-hosted git repository.
entl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new ae192d1 Merge the code lens actions with the launch config properties
and adapt Gradle to apply env.
ae192d1 is described below
commit ae192d1309cd2269cf2e95d32ad0ef25224ff1e5
Author: Martin Entlicher <[email protected]>
AuthorDate: Sat Dec 11 01:29:27 2021 +0100
Merge the code lens actions with the launch config properties and adapt
Gradle to apply env.
---
.../gradle/tooling/NetBeansRunSinglePlugin.java | 115 ++-------------------
.../gradle/execute/GradleDaemonExecutor.java | 62 +++++++++--
java/java.lsp.server/vscode/src/extension.ts | 22 ++++
3 files changed, 81 insertions(+), 118 deletions(-)
diff --git
a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NetBeansRunSinglePlugin.java
b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NetBeansRunSinglePlugin.java
index 5663c01..6693f9f 100644
---
a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NetBeansRunSinglePlugin.java
+++
b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NetBeansRunSinglePlugin.java
@@ -37,7 +37,6 @@ class NetBeansRunSinglePlugin implements Plugin<Project> {
private static final String RUN_SINGLE_ARGS = "runArgs";
private static final String RUN_SINGLE_JVM_ARGS = "runJvmArgs";
private static final String RUN_SINGLE_CWD = "runWorkingDir";
- private static final String RUN_SINGLE_ENV = "runEnvironment";
@Override
public void apply(Project project) {
@@ -47,13 +46,17 @@ class NetBeansRunSinglePlugin implements Plugin<Project> {
&& project.hasProperty(RUN_SINGLE_MAIN)){
addTask(p);
}
- if(p.hasProperty(RUN_SINGLE_JVM_ARGS)) {
- p.getTasks().withType(JavaExec.class).configureEach(je -> {
+ p.getTasks().withType(JavaExec.class).configureEach(je -> {
+ if (p.hasProperty(RUN_SINGLE_JVM_ARGS)) {
je.getJvmArgumentProviders().add(() -> {
return
asList(p.property(RUN_SINGLE_JVM_ARGS).toString().split(" "));
});
- });
- }
+ }
+ je.setStandardInput(System.in);
+ if (project.hasProperty(RUN_SINGLE_CWD)) {
+
je.setWorkingDir(project.property(RUN_SINGLE_CWD).toString());
+ }
+ });
});
}
@@ -64,112 +67,10 @@ class NetBeansRunSinglePlugin implements Plugin<Project> {
// Using setMain to keep the backward compatibility
je.setMain(project.property(RUN_SINGLE_MAIN).toString());
je.setClasspath(sourceSets.findByName("main").getRuntimeClasspath());
- je.setStandardInput(System.in);
if (project.hasProperty(RUN_SINGLE_ARGS)) {
je.setArgs(asList(project.property(RUN_SINGLE_ARGS).toString().split(" ")));
}
-
- if(project.hasProperty(RUN_SINGLE_CWD)) {
- je.setWorkingDir(project.property(RUN_SINGLE_CWD).toString());
- }
-
- if (project.hasProperty(RUN_SINGLE_ENV)) {
- // Quoted space-separated expressions of <ENV_VAR>=<ENV_VALUE>
- // to set environment variables, or !<ENV_VAR>
- // to remove environment variables
- for (String env :
unescapeParameters(project.property(RUN_SINGLE_ENV).toString())) {
- if (env.startsWith("!")) {
- je.getEnvironment().remove(env);
- } else {
- int i = env.indexOf('=');
- if (i > 0) {
- je.getEnvironment().put(env.substring(0, i),
env.substring(i + 1));
- }
- }
- }
- }
});
}
- private String[] unescapeParameters(String s) {
- final int NULL = 0x0;
- final int IN_PARAM = 0x1;
- final int IN_DOUBLE_QUOTE = 0x2;
- final int IN_SINGLE_QUOTE = 0x3;
- ArrayList<String> params = new ArrayList<>(5);
- char c;
-
- int state = NULL;
- StringBuilder buff = new StringBuilder(20);
- int slength = s.length();
-
- for (int i = 0; i < slength; i++) {
- c = s.charAt(i);
- switch (state) {
- case NULL:
- switch (c) {
- case '\'':
- state = IN_SINGLE_QUOTE;
- break;
- case '"':
- state = IN_DOUBLE_QUOTE;
- break;
- default:
- if (!Character.isWhitespace(c)) {
- buff.append(c);
- state = IN_PARAM;
- }
- }
- break;
- case IN_SINGLE_QUOTE:
- if (c != '\'') {
- buff.append(c);
- } else {
- state = IN_PARAM;
- }
- break;
- case IN_DOUBLE_QUOTE:
- switch (c) {
- case '\\':
- char peek = (i < slength - 1) ? s.charAt(i+1) :
Character.MIN_VALUE;
- if (peek == '"' || peek =='\\') {
- buff.append(peek);
- i++;
- } else {
- buff.append(c);
- }
- break;
- case '"':
- state = IN_PARAM;
- break;
- default:
- buff.append(c);
- }
- break;
- case IN_PARAM:
- switch (c) {
- case '\'':
- state = IN_SINGLE_QUOTE;
- break;
- case '"':
- state = IN_DOUBLE_QUOTE;
- break;
- default:
- if (Character.isWhitespace(c)) {
- params.add(buff.toString());
- buff.setLength(0);
- state = NULL;
- } else {
- buff.append(c);
- }
- }
- break;
- }
- }
- if (buff.length() > 0) {
- params.add(buff.toString());
- }
-
- return params.toArray(new String[params.size()]);
- }
}
diff --git
a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
b/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
index 7cf7b76..06abe1d 100644
---
a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
+++
b/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
@@ -34,6 +34,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.StreamCorruptedException;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -63,6 +64,7 @@ import
org.netbeans.spi.project.ui.support.BuildExecutionSupport;
import org.openide.awt.StatusDisplayer;
import org.openide.execution.ExecutorTask;
import org.openide.filesystems.FileUtil;
+import org.openide.util.BaseUtilities;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.openide.util.NbBundle.Messages;
@@ -81,6 +83,7 @@ public final class GradleDaemonExecutor extends
AbstractGradleExecutor {
private CancellationTokenSource cancelTokenSource;
private static final Logger LOGGER =
Logger.getLogger(GradleDaemonExecutor.class.getName());
+ private static final String JAVA_HOME = "JAVA_HOME"; // NOI18N
private final ProgressHandle handle;
private InputStream inStream;
@@ -208,17 +211,10 @@ public final class GradleDaemonExecutor extends
AbstractGradleExecutor {
printCommandLine(cmd);
GradleJavaPlatformProvider platformProvider =
config.getProject().getLookup().lookup(GradleJavaPlatformProvider.class);
- if (platformProvider != null) {
- try {
- buildLauncher.setJavaHome(platformProvider.getJavaHome());
- Map<String, String> envs = new HashMap<>(System.getenv());
- envs.put("JAVA_HOME",
platformProvider.getJavaHome().getCanonicalPath());
- buildLauncher.setEnvironmentVariables(envs);
- } catch (IOException ex) {
- io.getErr().println(Bundle.NO_PLATFORM(ex.getMessage()));
- gradleTask.finish(1);
- return;
- }
+ String runEnvironment =
cmd.getProperty(GradleCommandLine.Property.PROJECT, "runEnvironment");
+ boolean success = setPlatformAndEnv(buildLauncher,
platformProvider, runEnvironment);
+ if (!success) {
+ return;
}
outStream = new EscapeProcessingOutputStream(new
GradlePlainEscapeProcessor(io, config, false));
@@ -282,6 +278,50 @@ public final class GradleDaemonExecutor extends
AbstractGradleExecutor {
}
}
+ @NbBundle.Messages({"# {0} - JAVA_HOME", "# {1} - Java platform path",
"MSG_JAVA_HOME_EnvWarning=Warning: {0} environment variable is replaced with
the current Java platform path {1}."})
+ private boolean setPlatformAndEnv(BuildLauncher buildLauncher,
GradleJavaPlatformProvider platformProvider, String runEnvironment) {
+ String javaHome = null;
+ if (platformProvider != null) {
+ try {
+ buildLauncher.setJavaHome(platformProvider.getJavaHome());
+ javaHome = platformProvider.getJavaHome().getCanonicalPath();
+ } catch (IOException ex) {
+ io.getErr().println(Bundle.NO_PLATFORM(ex.getMessage()));
+ gradleTask.finish(1);
+ return false;
+ }
+ }
+ if (javaHome != null || runEnvironment != null) {
+ Map<String, String> envs = new HashMap<>(System.getenv());
+ if (runEnvironment != null) {
+ // Quoted space-separated expressions of <ENV_VAR>=<ENV_VALUE>
+ // to set environment variables,
+ // or !<ENV_VAR> to remove environment variables
+ for (String env :
BaseUtilities.parseParameters(runEnvironment)) {
+ String name = null;
+ if (env.startsWith("!")) { // NOI18N
+ name = env.substring(1);
+ envs.remove(name);
+ } else {
+ int i = env.indexOf('='); // NOI18N
+ if (i > 0) {
+ name = env.substring(0, i);
+ envs.put(name, env.substring(i + 1));
+ }
+ }
+ if (javaHome != null && JAVA_HOME.equals(name)) {
+
io.getErr().println(Bundle.MSG_JAVA_HOME_EnvWarning(JAVA_HOME, javaHome));
+ }
+ }
+ }
+ if (javaHome != null) {
+ envs.put(JAVA_HOME, javaHome); // NOI18N
+ }
+ buildLauncher.setEnvironmentVariables(envs);
+ }
+ return true;
+ }
+
private String getProjectName() {
ProjectInformation info =
ProjectUtils.getInformation(config.getProject());
return info.getDisplayName();
diff --git a/java/java.lsp.server/vscode/src/extension.ts
b/java/java.lsp.server/vscode/src/extension.ts
index b1e3d5e..8e7dad1 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -356,6 +356,27 @@ export function activate(context: ExtensionContext):
VSNetBeansAPI {
await commands.executeCommand(selected.userData.command.command,
...(selected.userData.command.arguments || []));
}
}));
+ const mergeWithLaunchConfig = (dconfig : vscode.DebugConfiguration) => {
+ const folder = vscode.workspace.workspaceFolders?.[0];
+ const uri = folder?.uri;
+ if (uri) {
+ const launchConfig = workspace.getConfiguration('launch', uri);
+ // retrieve values
+ const configurations = launchConfig.get('configurations') as
(any[] | undefined);
+ if (configurations) {
+ for (let config of configurations) {
+ if (config["type"] == dconfig.type) {
+ for (let key in config) {
+ if (!dconfig[key]) {
+ dconfig[key] = config[key];
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
const runDebug = async (noDebug: boolean, testRun: boolean, uri: string,
methodName?: string, launchConfiguration?: string) => {
const docUri = uri ? vscode.Uri.file(uri) :
window.activeTextEditor?.document.uri;
if (docUri) {
@@ -369,6 +390,7 @@ export function activate(context: ExtensionContext):
VSNetBeansAPI {
launchConfiguration,
testRun
};
+ mergeWithLaunchConfig(debugConfig);
const debugOptions : vscode.DebugSessionOptions = {
noDebug: noDebug,
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists