You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@netbeans.apache.org by GitBox <gi...@apache.org> on 2018/10/18 00:41:33 UTC

[GitHub] lkishalmi closed pull request #966: Fixes for the OpenJDK project:

lkishalmi closed pull request #966: Fixes for the OpenJDK project:
URL: https://github.com/apache/incubator-netbeans/pull/966
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 4aa3cc968b..3965ba1c4e 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.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 ClassPath findClassPath(FileObject file, String type) {
                 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 ClassPath findClassPath(FileObject file, String type) {
                         return null;
                 }
 
-                Set<FileObject> roots = new HashSet<>();
+                Set<FileObject> roots = new LinkedHashSet<>();
 
                 if (testProperties != null) {
                     roots.add(testProperties.getParent());
@@ -141,12 +143,30 @@ public ClassPath findClassPath(FileObject file, String type) {
                         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 ca9bfe0aef..3933be4ae0 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 @@ protected boolean createKeys(List<Key> toPopulate) {
 
             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 c4b80117e0..92e48a8e2d 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 @@ private static ModuleDescription parseModule(Element moduleEl) {
                 }
             }
 
-            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 b0d460a769..a00f7c363b 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 @@
 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 @@ private synchronized void recompute() {
                     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 f5e0dd9ad3..6ca6924302 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 void testLangtoolsCP() throws Exception {
         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));


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

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