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

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


The following commit(s) were added to refs/heads/master by this push:
     new 287c129  Fixes for the OpenJDK project: -handling of 
external.lib.roots in TEST.ROOT, -using tree view for tests, -avoiding search 
for modules in (any) tests.
287c129 is described below

commit 287c1296933f78da041c8f009ca63f661b309dfd
Author: Jan Lahoda <[email protected]>
AuthorDate: Mon Oct 8 22:30:55 2018 +0200

    Fixes for the OpenJDK project:
    -handling of external.lib.roots in TEST.ROOT,
    -using tree view for tests,
    -avoiding search for modules in (any) tests.
---
 .../java/openjdk/jtreg/ClassPathProviderImpl.java  | 32 ++++++++++++++++++----
 .../openjdk/project/LogicalViewProviderImpl.java   | 22 ++++++++++++++-
 .../java/openjdk/project/ModuleDescription.java    |  6 +---
 .../modules/java/openjdk/project/SourcesImpl.java  |  5 ++++
 .../openjdk/jtreg/ClassPathProviderImplTest.java   | 16 +++++++++++
 5 files changed, 69 insertions(+), 12 deletions(-)

diff --git 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java
 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java
index 4aa3cc9..3965ba1 100644
--- 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java
+++ 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImpl.java
@@ -27,7 +27,7 @@ import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -65,7 +65,9 @@ public class ClassPathProviderImpl implements 
ClassPathProvider {
                 testProperties =  search.getFileObject("TEST.properties");
             }
 
-            if (search.getFileObject("TEST.ROOT") != null) {
+            FileObject testRoot = search.getFileObject("TEST.ROOT");
+
+            if (testRoot != null) {
                 boolean javac = 
(Utilities.isLangtoolsRepository(search.getParent()) || 
search.getNameExt().equals("langtools")) &&
                                 
ShortcutUtils.getDefault().shouldUseCustomTest("langtools", 
FileUtil.getRelativePath(search.getParent(), file));
                 //XXX: hack to make things work for langtools:
@@ -110,7 +112,7 @@ public class ClassPathProviderImpl implements 
ClassPathProvider {
                         return null;
                 }
 
-                Set<FileObject> roots = new HashSet<>();
+                Set<FileObject> roots = new LinkedHashSet<>();
 
                 if (testProperties != null) {
                     roots.add(testProperties.getParent());
@@ -141,12 +143,30 @@ public class ClassPathProviderImpl implements 
ClassPathProvider {
                         Matcher m = library.matcher(content.toString());
 
                         if (m.find()) {
+                            List<FileObject> libDirs = new ArrayList<>();
+                            try (InputStream in = testRoot.getInputStream()) {
+                                Properties p = new Properties();
+                                p.load(in);
+                                String externalLibRoots = 
p.getProperty("external.lib.roots");
+                                if (externalLibRoots != null) {
+                                    for (String extLib : 
externalLibRoots.split("\\s+")) {
+                                        FileObject libDir = 
search.getFileObject(extLib);
+
+                                        if (libDir != null) {
+                                            libDirs.add(libDir);
+                                        }
+                                    }
+                                }
+                            }
+                            libDirs.add(search);
                             String libraryPaths = m.group(1).trim();
                             for (String libraryPath : libraryPaths.split(" ")) 
{
-                                FileObject libFO = resolve(file, search, 
libraryPath);
+                                for (FileObject libDir : libDirs) {
+                                    FileObject libFO = resolve(file, libDir, 
libraryPath);
 
-                                if (libFO != null) {
-                                    roots.add(libFO);
+                                    if (libFO != null) {
+                                        roots.add(libFO);
+                                    }
                                 }
                             }
                         }
diff --git 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/LogicalViewProviderImpl.java
 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/LogicalViewProviderImpl.java
index ca9bfe0..3933be4 100644
--- 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/LogicalViewProviderImpl.java
+++ 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/LogicalViewProviderImpl.java
@@ -155,8 +155,28 @@ public class LogicalViewProviderImpl implements 
LogicalViewProvider  {
 
             
javaSourceGroups.addAll(Arrays.asList(sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA)));
 
+            Set<SourceGroup> testGroups = Collections.newSetFromMap(new 
IdentityHashMap<SourceGroup, Boolean>());
+
+            
testGroups.addAll(Arrays.asList(sources.getSourceGroups(SourcesImpl.SOURCES_TYPE_JDK_PROJECT_TESTS)));
+
             for (SourceGroup sg : 
sources.getSourceGroups(SourcesImpl.SOURCES_TYPE_JDK_PROJECT)) {
-                if (javaSourceGroups.contains(sg)) {
+                if (testGroups.contains(sg)) {
+                    //for tests, don't create PackageView:
+                    toPopulate.add(new Key(sg) {
+                        @Override public Node createNode() {
+                            try {
+                                DataObject od = 
DataObject.find(group.getRootFolder());
+                                return new FilterNode(od.getNodeDelegate()) {
+                                    @Override public String getDisplayName() {
+                                        return group.getDisplayName();
+                                    }
+                                };
+                            } catch (DataObjectNotFoundException ex) {
+                                return Node.EMPTY;
+                            }
+                        }
+                    });
+                } else if (javaSourceGroups.contains(sg)) {
                     toPopulate.add(new Key(sg) {
                         @Override public Node createNode() {
                             return PackageView.createPackageView(group);
diff --git 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java
 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java
index c4b8011..92e48a8 100644
--- 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java
+++ 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/ModuleDescription.java
@@ -233,11 +233,7 @@ public class ModuleDescription {
                 }
             }
 
-            if (current.getNameExt().equals("test") && 
current.getFileObject("TEST.ROOT") != null) {
-                continue; //do not look inside test folders
-            }
-
-            if (current.getParent().getNameExt().equals("test") && 
current.getFileObject("TEST.ROOT") != null) {
+            if (current.getFileObject("TEST.ROOT") != null) {
                 continue; //do not look inside test folders
             }
 
diff --git 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourcesImpl.java
 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourcesImpl.java
index b0d460a..a00f7c3 100644
--- 
a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourcesImpl.java
+++ 
b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourcesImpl.java
@@ -60,6 +60,7 @@ import org.openide.util.Utilities;
 public class SourcesImpl implements Sources, FileChangeListener, 
ChangeListener {
 
     public static final String SOURCES_TYPE_JDK_PROJECT = 
"jdk-project-sources";
+    public static final String SOURCES_TYPE_JDK_PROJECT_TESTS = 
"jdk-project-sources-tests";
 
     private final ChangeSupport cs = new ChangeSupport(this);
     private final JDKProject project;
@@ -127,6 +128,10 @@ public class SourcesImpl implements Sources, 
FileChangeListener, ChangeListener
                     addSourceGroup(JavaProjectConstants.SOURCES_TYPE_JAVA, sg);
                 }
 
+                if (root.kind == RootKind.TEST_SOURCES) {
+                    addSourceGroup(SOURCES_TYPE_JDK_PROJECT_TESTS, sg);
+                }
+
                 addSourceGroup(SOURCES_TYPE_JDK_PROJECT, sg);
 
                 if (!FileUtil.isParentOf(project.getProjectDirectory(), src)) {
diff --git 
a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImplTest.java
 
b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImplTest.java
index f5e0dd9..6ca6924 100644
--- 
a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImplTest.java
+++ 
b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/jtreg/ClassPathProviderImplTest.java
@@ -105,6 +105,22 @@ public class ClassPathProviderImplTest extends NbTestCase {
         Assert.assertTrue(compileCP.entries().isEmpty());
     }
 
+    public void testExternalLibRoots() throws Exception {
+        File workDir = getWorkDir();
+
+        FileUtil.createFolder(new File(workDir, "src/share/classes"));
+        FileObject testRoot = createData("test/TEST.ROOT", 
"external.lib.roots=../lib1 ../lib2\t../lib3");
+        FileObject testUse = createData("test/use/Use.java", 
"/**@test\n@library /lib0/0 /1 /2 /3\n*/");
+        FileObject testLib0 = FileUtil.createData(new File(workDir, 
"test/lib0/0/Lib.java"));
+        FileObject testLib1 = FileUtil.createData(new File(workDir, 
"lib1/1/Lib.java"));
+        FileObject testLib2 = FileUtil.createData(new File(workDir, 
"lib2/2/Lib.java"));
+        FileObject testLib3 = FileUtil.createData(new File(workDir, 
"lib3/3/Lib.java"));
+        ClassPath sourceCP = new 
ClassPathProviderImpl().findClassPath(testUse, ClassPath.SOURCE);
+
+        Assert.assertEquals(new HashSet<>(Arrays.asList(testUse.getParent(), 
testLib0.getParent(), testLib1.getParent(), testLib2.getParent(), 
testLib3.getParent())),
+                            new HashSet<>(Arrays.asList(sourceCP.getRoots())));
+    }
+
     private FileObject createData(String relPath, String content) throws 
IOException {
         File workDir = getWorkDir();
         FileObject file = FileUtil.createData(new File(workDir, relPath));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to