This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new f4929e7  [NETBEANS-2925] Implemented our own GradleSourceGroup similar 
to Maven Projects.
f4929e7 is described below

commit f4929e770c3ca0933195715c6dad34866d1f6eda
Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com>
AuthorDate: Tue Sep 3 23:00:11 2019 -0700

    [NETBEANS-2925] Implemented our own GradleSourceGroup similar to Maven 
Projects.
---
 .../gradle/java/classpath/GradleSourcesImpl.java   | 82 ++++++++++++++++++----
 1 file changed, 70 insertions(+), 12 deletions(-)

diff --git 
a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java
 
b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java
index 6021d19..82da08b 100644
--- 
a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java
+++ 
b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/classpath/GradleSourcesImpl.java
@@ -38,15 +38,18 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import javax.swing.Icon;
 import javax.swing.event.ChangeListener;
 import org.netbeans.api.java.project.JavaProjectConstants;
+import org.netbeans.api.project.FileOwnerQuery;
 import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectManager;
 import org.netbeans.api.project.ProjectUtils;
 import org.netbeans.api.project.SourceGroup;
 import org.netbeans.api.project.Sources;
 import org.netbeans.spi.project.ProjectServiceProvider;
 import org.netbeans.spi.project.SourceGroupModifierImplementation;
-import org.netbeans.spi.project.support.GenericSources;
+import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileUtil;
 import org.openide.util.ChangeSupport;
 import org.openide.util.NbBundle;
@@ -146,8 +149,8 @@ public class GradleSourcesImpl implements Sources, 
SourceGroupModifierImplementa
     @Override
     public synchronized SourceGroup[] getSourceGroups(String type) {
         if (Sources.TYPE_GENERIC.equals(type)) {
-            return new SourceGroup[]{GenericSources.group(proj, 
proj.getProjectDirectory(), "ProjectRoot", //NOI18N
-                ProjectUtils.getInformation(proj).getDisplayName(), null, 
null)};
+            return new SourceGroup[]{new 
GradleSourceGroup(proj.getProjectDirectory(), "ProjectRoot", //NOI18N
+                ProjectUtils.getInformation(proj).getDisplayName())};
         } else {
             checkChanges(false);
             ArrayList<SourceGroup> ret = new ArrayList<>();
@@ -162,13 +165,7 @@ public class GradleSourcesImpl implements Sources, 
SourceGroupModifierImplementa
                     }
                 }
             }
-            Collections.sort(ret, new Comparator<SourceGroup>() {
-
-                @Override
-                public int compare(SourceGroup o1, SourceGroup o2) {
-                    return o1.getName().compareTo(o2.getName());
-                }
-            });
+            Collections.sort(ret, Comparator.comparing(SourceGroup::getName));
             return ret.toArray(new SourceGroup[ret.size()]);
         }
     }
@@ -182,8 +179,7 @@ public class GradleSourcesImpl implements Sources, 
SourceGroupModifierImplementa
             String sgDisplayName = !"gatling".equals(group) //NOI18N
                     ? sourceGroupDisplayName(unique, group, dir, lang)
                     : gatlingSourceGroupDisplayName(unique, dir, lang);
-            ret = GenericSources.group(proj,
-                    FileUtil.toFileObject(dir), groupKey, sgDisplayName, null, 
null);
+            ret = new GradleSourceGroup(FileUtil.toFileObject(dir), groupKey, 
sgDisplayName);
             cache.put(Pair.of(lang, dir), ret);
         }
         return ret;
@@ -321,4 +317,66 @@ public class GradleSourcesImpl implements Sources, 
SourceGroupModifierImplementa
         return ret && gp.getSourceSets().containsKey(hint);
     }
 
+    private final class GradleSourceGroup implements SourceGroup {
+
+        private final FileObject rootFolder;
+        private final String name;
+        private final String displayName;
+
+        public GradleSourceGroup(FileObject rootFolder, String name, String 
displayName) {
+            this.rootFolder = rootFolder;
+            this.name = name;
+            this.displayName = displayName;
+        }
+
+        @Override
+        public FileObject getRootFolder() {
+            return rootFolder;
+        }
+
+        @Override
+        public String getName() {
+            return name;
+        }
+
+        @Override
+        public String getDisplayName() {
+            return displayName;
+        }
+
+        @Override
+        public Icon getIcon(boolean opened) {
+            return null;
+        }
+
+        @Override
+        public boolean contains(FileObject file) {
+            if (file != rootFolder && !FileUtil.isParentOf(rootFolder, file)) {
+                return false;
+            }
+            if (proj != null) {
+                if (file.isFolder() && file != proj.getProjectDirectory() && 
ProjectManager.getDefault().isProject(file)) {
+                    // #67450: avoid actually loading the nested project.
+                    return false;
+                }
+                if (FileOwnerQuery.getOwner(file) != proj) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        @Override
+        public void addPropertyChangeListener(PropertyChangeListener listener) 
{
+        }
+
+        @Override
+        public void removePropertyChangeListener(PropertyChangeListener 
listener) {
+        }
+
+        @Override
+        public String toString() {
+            return "GradleSourceGroup: " + getDisplayName() + ", " + 
rootFolder.toString();
+        }
+    }
 }


---------------------------------------------------------------------
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