# HG changeset patch
# Parent f5e2f605974717a825bac21f699250c6ffccaa8f
# User Jesse Glick
+ Project types using
+ null
.
- * @return a {@link SharabilityQueryImplementation} to provide information about files sharability.
+ * @return a query to provide information about files sharability.
+ * @since 1.35
*/
- public static SharabilityQueryImplementation createSharabilityQuery(
+ public static SharabilityQueryImplementation2 createSharabilityQuery2(
final @NonNull AntProjectHelper helper,
final @NonNull PropertyEvaluator evaluator,
final @NonNull SourceRoots srcRoots,
@@ -194,13 +195,27 @@
return new SharabilityQueryImpl(helper, evaluator, srcRoots, testRoots, additionalSourceRoots);
}
-
/**
- * Create a new query to provide information about files sharability without any additional source roots. See
- * {@link #createSharabilityQuery(AntProjectHelper, PropertyEvaluator, SourceRoots, SourceRoots, String...)
- * createSharabilityQuery()}
- * for more information.
+ * @deprecated since 1.35 use {@link #createSharabilityQuery2} instead
*/
+ @Deprecated
+ public static SharabilityQueryImplementation createSharabilityQuery(
+ final @NonNull AntProjectHelper helper,
+ final @NonNull PropertyEvaluator evaluator,
+ final @NonNull SourceRoots srcRoots,
+ final @NullAllowed SourceRoots testRoots,
+ final @NullAllowed String... additionalSourceRoots) {
+ final SharabilityQueryImplementation2 sq2 = createSharabilityQuery2(helper, evaluator, srcRoots, testRoots, additionalSourceRoots);
+ return new SharabilityQueryImplementation() {
+ @Override public int getSharability(File file) {
+ return sq2.getSharability(file.toURI()).ordinal();
+ }
+ };
+ }
+ /**
+ * @deprecated since 1.35 use {@link #createSharabilityQuery2} instead
+ */
+ @Deprecated
public static SharabilityQueryImplementation createSharabilityQuery(AntProjectHelper helper,
PropertyEvaluator evaluator, SourceRoots srcRoots, SourceRoots testRoots) {
diff --git a/java.api.common/src/org/netbeans/modules/java/api/common/queries/SharabilityQueryImpl.java b/java.api.common/src/org/netbeans/modules/java/api/common/queries/SharabilityQueryImpl.java
--- a/java.api.common/src/org/netbeans/modules/java/api/common/queries/SharabilityQueryImpl.java
+++ b/java.api.common/src/org/netbeans/modules/java/api/common/queries/SharabilityQueryImpl.java
@@ -45,32 +45,34 @@
package org.netbeans.modules.java.api.common.queries;
import org.netbeans.modules.java.api.common.SourceRoots;
-import java.io.File;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.openide.util.Mutex;
import org.netbeans.api.project.ProjectManager;
+import org.netbeans.api.queries.SharabilityQuery;
import org.netbeans.spi.queries.SharabilityQueryImplementation;
import org.netbeans.spi.project.support.ant.AntProjectHelper;
import org.netbeans.spi.project.support.ant.PropertyEvaluator;
+import org.netbeans.spi.queries.SharabilityQueryImplementation2;
/**
* Default implementation of {@link SharabilityQueryImplementation} which is capable to take more sources.
* It listens to the changes in particular property values.
* @author Tomas Zezula, Tomas Mysik
*/
-class SharabilityQueryImpl implements SharabilityQueryImplementation, PropertyChangeListener {
+class SharabilityQueryImpl implements SharabilityQueryImplementation2, PropertyChangeListener {
private final AntProjectHelper helper;
private final PropertyEvaluator evaluator;
private final SourceRoots srcRoots;
private final SourceRoots testRoots;
private final ListAntProjectHelper.createSharabilityQuery2
AntProjectHelper.createSharabilityQuery
should switch to the new method.
+ AntProjectHelper.createSharabilityQuery2
was introduced
+ to avoid the deprecated SharabilityQueryImplementation
.
+ getLibraryChooserImportHandler
method into ReferenceHelper
accepting URL
- * helper.createSharabilityQuery(helper.getStandardPropertyEvaluator(), - * new String[] {"${src.dir}", "${test.src.dir}"}, - * new String[] {"${build.dir}", "${dist.dir}"}) + * helper.createSharabilityQuery2(helper.getStandardPropertyEvaluator(), + * new String[] {"${src.dir}", "${test.src.dir}"}, + * new String[] {"${build.dir}", "${dist.dir}"}) **
* A quick rule of thumb is that the include list should contain any
@@ -1180,8 +1181,9 @@
* @param buildDirectories a list of paths to treat as not sharable
* @return a sharability query implementation suitable for the project lookup
* @see Project#getLookup
+ * @since 1.47
*/
- public SharabilityQueryImplementation createSharabilityQuery(PropertyEvaluator eval, String[] sourceRoots, String[] buildDirectories) {
+ public SharabilityQueryImplementation2 createSharabilityQuery2(PropertyEvaluator eval, String[] sourceRoots, String[] buildDirectories) {
String[] includes = new String[sourceRoots.length + 1];
System.arraycopy(sourceRoots, 0, includes, 0, sourceRoots.length);
includes[sourceRoots.length] = ""; // NOI18N
@@ -1190,6 +1192,18 @@
excludes[buildDirectories.length] = "nbproject/private"; // NOI18N
return new SharabilityQueryImpl(this, eval, includes, excludes);
}
+ /**
+ * @deprecated since 1.47 use {@link #createSharabilityQuery2} instead
+ */
+ @Deprecated
+ public SharabilityQueryImplementation createSharabilityQuery(PropertyEvaluator eval, String[] sourceRoots, String[] buildDirectories) {
+ final SharabilityQueryImplementation2 sq2 = createSharabilityQuery2(eval, sourceRoots, buildDirectories);
+ return new SharabilityQueryImplementation() {
+ @Override public int getSharability(File file) {
+ return sq2.getSharability(file.toURI()).ordinal();
+ }
+ };
+ }
/**
* Get a property provider which defines basedir
according to
diff --git a/project.ant/src/org/netbeans/spi/project/support/ant/SharabilityQueryImpl.java b/project.ant/src/org/netbeans/spi/project/support/ant/SharabilityQueryImpl.java
--- a/project.ant/src/org/netbeans/spi/project/support/ant/SharabilityQueryImpl.java
+++ b/project.ant/src/org/netbeans/spi/project/support/ant/SharabilityQueryImpl.java
@@ -47,18 +47,19 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
+import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.netbeans.api.queries.SharabilityQuery;
import org.netbeans.modules.project.ant.ProjectLibraryProvider;
-import org.netbeans.spi.queries.SharabilityQueryImplementation;
+import org.netbeans.spi.queries.SharabilityQueryImplementation2;
import org.openide.util.WeakListeners;
/**
- * Standard impl of {@link SharabilityQueryImplementation}.
+ * Standard impl of {@link SharabilityQueryImplementation2}.
* @author Jesse Glick
*/
-final class SharabilityQueryImpl implements SharabilityQueryImplementation, PropertyChangeListener, AntProjectListener {
+final class SharabilityQueryImpl implements SharabilityQueryImplementation2, PropertyChangeListener, AntProjectListener {
private final AntProjectHelper h;
private final PropertyEvaluator eval;
@@ -105,15 +106,16 @@
// XXX should remove overlaps somehow
return result.toArray(new String[result.size()]);
}
-
- public synchronized int getSharability(File file) {
- String path = file.getAbsolutePath();
+
+ @Override public SharabilityQuery.Sharability getSharability(URI uri) {
+ // XXX might be more efficient to precompute URIs for includePaths and excludePaths
+ String path = new File(uri).getAbsolutePath();
if (contains(path, excludePaths, false)) {
- return SharabilityQuery.NOT_SHARABLE;
+ return SharabilityQuery.Sharability.NOT_SHARABLE;
}
return contains(path, includePaths, false) ?
- (contains(path, excludePaths, true) ? SharabilityQuery.MIXED : SharabilityQuery.SHARABLE) :
- SharabilityQuery.UNKNOWN;
+ (contains(path, excludePaths, true) ? SharabilityQuery.Sharability.MIXED : SharabilityQuery.Sharability.SHARABLE) :
+ SharabilityQuery.Sharability.UNKNOWN;
}
/**
diff --git a/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/AntBasedTestUtil.java b/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/AntBasedTestUtil.java
--- a/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/AntBasedTestUtil.java
+++ b/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/AntBasedTestUtil.java
@@ -189,7 +189,7 @@
genFilesHelper,
aux,
helper.createCacheDirectoryProvider(),
- helper.createSharabilityQuery(helper.getStandardPropertyEvaluator(), new String[0], new String[0]),
+ helper.createSharabilityQuery2(helper.getStandardPropertyEvaluator(), new String[0], new String[0]),
refHelper.createSubprojectProvider(),
new TestAntArtifactProvider(),
new ProjectXmlSavedHook() {
diff --git a/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/SharabilityQueryImplTest.java b/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/SharabilityQueryImplTest.java
--- a/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/SharabilityQueryImplTest.java
+++ b/project.ant/test/unit/src/org/netbeans/spi/project/support/ant/SharabilityQueryImplTest.java
@@ -45,11 +45,12 @@
package org.netbeans.spi.project.support.ant;
import java.io.File;
+import java.net.URI;
import org.netbeans.api.project.ProjectManager;
import org.netbeans.api.project.TestUtil;
import org.netbeans.api.queries.SharabilityQuery;
import org.netbeans.junit.NbTestCase;
-import org.netbeans.spi.queries.SharabilityQueryImplementation;
+import org.netbeans.spi.queries.SharabilityQueryImplementation2;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.test.MockLookup;
@@ -67,7 +68,7 @@
/** Location of top of testing dir (contains projdir and external). */
private File scratchF;
/** Tested impl. */
- private SharabilityQueryImplementation sqi;
+ private SharabilityQueryImplementation2 sqi;
protected void setUp() throws Exception {
super.setUp();
@@ -88,65 +89,65 @@
props.setProperty("build3.dir", new File(externalF, "build").getAbsolutePath());
h.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, props);
ProjectManager.getDefault().saveProject(ProjectManager.getDefault().findProject(projdir));
- sqi = h.createSharabilityQuery(h.getStandardPropertyEvaluator(), new String[] {"${src.dir}", "${src2.dir}"},
+ sqi = h.createSharabilityQuery2(h.getStandardPropertyEvaluator(), new String[] {"${src.dir}", "${src2.dir}"},
new String[] {"${build.dir}", "${build2.dir}", "${build3.dir}", "${dist.dir}"});
}
- private File file(String path) {
- return new File(scratchF, path.replace('/', File.separatorChar));
+ private URI file(String path) {
+ return new File(scratchF, path.replace('/', File.separatorChar)).toURI();
}
public void testBasicIncludesExcludes() throws Exception {
- assertEquals("project directory is mixed", SharabilityQuery.MIXED, sqi.getSharability(file("projdir")));
- assertEquals("build.xml is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/build.xml")));
- assertEquals("src/ is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/src")));
- assertEquals("src/org/foo/ is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/src/org/foo")));
- assertEquals("src/org/foo/Foo.java is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/src/org/foo/Foo.java")));
- assertEquals("nbproject/ is mixed", SharabilityQuery.MIXED, sqi.getSharability(file("projdir/nbproject")));
- assertEquals("nbproject/project.xml is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/nbproject/project.xml")));
- assertEquals("nbproject/private/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/nbproject/private")));
- assertEquals("nbproject/private/private.properties is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/nbproject/private/private.properties")));
- assertEquals("build/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/build")));
- assertEquals("build/classes/org/foo/Foo.class is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/build/classes/org/foo/Foo.class")));
- assertEquals("dist/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/dist")));
+ assertEquals("project directory is mixed", SharabilityQuery.Sharability.MIXED, sqi.getSharability(file("projdir")));
+ assertEquals("build.xml is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/build.xml")));
+ assertEquals("src/ is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/src")));
+ assertEquals("src/org/foo/ is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/src/org/foo")));
+ assertEquals("src/org/foo/Foo.java is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/src/org/foo/Foo.java")));
+ assertEquals("nbproject/ is mixed", SharabilityQuery.Sharability.MIXED, sqi.getSharability(file("projdir/nbproject")));
+ assertEquals("nbproject/project.xml is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/nbproject/project.xml")));
+ assertEquals("nbproject/private/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/nbproject/private")));
+ assertEquals("nbproject/private/private.properties is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/nbproject/private/private.properties")));
+ assertEquals("build/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/build")));
+ assertEquals("build/classes/org/foo/Foo.class is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/build/classes/org/foo/Foo.class")));
+ assertEquals("dist/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/dist")));
}
public void testOverlaps() throws Exception {
- assertEquals("build/2/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/build/2")));
- assertEquals("build/2/whatever is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/build/2/whatever")));
+ assertEquals("build/2/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/build/2")));
+ assertEquals("build/2/whatever is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/build/2/whatever")));
// overlaps in includePaths tested in basicIncludesExcludes: src is inside projdir
}
public void testExternalFiles() throws Exception {
- assertEquals("external/src is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("external/src")));
- assertEquals("external/src/org/foo/Foo.java is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("external/src/org/foo/Foo.java")));
- assertEquals("external/build is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("external/build")));
- assertEquals("external/build/classes/org/foo/Foo.class is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("external/build/classes/org/foo/Foo.class")));
+ assertEquals("external/src is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("external/src")));
+ assertEquals("external/src/org/foo/Foo.java is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("external/src/org/foo/Foo.java")));
+ assertEquals("external/build is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("external/build")));
+ assertEquals("external/build/classes/org/foo/Foo.class is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("external/build/classes/org/foo/Foo.class")));
}
public void testUnknownFiles() throws Exception {
- assertEquals("some other dir is unknown", SharabilityQuery.UNKNOWN, sqi.getSharability(file("something")));
- assertEquals("some other file is unknown", SharabilityQuery.UNKNOWN, sqi.getSharability(file("something/else")));
- assertEquals("external itself is unknown", SharabilityQuery.UNKNOWN, sqi.getSharability(file("external")));
+ assertEquals("some other dir is unknown", SharabilityQuery.Sharability.UNKNOWN, sqi.getSharability(file("something")));
+ assertEquals("some other file is unknown", SharabilityQuery.Sharability.UNKNOWN, sqi.getSharability(file("something/else")));
+ assertEquals("external itself is unknown", SharabilityQuery.Sharability.UNKNOWN, sqi.getSharability(file("external")));
}
public void testDirNamesEndingInSlash() throws Exception {
- assertEquals("project directory is mixed", SharabilityQuery.MIXED, sqi.getSharability(file("projdir/")));
- assertEquals("src/ is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/src/")));
- assertEquals("src/org/foo/ is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/src/org/foo/")));
- assertEquals("nbproject/ is mixed", SharabilityQuery.MIXED, sqi.getSharability(file("projdir/nbproject/")));
- assertEquals("nbproject/private/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/nbproject/private/")));
- assertEquals("build/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/build/")));
- assertEquals("dist/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/dist/")));
- assertEquals("build/2/ is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("projdir/build/2/")));
- assertEquals("some other dir is unknown", SharabilityQuery.UNKNOWN, sqi.getSharability(file("something/")));
- assertEquals("external itself is unknown", SharabilityQuery.UNKNOWN, sqi.getSharability(file("external/")));
- assertEquals("external/src is sharable", SharabilityQuery.SHARABLE, sqi.getSharability(file("external/src/")));
- assertEquals("external/build is not sharable", SharabilityQuery.NOT_SHARABLE, sqi.getSharability(file("external/build/")));
+ assertEquals("project directory is mixed", SharabilityQuery.Sharability.MIXED, sqi.getSharability(file("projdir/")));
+ assertEquals("src/ is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/src/")));
+ assertEquals("src/org/foo/ is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/src/org/foo/")));
+ assertEquals("nbproject/ is mixed", SharabilityQuery.Sharability.MIXED, sqi.getSharability(file("projdir/nbproject/")));
+ assertEquals("nbproject/private/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/nbproject/private/")));
+ assertEquals("build/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/build/")));
+ assertEquals("dist/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/dist/")));
+ assertEquals("build/2/ is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("projdir/build/2/")));
+ assertEquals("some other dir is unknown", SharabilityQuery.Sharability.UNKNOWN, sqi.getSharability(file("something/")));
+ assertEquals("external itself is unknown", SharabilityQuery.Sharability.UNKNOWN, sqi.getSharability(file("external/")));
+ assertEquals("external/src is sharable", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("external/src/")));
+ assertEquals("external/build is not sharable", SharabilityQuery.Sharability.NOT_SHARABLE, sqi.getSharability(file("external/build/")));
}
public void testSubprojectFiles() throws Exception {
- assertEquals("nbproject/private from a subproject is sharable as far as this impl is concerned", SharabilityQuery.SHARABLE, sqi.getSharability(file("projdir/subproj/nbproject/private")));
+ assertEquals("nbproject/private from a subproject is sharable as far as this impl is concerned", SharabilityQuery.Sharability.SHARABLE, sqi.getSharability(file("projdir/subproj/nbproject/private")));
}
// XXX testChangedProperties