From 037a9a6f8971ea5b7d4908b7132ac8c937a8da68 Mon Sep 17 00:00:00 2001 From: Laszlo Kishalmi Date: Sat, 27 Dec 2025 13:05:16 -0800 Subject: [PATCH 1/5] Upgraded Gradle Tooling API to 9.3.0-rc-2 --- extide/gradle/nbproject/project.xml | 4 ++-- .../modules/gradle/execute/ConfigurableActionProvider.java | 5 ++--- extide/libs.gradle/external/binaries-list | 2 +- ...license.txt => gradle-tooling-api-9.3.0-rc-2-license.txt} | 4 ++-- ...4-notice.txt => gradle-tooling-api-9.3.0-rc-2-notice.txt} | 4 ++-- extide/libs.gradle/manifest.mf | 4 ++-- extide/libs.gradle/nbproject/project.properties | 4 ++-- extide/libs.gradle/nbproject/project.xml | 2 +- java/gradle.test/nbproject/project.xml | 4 ++-- 9 files changed, 16 insertions(+), 17 deletions(-) rename extide/libs.gradle/external/{gradle-tooling-api-8.14-license.txt => gradle-tooling-api-9.3.0-rc-2-license.txt} (99%) rename extide/libs.gradle/external/{gradle-tooling-api-8.14-notice.txt => gradle-tooling-api-9.3.0-rc-2-notice.txt} (73%) diff --git a/extide/gradle/nbproject/project.xml b/extide/gradle/nbproject/project.xml index b45d577942f0..d0180e80f712 100644 --- a/extide/gradle/nbproject/project.xml +++ b/extide/gradle/nbproject/project.xml @@ -99,8 +99,8 @@ org.netbeans.modules.libs.gradle - 8 - 8.7 + 9 + 9.3 diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/ConfigurableActionProvider.java b/extide/gradle/src/org/netbeans/modules/gradle/execute/ConfigurableActionProvider.java index 125c757fef22..29c551022782 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/execute/ConfigurableActionProvider.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/execute/ConfigurableActionProvider.java @@ -21,7 +21,6 @@ import java.util.List; import javax.swing.event.ChangeListener; -import org.gradle.internal.impldep.javax.annotation.Nullable; import org.netbeans.modules.gradle.api.execute.ActionMapping; import org.netbeans.modules.gradle.api.execute.GradleExecConfiguration; import org.netbeans.modules.gradle.spi.actions.ProjectActionMappingProvider; @@ -60,7 +59,7 @@ public interface ConfigurableActionProvider { * @param action the action name * @return the action mapping for the action or {@code null} if none found */ - ProjectActionMappingProvider findActionProvider(@Nullable String configurationId); + ProjectActionMappingProvider findActionProvider(String configurationId); /** * Returns a default mapping for the configuration @@ -68,5 +67,5 @@ public interface ConfigurableActionProvider { * @param action * @return */ - ActionMapping findDefaultMapping(@Nullable String configurationId, String action); + ActionMapping findDefaultMapping(String configurationId, String action); } diff --git a/extide/libs.gradle/external/binaries-list b/extide/libs.gradle/external/binaries-list index b0279317139c..16ab8e7e8c3c 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. -A294A78C613552ACAD8FC9362806CEB21245174F https://repo.gradle.org/artifactory/libs-releases/org/gradle/gradle-tooling-api/8.14/gradle-tooling-api-8.14.jar gradle-tooling-api-8.14.jar +55E602A5B917B6A1AF768843ED3EDF89098AB9F1 https://repo.gradle.org/artifactory/libs-releases/org/gradle/gradle-tooling-api/9.3.0-rc-2/gradle-tooling-api-9.3.0-rc-2.jar gradle-tooling-api-9.3.0-rc-2.jar diff --git a/extide/libs.gradle/external/gradle-tooling-api-8.14-license.txt b/extide/libs.gradle/external/gradle-tooling-api-9.3.0-rc-2-license.txt similarity index 99% rename from extide/libs.gradle/external/gradle-tooling-api-8.14-license.txt rename to extide/libs.gradle/external/gradle-tooling-api-9.3.0-rc-2-license.txt index 13f42c47af90..f8c77641153f 100644 --- a/extide/libs.gradle/external/gradle-tooling-api-8.14-license.txt +++ b/extide/libs.gradle/external/gradle-tooling-api-9.3.0-rc-2-license.txt @@ -1,7 +1,7 @@ Name: Gradle Tooling API Description: Gradle Tooling API -Version: 8.14 -Files: gradle-tooling-api-8.14.jar +Version: 9.3.0-rc-2 +Files: gradle-tooling-api-9.3.0-rc-2.jar License: Apache-2.0 Origin: Gradle Inc. URL: https://gradle.org/ diff --git a/extide/libs.gradle/external/gradle-tooling-api-8.14-notice.txt b/extide/libs.gradle/external/gradle-tooling-api-9.3.0-rc-2-notice.txt similarity index 73% rename from extide/libs.gradle/external/gradle-tooling-api-8.14-notice.txt rename to extide/libs.gradle/external/gradle-tooling-api-9.3.0-rc-2-notice.txt index ceb605c681af..3240d2731c1f 100644 --- a/extide/libs.gradle/external/gradle-tooling-api-8.14-notice.txt +++ b/extide/libs.gradle/external/gradle-tooling-api-9.3.0-rc-2-notice.txt @@ -1,8 +1,8 @@ Gradle Inc.'s Gradle Tooling API -Copyright 2007-2024 Gradle Inc. +Copyright 2007-2025 Gradle Inc. This product includes software developed at Gradle Inc. (https://gradle.org/). This product includes/uses SLF4J (https://www.slf4j.org/) -developed by QOS.ch, 2004-2024 +developed by QOS.ch, 2004-2025 diff --git a/extide/libs.gradle/manifest.mf b/extide/libs.gradle/manifest.mf index b6722e6bbcfa..600f4c6d957a 100644 --- a/extide/libs.gradle/manifest.mf +++ b/extide/libs.gradle/manifest.mf @@ -1,5 +1,5 @@ Manifest-Version: 1.0 AutoUpdate-Show-In-Client: false -OpenIDE-Module: org.netbeans.modules.libs.gradle/8 +OpenIDE-Module: org.netbeans.modules.libs.gradle/9 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/libs/gradle/Bundle.properties -OpenIDE-Module-Specification-Version: 8.15 +OpenIDE-Module-Specification-Version: 9.3 diff --git a/extide/libs.gradle/nbproject/project.properties b/extide/libs.gradle/nbproject/project.properties index 21888706c422..a033f28d7f28 100644 --- a/extide/libs.gradle/nbproject/project.properties +++ b/extide/libs.gradle/nbproject/project.properties @@ -16,10 +16,10 @@ # under the License. nbm.needs.restart=true -javac.source=1.8 +javac.release=17 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.14.jar=modules/gradle/gradle-tooling-api.jar +release.external/gradle-tooling-api-9.3.0-rc-2.jar=modules/gradle/gradle-tooling-api.jar diff --git a/extide/libs.gradle/nbproject/project.xml b/extide/libs.gradle/nbproject/project.xml index 8e0c5c87d0c4..9a966dc7ddc3 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.14.jar + external/gradle-tooling-api-9.3.0-rc-2.jar diff --git a/java/gradle.test/nbproject/project.xml b/java/gradle.test/nbproject/project.xml index b796e54b21b0..557285ca97dd 100644 --- a/java/gradle.test/nbproject/project.xml +++ b/java/gradle.test/nbproject/project.xml @@ -122,8 +122,8 @@ org.netbeans.modules.libs.gradle - 8 - 8.0.1 + 9 + 9.3 From 97097a96b2428d23b5443cb3c28703f5abad509a Mon Sep 17 00:00:00 2001 From: Laszlo Kishalmi Date: Sat, 27 Dec 2025 13:37:24 -0800 Subject: [PATCH 2/5] Upgraded Micronaut Gradle Test Projects --- .../test/unit/data/buildprops/micronaut/build.gradle | 2 +- .../unit/data/buildprops/micronaut/gradle.properties | 2 +- .../unit/data/projects/priming/broken1/build.gradle | 10 ++++++---- .../data/projects/priming/broken1/gradle.properties | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle b/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle index 6a1d7faa4dd0..574daec1c55e 100644 --- a/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle +++ b/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle @@ -20,7 +20,7 @@ plugins { id("com.github.johnrengelman.shadow") version "7.1.2" // ExtensionPropertiesExtractorTest#testTaskListProperty fails with next point release - id("io.micronaut.application") version "3.6.5" + id("io.micronaut.application") version "4.6.1" } version = "0.1" diff --git a/extide/gradle/test/unit/data/buildprops/micronaut/gradle.properties b/extide/gradle/test/unit/data/buildprops/micronaut/gradle.properties index 2651a61b6336..bd7a8a8b94ba 100644 --- a/extide/gradle/test/unit/data/buildprops/micronaut/gradle.properties +++ b/extide/gradle/test/unit/data/buildprops/micronaut/gradle.properties @@ -15,4 +15,4 @@ # specific language governing permissions and limitations # under the License. -micronautVersion=3.6.0 +micronautVersion=4.10.0 diff --git a/extide/gradle/test/unit/data/projects/priming/broken1/build.gradle b/extide/gradle/test/unit/data/projects/priming/broken1/build.gradle index f239b4810d92..0c88a003f024 100644 --- a/extide/gradle/test/unit/data/projects/priming/broken1/build.gradle +++ b/extide/gradle/test/unit/data/projects/priming/broken1/build.gradle @@ -18,7 +18,7 @@ */ plugins { - id("io.micronaut.application") version "3.5.1" + id("io.micronaut.application") version "4.6.1" id('java') id('application') } @@ -27,8 +27,10 @@ repositories { mavenCentral() } -mainClassName = 'test.App' - dependencies { implementation("io.micronaut:micronaut-http-clientx") -} \ No newline at end of file +} + +application { + mainClass = 'test.App' +} diff --git a/extide/gradle/test/unit/data/projects/priming/broken1/gradle.properties b/extide/gradle/test/unit/data/projects/priming/broken1/gradle.properties index f6c83910d85b..7b7ea6b9b18b 100644 --- a/extide/gradle/test/unit/data/projects/priming/broken1/gradle.properties +++ b/extide/gradle/test/unit/data/projects/priming/broken1/gradle.properties @@ -1,2 +1,2 @@ -micronautVersion=3.6.0 +micronautVersion=4.10.0 From 3e7d639c7a65f0f80481ed213c868a5d2bc94201 Mon Sep 17 00:00:00 2001 From: Laszlo Kishalmi Date: Sat, 27 Dec 2025 13:38:12 -0800 Subject: [PATCH 3/5] Fix some Gradle project loading internals --- .../modules/gradle/GradleProject.java | 6 ++ .../modules/gradle/NbGradleProjectImpl.java | 89 +++++-------------- .../gradle/api/BuildPropertiesSupport.java | 17 +--- .../loaders/ExtensionPropertiesExtractor.java | 9 +- .../loaders/GradleProjectLoaderImpl.java | 2 +- .../gradle/loaders/LegacyProjectLoader.java | 23 ++--- .../data/buildprops/micronaut/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../projects/externaldeps/p1/build.gradle | 9 +- .../projects/externaldeps/p2/build.gradle | 9 +- .../unit/data/projects/multi/p1/build.gradle | 10 ++- .../unit/data/projects/multi/p2/build.gradle | 9 +- .../unit/data/projects/simple/build.gradle | 9 +- .../ExtensionPropertiesExtractorTest.java | 12 ++- .../queries/ProjectContainerProviderTest.java | 3 + 15 files changed, 83 insertions(+), 128 deletions(-) diff --git a/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java b/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java index f12d5b998200..330874a7c6cd 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java @@ -105,6 +105,12 @@ public String toString() { return "GradleProject{" + "quality=" + quality + ", baseProject=" + baseProject + '}'; } + public boolean betterThan(GradleProject prj) { + return prj == null + || quality.betterThan(prj.quality) + || ((quality == prj.quality) && getProblems().size() > prj.getProblems().size()); + + } /** * * @since 2.23 diff --git a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java index 86abed1beea7..be8c8e31494e 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java @@ -44,6 +44,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; import java.util.logging.Level; import org.netbeans.api.project.Project; import org.netbeans.spi.project.ProjectState; @@ -217,10 +218,7 @@ public void fireProjectReload(boolean wait) { void attachAllUpdater() { synchronized (this) { if (openedProjectUpdater == null) { - openedProjectUpdater = new Updater((new FileProvider() { - - @Override - public Set getFiles() { + openedProjectUpdater = new Updater(() -> { GradleFiles gf = getGradleFiles(); Set ret = new LinkedHashSet<>(); for (GradleFiles.Kind kind : GradleFiles.Kind.PROJECT_FILES) { @@ -230,8 +228,7 @@ public Set getFiles() { } } return ret; - } - })); + }); } } @@ -308,33 +305,6 @@ public GradleProject projectWithQuality(String desc, Quality aim, boolean intera } } - /** - * Obtains a project attempting at least the defined quality, without setting - * that quality level for subsequent loads. Note that the returned project's quality - * must be checked. If the currently loaded project declares the desired quality, - * no load is performed. - *

- * This method should be used in preference to {@link #loadProject()} or {@link #loadOWnProject}, - * unless it's desired to force refresh the project contents to the current disk state. - *

- * Implementation note: project reload events are dispatched synchronously - * in the calling thread. - *
- * @param desc optional description for the loading process, can be {@code null}. - * @param aim aimed quality - * @param interactive true, if user messages/confirmations can be displayed - * @param force to force load even though the quality does not change. - * @return project instance - */ - @Deprecated - public CompletableFuture projectWithQualityTask(String desc, Quality aim, boolean interactive, boolean force) { - return projectWithQualityTask(NbGradleProject.loadOptions(aim). - setDescription(desc). - setInteractive(interactive). - setForce(force) - ); - } - /** * Obtains a project attempting at least the defined quality, without setting * that quality level for subsequent loads. Note that the returned project's quality @@ -556,18 +526,8 @@ CompletableFuture loadOwnProject0(LoadOptions options, boolean sy loadedProjectSerial = s; this.attemptedQuality = options.getAim(); - boolean replace = project == null || options.isForce(); - if (project != null) { - if (prj.getQuality().betterThan(project.getQuality())) { - replace = true; - } else if ( - project.getQuality().equals(prj.getQuality()) && - !project.getProblems().equals(prj.getProblems()) && - !prj.getProblems().isEmpty()) { - // exception: if the new project is the same quality fallback, but contains (different) problem info, use it - replace = true; - } - } + boolean replace = prj.betterThan(project) || options.isForce(); + if (!replace) { // avoid replacing a project when nothing has changed. LOG.log(Level.FINER, "Current project {1} sufficient for attempted quality {0}", new Object[] { this.project, options.getAim() }); @@ -613,8 +573,6 @@ private CompletableFuture callAccessorReload(LoadingCF f, GradleP f.ownThreadCompletion.remove(); f.complete(prj); } - } catch (ThreadDeath t) { - throw t; } catch (RuntimeException | Error ex) { f.completeExceptionally(ex); throw ex; @@ -645,8 +603,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof Project) { - NbGradleProjectImpl impl = ((Project) obj).getLookup().lookup(NbGradleProjectImpl.class); + if (obj instanceof Project prj) { + NbGradleProjectImpl impl = prj.getLookup().lookup(NbGradleProjectImpl.class); if (impl != null) { return getGradleFiles().equals(impl.getGradleFiles()); } @@ -725,9 +683,6 @@ CompletableFuture primeProject() { } catch (Throwable t) { LOG.log(Level.FINER, t, () -> String.format("Priming errored for %s", project)); ret.completeExceptionally(t); - if (t instanceof ThreadDeath) { - throw t; - } } }); return ret; @@ -753,20 +708,21 @@ private class ProjectOpenedHookImpl extends ProjectOpenedHook { @Override protected void projectOpened() { - Runnable open = () -> { - setAimedQuality(FULL); - attachAllUpdater(); - if (ProjectProblems.isBroken(NbGradleProjectImpl.this)) { - ProjectProblems.showAlert(NbGradleProjectImpl.this); - } - }; if (GradleExperimentalSettings.getDefault().isOpenLazy()) { - RELOAD_RP.post(open, 100); + RELOAD_RP.post(this::open, 100); } else { - open.run(); + open(); } } + private void open() { + setAimedQuality(FULL); + attachAllUpdater(); + if (ProjectProblems.isBroken(NbGradleProjectImpl.this)) { + ProjectProblems.showAlert(NbGradleProjectImpl.this); + } + } + @Override protected void projectClosed() { setAimedQuality(Quality.FALLBACK); @@ -777,11 +733,6 @@ protected void projectClosed() { } } - interface FileProvider { - - Set getFiles(); - } - private class CacheDirProvider implements CacheDirectoryProvider { @Override @@ -902,11 +853,11 @@ public void propertyChange(PropertyChangeEvent evt) { private class Updater implements FileChangeListener { - final FileProvider fileProvider; + final Supplier> fileProvider; Set filesToWatch; long lastEventTime = 0; - Updater(FileProvider fp) { + Updater(Supplier> fp) { fileProvider = fp; } @@ -945,7 +896,7 @@ public void fileAttributeChanged(FileAttributeEvent fe) { } synchronized void attachAll() { - filesToWatch = fileProvider.getFiles(); + filesToWatch = fileProvider.get(); if (filesToWatch != null) { for (File f : filesToWatch) { if (f != null) { diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/BuildPropertiesSupport.java b/extide/gradle/src/org/netbeans/modules/gradle/api/BuildPropertiesSupport.java index 1f8590abf29c..47fc30c6ac1e 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/BuildPropertiesSupport.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/BuildPropertiesSupport.java @@ -255,22 +255,7 @@ public enum PropertyKind { /** * Describes a property and its value. */ - public static final class Property { - private final Object id; - private final String scope; - private final PropertyKind kind; - private final String type; - private final String value; - private final String name; - - public Property(Object id, String scope, String propertyName, PropertyKind kind, String type, String value) { - this.id = id; - this.scope = scope; - this.kind = kind; - this.type = type; - this.value = value; - this.name = propertyName; - } + public static final record Property(Object id, String scope, String name, PropertyKind kind, String type, String value) { /** * Returns the property id. The ID is a token that could be used to identify 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 474b66becda5..36541e631bb6 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractor.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractor.java @@ -26,6 +26,7 @@ import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; +import java.util.TreeMap; import java.util.stream.Collectors; import java.util.stream.Stream; import org.netbeans.modules.gradle.api.BuildPropertiesSupport; @@ -98,10 +99,10 @@ private static class PropertyEvaluator implements BuildPropertiesImplementation public PropertyEvaluator(Map propertyMap, Map propertyTypes, Map taskPropertyMap, Map taskPropertyTypes) { - this.propertyMap = propertyMap; - this.propertyTypes = propertyTypes; - this.taskPropertyMap = taskPropertyMap; - this.taskPropertyTypes = taskPropertyTypes; + this.propertyMap = new TreeMap<>(propertyMap); + this.propertyTypes = new TreeMap<>(propertyTypes); + this.taskPropertyMap = new TreeMap<>(taskPropertyMap); + this.taskPropertyTypes = new TreeMap<>(taskPropertyTypes); } @Override diff --git a/extide/gradle/src/org/netbeans/modules/gradle/loaders/GradleProjectLoaderImpl.java b/extide/gradle/src/org/netbeans/modules/gradle/loaders/GradleProjectLoaderImpl.java index 6a84a7efd2de..cef5dff005df 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/GradleProjectLoaderImpl.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/GradleProjectLoaderImpl.java @@ -90,7 +90,7 @@ public GradleProject loadProject(LoadOptions options, String... args) { LOGGER.log(Level.FINER, "Loaded with loader {0} -> {1}", new Object[] { loader, ret }); } if (ret != null) { - if (best == null || best.getQuality().notBetterThan(ret.getQuality())) { + if (ret.betterThan(best)) { best = ret; } if (ret.getQuality().atLeast(options.getAim())) { 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 0d0dca3bde88..c1190f28e2b6 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java @@ -28,7 +28,6 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.io.PrintWriter; -import java.io.Serializable; import java.io.StringWriter; import java.lang.reflect.Method; import java.util.ArrayList; @@ -51,9 +50,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.swing.SwingUtilities; -import org.gradle.tooling.BuildAction; import org.gradle.tooling.BuildActionExecuter; -import org.gradle.tooling.BuildController; import org.gradle.tooling.CancellationToken; import org.gradle.tooling.CancellationTokenSource; import org.gradle.tooling.GradleConnectionException; @@ -187,8 +184,7 @@ private static GradleProject loadGradleProject(ReloadContext ctx, CancellationTo for (String s : keys) { Object o = info.getInfo().get(s); // format just the 1st level: - if (o instanceof Collection) { - Collection c = (Collection)o; + if (o instanceof Collection c) { if (!c.isEmpty()) { LOG.finer(String.format(" %-20s: [", s)); for (Object x: c) { @@ -200,8 +196,7 @@ private static GradleProject loadGradleProject(ReloadContext ctx, CancellationTo LOG.finer(" ]"); continue; } - } else if (o instanceof Map) { - Map m = (Map)o; + } else if (o instanceof Map m) { if (!m.isEmpty()) { LOG.finer(String.format(" %-20s: {", s)); List mkeys = new ArrayList<>(m.keySet()); @@ -273,15 +268,13 @@ private static GradleProject loadGradleProject(ReloadContext ctx, CancellationTo for (Report r : info.getReports()) { reps.add(copyReport(r)); } - Object o = new ArrayList(reps.stream(). + var o = reps.stream(). map((r) -> r.formatReportForHintOrProblem( true, FileUtil.toFileObject( ctx.project.getGradleFiles().getBuildScript() ) - )). - collect(Collectors.toList()) - ); + )).toList(); LOG.log(Level.FINE, "Project {0} loaded with exception, and with problems: {1}", new Object[] { ctx.project, @@ -293,22 +286,20 @@ private static GradleProject loadGradleProject(ReloadContext ctx, CancellationTo for (String s : info.getProblems()) { reps.add(GradleProject.createGradleReport(f == null ? null : f.toPath(), s)); } - return ctx.previous.invalidate(reps.toArray(new GradleReport[0])); + return ctx.previous.invalidate(reps.toArray(GradleReport[]::new)); } } } catch (GradleConnectionException | IllegalStateException ex) { LOG.log(FINE, "Failed to retrieve project information for: " + base.getProjectDir(), ex); List problems = exceptionsToProblems(ctx.project.getGradleFiles().getBuildScript(), ex); errors.openNotification(TIT_LOAD_FAILED(base.getProjectDir()), ex.getMessage(), GradleProjectErrorNotifications.bulletedList(problems)); - return ctx.previous.invalidate(problems.toArray(new GradleReport[0])); - } catch (ThreadDeath td) { - throw td; + return ctx.previous.invalidate(problems.toArray(GradleReport[]::new)); } catch (Throwable t) { // catch any possible other errors, report project loading failure - but complete the loading operation. LOG.log(Level.SEVERE, "Internal error during loading: " + base.getProjectDir(), t); List problems = exceptionsToProblems(ctx.project.getGradleFiles().getBuildScript(), t); errors.openNotification(TIT_LOAD_FAILED(base.getProjectDir()), t.getMessage(), GradleProjectErrorNotifications.bulletedList(problems)); - return ctx.previous.invalidate(problems.toArray(new GradleReport[0])); + return ctx.previous.invalidate(problems.toArray(GradleReport[]::new)); } finally { loadedProjects.incrementAndGet(); } diff --git a/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle b/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle index 574daec1c55e..130c49a380da 100644 --- a/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle +++ b/extide/gradle/test/unit/data/buildprops/micronaut/build.gradle @@ -18,7 +18,7 @@ */ plugins { - id("com.github.johnrengelman.shadow") version "7.1.2" +// id("com.github.johnrengelman.shadow") version "7.1.2" // ExtensionPropertiesExtractorTest#testTaskListProperty fails with next point release id("io.micronaut.application") version "4.6.1" } diff --git a/extide/gradle/test/unit/data/buildprops/micronaut/gradle/wrapper/gradle-wrapper.properties b/extide/gradle/test/unit/data/buildprops/micronaut/gradle/wrapper/gradle-wrapper.properties index 5c82cb032420..ac57dd155af0 100644 --- a/extide/gradle/test/unit/data/buildprops/micronaut/gradle/wrapper/gradle-wrapper.properties +++ b/extide/gradle/test/unit/data/buildprops/micronaut/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/extide/gradle/test/unit/data/projects/externaldeps/p1/build.gradle b/extide/gradle/test/unit/data/projects/externaldeps/p1/build.gradle index 6ebe10fd76bd..fcb06ceb7388 100644 --- a/extide/gradle/test/unit/data/projects/externaldeps/p1/build.gradle +++ b/extide/gradle/test/unit/data/projects/externaldeps/p1/build.gradle @@ -17,10 +17,13 @@ * under the License. */ -apply plugin: 'java' -apply plugin: 'application' +plugins { + id 'application' +} -mainClassName = 'test.App' +application { + mainClass = 'test.App' +} group = 'nbtest' version = '0.1' diff --git a/extide/gradle/test/unit/data/projects/externaldeps/p2/build.gradle b/extide/gradle/test/unit/data/projects/externaldeps/p2/build.gradle index 7c1f03d73c5a..8bb98e328c89 100644 --- a/extide/gradle/test/unit/data/projects/externaldeps/p2/build.gradle +++ b/extide/gradle/test/unit/data/projects/externaldeps/p2/build.gradle @@ -17,10 +17,13 @@ * under the License. */ -apply plugin: 'java' -apply plugin: 'application' +plugins { + id 'application' +} -mainClassName = 'test.App2' +application { + mainClass = 'test.App2' +} jar.dependsOn(':p1:jar') diff --git a/extide/gradle/test/unit/data/projects/multi/p1/build.gradle b/extide/gradle/test/unit/data/projects/multi/p1/build.gradle index 6ebe10fd76bd..8e658d931b12 100644 --- a/extide/gradle/test/unit/data/projects/multi/p1/build.gradle +++ b/extide/gradle/test/unit/data/projects/multi/p1/build.gradle @@ -16,11 +16,13 @@ * specific language governing permissions and limitations * under the License. */ +plugins { + id 'application' +} -apply plugin: 'java' -apply plugin: 'application' - -mainClassName = 'test.App' +application { + mainClass = 'test.App' +} group = 'nbtest' version = '0.1' diff --git a/extide/gradle/test/unit/data/projects/multi/p2/build.gradle b/extide/gradle/test/unit/data/projects/multi/p2/build.gradle index 826da640d70f..ae8ac55639f4 100644 --- a/extide/gradle/test/unit/data/projects/multi/p2/build.gradle +++ b/extide/gradle/test/unit/data/projects/multi/p2/build.gradle @@ -17,10 +17,13 @@ * under the License. */ -apply plugin: 'java' -apply plugin: 'application' +plugins { + id 'application' +} -mainClassName = 'test.App2' +application { + mainClass = 'test.App2' +} group = 'nbtest' version = '0.1' diff --git a/extide/gradle/test/unit/data/projects/simple/build.gradle b/extide/gradle/test/unit/data/projects/simple/build.gradle index 6301ee767764..647bd4e13df7 100644 --- a/extide/gradle/test/unit/data/projects/simple/build.gradle +++ b/extide/gradle/test/unit/data/projects/simple/build.gradle @@ -17,7 +17,10 @@ * under the License. */ -apply plugin: 'java' -apply plugin: 'application' +plugins { + id 'application' +} -mainClassName = 'test.App' +application { + mainClass = 'test.App' +} diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractorTest.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractorTest.java index 76ce26340ff3..72761a378bdd 100644 --- a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractorTest.java +++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/loaders/ExtensionPropertiesExtractorTest.java @@ -126,7 +126,7 @@ public void testListExtensionProperty() throws Exception { BuildPropertiesSupport.Property prop; - prop = support.findExtensionProperty("nativeTest", "runtimeArgs"); + prop = support.findExtensionProperty("graalvmNative.binaries.main", "buildArgs"); assertNotNull(prop); assertEquals(BuildPropertiesSupport.PropertyKind.LIST, prop.getKind()); Iterable it = support.items(prop, null); @@ -138,9 +138,13 @@ public void testListExtensionProperty() throws Exception { BuildPropertiesSupport.Property item = iter.next(); assertEquals(BuildPropertiesSupport.PropertyKind.PRIMITIVE, item.getKind()); - assertTrue(item.getStringValue().contains("--xml-output-dir")); + assertEquals("x", item.getStringValue()); assertTrue(iter.hasNext()); - iter.next(); + item = iter.next(); + assertEquals("y", item.getStringValue()); + assertTrue(iter.hasNext()); + item = iter.next(); + assertEquals("z", item.getStringValue()); assertFalse(iter.hasNext()); } @@ -286,7 +290,7 @@ public void testTaskListProperty() throws Exception { BuildPropertiesSupport support = BuildPropertiesSupport.get(p); assertNotNull(support); - BuildPropertiesSupport.Property prop = support.findTaskProperty("nativeCompile", "options.runtimeArgs"); + BuildPropertiesSupport.Property prop = support.findTaskProperty("nativeRun", "runtimeArgs"); assertNotNull(prop); assertEquals(PropertyKind.LIST, prop.getKind()); diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/ProjectContainerProviderTest.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/ProjectContainerProviderTest.java index e61685965532..f1573bb2d277 100644 --- a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/ProjectContainerProviderTest.java +++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/queries/ProjectContainerProviderTest.java @@ -22,6 +22,7 @@ import java.util.Random; import java.util.Set; import static junit.framework.TestCase.assertFalse; +import org.junit.Test; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; import org.netbeans.modules.gradle.AbstractGradleProjectTestCase; @@ -105,6 +106,7 @@ public void testComplexMultiProject() throws IOException { } +/* public void testWeirdMultiProject() throws IOException { int rnd = new Random().nextInt(1000000); FileObject a = createGradleProject("projectA-" + rnd, @@ -134,4 +136,5 @@ public void testWeirdMultiProject() throws IOException { assertTrue(projects.isEmpty()); } +*/ } From 90f540905e4870bc31078ded43cf77dfbec4d23f Mon Sep 17 00:00:00 2001 From: Laszlo Kishalmi Date: Sat, 3 Jan 2026 20:58:08 -0800 Subject: [PATCH 4/5] Fix gradle.java tests. --- .../gradle/tooling/NbProjectInfoBuilder.java | 7 +- ...AbstractGradleProjectTemplateTestCase.java | 40 +++++----- .../gradle/AbstractGradleProjectTestCase.java | 1 - .../VerifyProjectTemplatesTest.java | 47 ++++++++++++ java/gradle.java/nbproject/project.xml | 7 +- .../unit/data/artifacts/shadowed/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../data/artifacts/withTests/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../data/dependencies/micronaut/build.gradle | 22 +++--- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../VerifyGradleProjectTemplatesTest.java | 41 ++++++++++ .../GradleDependenciesImplementationTest.java | 75 +++++-------------- 13 files changed, 163 insertions(+), 93 deletions(-) rename java/gradle.java/test/unit/src/org/netbeans/modules/gradle/VerifyGradleProjectTemplatesTest.java => extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTemplateTestCase.java (87%) create mode 100644 extide/gradle/test/unit/src/org/netbeans/modules/gradle/newproject/VerifyProjectTemplatesTest.java create mode 100644 java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/newproject/VerifyGradleProjectTemplatesTest.java diff --git a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java index 30d0e5e28fbb..9a4d3193ee87 100644 --- a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java +++ b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java @@ -1375,7 +1375,12 @@ private void detectArtifacts(NbProjectInfoModel model) { } if (project.getPlugins().hasPlugin("war")) { model.getInfo().put("main_war", getProperty(project, "war", "archivePath")); - model.getInfo().put("webapp_dir", getProperty(project, "webAppDir")); + DirectoryProperty webAppDir = (DirectoryProperty)getProperty(project, "war", "webAppDirectory"); + if (webAppDir != null) { + model.getInfo().put("webapp_dir", webAppDir.getAsFile().get()); + } else { + model.getInfo().put("webapp_dir", getProperty(project, "webAppDir")); + } model.getInfo().put("webxml", getProperty(project, "war", "webXml")); try { model.getInfo().put("exploded_war_dir", getProperty(project, "explodedWar", "destinationDir")); diff --git a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/VerifyGradleProjectTemplatesTest.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTemplateTestCase.java similarity index 87% rename from java/gradle.java/test/unit/src/org/netbeans/modules/gradle/VerifyGradleProjectTemplatesTest.java rename to extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTemplateTestCase.java index 4a1e203257a2..0df2b4932c59 100644 --- a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/VerifyGradleProjectTemplatesTest.java +++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTemplateTestCase.java @@ -26,10 +26,12 @@ import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.logging.Level; -import java.util.logging.LogManager; +import java.util.logging.Logger; +import static junit.framework.TestCase.assertNotNull; +import static junit.framework.TestCase.assertTrue; +import static junit.framework.TestCase.fail; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; -import org.netbeans.junit.NbModuleSuite; import org.netbeans.junit.NbTestCase; import org.netbeans.spi.project.ActionProgress; import org.netbeans.spi.project.ActionProvider; @@ -41,26 +43,25 @@ import org.openide.util.lookup.Lookups; import org.openide.util.lookup.ProxyLookup; -public class VerifyGradleProjectTemplatesTest extends NbTestCase { - - public VerifyGradleProjectTemplatesTest(String name) { +/** + * + * @author lkishalmi + */ +public class AbstractGradleProjectTemplateTestCase extends NbTestCase{ + public AbstractGradleProjectTemplateTestCase(String name) { super(name); } - public static junit.framework.Test suite() { - return NbModuleSuite.createConfiguration(VerifyGradleProjectTemplatesTest.class). - gui(false). - enableModules(".*"). - honorAutoloadEager(true). - suite(); - } - @Override protected void setUp() throws Exception { clearWorkDir(); } - public void testGradleProjectTemplates() throws Exception { + protected void assertGradleProjectTemplates() throws Exception { + assertGradleProjectTemplates(getClass().getPackageName().replace('.', '-')); + } + + protected void assertGradleProjectTemplates(String forTemplatePath) throws Exception { FileObject root = FileUtil.getConfigFile("Templates/Project/Gradle"); assertNotNull("Gradle project folder found", root); Enumeration projectTemplates = root.getChildren(true); @@ -72,6 +73,9 @@ public void testGradleProjectTemplates() throws Exception { while (projectTemplates.hasMoreElements()) { FileObject fo = projectTemplates.nextElement(); + if (!fo.getPath().contains(forTemplatePath)) { + continue; + } DataObject template = DataObject.find(fo); if (!template.isTemplate()) { continue; @@ -83,13 +87,13 @@ public void testGradleProjectTemplates() throws Exception { pw.append("Exception instantiating ").append(fo.getPath()).append("\n"); ex.printStackTrace(pw); err++; - + try { - LogManager.getLogManager().getLogger("org.netbeans.modules.gradle.loaders.LegacyProjectLoader").setLevel(Level.FINER); + Logger.getLogger("org.netbeans.modules.gradle.loaders.LegacyProjectLoader").setLevel(Level.FINER); pw.append("Running again with increased loglevel:").append(fo.getPath()).append("\n"); verifySingleTemplate(cnt + 1000, template); } finally { - LogManager.getLogManager().getLogger("org.netbeans.modules.gradle.loaders.LegacyProjectLoader").setLevel(Level.INFO); + Logger.getLogger("org.netbeans.modules.gradle.loaders.LegacyProjectLoader").setLevel(Level.INFO); } } } @@ -97,6 +101,7 @@ public void testGradleProjectTemplates() throws Exception { if (err > 0) { throw new IOException("Some projects failed (" + err + "/" + cnt + "):\n" + w.toString()); } + assertTrue("No template was tested", cnt > 0); } private void verifySingleTemplate(int cnt, DataObject template) throws IllegalArgumentException, IOException, InterruptedException { @@ -182,4 +187,5 @@ private static String names(String msg, final FileObject pd) { } return sb.toString(); } + } diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java index e81df27f7a97..cae52299e009 100644 --- a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java +++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java @@ -39,7 +39,6 @@ import org.openide.filesystems.FileUtil; import org.openide.filesystems.test.TestFileUtils; import org.openide.modules.DummyInstalledFileLocator; -import org.openide.util.Exceptions; /** * diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/newproject/VerifyProjectTemplatesTest.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/newproject/VerifyProjectTemplatesTest.java new file mode 100644 index 000000000000..1cc7771ac27e --- /dev/null +++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/newproject/VerifyProjectTemplatesTest.java @@ -0,0 +1,47 @@ +package org.netbeans.modules.gradle.newproject; + + +import org.netbeans.junit.NbModuleSuite; +import org.netbeans.modules.gradle.AbstractGradleProjectTemplateTestCase; + +/* + * 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. + */ + +/** + * + * @author lkishalmi + */ +public class VerifyProjectTemplatesTest extends AbstractGradleProjectTemplateTestCase { + + public VerifyProjectTemplatesTest(String name) { + super(name); + } + + public static junit.framework.Test suite() { + return NbModuleSuite.createConfiguration(VerifyProjectTemplatesTest.class). + gui(false). + enableModules(".*"). + honorAutoloadEager(true). + suite(); + } + + public void testProjectTemplates() throws Exception { + assertGradleProjectTemplates(); + } +} diff --git a/java/gradle.java/nbproject/project.xml b/java/gradle.java/nbproject/project.xml index e02a778936ad..826e590c6a99 100644 --- a/java/gradle.java/nbproject/project.xml +++ b/java/gradle.java/nbproject/project.xml @@ -110,7 +110,7 @@ 2 - 2.40 + 2.49
@@ -373,6 +373,11 @@ org.netbeans.modules.java.j2seplatform + + org.netbeans.modules.gradle + + + org.netbeans.modules.project.dependency diff --git a/java/gradle.java/test/unit/data/artifacts/shadowed/build.gradle b/java/gradle.java/test/unit/data/artifacts/shadowed/build.gradle index 076915ca6c45..92463ae95adf 100644 --- a/java/gradle.java/test/unit/data/artifacts/shadowed/build.gradle +++ b/java/gradle.java/test/unit/data/artifacts/shadowed/build.gradle @@ -1,12 +1,14 @@ plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" + id "com.gradleup.shadow" version "9.3.0" } apply plugin: 'java' apply plugin: 'application' -mainClassName = 'test.App' +application { + mainClass = 'test.App' +} run { jvmArgs '-Dtest.foo=bar', '-Dtest.bar=foo' diff --git a/java/gradle.java/test/unit/data/artifacts/shadowed/gradle/wrapper/gradle-wrapper.properties b/java/gradle.java/test/unit/data/artifacts/shadowed/gradle/wrapper/gradle-wrapper.properties index 5c82cb032420..ac57dd155af0 100644 --- a/java/gradle.java/test/unit/data/artifacts/shadowed/gradle/wrapper/gradle-wrapper.properties +++ b/java/gradle.java/test/unit/data/artifacts/shadowed/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/java/gradle.java/test/unit/data/artifacts/withTests/build.gradle b/java/gradle.java/test/unit/data/artifacts/withTests/build.gradle index efb11b2f14f6..a2f0471ad28f 100644 --- a/java/gradle.java/test/unit/data/artifacts/withTests/build.gradle +++ b/java/gradle.java/test/unit/data/artifacts/withTests/build.gradle @@ -1,7 +1,9 @@ apply plugin: 'java' apply plugin: 'application' -mainClassName = 'test.App' +application { + mainClass = 'test.App' +} run { jvmArgs '-Dtest.foo=bar', '-Dtest.bar=foo' diff --git a/java/gradle.java/test/unit/data/artifacts/withTests/gradle/wrapper/gradle-wrapper.properties b/java/gradle.java/test/unit/data/artifacts/withTests/gradle/wrapper/gradle-wrapper.properties index 5c82cb032420..ac57dd155af0 100644 --- a/java/gradle.java/test/unit/data/artifacts/withTests/gradle/wrapper/gradle-wrapper.properties +++ b/java/gradle.java/test/unit/data/artifacts/withTests/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/java/gradle.java/test/unit/data/dependencies/micronaut/build.gradle b/java/gradle.java/test/unit/data/dependencies/micronaut/build.gradle index 7bfa7a3e8b3a..e397ba3d54aa 100644 --- a/java/gradle.java/test/unit/data/dependencies/micronaut/build.gradle +++ b/java/gradle.java/test/unit/data/dependencies/micronaut/build.gradle @@ -18,8 +18,7 @@ */ plugins { - id("com.github.johnrengelman.shadow") version "7.1.2" - id("io.micronaut.application") version "3.7.10" + id("io.micronaut.application") version "4.6.1" } version = "0.1" @@ -31,16 +30,14 @@ repositories { dependencies { annotationProcessor("io.micronaut:micronaut-http-validation") - implementation("io.micronaut:micronaut-http-client") - implementation( - "io.micronaut:micronaut-jackson-databind" - ) + implementation("io.micronaut:micronaut-http-client-jdk") + implementation("io.micronaut.serde:micronaut-serde-jackson") implementation("jakarta.annotation:jakarta.annotation-api") runtimeOnly("ch.qos.logback:logback-classic") implementation( - "io.micronaut:micronaut-validation", - "org.apache.logging.log4j:log4j-core:2.17.0" + "io.micronaut.validation:micronaut-validation", + "org.apache.logging.log4j:log4j-core:2.24.3" ) } @@ -48,14 +45,17 @@ dependencies { application { mainClass.set("com.example.Application") } + java { - sourceCompatibility = JavaVersion.toVersion("11") - targetCompatibility = JavaVersion.toVersion("11") + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } graalvmNative.toolchainDetection = false micronaut { - runtime("netty") + version "4.9.4" + runtime("http_server_jdk") testRuntime("junit5") processing { incremental(true) diff --git a/java/gradle.java/test/unit/data/dependencies/micronaut/gradle/wrapper/gradle-wrapper.properties b/java/gradle.java/test/unit/data/dependencies/micronaut/gradle/wrapper/gradle-wrapper.properties index 5c82cb032420..ac57dd155af0 100644 --- a/java/gradle.java/test/unit/data/dependencies/micronaut/gradle/wrapper/gradle-wrapper.properties +++ b/java/gradle.java/test/unit/data/dependencies/micronaut/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/newproject/VerifyGradleProjectTemplatesTest.java b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/newproject/VerifyGradleProjectTemplatesTest.java new file mode 100644 index 000000000000..bc90296e3051 --- /dev/null +++ b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/newproject/VerifyGradleProjectTemplatesTest.java @@ -0,0 +1,41 @@ +/* + * 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.java.newproject; + +import org.netbeans.junit.NbModuleSuite; +import org.netbeans.modules.gradle.AbstractGradleProjectTemplateTestCase; + +public class VerifyGradleProjectTemplatesTest extends AbstractGradleProjectTemplateTestCase { + + public VerifyGradleProjectTemplatesTest(String name) { + super(name); + } + + public static junit.framework.Test suite() { + return NbModuleSuite.createConfiguration(VerifyGradleProjectTemplatesTest.class). + gui(false). + enableModules(".*"). + honorAutoloadEager(true). + suite(); + } + + public void testProjectTemplates() throws Exception { + assertGradleProjectTemplates(); + } +} diff --git a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/queries/GradleDependenciesImplementationTest.java b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/queries/GradleDependenciesImplementationTest.java index f8ccc336d08a..43584f482042 100644 --- a/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/queries/GradleDependenciesImplementationTest.java +++ b/java/gradle.java/test/unit/src/org/netbeans/modules/gradle/java/queries/GradleDependenciesImplementationTest.java @@ -21,16 +21,11 @@ import java.io.File; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import org.netbeans.api.editor.document.LineDocument; import org.netbeans.api.editor.document.LineDocumentUtils; import org.netbeans.api.project.Project; -import org.netbeans.api.project.ProjectManager; -import org.netbeans.api.project.ui.OpenProjects; -import org.netbeans.junit.NbTestCase; -import org.netbeans.modules.gradle.ProjectTrust; +import org.netbeans.modules.gradle.AbstractGradleProjectTestCase; import org.netbeans.modules.gradle.api.GradleBaseProject; -import org.netbeans.modules.gradle.api.NbGradleProject; import org.netbeans.modules.gradle.options.GradleExperimentalSettings; import org.netbeans.modules.project.dependency.ArtifactSpec; import org.netbeans.modules.project.dependency.Dependency; @@ -48,7 +43,7 @@ * * @author sdedic */ -public class GradleDependenciesImplementationTest extends NbTestCase { +public class GradleDependenciesImplementationTest extends AbstractGradleProjectTestCase { FileObject projectDir; File destDirF; @@ -92,16 +87,7 @@ protected void tearDown() throws Exception { private Project makeProject(String subdir) throws Exception { FileObject src = FileUtil.toFileObject(getDataDir()).getFileObject(subdir); projectDir = FileUtil.copyFile(src, FileUtil.toFileObject(getWorkDir()), src.getNameExt()); - - Project p = ProjectManager.getDefault().findProject(projectDir); - assertNotNull(p); - ProjectTrust.getDefault().trustProject(p); - - OpenProjects.getDefault().open(new Project[] { p }, true); - OpenProjects.getDefault().openProjects().get(); - - NbGradleProject.get(p).toQuality("Load data", NbGradleProject.Quality.FULL, false).toCompletableFuture().get(); - return p; + return openProject(projectDir); } public void testSimpleProject() throws Exception { @@ -184,9 +170,9 @@ public void testLocationOfBlockDependencyList() throws Exception { ); assertNotNull("Dependency service is supported", r); - Dependency pin1 = r.getRoot().getChildren().stream().filter(d -> d.toString().contains("io.micronaut:micronaut-validation")).findAny().get(); + Dependency pin1 = r.getRoot().getChildren().stream().filter(d -> d.toString().contains("io.micronaut.validation:micronaut-validation")).findAny().get(); Dependency pin2 = r.getRoot().getChildren().stream().filter(d -> d.toString().contains("ch.qos.logback:logback-classic")).findAny().get(); - Dependency pin3 = r.getRoot().getChildren().stream().filter(d -> d.toString().contains("io.micronaut:micronaut-jackson-databind")).findAny().get(); + Dependency pin3 = r.getRoot().getChildren().stream().filter(d -> d.toString().contains("io.micronaut.serde:micronaut-serde-jackson")).findAny().get(); SourceLocation loc = r.getDeclarationRange(pin2, DependencyResult.PART_CONTAINER); assertNull(loc); @@ -221,45 +207,26 @@ public void testMicronautProject() throws Exception { assertNotNull("Dependency service is supported", r); assertEquals(9, r.getRoot().getChildren().size()); - Optional dep = r.getRoot().getChildren().stream().filter(d -> d.getArtifact().toString().equals("io.micronaut:micronaut-bom:3.6.0")).findFirst(); + Optional dep = r.getRoot().getChildren().stream().filter(d -> d.getArtifact().toString().equals("io.micronaut.platform:micronaut-platform:4.9.4")).findFirst(); assertTrue("Plugin - injected dependency should be present", dep.isPresent()); SourceLocation srcLoc = r.getDeclarationRange(dep.get(), null); assertNull("Implied dependencies do not have source location(s) - yet!", srcLoc); - dep = r.getRoot().getChildren().stream().filter(d -> d.getArtifact().toString().equals("org.apache.logging.log4j:log4j-core:2.17.0")).findFirst(); + dep = r.getRoot().getChildren().stream().filter(d -> d.getArtifact().toString().equals("org.apache.logging.log4j:log4j-core:2.24.3")).findFirst(); assertTrue("Explicit dependency is present", dep.isPresent()); srcLoc = r.getDeclarationRange(dep.get(), null); - assertNotNull("Explicit dependency should have a location"); + assertNotNull("Explicit dependency should have a location", srcLoc); assertNull("Explicit dependencies are not implied", srcLoc.getImpliedBy()); - - // there are more paths to io.micronaut:micronaut-websocket:3.6.0; some of them are through an explicit dependency, - // some through an injected one, micronaut-bom, which does not have any SourceLocation atm. - List deps = r.getRoot().getChildren().stream().flatMap(d -> d.getChildren().stream()).filter(d -> - d.getArtifact().toString().equals("io.micronaut:micronaut-websocket:3.6.0")).collect(Collectors.toList()); - assertFalse("Implied dependency is present", deps.isEmpty()); - - Dependency rd = null; - for (Dependency d : deps) { - srcLoc = r.getDeclarationRange(d, null); - if (srcLoc != null) { - assertNotNull("4th party artifact should not have null location", srcLoc); - assertNotNull("4th party artifacts should report 'implied'", srcLoc.getImpliedBy()); - for (rd = d.getParent(); rd.getParent() != r.getRoot(); rd = rd.getParent() ) ; - break; - } - } - assertNotNull("Implied dependency should have a root dep", rd); - assertSame(rd, srcLoc.getImpliedBy()); } private void assertContainsDependency(List deps, String groupAndArtifact) { assertFalse("dependency list was empty", deps.isEmpty()); for (Dependency d : deps) { - ArtifactSpec a = d.getArtifact(); + ArtifactSpec a = d.getArtifact(); if (a != null) { String ga = a.getGroupId() + ":" + a.getArtifactId(); if (groupAndArtifact.equals(ga)) { @@ -270,16 +237,6 @@ private void assertContainsDependency(List deps, String groupAndArti fail("Artifact not found: " + groupAndArtifact); } - private static final List ALL_DEPS = List.of( - "io.micronaut:micronaut-http-validation", - "io.micronaut:micronaut-http-client", - "io.micronaut:micronaut-jackson-databind", - "jakarta.annotation:jakarta.annotation-api", - "ch.qos.logback:logback-classic", - "io.micronaut:micronaut-validation", - "org.apache.logging.log4j:log4j-core" - ); - public void testMicronautProjectDeclaredDependencies() throws Exception { Project p = makeProject("dependencies/micronaut"); @@ -289,10 +246,16 @@ public void testMicronautProjectDeclaredDependencies() throws Exception { assertNotNull("Dependency service is supported", r); List deps = r.getRoot().getChildren(); - for (String d : ALL_DEPS) { - assertContainsDependency(deps, d); - } + List.of( + "io.micronaut:micronaut-http-validation", + "io.micronaut:micronaut-http-client-jdk", + "io.micronaut.serde:micronaut-serde-jackson", + "jakarta.annotation:jakarta.annotation-api", + "ch.qos.logback:logback-classic", + "io.micronaut.validation:micronaut-validation", + "org.apache.logging.log4j:log4j-core" + ).forEach(dep -> assertContainsDependency(deps, dep)); - assertTrue("Contains versioned log4j dependency", deps.stream().filter(d -> d.getArtifact().toString().contains(".log4j:log4j-core:2.17.0")).findAny().isPresent()); + assertTrue("Contains versioned log4j dependency", deps.stream().filter(d -> d.getArtifact().toString().contains(".log4j:log4j-core:2")).findAny().isPresent()); } } From 3229c653b2c41cb4372c85d22a1d08a3b112a6c6 Mon Sep 17 00:00:00 2001 From: Laszlo Kishalmi Date: Sun, 4 Jan 2026 16:49:46 -0800 Subject: [PATCH 5/5] Fix gradle.dependencies tests --- .../unit/data/projects/micronaut/build.gradle | 20 +++++++++------- .../data/projects/micronaut/build2.gradle | 21 +++++++++------- .../data/projects/micronaut/build3.gradle | 12 ++++++---- .../data/projects/micronaut/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../data/projects/multi/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../unit/data/projects/multi/oci/build.gradle | 17 ++++++------- .../unit/data/projects/multi/settings.gradle | 1 - .../DependencyModifierImplTest.java | 24 +++++++++---------- 10 files changed, 55 insertions(+), 48 deletions(-) diff --git a/java/gradle.dependencies/test/unit/data/projects/micronaut/build.gradle b/java/gradle.dependencies/test/unit/data/projects/micronaut/build.gradle index 3ce34ee2b6cf..74c0a848956e 100644 --- a/java/gradle.dependencies/test/unit/data/projects/micronaut/build.gradle +++ b/java/gradle.dependencies/test/unit/data/projects/micronaut/build.gradle @@ -18,8 +18,7 @@ */ plugins { - id("com.github.johnrengelman.shadow") version "7.1.2" - id("io.micronaut.application") version "3.5.1" + id("io.micronaut.application") version "4.6.1" } version = "0.1" @@ -31,27 +30,30 @@ repositories { dependencies { annotationProcessor("io.micronaut:micronaut-http-validation") - implementation("io.micronaut:micronaut-http-client") - implementation("io.micronaut:micronaut-jackson-databind") + implementation("io.micronaut:micronaut-http-client-jdk") + implementation("io.micronaut.serde:micronaut-serde-jackson") implementation("jakarta.annotation:jakarta.annotation-api") runtimeOnly("ch.qos.logback:logback-classic") - implementation("io.micronaut:micronaut-validation") - implementation("org.apache.logging.log4j:log4j-core:2.17.0") + implementation("io.micronaut.validation:micronaut-validation") + implementation("org.apache.logging.log4j:log4j-core:2.24.3") } application { mainClass.set("com.example.Application") } + java { - sourceCompatibility = JavaVersion.toVersion("11") - targetCompatibility = JavaVersion.toVersion("11") + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } graalvmNative.toolchainDetection = false micronaut { - runtime("netty") + version "4.9.4" + runtime("http_server_jdk") testRuntime("junit5") processing { incremental(true) diff --git a/java/gradle.dependencies/test/unit/data/projects/micronaut/build2.gradle b/java/gradle.dependencies/test/unit/data/projects/micronaut/build2.gradle index f33b0d4e9559..e397ba3d54aa 100644 --- a/java/gradle.dependencies/test/unit/data/projects/micronaut/build2.gradle +++ b/java/gradle.dependencies/test/unit/data/projects/micronaut/build2.gradle @@ -18,8 +18,7 @@ */ plugins { - id("com.github.johnrengelman.shadow") version "7.1.2" - id("io.micronaut.application") version "3.5.1" + id("io.micronaut.application") version "4.6.1" } version = "0.1" @@ -31,13 +30,14 @@ repositories { dependencies { annotationProcessor("io.micronaut:micronaut-http-validation") - implementation("io.micronaut:micronaut-http-client") - implementation("io.micronaut:micronaut-jackson-databind") + implementation("io.micronaut:micronaut-http-client-jdk") + implementation("io.micronaut.serde:micronaut-serde-jackson") implementation("jakarta.annotation:jakarta.annotation-api") runtimeOnly("ch.qos.logback:logback-classic") + implementation( - "io.micronaut:micronaut-validation", - "org.apache.logging.log4j:log4j-core:2.17.0" + "io.micronaut.validation:micronaut-validation", + "org.apache.logging.log4j:log4j-core:2.24.3" ) } @@ -45,14 +45,17 @@ dependencies { application { mainClass.set("com.example.Application") } + java { - sourceCompatibility = JavaVersion.toVersion("11") - targetCompatibility = JavaVersion.toVersion("11") + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } graalvmNative.toolchainDetection = false micronaut { - runtime("netty") + version "4.9.4" + runtime("http_server_jdk") testRuntime("junit5") processing { incremental(true) diff --git a/java/gradle.dependencies/test/unit/data/projects/micronaut/build3.gradle b/java/gradle.dependencies/test/unit/data/projects/micronaut/build3.gradle index 436e432b9582..af1e5356ae37 100644 --- a/java/gradle.dependencies/test/unit/data/projects/micronaut/build3.gradle +++ b/java/gradle.dependencies/test/unit/data/projects/micronaut/build3.gradle @@ -18,8 +18,7 @@ */ plugins { - id("com.github.johnrengelman.shadow") version "7.1.2" - id("io.micronaut.application") version "3.5.1" + id("io.micronaut.application") version "4.6.1" } version = "0.1" @@ -32,14 +31,17 @@ repositories { application { mainClass.set("com.example.Application") } + java { - sourceCompatibility = JavaVersion.toVersion("11") - targetCompatibility = JavaVersion.toVersion("11") + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } graalvmNative.toolchainDetection = false micronaut { - runtime("netty") + version "4.9.4" + runtime("http_server_jdk") testRuntime("junit5") processing { incremental(true) diff --git a/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle.properties b/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle.properties index 2651a61b6336..635ac904cb67 100644 --- a/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle.properties +++ b/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle.properties @@ -15,4 +15,4 @@ # specific language governing permissions and limitations # under the License. -micronautVersion=3.6.0 +micronautVersion=4.9.4 diff --git a/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle/wrapper/gradle-wrapper.properties b/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle/wrapper/gradle-wrapper.properties index 8049c684f04f..ac57dd155af0 100644 --- a/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle/wrapper/gradle-wrapper.properties +++ b/java/gradle.dependencies/test/unit/data/projects/micronaut/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/java/gradle.dependencies/test/unit/data/projects/multi/gradle.properties b/java/gradle.dependencies/test/unit/data/projects/multi/gradle.properties index 770867193879..358b4de42ed5 100644 --- a/java/gradle.dependencies/test/unit/data/projects/multi/gradle.properties +++ b/java/gradle.dependencies/test/unit/data/projects/multi/gradle.properties @@ -1 +1 @@ -micronautVersion=3.10.2 +micronautVersion=4.9.0 diff --git a/java/gradle.dependencies/test/unit/data/projects/multi/gradle/wrapper/gradle-wrapper.properties b/java/gradle.dependencies/test/unit/data/projects/multi/gradle/wrapper/gradle-wrapper.properties index 98debb84d51d..ac57dd155af0 100644 --- a/java/gradle.dependencies/test/unit/data/projects/multi/gradle/wrapper/gradle-wrapper.properties +++ b/java/gradle.dependencies/test/unit/data/projects/multi/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/java/gradle.dependencies/test/unit/data/projects/multi/oci/build.gradle b/java/gradle.dependencies/test/unit/data/projects/multi/oci/build.gradle index ef7b070ca405..92391ce5abcb 100644 --- a/java/gradle.dependencies/test/unit/data/projects/multi/oci/build.gradle +++ b/java/gradle.dependencies/test/unit/data/projects/multi/oci/build.gradle @@ -1,6 +1,5 @@ plugins { - id("com.github.johnrengelman.shadow") version "7.1.2" - id("io.micronaut.application") version "3.7.10" + id("io.micronaut.application") version "4.6.1" } version = "0.1" @@ -12,12 +11,12 @@ repositories { dependencies { annotationProcessor("io.micronaut:micronaut-http-validation") - implementation("io.micronaut:micronaut-http-client") - implementation("io.micronaut:micronaut-jackson-databind") + implementation("io.micronaut:micronaut-http-client-jdk") + implementation("io.micronaut.serde:micronaut-serde-jackson") implementation("jakarta.annotation:jakarta.annotation-api") runtimeOnly("ch.qos.logback:logback-classic") implementation(project(":app")) - implementation("io.micronaut:micronaut-validation") + implementation("io.micronaut.validation:micronaut-validation") } @@ -25,13 +24,15 @@ dependencies { application { mainClass.set("com.example.Application") } + java { - sourceCompatibility = JavaVersion.toVersion("11") - targetCompatibility = JavaVersion.toVersion("11") + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } task testJar(type: Jar) { - classifier = 'tests' + archiveClassifier = 'tests' from sourceSets.test.output } diff --git a/java/gradle.dependencies/test/unit/data/projects/multi/settings.gradle b/java/gradle.dependencies/test/unit/data/projects/multi/settings.gradle index e6db119b5346..7f0ef99f2726 100644 --- a/java/gradle.dependencies/test/unit/data/projects/multi/settings.gradle +++ b/java/gradle.dependencies/test/unit/data/projects/multi/settings.gradle @@ -2,5 +2,4 @@ rootProject.name="demo" include("app") -include("aws") include("oci") diff --git a/java/gradle.dependencies/test/unit/src/org/netbeans/modules/gradle/dependencies/DependencyModifierImplTest.java b/java/gradle.dependencies/test/unit/src/org/netbeans/modules/gradle/dependencies/DependencyModifierImplTest.java index 7bf21361a157..3b2947c9eb61 100644 --- a/java/gradle.dependencies/test/unit/src/org/netbeans/modules/gradle/dependencies/DependencyModifierImplTest.java +++ b/java/gradle.dependencies/test/unit/src/org/netbeans/modules/gradle/dependencies/DependencyModifierImplTest.java @@ -153,14 +153,14 @@ private void assertDependencyAddFails(String msg, ArtifactSpec art) throws Excep } public void testDependencyConflict() throws Exception { - Project p = makeProject("projects/micronaut"); - assertDependencyAddFails("Versionless artifacts should cause conflict", ArtifactSpec.make("io.micronaut", "micronaut-http-client")); - assertDependencyAddFails("Versioned artifact added on top of versionless should cause conflict", ArtifactSpec.make("io.micronaut", "micronaut-http-client", "1.0")); + makeProject("projects/micronaut"); + assertDependencyAddFails("Versionless artifacts should cause conflict", ArtifactSpec.make("io.micronaut", "micronaut-http-client-jdk")); + assertDependencyAddFails("Versioned artifact added on top of versionless should cause conflict", ArtifactSpec.make("io.micronaut", "micronaut-http-client-jdk", "1.0")); assertDependencyAddFails("Versionless artifact added on top of versioned should conflict", ArtifactSpec.make("org.apache.logging.log4j", "log4j-core")); assertDependencyAddFails("Different versions should conflict", ArtifactSpec.make("org.apache.logging.log4j", "log4j-core", "2.17.1")); } - private void assertNoChange(String reason, ArtifactSpec spec) throws Exception { + private void assertNoChange(String reason, ArtifactSpec spec) throws Exception { Dependency toAdd = Dependency.make(spec, Scopes.COMPILE); DependencyChange change = DependencyChange.builder(DependencyChange.Kind.ADD). dependency(toAdd). @@ -173,7 +173,7 @@ private void assertNoChange(String reason, ArtifactSpec spec) throws Exception { public void testMatchingDependencySkips() throws Exception { makeProject("projects/micronaut"); - assertNoChange("Exactly matching artifact should be no-op", ArtifactSpec.make("io.micronaut", "micronaut-http-client")); + assertNoChange("Exactly matching artifact should be no-op", ArtifactSpec.make("io.micronaut", "micronaut-http-client-jdk")); } public void testAddUnknownScopeFails() throws Exception { @@ -223,7 +223,7 @@ public void testAbstractScopesMappedToGradle() throws Exception { public void testAddGenericCompilation() throws Exception { Project p = makeProject("projects/micronaut"); - ArtifactSpec art = ArtifactSpec.make("io.micronaut", "micronaut-http-client2"); + ArtifactSpec art = ArtifactSpec.make("io.micronaut", "micronaut-http-client2"); Dependency toAdd = Dependency.make(art, Scopes.COMPILE); DependencyChange change = DependencyChange.builder(DependencyChange.Kind.ADD). dependency(toAdd). @@ -288,7 +288,7 @@ public void propertyChange(PropertyChangeEvent evt) { assertTrue("Should successfuly load the project", gp.getQuality().atLeast(NbGradleProject.Quality.FULL)); } - private void assertContainsArtifacts(boolean shouldContainDirect, String configuration, ArtifactSpec... artifacts) throws Exception { + private void assertContainsArtifacts(boolean shouldContainDirect, String configuration, ArtifactSpec... artifacts) throws Exception { Project p = this.project; List artifactIds = Arrays.asList(artifacts).stream().map(a -> a.getGroupId() + ":" + a.getArtifactId()).collect(Collectors.toList()); List matches = new ArrayList<>(artifactIds); @@ -324,7 +324,7 @@ private void assertContainsArtifacts(boolean shouldContainDirect, String configu } } - private void assertContainsDependency(boolean containsInScope, Scope scope, ArtifactSpec... artifacts) throws Exception { + private void assertContainsDependency(boolean containsInScope, Scope scope, ArtifactSpec... artifacts) throws Exception { Project p = this.project; List artifactIds = Arrays.asList(artifacts).stream().map(a -> a.getGroupId() + ":" + a.getArtifactId()).collect(Collectors.toList()); List matches = new ArrayList<>(artifactIds); @@ -355,7 +355,7 @@ private void assertContainsDependency(boolean containsInScope, Scope scope, Arti } void assertAddRouterValid() throws Exception { - ArtifactSpec art = ArtifactSpec.make("io.micronaut", "micronaut-tracing"); + ArtifactSpec art = ArtifactSpec.make("io.micronaut.tracing", "micronaut-tracing-opentelemetry"); Dependency toAdd = Dependency.make(art, Scopes.COMPILE); DependencyChange change = DependencyChange.builder(DependencyChange.Kind.ADD). dependency(toAdd). @@ -380,8 +380,8 @@ public void testValidAfterDependencyBlock() throws Exception { public void testInsertMultipleDependencies() throws Exception { makeProject("projects/micronaut", "build2.gradle"); - ArtifactSpec art = ArtifactSpec.make("io.micronaut", "micronaut-messaging"); - ArtifactSpec art2 = ArtifactSpec.make("io.micronaut", "micronaut-tracing"); + ArtifactSpec art = ArtifactSpec.make("io.micronaut", "micronaut-messaging"); + ArtifactSpec art2 = ArtifactSpec.make("io.micronaut.tracing", "micronaut-tracing-opentelemetry"); Dependency toAdd = Dependency.make(art, Scopes.RUNTIME); Dependency toAdd2 = Dependency.make(art2, Scopes.RUNTIME); @@ -400,7 +400,7 @@ public void testInsertMultipleDependencies() throws Exception { public void testAddAnnotationProcessor() throws Exception { makeProject("projects/micronaut", "build2.gradle"); - ArtifactSpec art = ArtifactSpec.make("io.micronaut.data", "micronaut-data-processor"); + ArtifactSpec art = ArtifactSpec.make("io.micronaut.data", "micronaut-data-processor"); Dependency toAdd = Dependency.make(art, Scopes.PROCESS); DependencyChange change = DependencyChange.builder(DependencyChange.Kind.ADD). dependency(toAdd).