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