This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch delivery in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/delivery by this push: new 38f7417 [NETBEANS-5161] Prevent IAE when resolving composite project dependencies 38f7417 is described below commit 38f7417d00cddd197dcd84e81f41edb7e1db6a19 Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com> AuthorDate: Sat Dec 19 21:45:44 2020 -0800 [NETBEANS-5161] Prevent IAE when resolving composite project dependencies --- .../modules/gradle/GradleModuleFileCache21.java | 2 +- .../modules/gradle/api/GradleBaseProject.java | 9 ++--- .../gradle/api/GradleBaseProjectBuilder.java | 38 ++++++++++++++-------- .../modules/gradle/api/GradleConfiguration.java | 6 ++-- .../modules/gradle/api/GradleDependency.java | 16 ++------- 5 files changed, 32 insertions(+), 39 deletions(-) diff --git a/extide/gradle/src/org/netbeans/modules/gradle/GradleModuleFileCache21.java b/extide/gradle/src/org/netbeans/modules/gradle/GradleModuleFileCache21.java index 86dc596..8ced737 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/GradleModuleFileCache21.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/GradleModuleFileCache21.java @@ -247,7 +247,7 @@ public final class GradleModuleFileCache21 { int firstColon = gav.indexOf(':'); int lastColon = gav.lastIndexOf(':'); if (firstColon == -1 || firstColon == lastColon) { - throw new IllegalArgumentException("Invalig GAV format: " + gav); + throw new IllegalArgumentException("Invalid GAV format: " + gav); //NOI18N } return new String[] { gav.substring(0, firstColon), diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java index 49a4f14..3c2cd03 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java @@ -32,7 +32,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import org.netbeans.api.project.Project; -import org.openide.filesystems.FileUtil; +import org.netbeans.modules.gradle.GradleModuleFileCache21; /** * This object holds the basic information of the Gradle project. @@ -255,11 +255,8 @@ public final class GradleBaseProject implements Serializable, ModuleSearchSuppor } @Override - public Set<GradleDependency.ModuleDependency> findModules(String gav) { - String parts[] = GradleDependency.gavSplit(gav); - if (parts.length != 3) { - throw new IllegalArgumentException("Invalid gav filter: " + gav); - } + public Set<GradleDependency.ModuleDependency> findModules(String gav) throws IllegalArgumentException { + String parts[] = GradleModuleFileCache21.gavSplit(gav); String groupId = parts[0].isEmpty() ? null : parts[0]; String artifactId = parts[1].isEmpty() ? null : parts[1]; String ver = parts[2].isEmpty() ? null : parts[2]; diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java index 1519aea..ede038d 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java @@ -196,8 +196,13 @@ class GradleBaseProjectBuilder implements ProjectInfoExtractor.Result { conf.modules.add(dep); } else { dep = resolveModuleDependency(gradleUserHome, c); - components.put(c, dep); - conf.modules.add(dep); + if (dep != null) { + components.put(c, dep); + conf.modules.add(dep); + } else { + // NETBEANS-5161: This could happen on composite projects + // TODO: Implement composite project module dependency + } } } } @@ -259,19 +264,24 @@ class GradleBaseProjectBuilder implements ProjectInfoExtractor.Result { private ModuleDependency resolveModuleDependency(File gradleUserHome, String c) { GradleModuleFileCache21 moduleCache = GradleModuleFileCache21.getGradleFileCache(gradleUserHome.toPath()); - GradleModuleFileCache21.CachedArtifactVersion artVersion = moduleCache.resolveModule(c); - Set<File> binaries = artifactSore.getBinaries(c); - if (((binaries == null) || binaries.isEmpty()) && (artVersion.getBinary() != null)) { - binaries = Collections.singleton(artVersion.getBinary().getPath().toFile()); - } - ModuleDependency ret = new ModuleDependency(c, binaries); - if (artVersion.getSources() != null) { - ret.sources = Collections.singleton(artVersion.getSources().getPath().toFile()); - } - if (artVersion.getJavaDoc() != null) { - ret.javadoc = Collections.singleton(artVersion.getJavaDoc().getPath().toFile()); + try { + GradleModuleFileCache21.CachedArtifactVersion artVersion = moduleCache.resolveModule(c); + Set<File> binaries = artifactSore.getBinaries(c); + if (((binaries == null) || binaries.isEmpty()) && (artVersion.getBinary() != null)) { + binaries = Collections.singleton(artVersion.getBinary().getPath().toFile()); + } + ModuleDependency ret = new ModuleDependency(c, binaries); + if (artVersion.getSources() != null) { + ret.sources = Collections.singleton(artVersion.getSources().getPath().toFile()); + } + if (artVersion.getJavaDoc() != null) { + ret.javadoc = Collections.singleton(artVersion.getJavaDoc().getPath().toFile()); + } + return ret; + } catch (IllegalArgumentException iae) { + // NETBEANS-5161: This could happen on composite projects + return null; } - return ret; } private void processDependencyPlugins() { diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java index fe6b233..4e3b137 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleConfiguration.java @@ -23,6 +23,7 @@ import java.io.Serializable; import java.util.Collections; import java.util.HashSet; import java.util.Set; +import org.netbeans.modules.gradle.GradleModuleFileCache21; /** * This object represents a configuration in a Gradle project. @@ -86,10 +87,7 @@ public final class GradleConfiguration implements Serializable, ModuleSearchSupp @Override public Set<GradleDependency.ModuleDependency> findModules(String gav) { - String parts[] = GradleDependency.gavSplit(gav); - if (parts.length != 3) { - throw new IllegalArgumentException("Invalid gav filter: " + gav); - } + String parts[] = GradleModuleFileCache21.gavSplit(gav); String group = parts[0].isEmpty() ? null : parts[0]; String artifact = parts[1].isEmpty() ? null : parts[1]; String version = parts[2].isEmpty() ? null : parts[2]; diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java index ab2b588..8bd32a2 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleDependency.java @@ -24,6 +24,7 @@ import java.io.Serializable; import java.util.Collections; import java.util.Objects; import java.util.Set; +import org.netbeans.modules.gradle.GradleModuleFileCache21; /** * This object represents a Gradle dependency element in a {@link GradleConfiguration}. @@ -63,19 +64,6 @@ public abstract class GradleDependency implements Serializable, Comparable<Gradl public abstract Type getType(); - static final String[] gavSplit(String gav) { - int firstColon = gav.indexOf(':'); - int lastColon = gav.lastIndexOf(':'); - if (firstColon == -1 || firstColon == lastColon) { - throw new IllegalArgumentException("Invalig GAV format: " + gav); - } - return new String[] { - gav.substring(0, firstColon), - gav.substring(firstColon + 1, lastColon), - gav.substring(lastColon + 1) - }; - } - /** * Dependency for modules usually downloaded from a remote repository. * @since 1.0 @@ -92,7 +80,7 @@ public abstract class GradleDependency implements Serializable, Comparable<Gradl ModuleDependency(String id, Set<File> artifacts) { super(id); this.artifacts = artifacts; - String[] parts = gavSplit(id); + String[] parts = GradleModuleFileCache21.gavSplit(id); group = parts[0]; name = parts[1]; version = parts[2]; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists