Skip to content

Commit 78ba888

Browse files
authored
Upgrade Gradle tooling to support JDK-22 (#220)
* Upgrade Gradle tooling to Support JDK-22 * updated build.xml * added one more patch to support upgrade of gradle
1 parent 865bca3 commit 78ba888

File tree

3 files changed

+490
-1
lines changed

3 files changed

+490
-1
lines changed

build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<property name="nbplatform.default.harness.dir" location="${nbplatform.default.netbeans.dest.dir}/harness" />
3232
<property name="nbantext.jar" location="netbeans/nbbuild/build/nbantext.jar" />
3333
<property name="nb_all" location="netbeans" />
34-
<property name="patches" value="patches/6330.diff patches/7001.diff patches/7271.diff patches/7353.diff patches/7368.diff patches/7370.diff patches/7382.diff patches/7491-preliminary.diff patches/mvn-sh.diff patches/generate-dependencies.diff patches/rename-debugger.diff patches/remove-db.diff patches/nbjavac-not-required.diff" />
34+
<property name="patches" value="patches/6330.diff patches/7001.diff patches/7271.diff patches/7353.diff patches/7368.diff patches/7370.diff patches/7382.diff patches/7491-preliminary.diff patches/7543.diff patches/7583.diff patches/mvn-sh.diff patches/generate-dependencies.diff patches/rename-debugger.diff patches/remove-db.diff patches/nbjavac-not-required.diff" />
3535
<condition property="cmd.suffix" value=".cmd" else="">
3636
<os family="windows"/>
3737
</condition>

patches/7543.diff

Lines changed: 315 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,315 @@
1+
diff --git a/extide/gradle/nbproject/project.properties b/extide/gradle/nbproject/project.properties
2+
index aa352d0d3fd9..d22871c0a89b 100644
3+
--- a/extide/gradle/nbproject/project.properties
4+
+++ b/extide/gradle/nbproject/project.properties
5+
@@ -17,8 +17,7 @@
6+
7+
file.reference.netbeans-gradle-tooling.jar=release/modules/gradle/netbeans-gradle-tooling.jar
8+
is.autoload=true
9+
-javac.source=1.8
10+
-javac.target=1.8
11+
+javac.release=17
12+
javac.compilerargs=-Xlint -Xlint:-serial
13+
javadoc.arch=${basedir}/arch.xml
14+
javadoc.apichanges=${basedir}/apichanges.xml
15+
@@ -37,4 +36,9 @@ release.build/tooling/nb-tooling.gradle=modules/gradle/nb-tooling.gradle
16+
17+
extra.module.files=\
18+
modules/gradle/netbeans-gradle-tooling.jar,\
19+
- modules/gradle/nb-tooling.gradle
20+
\ No newline at end of file
21+
+ modules/gradle/nb-tooling.gradle
22+
+
23+
+# These properties are used for compiling the netbeans-gradle-tooling library
24+
+# It shall be built on the lowest language level that the Gradle integration supports
25+
+tooling.javac.release=8
26+
+tooling.gradle.version=7.4
27+
diff --git a/extide/gradle/netbeans-gradle-tooling/build.xml b/extide/gradle/netbeans-gradle-tooling/build.xml
28+
index 7c994be3b7f3..96f6bbb3f535 100644
29+
--- a/extide/gradle/netbeans-gradle-tooling/build.xml
30+
+++ b/extide/gradle/netbeans-gradle-tooling/build.xml
31+
@@ -23,7 +23,7 @@
32+
<description>Builds, tests, and runs the project org.netbeans.modules.gradle</description>
33+
34+
<property name="tooling" value="netbeans-gradle-tooling"/>
35+
- <property name="gradle.version" value="7.4" />
36+
+ <property file="../nbproject/project.properties"/>
37+
38+
<available property="has.gradle-libs" file="build/gradle-libs" type="dir"/>
39+
40+
@@ -33,16 +33,16 @@
41+
42+
<target name="prepare-libs" unless="has.gradle-libs">
43+
<mkdir dir="build/gradle-libs"/>
44+
- <unzip src="../external/gradle-${gradle.version}-bin.zip" dest="build/gradle-libs">
45+
+ <unzip src="../external/gradle-${tooling.gradle.version}-bin.zip" dest="build/gradle-libs">
46+
<patternset>
47+
- <include name="gradle-${gradle.version}/lib/**/*.jar"/>
48+
+ <include name="gradle-${tooling.gradle.version}/lib/**/*.jar"/>
49+
</patternset>
50+
<mapper type="flatten"/>
51+
</unzip>
52+
</target>
53+
<target name="compile" depends="prepare-libs">
54+
<mkdir dir="build/classes/java/main"/>
55+
- <javac srcdir="src/main/java" destdir="build/classes/java/main" classpathref="compile.classpath" release="8" includeantruntime="false" debug="true"/>
56+
+ <javac srcdir="src/main/java" destdir="build/classes/java/main" classpathref="compile.classpath" release="${tooling.javac.release}" includeantruntime="false" debug="true"/>
57+
</target>
58+
59+
<target name="jar" depends="compile">
60+
diff --git a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfo.java b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfo.java
61+
index afceb0878207..a5a10170dfa6 100644
62+
--- a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfo.java
63+
+++ b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfo.java
64+
@@ -20,6 +20,7 @@
65+
package org.netbeans.modules.gradle.tooling.internal;
66+
67+
import org.netbeans.modules.gradle.tooling.Model;
68+
+import org.gradle.tooling.BuildAction;
69+
import java.util.Map;
70+
import java.util.Set;
71+
72+
@@ -68,4 +69,8 @@ enum Severity {
73+
public String getDetail();
74+
public Report getCause();
75+
}
76+
+
77+
+ public static BuildAction<NbProjectInfo> createAction() {
78+
+ return new NbProjectInfoAction();
79+
+ }
80+
}
81+
diff --git a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfoAction.java b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfoAction.java
82+
new file mode 100644
83+
index 000000000000..e6de7fc029a3
84+
--- /dev/null
85+
+++ b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfoAction.java
86+
@@ -0,0 +1,35 @@
87+
+/*
88+
+ * Licensed to the Apache Software Foundation (ASF) under one
89+
+ * or more contributor license agreements. See the NOTICE file
90+
+ * distributed with this work for additional information
91+
+ * regarding copyright ownership. The ASF licenses this file
92+
+ * to you under the Apache License, Version 2.0 (the
93+
+ * "License"); you may not use this file except in compliance
94+
+ * with the License. You may obtain a copy of the License at
95+
+ *
96+
+ * http://www.apache.org/licenses/LICENSE-2.0
97+
+ *
98+
+ * Unless required by applicable law or agreed to in writing,
99+
+ * software distributed under the License is distributed on an
100+
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
101+
+ * KIND, either express or implied. See the License for the
102+
+ * specific language governing permissions and limitations
103+
+ * under the License.
104+
+ */
105+
+package org.netbeans.modules.gradle.tooling.internal;
106+
+
107+
+import java.io.Serializable;
108+
+import org.gradle.tooling.BuildAction;
109+
+import org.gradle.tooling.BuildController;
110+
+
111+
+/**
112+
+ *
113+
+ * @author lkishalmi
114+
+ */
115+
+class NbProjectInfoAction implements Serializable, BuildAction<NbProjectInfo>{
116+
+
117+
+ @Override
118+
+ public NbProjectInfo execute(BuildController bc) {
119+
+ return bc.getModel(NbProjectInfo.class);
120+
+ }
121+
+}
122+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java
123+
index 518aab7bd6b4..7fdfb72b129f 100644
124+
--- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java
125+
+++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java
126+
@@ -481,7 +481,7 @@ private static GradleReport createReport(File p, Throwable e, boolean top, boole
127+
}
128+
129+
private static BuildActionExecuter<NbProjectInfo> createInfoAction(ProjectConnection pconn, GradleCommandLine cmd, CancellationToken token, ProgressListener pl) {
130+
- BuildActionExecuter<NbProjectInfo> ret = pconn.action(new NbProjectInfoAction());
131+
+ BuildActionExecuter<NbProjectInfo> ret = pconn.action(NbProjectInfo.createAction());
132+
cmd.configure(ret);
133+
if (DEBUG_GRADLE_INFO_ACTION) {
134+
// This would start the Gradle Daemon in Debug Mode, so the Tooling API can be debugged as well
135+
@@ -652,14 +652,6 @@ public void run() {
136+
}
137+
}
138+
139+
- private static class NbProjectInfoAction implements Serializable, BuildAction<NbProjectInfo> {
140+
-
141+
- @Override
142+
- public NbProjectInfo execute(BuildController bc) {
143+
- return bc.getModel(NbProjectInfo.class);
144+
- }
145+
- }
146+
-
147+
private static class ProjectLoaderTask implements Callable<GradleProject>, Cancellable {
148+
149+
private final ReloadContext ctx;
150+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java b/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java
151+
index 61e9a964a11b..af9a859de853 100644
152+
--- a/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java
153+
+++ b/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java
154+
@@ -228,7 +228,7 @@ void read(WizardDescriptor settings) {
155+
156+
if (settings.getProperty(PROP_JAVA_VERSIONS) != null) {
157+
List<Integer> javaVersions = (List<Integer>) settings.getProperty(PROP_JAVA_VERSIONS);
158+
- DefaultComboBoxModel<Integer> versionModel = new DefaultComboBoxModel<>(javaVersions.toArray(new Integer[0]));
159+
+ DefaultComboBoxModel<Integer> versionModel = new DefaultComboBoxModel<>(javaVersions.toArray(Integer[]::new));
160+
cbJavaVersion.setModel(versionModel);
161+
162+
if (settings.getProperty(PROP_JAVA_VERSION) != null) {
163+
@@ -241,7 +241,7 @@ void read(WizardDescriptor settings) {
164+
165+
if (settings.getProperty(PROP_TEST_FRAMEWORKS) != null) {
166+
List<TestFramework> testframeworks = (List<TestFramework>) settings.getProperty(PROP_TEST_FRAMEWORKS);
167+
- DefaultComboBoxModel<TestFramework> frameworkModel = new DefaultComboBoxModel<>(testframeworks.toArray(new TestFramework[0]));
168+
+ DefaultComboBoxModel<TestFramework> frameworkModel = new DefaultComboBoxModel<>(testframeworks.toArray(TestFramework[]::new));
169+
cbTestFramework.setModel(frameworkModel);
170+
if (settings.getProperty(PROP_TEST_FRAMEWORK) != null) {
171+
cbTestFramework.setSelectedItem(settings.getProperty(PROP_TEST_FRAMEWORK));
172+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java b/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java
173+
index fd528f433bbb..d61325d77c47 100644
174+
--- a/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java
175+
+++ b/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java
176+
@@ -59,12 +59,12 @@ public class GradleProcessorFactory implements OutputProcessorFactory {
177+
178+
@Override
179+
public Set<? extends OutputProcessor> createOutputProcessors(RunConfig cfg) {
180+
- return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
181+
+ return Set.of(
182+
GRADLE_PROCESSOR,
183+
JAVAC_PROCESSOR,
184+
GROOVYC_PROCESSOR,
185+
new WarningModeAllProcessor(cfg)
186+
- )));
187+
+ );
188+
}
189+
190+
private static final Pattern GRADLE_ERROR = Pattern.compile("(Build file|Script) '(.*)\\.gradle' line: ([0-9]+)");
191+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/GradleInitWizard.java b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/GradleInitWizard.java
192+
index 56fdfe17e459..15b861ecbbfa 100644
193+
--- a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/GradleInitWizard.java
194+
+++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/GradleInitWizard.java
195+
@@ -19,10 +19,8 @@
196+
package org.netbeans.modules.gradle.spi.newproject;
197+
198+
import java.io.File;
199+
-import java.util.Collections;
200+
import java.util.List;
201+
import java.util.Map;
202+
-import java.util.stream.Collectors;
203+
import org.netbeans.modules.gradle.newproject.GradleInitPanel;
204+
import org.netbeans.spi.project.ui.support.CommonProjectActions;
205+
import org.openide.WizardDescriptor;
206+
@@ -51,11 +49,10 @@ public enum GradleDSL {
207+
208+
@Override
209+
public String toString() {
210+
- switch(this) {
211+
- case GROOVY: return Bundle.LBL_DSL_GROOVY();
212+
- case KOTLIN: return Bundle.LBL_DSL_KOTLIN();
213+
- default: throw new IllegalStateException("update switch");
214+
- }
215+
+ return switch(this) {
216+
+ case GROOVY -> Bundle.LBL_DSL_GROOVY();
217+
+ case KOTLIN -> Bundle.LBL_DSL_KOTLIN();
218+
+ };
219+
}
220+
}
221+
222+
@@ -91,17 +88,16 @@ public String getId() {
223+
224+
@Override
225+
public String toString() {
226+
- switch(this) {
227+
- case CPP_TEST: return Bundle.LBL_TFW_CPP_TEST();
228+
- case JUNIT: return Bundle.LBL_TFW_JUNIT();
229+
- case JUNIT_5: return Bundle.LBL_TFW_JUNIT_5();
230+
- case KOTLIN_TEST: return Bundle.LBL_TFW_KOTLIN_TEST();
231+
- case SCALA_TEST: return Bundle.LBL_TFW_SCALA_TEST();
232+
- case SPOCK: return Bundle.LBL_TFW_SPOCK();
233+
- case TESTNG: return Bundle.LBL_TFW_TESTNG();
234+
- case XCTEST: return Bundle.LBL_TFW_XCTEST();
235+
- default: throw new IllegalStateException("update switch");
236+
- }
237+
+ return switch(this) {
238+
+ case CPP_TEST -> Bundle.LBL_TFW_CPP_TEST();
239+
+ case JUNIT -> Bundle.LBL_TFW_JUNIT();
240+
+ case JUNIT_5 -> Bundle.LBL_TFW_JUNIT_5();
241+
+ case KOTLIN_TEST -> Bundle.LBL_TFW_KOTLIN_TEST();
242+
+ case SCALA_TEST -> Bundle.LBL_TFW_SCALA_TEST();
243+
+ case SPOCK -> Bundle.LBL_TFW_SPOCK();
244+
+ case TESTNG -> Bundle.LBL_TFW_TESTNG();
245+
+ case XCTEST-> Bundle.LBL_TFW_XCTEST();
246+
+ };
247+
}
248+
}
249+
250+
@@ -112,7 +108,7 @@ public String toString() {
251+
private TestFramework preferredTestFramework;
252+
private List<Integer> javaVersions;
253+
private List<TestFramework> testFrameworks;
254+
- private List<String> important = Collections.emptyList();
255+
+ private List<String> important = List.of();
256+
257+
private GradleInitWizard(String type, String title) {
258+
this.type = type;
259+
@@ -215,14 +211,14 @@ protected void collectOperations(TemplateOperation ops, Map<String, Object> para
260+
List<String> open = important.stream()
261+
.map((s) -> packageBase != null ? s.replace("${package}", packageBase.replace('.', '/')) : s) //NOI18N
262+
.map((s) -> s.replace("${projectName}", name)) //NOI18N
263+
- .collect(Collectors.toList());
264+
+ .toList();
265+
ops.addProjectPreload(root, open);
266+
}
267+
268+
269+
@Override
270+
protected List<? extends WizardDescriptor.Panel<WizardDescriptor>> createPanels() {
271+
- return Collections.singletonList(new GradleInitPanel());
272+
+ return List.of(new GradleInitPanel());
273+
}
274+
275+
@Override
276+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java
277+
index 8eeadadc7121..32832f8f5fcb 100644
278+
--- a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java
279+
+++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java
280+
@@ -479,7 +479,7 @@ public final Set<FileObject> execute() {
281+
} catch (IOException ex) {
282+
}
283+
}
284+
- return Collections.<FileObject>emptySet();
285+
+ return Set.of();
286+
}
287+
288+
}
289+
@@ -489,7 +489,7 @@ private static final class PreloadProject extends BaseOperationStep {
290+
final List<String> importantFiles;
291+
292+
public PreloadProject(File dir) {
293+
- this(dir, Collections.emptyList());
294+
+ this(dir, List.of());
295+
}
296+
297+
public PreloadProject(File dir, List<String> importantFiles) {
298+
@@ -643,7 +643,7 @@ public Set<FileObject> execute() {
299+
} catch (IOException | ScriptException ex) {
300+
throw new IOException(ex.getMessage(), ex);
301+
}
302+
- return important ? Collections.singleton(fo) : null;
303+
+ return important ? Set.of(fo) : null;
304+
} catch (IOException ex) {}
305+
} catch (IOException ex) {}
306+
return null;
307+
@@ -680,7 +680,7 @@ public Set<FileObject> execute() {
308+
DataFolder targetFolder = DataFolder.findFolder(targetParent);
309+
DataObject o = DataObject.find(template);
310+
DataObject newData = o.createFromTemplate(targetFolder, targetName, tokens);
311+
- return important ? Collections.singleton(newData.getPrimaryFile()) : null;
312+
+ return important ? Set.of(newData.getPrimaryFile()) : null;
313+
} catch (IOException ex) {
314+
315+
}

0 commit comments

Comments
 (0)