diff --git a/build.xml b/build.xml index 67d40be..f182bcd 100644 --- a/build.xml +++ b/build.xml @@ -31,7 +31,7 @@ - + diff --git a/patches/7543.diff b/patches/7543.diff new file mode 100644 index 0000000..ce7ce54 --- /dev/null +++ b/patches/7543.diff @@ -0,0 +1,315 @@ +diff --git a/extide/gradle/nbproject/project.properties b/extide/gradle/nbproject/project.properties +index aa352d0d3fd9..d22871c0a89b 100644 +--- a/extide/gradle/nbproject/project.properties ++++ b/extide/gradle/nbproject/project.properties +@@ -17,8 +17,7 @@ + + file.reference.netbeans-gradle-tooling.jar=release/modules/gradle/netbeans-gradle-tooling.jar + is.autoload=true +-javac.source=1.8 +-javac.target=1.8 ++javac.release=17 + javac.compilerargs=-Xlint -Xlint:-serial + javadoc.arch=${basedir}/arch.xml + javadoc.apichanges=${basedir}/apichanges.xml +@@ -37,4 +36,9 @@ release.build/tooling/nb-tooling.gradle=modules/gradle/nb-tooling.gradle + + extra.module.files=\ + modules/gradle/netbeans-gradle-tooling.jar,\ +- modules/gradle/nb-tooling.gradle +\ No newline at end of file ++ modules/gradle/nb-tooling.gradle ++ ++# These properties are used for compiling the netbeans-gradle-tooling library ++# It shall be built on the lowest language level that the Gradle integration supports ++tooling.javac.release=8 ++tooling.gradle.version=7.4 +diff --git a/extide/gradle/netbeans-gradle-tooling/build.xml b/extide/gradle/netbeans-gradle-tooling/build.xml +index 7c994be3b7f3..96f6bbb3f535 100644 +--- a/extide/gradle/netbeans-gradle-tooling/build.xml ++++ b/extide/gradle/netbeans-gradle-tooling/build.xml +@@ -23,7 +23,7 @@ + Builds, tests, and runs the project org.netbeans.modules.gradle + + +- ++ + + + +@@ -33,16 +33,16 @@ + + + +- ++ + +- ++ + + + + + + +- ++ + + + +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 +index afceb0878207..a5a10170dfa6 100644 +--- 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 +@@ -20,6 +20,7 @@ + package org.netbeans.modules.gradle.tooling.internal; + + import org.netbeans.modules.gradle.tooling.Model; ++import org.gradle.tooling.BuildAction; + import java.util.Map; + import java.util.Set; + +@@ -68,4 +69,8 @@ enum Severity { + public String getDetail(); + public Report getCause(); + } ++ ++ public static BuildAction createAction() { ++ return new NbProjectInfoAction(); ++ } + } +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 +new file mode 100644 +index 000000000000..e6de7fc029a3 +--- /dev/null ++++ b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/internal/NbProjectInfoAction.java +@@ -0,0 +1,35 @@ ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, ++ * software distributed under the License is distributed on an ++ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++ * KIND, either express or implied. See the License for the ++ * specific language governing permissions and limitations ++ * under the License. ++ */ ++package org.netbeans.modules.gradle.tooling.internal; ++ ++import java.io.Serializable; ++import org.gradle.tooling.BuildAction; ++import org.gradle.tooling.BuildController; ++ ++/** ++ * ++ * @author lkishalmi ++ */ ++class NbProjectInfoAction implements Serializable, BuildAction{ ++ ++ @Override ++ public NbProjectInfo execute(BuildController bc) { ++ return bc.getModel(NbProjectInfo.class); ++ } ++} +diff --git a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java +index 518aab7bd6b4..7fdfb72b129f 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java +@@ -481,7 +481,7 @@ private static GradleReport createReport(File p, Throwable e, boolean top, boole + } + + private static BuildActionExecuter createInfoAction(ProjectConnection pconn, GradleCommandLine cmd, CancellationToken token, ProgressListener pl) { +- BuildActionExecuter ret = pconn.action(new NbProjectInfoAction()); ++ BuildActionExecuter ret = pconn.action(NbProjectInfo.createAction()); + cmd.configure(ret); + if (DEBUG_GRADLE_INFO_ACTION) { + // This would start the Gradle Daemon in Debug Mode, so the Tooling API can be debugged as well +@@ -652,14 +652,6 @@ public void run() { + } + } + +- private static class NbProjectInfoAction implements Serializable, BuildAction { +- +- @Override +- public NbProjectInfo execute(BuildController bc) { +- return bc.getModel(NbProjectInfo.class); +- } +- } +- + private static class ProjectLoaderTask implements Callable, Cancellable { + + private final ReloadContext ctx; +diff --git a/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java b/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java +index 61e9a964a11b..af9a859de853 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/newproject/GradleInitPanelVisual.java +@@ -228,7 +228,7 @@ void read(WizardDescriptor settings) { + + if (settings.getProperty(PROP_JAVA_VERSIONS) != null) { + List javaVersions = (List) settings.getProperty(PROP_JAVA_VERSIONS); +- DefaultComboBoxModel versionModel = new DefaultComboBoxModel<>(javaVersions.toArray(new Integer[0])); ++ DefaultComboBoxModel versionModel = new DefaultComboBoxModel<>(javaVersions.toArray(Integer[]::new)); + cbJavaVersion.setModel(versionModel); + + if (settings.getProperty(PROP_JAVA_VERSION) != null) { +@@ -241,7 +241,7 @@ void read(WizardDescriptor settings) { + + if (settings.getProperty(PROP_TEST_FRAMEWORKS) != null) { + List testframeworks = (List) settings.getProperty(PROP_TEST_FRAMEWORKS); +- DefaultComboBoxModel frameworkModel = new DefaultComboBoxModel<>(testframeworks.toArray(new TestFramework[0])); ++ DefaultComboBoxModel frameworkModel = new DefaultComboBoxModel<>(testframeworks.toArray(TestFramework[]::new)); + cbTestFramework.setModel(frameworkModel); + if (settings.getProperty(PROP_TEST_FRAMEWORK) != null) { + cbTestFramework.setSelectedItem(settings.getProperty(PROP_TEST_FRAMEWORK)); +diff --git a/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java b/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java +index fd528f433bbb..d61325d77c47 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/output/GradleProcessorFactory.java +@@ -59,12 +59,12 @@ public class GradleProcessorFactory implements OutputProcessorFactory { + + @Override + public Set createOutputProcessors(RunConfig cfg) { +- return Collections.unmodifiableSet(new HashSet<>(Arrays.asList( ++ return Set.of( + GRADLE_PROCESSOR, + JAVAC_PROCESSOR, + GROOVYC_PROCESSOR, + new WarningModeAllProcessor(cfg) +- ))); ++ ); + } + + private static final Pattern GRADLE_ERROR = Pattern.compile("(Build file|Script) '(.*)\\.gradle' line: ([0-9]+)"); +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 +index 56fdfe17e459..15b861ecbbfa 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/GradleInitWizard.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/GradleInitWizard.java +@@ -19,10 +19,8 @@ + package org.netbeans.modules.gradle.spi.newproject; + + import java.io.File; +-import java.util.Collections; + import java.util.List; + import java.util.Map; +-import java.util.stream.Collectors; + import org.netbeans.modules.gradle.newproject.GradleInitPanel; + import org.netbeans.spi.project.ui.support.CommonProjectActions; + import org.openide.WizardDescriptor; +@@ -51,11 +49,10 @@ public enum GradleDSL { + + @Override + public String toString() { +- switch(this) { +- case GROOVY: return Bundle.LBL_DSL_GROOVY(); +- case KOTLIN: return Bundle.LBL_DSL_KOTLIN(); +- default: throw new IllegalStateException("update switch"); +- } ++ return switch(this) { ++ case GROOVY -> Bundle.LBL_DSL_GROOVY(); ++ case KOTLIN -> Bundle.LBL_DSL_KOTLIN(); ++ }; + } + } + +@@ -91,17 +88,16 @@ public String getId() { + + @Override + public String toString() { +- switch(this) { +- case CPP_TEST: return Bundle.LBL_TFW_CPP_TEST(); +- case JUNIT: return Bundle.LBL_TFW_JUNIT(); +- case JUNIT_5: return Bundle.LBL_TFW_JUNIT_5(); +- case KOTLIN_TEST: return Bundle.LBL_TFW_KOTLIN_TEST(); +- case SCALA_TEST: return Bundle.LBL_TFW_SCALA_TEST(); +- case SPOCK: return Bundle.LBL_TFW_SPOCK(); +- case TESTNG: return Bundle.LBL_TFW_TESTNG(); +- case XCTEST: return Bundle.LBL_TFW_XCTEST(); +- default: throw new IllegalStateException("update switch"); +- } ++ return switch(this) { ++ case CPP_TEST -> Bundle.LBL_TFW_CPP_TEST(); ++ case JUNIT -> Bundle.LBL_TFW_JUNIT(); ++ case JUNIT_5 -> Bundle.LBL_TFW_JUNIT_5(); ++ case KOTLIN_TEST -> Bundle.LBL_TFW_KOTLIN_TEST(); ++ case SCALA_TEST -> Bundle.LBL_TFW_SCALA_TEST(); ++ case SPOCK -> Bundle.LBL_TFW_SPOCK(); ++ case TESTNG -> Bundle.LBL_TFW_TESTNG(); ++ case XCTEST-> Bundle.LBL_TFW_XCTEST(); ++ }; + } + } + +@@ -112,7 +108,7 @@ public String toString() { + private TestFramework preferredTestFramework; + private List javaVersions; + private List testFrameworks; +- private List important = Collections.emptyList(); ++ private List important = List.of(); + + private GradleInitWizard(String type, String title) { + this.type = type; +@@ -215,14 +211,14 @@ protected void collectOperations(TemplateOperation ops, Map para + List open = important.stream() + .map((s) -> packageBase != null ? s.replace("${package}", packageBase.replace('.', '/')) : s) //NOI18N + .map((s) -> s.replace("${projectName}", name)) //NOI18N +- .collect(Collectors.toList()); ++ .toList(); + ops.addProjectPreload(root, open); + } + + + @Override + protected List> createPanels() { +- return Collections.singletonList(new GradleInitPanel()); ++ return List.of(new GradleInitPanel()); + } + + @Override +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 +index 8eeadadc7121..32832f8f5fcb 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java +@@ -479,7 +479,7 @@ public final Set execute() { + } catch (IOException ex) { + } + } +- return Collections.emptySet(); ++ return Set.of(); + } + + } +@@ -489,7 +489,7 @@ private static final class PreloadProject extends BaseOperationStep { + final List importantFiles; + + public PreloadProject(File dir) { +- this(dir, Collections.emptyList()); ++ this(dir, List.of()); + } + + public PreloadProject(File dir, List importantFiles) { +@@ -643,7 +643,7 @@ public Set execute() { + } catch (IOException | ScriptException ex) { + throw new IOException(ex.getMessage(), ex); + } +- return important ? Collections.singleton(fo) : null; ++ return important ? Set.of(fo) : null; + } catch (IOException ex) {} + } catch (IOException ex) {} + return null; +@@ -680,7 +680,7 @@ public Set execute() { + DataFolder targetFolder = DataFolder.findFolder(targetParent); + DataObject o = DataObject.find(template); + DataObject newData = o.createFromTemplate(targetFolder, targetName, tokens); +- return important ? Collections.singleton(newData.getPrimaryFile()) : null; ++ return important ? Set.of(newData.getPrimaryFile()) : null; + } catch (IOException ex) { + + } diff --git a/patches/7583.diff b/patches/7583.diff new file mode 100644 index 0000000..f878a14 --- /dev/null +++ b/patches/7583.diff @@ -0,0 +1,174 @@ +diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java b/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java +index 024f95a6702b..8b93f19d3208 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java +@@ -38,9 +38,7 @@ + import java.nio.file.SimpleFileVisitor; + import java.nio.file.attribute.BasicFileAttributes; + import java.util.ArrayList; +-import java.util.Arrays; + import java.util.EnumSet; +-import java.util.HashSet; + import java.util.List; + import java.util.Map; + import java.util.Objects; +@@ -84,7 +82,7 @@ public final class GradleDistributionManager { + + private static final String DOWNLOAD_URI = "https://services.gradle.org/distributions/gradle-%s-%s.zip"; //NOI18N + private static final Pattern DIST_VERSION_PATTERN = Pattern.compile(".*(gradle-(\\d+\\.\\d+.*))-(bin|all)\\.zip"); //NOI18N +- private static final Set VERSION_BLACKLIST = new HashSet<>(Arrays.asList("2.3", "2.13")); //NOI18N ++ private static final Set VERSION_BLACKLIST = Set.of("2.3", "2.13"); //NOI18N + private static final Map CACHE = new WeakHashMap<>(); + private static final GradleVersion MINIMUM_SUPPORTED_VERSION = GradleVersion.version("3.0"); //NOI18N + private static final GradleVersion[] JDK_COMPAT = new GradleVersion[]{ +@@ -101,9 +99,10 @@ public final class GradleDistributionManager { + GradleVersion.version("7.6"), // JDK-19 + GradleVersion.version("8.3"), // JDK-20 + GradleVersion.version("8.5"), // JDK-21 ++ GradleVersion.version("8.8"), // JDK-22 + }; + +- private static final GradleVersion LAST_KNOWN_GRADLE = GradleVersion.version("8.7"); //NOI18N ++ private static final GradleVersion LAST_KNOWN_GRADLE = GradleVersion.version("8.9"); //NOI18N + + final File gradleUserHome; + +diff --git a/extide/gradle/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractor.java b/extide/gradle/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractor.java +index 10c3ebe9fe36..474b66becda5 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractor.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractor.java +@@ -44,8 +44,8 @@ public class ExtensionPropertiesExtractor implements ProjectInfoExtractor { + public Result fallback(GradleFiles files) { + return new Result() { + @Override +- public Set getExtract() { +- return Collections.emptySet(); ++ public Set getExtract() { ++ return Set.of(); + } + + @Override +@@ -59,18 +59,18 @@ public Set getProblems() { + public Result extract(Map props, Map otherInfo) { + return new Result() { + @Override +- public Set getExtract() { ++ public Set getExtract() { + Map values = (Map)props.getOrDefault("extensions.propertyValues", Collections.emptyMap()); // NOI18N + Map types = (Map)props.getOrDefault("extensions.propertyTypes", Collections.emptyMap()); // NOI18N + Map taskValues = (Map)props.getOrDefault("tasks.propertyValues", Collections.emptyMap()); // NOI18N + Map taskTypes = (Map)props.getOrDefault("tasks.propertyTypes", Collections.emptyMap()); // NOI18N + PropertyEvaluator a = new PropertyEvaluator(values, types, taskValues, taskTypes); +- return Collections.singleton(a); ++ return Set.of(a); + } + + @Override + public Set getProblems() { +- return Collections.emptySet(); ++ return Set.of(); + } + }; + } +diff --git a/extide/gradle/src/org/netbeans/modules/gradle/spi/ProjectInfoExtractor.java b/extide/gradle/src/org/netbeans/modules/gradle/spi/ProjectInfoExtractor.java +index 04254082a3af..564e0d8d4fc8 100644 +--- a/extide/gradle/src/org/netbeans/modules/gradle/spi/ProjectInfoExtractor.java ++++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/ProjectInfoExtractor.java +@@ -41,17 +41,17 @@ interface Result { + static Result NONE = new Result() { + + @Override +- public Set getExtract() { +- return Collections.emptySet(); ++ public Set getExtract() { ++ return Set.of(); + } + + @Override + public Set getProblems() { +- return Collections.emptySet(); ++ return Set.of(); + } + }; + +- Set getExtract(); ++ Set getExtract(); + + Set getProblems(); + } +@@ -72,8 +72,8 @@ public DefaultResult(Object extract, String... problems) { + } + + @Override +- public Set getExtract() { +- return Collections.singleton(extract); ++ public Set getExtract() { ++ return Set.of(extract); + } + + @Override +diff --git a/extide/libs.gradle/external/binaries-list b/extide/libs.gradle/external/binaries-list +index 2e58f89b85fd..dff2c2265b37 100644 +--- a/extide/libs.gradle/external/binaries-list ++++ b/extide/libs.gradle/external/binaries-list +@@ -15,4 +15,4 @@ + # specific language governing permissions and limitations + # under the License. + +-5F48B9BB9099B900FC33864A3794F31C439D9F73 https://repo.gradle.org/artifactory/libs-releases/org/gradle/gradle-tooling-api/8.7/gradle-tooling-api-8.7.jar gradle-tooling-api-8.7.jar ++7BCC4423C529A42ECA9D0CE5B5275369EF4DF55A https://repo.gradle.org/artifactory/libs-releases/org/gradle/gradle-tooling-api/8.9/gradle-tooling-api-8.9.jar gradle-tooling-api-8.9.jar +diff --git a/extide/libs.gradle/external/gradle-tooling-api-8.7-license.txt b/extide/libs.gradle/external/gradle-tooling-api-8.9-license.txt +similarity index 99% +rename from extide/libs.gradle/external/gradle-tooling-api-8.7-license.txt +rename to extide/libs.gradle/external/gradle-tooling-api-8.9-license.txt +index 84a9de902f75..74cb1addb8d6 100644 +--- a/extide/libs.gradle/external/gradle-tooling-api-8.7-license.txt ++++ b/extide/libs.gradle/external/gradle-tooling-api-8.9-license.txt +@@ -1,7 +1,7 @@ + Name: Gradle Tooling API + Description: Gradle Tooling API +-Version: 8.7 +-Files: gradle-tooling-api-8.7.jar ++Version: 8.9 ++Files: gradle-tooling-api-8.9.jar + License: Apache-2.0 + Origin: Gradle Inc. + URL: https://gradle.org/ +diff --git a/extide/libs.gradle/external/gradle-tooling-api-8.7-notice.txt b/extide/libs.gradle/external/gradle-tooling-api-8.9-notice.txt +similarity index 100% +rename from extide/libs.gradle/external/gradle-tooling-api-8.7-notice.txt +rename to extide/libs.gradle/external/gradle-tooling-api-8.9-notice.txt +diff --git a/extide/libs.gradle/manifest.mf b/extide/libs.gradle/manifest.mf +index 64b5cf508e40..a489976e11ed 100644 +--- a/extide/libs.gradle/manifest.mf ++++ b/extide/libs.gradle/manifest.mf +@@ -2,4 +2,4 @@ Manifest-Version: 1.0 + AutoUpdate-Show-In-Client: false + OpenIDE-Module: org.netbeans.modules.libs.gradle/8 + OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/libs/gradle/Bundle.properties +-OpenIDE-Module-Specification-Version: 8.7 ++OpenIDE-Module-Specification-Version: 8.9 +diff --git a/extide/libs.gradle/nbproject/project.properties b/extide/libs.gradle/nbproject/project.properties +index 6cd0e22d8315..6e4605fe4922 100644 +--- a/extide/libs.gradle/nbproject/project.properties ++++ b/extide/libs.gradle/nbproject/project.properties +@@ -22,4 +22,4 @@ javac.compilerargs=-Xlint -Xlint:-serial + # Sigtest fails to read the classes in the gradle-tooling-api + sigtest.skip.gen=true + +-release.external/gradle-tooling-api-8.7.jar=modules/gradle/gradle-tooling-api.jar ++release.external/gradle-tooling-api-8.9.jar=modules/gradle/gradle-tooling-api.jar +diff --git a/extide/libs.gradle/nbproject/project.xml b/extide/libs.gradle/nbproject/project.xml +index dc58e80a4500..d82027b5e615 100644 +--- a/extide/libs.gradle/nbproject/project.xml ++++ b/extide/libs.gradle/nbproject/project.xml +@@ -39,7 +39,7 @@ + + + gradle/gradle-tooling-api.jar +- external/gradle-tooling-api-8.7.jar ++ external/gradle-tooling-api-8.9.jar + + + +