Skip to content

Commit d30b8ef

Browse files
Merge pull request #6607 from apache/delivery
Sync delivery to release200 for 20-rc2
2 parents f999eff + 5ec2467 commit d30b8ef

101 files changed

Lines changed: 2523 additions & 626 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ jobs:
758758
timeout-minutes: 60
759759
strategy:
760760
matrix:
761-
java: [ '11' ]
761+
java: [ '11', '17' ]
762762
steps:
763763

764764
- name: Set up JDK ${{ matrix.java }}

extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NetBeansRunSinglePlugin.java

Lines changed: 47 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
import org.gradle.api.Task;
3131
import org.gradle.api.tasks.JavaExec;
3232
import org.gradle.api.tasks.SourceSetContainer;
33+
import org.gradle.api.tasks.TaskProvider;
3334
import org.gradle.process.CommandLineArgumentProvider;
34-
import org.gradle.tooling.BuildException;
3535
import org.gradle.util.GradleVersion;
3636
/**
3737
*
@@ -47,6 +47,8 @@ class NetBeansRunSinglePlugin implements Plugin<Project> {
4747
private static final String RUN_SINGLE_JVM_ARGS = "runJvmArgs";
4848
private static final String RUN_SINGLE_CWD = "runWorkingDir";
4949

50+
private static final String DEPRECATE_RUN_SINGLE =
51+
"runSingle task is deprecated. Inspect your configuration and use just 'run' task instead of 'runSingle'";
5052
@Override
5153
public void apply(Project project) {
5254
project.afterEvaluate(p -> {
@@ -55,61 +57,58 @@ public void apply(Project project) {
5557
&& project.hasProperty(RUN_SINGLE_MAIN)) {
5658
Set<Task> runTasks = p.getTasksByName("run", false);
5759
Task r = runTasks.isEmpty() ? null : runTasks.iterator().next();
58-
String mainClass = project.property(RUN_SINGLE_MAIN).toString();
59-
p.getTasks().withType(JavaExec.class).configureEach(je -> {
60-
if (GRADLE_VERSION.compareTo(GradleVersion.version("6.4")) < 0) {
61-
// Using setMain to keep the backward compatibility before Gradle 6.4
62-
je.setMain(mainClass);
63-
} else {
64-
je.getMainClass().set(mainClass);
65-
}
66-
if (project.hasProperty(RUN_SINGLE_ARGS)) {
67-
je.setArgs(asList(project.property(RUN_SINGLE_ARGS).toString().split(" ")));
68-
}
69-
if (p.hasProperty(RUN_SINGLE_JVM_ARGS)) {
70-
// Property jvmArgumentProviders should not be implemented as a lambda to allow execution optimizations.
71-
// See https://docs.gradle.org/current/userguide/validation_problems.html#implementation_unknown
72-
je.getJvmArgumentProviders().add(new CommandLineArgumentProvider() {
73-
// Do not convert to lambda.
74-
@Override
75-
public Iterable<String> asArguments() {
76-
return asList(p.property(RUN_SINGLE_JVM_ARGS).toString().split(" "));
77-
}
78-
});
79-
}
80-
try {
81-
je.setStandardInput(System.in);
82-
} catch (RuntimeException ex) {
83-
if(LOG.isEnabled(LogLevel.DEBUG)) {
84-
LOG.debug("Failed to set STDIN for Plugin: " + je.toString(), ex);
85-
} else {
86-
LOG.info("Failed to set STDIN for Plugin: " + je.toString());
87-
}
88-
}
89-
if (project.hasProperty(RUN_SINGLE_CWD)) {
90-
je.setWorkingDir(project.property(RUN_SINGLE_CWD).toString());
91-
}
92-
});
60+
p.getTasks().withType(JavaExec.class).configureEach(je -> configureJavaExec(project, je));
9361
addTask(project, r);
9462
}
9563
});
9664
}
9765

98-
public static class JE extends JavaExec {
99-
@Override
100-
public void exec() {
66+
private void configureJavaExec(Project project, JavaExec je) {
67+
String mainClass = project.property(RUN_SINGLE_MAIN).toString();
68+
if (GRADLE_VERSION.compareTo(GradleVersion.version("6.4")) < 0) {
69+
// Using setMain to keep the backward compatibility before Gradle 6.4
70+
je.setMain(mainClass);
71+
} else {
72+
je.getMainClass().set(mainClass);
10173
}
102-
}
103-
104-
private void addTask(Project project, Task runTask) {
105-
project.getTasks().register(RUN_SINGLE_TASK, JE.class, (je) -> {
106-
if (runTask == null) {
107-
throw new BuildException("Could not find \"run\" task to execute. Please upgrade your configuration to use standard run-style tasks instead of deprecated runSingle", null);
74+
if (project.hasProperty(RUN_SINGLE_ARGS)) {
75+
je.setArgs(asList(project.property(RUN_SINGLE_ARGS).toString().split(" ")));
76+
}
77+
if (project.hasProperty(RUN_SINGLE_JVM_ARGS)) {
78+
// Property jvmArgumentProviders should not be implemented as a lambda to allow execution optimizations.
79+
// See https://docs.gradle.org/current/userguide/validation_problems.html#implementation_unknown
80+
je.getJvmArgumentProviders().add(new CommandLineArgumentProvider() {
81+
// Do not convert to lambda.
82+
@Override
83+
public Iterable<String> asArguments() {
84+
return asList(project.property(RUN_SINGLE_JVM_ARGS).toString().split(" "));
85+
}
86+
});
87+
}
88+
try {
89+
je.setStandardInput(System.in);
90+
} catch (RuntimeException ex) {
91+
if(LOG.isEnabled(LogLevel.DEBUG)) {
92+
LOG.debug("Failed to set STDIN for Plugin: " + je.toString(), ex);
10893
} else {
109-
LOG.warn("runSingle task is deprecated. Inspect your configuration and use just 'run' task instead of 'runSingle'");
110-
je.finalizedBy(runTask);
94+
LOG.info("Failed to set STDIN for Plugin: " + je.toString());
11195
}
112-
});
96+
}
97+
if (project.hasProperty(RUN_SINGLE_CWD)) {
98+
je.setWorkingDir(project.property(RUN_SINGLE_CWD).toString());
99+
}
100+
}
101+
102+
private void addTask(Project project, Task runTask) {
103+
TaskProvider<? extends DefaultTask> runSingle = runTask == null
104+
? project.getTasks().register(RUN_SINGLE_TASK, JavaExec.class, (je) -> {
105+
SourceSetContainer sourceSets = project.getExtensions().findByType(SourceSetContainer.class);
106+
je.setClasspath(sourceSets.findByName("main").getRuntimeClasspath());
107+
configureJavaExec(project, je);
108+
})
109+
: project.getTasks().register(RUN_SINGLE_TASK, DefaultTask.class, (task) -> task.finalizedBy(runTask));
110+
111+
runSingle.configure((task) -> task.doFirst((action) -> project.getLogger().warn(DEPRECATE_RUN_SINGLE)));
113112
}
114113

115114
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
package org.netbeans.modules.gradle;
20+
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
import java.util.Map;
24+
import java.util.WeakHashMap;
25+
import java.util.logging.Logger;
26+
import org.gradle.tooling.GradleConnector;
27+
import org.netbeans.api.project.Project;
28+
import org.openide.modules.OnStop;
29+
30+
/**
31+
*
32+
* @author lkishalmi
33+
*/
34+
public final class GradleConnectorManager {
35+
36+
private final Map<Project, GradleConnector> projectConnector = new WeakHashMap<>();
37+
private final List<GradleConnector> connectors = new ArrayList<>();
38+
39+
private static final GradleConnectorManager INSTANCE = new GradleConnectorManager();
40+
private static final Logger LOG = Logger.getLogger(GradleConnectorManager.class.getName());
41+
42+
private GradleConnectorManager() {}
43+
44+
public static GradleConnectorManager getDefault() {
45+
return INSTANCE;
46+
}
47+
48+
public GradleConnector getConnector(Project prj) {
49+
synchronized (connectors) {
50+
GradleConnector ret = projectConnector.computeIfAbsent(prj, p -> {
51+
GradleConnector conn = GradleConnector.newConnector();
52+
connectors.add(conn);
53+
return conn;
54+
});
55+
return ret;
56+
}
57+
}
58+
59+
60+
public void disconnectAll() {
61+
LOG.info("Disconnecting from Gradle Daemons."); //NOI18N
62+
synchronized (connectors) {
63+
projectConnector.clear();
64+
65+
connectors.forEach(GradleConnector::disconnect);
66+
connectors.clear();
67+
}
68+
LOG.info("Disconnecting from Gradle Daemons. Done."); //NOI18N
69+
}
70+
71+
@OnStop
72+
public static class DisconnectGradle implements Runnable {
73+
74+
@Override
75+
public void run() {
76+
GradleConnectorManager.getDefault().disconnectAll();
77+
}
78+
79+
}
80+
}

extide/gradle/src/org/netbeans/modules/gradle/GradleProjectConnection.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import org.gradle.tooling.ResultHandler;
3838
import org.gradle.tooling.TestLauncher;
3939
import org.netbeans.api.project.Project;
40+
import org.netbeans.api.project.ProjectManager;
41+
import org.netbeans.api.project.ProjectUtils;
4042
import org.netbeans.modules.gradle.api.NbGradleProject;
4143
import org.netbeans.modules.gradle.api.execute.GradleDistributionManager;
4244
import org.netbeans.modules.gradle.api.execute.GradleDistributionManager.GradleDistribution;
@@ -151,8 +153,8 @@ private <T extends ConfigurableLauncher<?>> T setJavaHome(T launcher) {
151153
return launcher;
152154
}
153155

154-
private static ProjectConnection createConnection(GradleDistribution dist, File projectDir) {
155-
GradleConnector gconn = GradleConnector.newConnector();
156+
private ProjectConnection createConnection(GradleDistribution dist, File projectDir) {
157+
GradleConnector gconn = GradleConnectorManager.getDefault().getConnector(project);
156158
gconn = gconn.useGradleUserHomeDir(dist.getGradleUserHome());
157159
if (dist.isAvailable()) {
158160
gconn = gconn.useInstallation(dist.getDistributionDir());

extide/gradle/src/org/netbeans/modules/gradle/execute/GradleDistributionProviderImpl.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ public class GradleDistributionProviderImpl implements GradleDistributionProvide
7474
final NbGradleProjectImpl project;
7575
private GradleDistribution dist;
7676
private final PropertyChangeListener pcl;
77-
private URI distributionURI;
7877

7978
public GradleDistributionProviderImpl(Project project) {
8079
this.project = (NbGradleProjectImpl) project;
@@ -83,8 +82,7 @@ public GradleDistributionProviderImpl(Project project) {
8382
URI uri = (URI) evt.getNewValue();
8483
if ((uri != null) && (uri.getPath() != null) && uri.getPath().endsWith(GradleFiles.WRAPPER_PROPERTIES)) {
8584
URI newDistURI = getWrapperDistributionURI();
86-
if (GradleSettings.getDefault().isWrapperPreferred() && (distributionURI != null) && !Objects.equal(distributionURI, newDistURI)) {
87-
distributionURI = newDistURI;
85+
if (GradleSettings.getDefault().isWrapperPreferred() && (dist != null) && !Objects.equal(dist.getDistributionURI(), newDistURI)) {
8886
distributionChanged();
8987
}
9088
}

extide/gradle/src/org/netbeans/modules/gradle/loaders/GradleDaemon.java

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.netbeans.modules.gradle.loaders;
2121

2222
import org.netbeans.modules.gradle.api.NbGradleProject;
23-
import org.netbeans.modules.gradle.api.execute.GradleCommandLine;
2423
import java.io.File;
2524
import java.io.IOException;
2625
import java.nio.file.Files;
@@ -31,12 +30,6 @@
3130
import java.util.stream.Collectors;
3231
import java.util.stream.Stream;
3332

34-
import org.gradle.tooling.BuildAction;
35-
import org.gradle.tooling.BuildActionExecuter;
36-
import org.gradle.tooling.BuildController;
37-
import org.gradle.tooling.GradleConnectionException;
38-
import org.gradle.tooling.GradleConnector;
39-
import org.gradle.tooling.ProjectConnection;
4033
import org.openide.modules.InstalledFileLocator;
4134
import org.openide.modules.Places;
4235
import org.openide.util.RequestProcessor;
@@ -55,11 +48,6 @@ public final class GradleDaemon {
5548
private static final String PROP_TOOLING_JAR = "NETBEANS_TOOLING_JAR";
5649
private static final String TOOLING_JAR = InstalledFileLocator.getDefault().locate(TOOLING_JAR_NAME, NbGradleProject.CODENAME_BASE, false).getAbsolutePath().replace("\\", "\\\\");
5750

58-
private static final String DAEMON_LOADED = "Daemon Loaded."; //NOI18N
59-
private static final String LOADER_PROJECT_NAME = "modules/gradle/daemon-loader"; //NOI18N
60-
private static final File LOADER_PROJECT_DIR = InstalledFileLocator.getDefault().locate(LOADER_PROJECT_NAME, NbGradleProject.CODENAME_BASE, false);
61-
private static final DummyBuildAction DUMMY_ACTION = new DummyBuildAction();
62-
6351
private static final Logger LOG = Logger.getLogger(GradleDaemon.class.getName());
6452

6553
private GradleDaemon() {}
@@ -82,32 +70,4 @@ public static String initScript() {
8270
}
8371
return initScript.getAbsolutePath();
8472
}
85-
86-
private static void doLoadDaemon() {
87-
GradleConnector gconn = GradleConnector.newConnector();
88-
ProjectConnection pconn = gconn.forProjectDirectory(LOADER_PROJECT_DIR).connect();
89-
BuildActionExecuter<String> action = pconn.action(DUMMY_ACTION);
90-
GradleCommandLine cmd = new GradleCommandLine();
91-
cmd.setFlag(GradleCommandLine.Flag.OFFLINE, true);
92-
cmd.addParameter(GradleCommandLine.Parameter.INIT_SCRIPT, initScript());
93-
cmd.configure(action);
94-
try {
95-
action.run();
96-
} catch (GradleConnectionException | IllegalStateException ex) {
97-
// Well for some reason we were not able to load Gradle.
98-
// Ignoring that for now
99-
} finally {
100-
pconn.close();
101-
}
102-
}
103-
104-
private static class DummyBuildAction implements BuildAction<String> {
105-
106-
@Override
107-
public String execute(BuildController bc) {
108-
return DAEMON_LOADED;
109-
}
110-
111-
}
112-
11373
}

extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ public Set<FileObject> execute() {
318318
// Well for some reason we were not able to load Gradle.
319319
// Ignoring that for now
320320
}
321+
gconn.disconnect();
321322
return Collections.singleton(FileUtil.toFileObject(target));
322323
}
323324
}
@@ -492,6 +493,7 @@ public Set<FileObject> execute() {
492493
// Well for some reason we were not able to load Gradle.
493494
// Ignoring that for now
494495
}
496+
gconn.disconnect();
495497
return null;
496498
}
497499

extide/gradle/test/unit/src/org/netbeans/modules/gradle/api/GradleBaseProjectTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ private Project makeProjectWithWrapper(String subdir, String gradleVersion) thro
245245
OpenProjects.getDefault().openProjects().get();
246246

247247
NbGradleProject.get(p).toQuality("Load data", NbGradleProject.Quality.FULL, false).toCompletableFuture().get();
248+
gconn.disconnect();
248249
return p;
249250
}
250251

ide/libs.git/src/org/netbeans/libs/git/jgit/commands/LogCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ private void markBranchFlags (Map<String, GitBranch> allBranches, RevWalk walk,
210210
}
211211
} else {
212212
usedFlags.add(flagId);
213-
if (i < 25) {
214-
i = i + 1;
213+
if (i <= 23) { // leave one spare flag for the run method, see RevWalk.newFlag()
214+
i++;
215215
RevFlag flag = walk.newFlag(flagId);
216216
List<GitBranch> branches = new ArrayList<>(allBranches.size());
217217
branches.add(e.getValue());
@@ -253,7 +253,7 @@ protected String getCommandDescription () {
253253
}
254254

255255
public GitRevisionInfo[] getRevisions () {
256-
return revisions.toArray(new GitRevisionInfo[revisions.size()]);
256+
return revisions.toArray(new GitRevisionInfo[0]);
257257
}
258258

259259
private void addRevision (GitRevisionInfo info) {

0 commit comments

Comments
 (0)