# HG changeset patch # Parent 6dba2e7ed14de308d832c63e88ce26c522eb6888 # User Ralph Benjamin Ruijs [no commit message] diff --git a/java.source/apichanges.xml b/java.source/apichanges.xml --- a/java.source/apichanges.xml +++ b/java.source/apichanges.xml @@ -108,6 +108,20 @@ + + + Added overloaded method SourceUtils.getDependentRoots. + + + + + + Added a new overloaded method getDependentRoots to class SourceUtils, + that adds an option to filter non opened projects. + + + + Added WorkingCopy.resolveRewriteTarget. diff --git a/java.source/nbproject/project.properties b/java.source/nbproject/project.properties --- a/java.source/nbproject/project.properties +++ b/java.source/nbproject/project.properties @@ -46,7 +46,7 @@ javadoc.title=Java Source javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml -spec.version.base=0.109.0 +spec.version.base=0.110.0 test.qa-functional.cp.extra=${refactoring.java.dir}/modules/ext/nb-javac-api.jar test.unit.run.cp.extra=${o.n.core.dir}/core/core.jar:\ ${o.n.core.dir}/lib/boot.jar:\ diff --git a/java.source/src/org/netbeans/api/java/source/SourceUtils.java b/java.source/src/org/netbeans/api/java/source/SourceUtils.java --- a/java.source/src/org/netbeans/api/java/source/SourceUtils.java +++ b/java.source/src/org/netbeans/api/java/source/SourceUtils.java @@ -96,6 +96,7 @@ import org.netbeans.api.java.queries.SourceForBinaryQuery; import org.netbeans.api.java.source.ClasspathInfo.PathKind; import org.netbeans.api.java.source.JavaSource.Phase; +import static org.netbeans.api.java.source.SourceUtils.getDependentRootsImpl; import org.netbeans.api.java.source.matching.Matcher; import org.netbeans.api.java.source.matching.Occurrence; import org.netbeans.api.java.source.matching.Pattern; @@ -675,12 +676,30 @@ public static Set getDependentRoots (final URL root) { final Map> sourceDeps = IndexingController.getDefault().getRootDependencies(); final Map> binaryDeps = IndexingController.getDefault().getBinaryRootDependencies(); - return getDependentRootsImpl (root, sourceDeps, binaryDeps); + return getDependentRootsImpl (root, sourceDeps, binaryDeps, true); } + /** + * Returns the dependent source path roots for given source root. It returns + * all the source roots which have either direct or transitive dependency on + * the given source root. + * + * @param root to find the dependent roots for + * @param filterNonOpenedProjects true if the results should only contain roots for + * opened projects + * @return {@link Set} of {@link URL}s containing at least the incoming + * root, never returns null. + * @since 0.110 + */ + @org.netbeans.api.annotations.common.SuppressWarnings(value = {"DMI_COLLECTION_OF_URLS"}/*,justification="URLs have never host part"*/) //NOI18N + public static Set getDependentRoots(final URL root, boolean filterNonOpenedProjects) { + final Map> sourceDeps = IndexingController.getDefault().getRootDependencies(); + final Map> binaryDeps = IndexingController.getDefault().getBinaryRootDependencies(); + return getDependentRootsImpl(root, sourceDeps, binaryDeps, filterNonOpenedProjects); + } @org.netbeans.api.annotations.common.SuppressWarnings(value={"DMI_COLLECTION_OF_URLS"}/*,justification="URLs have never host part"*/) //NOI18N - static Set getDependentRootsImpl (final URL root, final Map> sourceDeps, Map> binaryDeps) { + static Set getDependentRootsImpl (final URL root, final Map> sourceDeps, Map> binaryDeps, boolean filterNonOpenedProjects) { Set urls; if (sourceDeps.containsKey(root)) { @@ -703,15 +722,16 @@ } } - //Filter non opened projects - Set cps = GlobalPathRegistry.getDefault().getPaths(ClassPath.SOURCE); - Set toRetain = new HashSet(); - for (ClassPath cp : cps) { - for (ClassPath.Entry e : cp.entries()) { - toRetain.add(e.getURL()); + if(filterNonOpenedProjects) { + Set cps = GlobalPathRegistry.getDefault().getPaths(ClassPath.SOURCE); + Set toRetain = new HashSet(); + for (ClassPath cp : cps) { + for (ClassPath.Entry e : cp.entries()) { + toRetain.add(e.getURL()); + } } + urls.retainAll(toRetain); } - urls.retainAll(toRetain); return urls; } diff --git a/java.source/test/unit/src/org/netbeans/api/java/source/SourceUtilsTest.java b/java.source/test/unit/src/org/netbeans/api/java/source/SourceUtilsTest.java --- a/java.source/test/unit/src/org/netbeans/api/java/source/SourceUtilsTest.java +++ b/java.source/test/unit/src/org/netbeans/api/java/source/SourceUtilsTest.java @@ -268,20 +268,20 @@ deps.put (url4,deps2); deps.put (url5,deps3); - Set result = SourceUtils.getDependentRootsImpl(url5, deps, Collections.>emptyMap()); + Set result = SourceUtils.getDependentRootsImpl(url5, deps, Collections.>emptyMap(), true); assertEquals (1, result.size()); assertEquals (url5,result.iterator().next()); - result = SourceUtils.getDependentRootsImpl(url4, deps, Collections.>emptyMap()); + result = SourceUtils.getDependentRootsImpl(url4, deps, Collections.>emptyMap(), true); assertEquals (new URL[] {url4, url5}, result); - result = SourceUtils.getDependentRootsImpl(url3, deps, Collections.>emptyMap()); + result = SourceUtils.getDependentRootsImpl(url3, deps, Collections.>emptyMap(), true); assertEquals (new URL[] {url3, url5}, result); - result = SourceUtils.getDependentRootsImpl(url2, deps, Collections.>emptyMap()); + result = SourceUtils.getDependentRootsImpl(url2, deps, Collections.>emptyMap(), true); assertEquals (new URL[] {url2, url3, url4, url5}, result); - result = SourceUtils.getDependentRootsImpl(url1, deps, Collections.>emptyMap()); + result = SourceUtils.getDependentRootsImpl(url1, deps, Collections.>emptyMap(), true); assertEquals (new URL[] {url1, url3, url5}, result); }