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

Reply via email to