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/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 8c2c04c441 Fixing the UnitTestForSourceQueryImpl for openjdk projects. new 5639632600 Merge pull request #6481 from lahodaj/fix-unit-test-for-openjdk-project 8c2c04c441 is described below commit 8c2c04c4417d5f5055e0a9789df148fadf418307 Author: Jan Lahoda <jan.lah...@oracle.com> AuthorDate: Fri Sep 22 14:14:44 2023 +0200 Fixing the UnitTestForSourceQueryImpl for openjdk projects. --- .../project/UnitTestForSourceQueryImpl.java | 46 ++++++++++++++++------ 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/UnitTestForSourceQueryImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/UnitTestForSourceQueryImpl.java index 8bba362c33..e25900149a 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/UnitTestForSourceQueryImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/UnitTestForSourceQueryImpl.java @@ -20,10 +20,12 @@ package org.netbeans.modules.java.openjdk.project; import java.net.URL; import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.stream.Collectors; import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.api.project.ProjectUtils; import org.netbeans.api.project.SourceGroup; -import org.netbeans.modules.java.openjdk.project.JDKProject; import org.netbeans.spi.java.queries.MultipleRootsUnitTestForSourceQueryImplementation; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; @@ -42,23 +44,45 @@ public class UnitTestForSourceQueryImpl implements MultipleRootsUnitTestForSourc @Override public URL[] findUnitTests(FileObject source) { - SourceGroup[] groups = ProjectUtils.getSources(prj) - .getSourceGroups(SourcesImpl.SOURCES_TYPE_JDK_PROJECT_TESTS); - return notInReturn(source, groups); + Set<FileObject> roots = getRoots(SourcesImpl.SOURCES_TYPE_JDK_PROJECT_TESTS); + + if (!insideAnyRoot(roots, source)) { + return toURLs(roots); + } + + return null; } @Override public URL[] findSources(FileObject unitTest) { - SourceGroup[] groups = ProjectUtils.getSources(prj) - .getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA); - return notInReturn(unitTest, groups); + Set<FileObject> roots = getRoots(JavaProjectConstants.SOURCES_TYPE_JAVA); + + roots.removeAll(getRoots(SourcesImpl.SOURCES_TYPE_JDK_PROJECT_TESTS)); + + if (!insideAnyRoot(roots, unitTest)) { + return toURLs(roots); + } + + return null; } - private URL[] notInReturn(FileObject file, SourceGroup[] groups) { + private Set<FileObject> getRoots(String type) { + SourceGroup[] groups = ProjectUtils.getSources(prj) + .getSourceGroups(type); + return Arrays.stream(groups) .map(sg -> sg.getRootFolder()) - .filter(root -> FileUtil.isParentOf(root, file) || root == file) - .map(f -> f.toURL()) - .toArray(s -> new URL[s]); + .collect(Collectors.toCollection(LinkedHashSet::new)); + } + + private boolean insideAnyRoot(Set<FileObject> roots, FileObject toTest) { + return roots.stream() + .anyMatch(root -> FileUtil.isParentOf(root, toTest) || root == toTest); + } + + private URL[] toURLs(Set<FileObject> roots) { + return roots.stream() + .map(f -> f.toURL()) + .toArray(s -> new URL[s]); } } --------------------------------------------------------------------- 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