You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2020/10/17 14:58:45 UTC
[netbeans] branch delivery updated: Using Incomplete classpath to
indicate unloadable Gradle project
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch delivery
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/delivery by this push:
new 9c1d310 Using Incomplete classpath to indicate unloadable Gradle project
9c1d310 is described below
commit 9c1d310b3dcef101bd2629a56c7cb94af25c1170
Author: Jaroslav Tulach <ja...@oracle.com>
AuthorDate: Fri Oct 16 17:21:09 2020 +0200
Using Incomplete classpath to indicate unloadable Gradle project
---
.../java/classpath/AbstractGradleClassPathImpl.java | 18 ++++++++++++++++--
java/java.hints/nbproject/project.properties | 2 +-
.../java/hints/project/IncompleteClassPath.java | 3 +--
.../lsp/server/protocol/TextDocumentServiceImpl.java | 8 ++++++++
.../java/source/parsing/CompilationInfoImpl.java | 8 ++++----
5 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/AbstractGradleClassPathImpl.java b/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/AbstractGradleClassPathImpl.java
index e275ea5..f50e255 100644
--- a/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/AbstractGradleClassPathImpl.java
+++ b/java/gradle.java/src/org/netbeans/modules/gradle/java/classpath/AbstractGradleClassPathImpl.java
@@ -27,11 +27,15 @@ import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import org.netbeans.api.annotations.common.NonNull;
+import org.netbeans.api.java.classpath.ClassPath;
import org.netbeans.api.project.Project;
import org.netbeans.spi.java.classpath.ClassPathImplementation;
+import org.netbeans.spi.java.classpath.FlaggedClassPathImplementation;
import org.netbeans.spi.java.classpath.PathResourceImplementation;
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
import org.openide.filesystems.FileUtil;
@@ -41,7 +45,7 @@ import org.openide.util.WeakListeners;
*
* @author Laszlo Kishalmi
*/
-abstract class AbstractGradleClassPathImpl implements ClassPathImplementation {
+abstract class AbstractGradleClassPathImpl implements FlaggedClassPathImplementation {
private final PropertyChangeSupport support = new PropertyChangeSupport(this);
private final PropertyChangeListener listener;
@@ -49,10 +53,11 @@ abstract class AbstractGradleClassPathImpl implements ClassPathImplementation {
private List<PathResourceImplementation> resources;
protected final Project project;
+ private final NbGradleProject watcher;
protected AbstractGradleClassPathImpl(Project proj) {
this.project = proj;
- final NbGradleProject watcher = proj.getLookup().lookup(NbGradleProject.class);
+ watcher = proj.getLookup().lookup(NbGradleProject.class);
listener = (PropertyChangeEvent evt) -> {
if (watcher.isUnloadable()) {
return;
@@ -69,10 +74,19 @@ abstract class AbstractGradleClassPathImpl implements ClassPathImplementation {
if (hasChanged) {
support.firePropertyChange(ClassPathImplementation.PROP_RESOURCES, null, null);
}
+ support.firePropertyChange(FlaggedClassPathImplementation.PROP_FLAGS, null, null);
};
watcher.addPropertyChangeListener(WeakListeners.propertyChange(listener, null));
}
+ @Override
+ public Set<ClassPath.Flag> getFlags() {
+ if (watcher.isUnloadable()) {
+ return Collections.singleton(ClassPath.Flag.INCOMPLETE);
+ }
+ return Collections.emptySet();
+ }
+
protected abstract List<URL> createPath();
private boolean hasChanged(List<URL> oldValue, List<URL> newValue) {
diff --git a/java/java.hints/nbproject/project.properties b/java/java.hints/nbproject/project.properties
index f19d741..5fe007c 100644
--- a/java/java.hints/nbproject/project.properties
+++ b/java/java.hints/nbproject/project.properties
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
-spec.version.base=1.93.0
+spec.version.base=1.94.0
javac.source=1.8
diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/project/IncompleteClassPath.java b/java/java.hints/src/org/netbeans/modules/java/hints/project/IncompleteClassPath.java
index 2c0ae3a..128372d 100644
--- a/java/java.hints/src/org/netbeans/modules/java/hints/project/IncompleteClassPath.java
+++ b/java/java.hints/src/org/netbeans/modules/java/hints/project/IncompleteClassPath.java
@@ -78,8 +78,7 @@ public class IncompleteClassPath implements ErrorRule<Void> {
public void cancel() {
}
- private static final class ResolveFix implements Fix {
-
+ public static final class ResolveFix implements Fix {
private final Project prj;
ResolveFix(@NonNull final Project prj) {
diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java
index 7d33acf..5728e9a 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java
@@ -150,6 +150,7 @@ import org.netbeans.modules.java.editor.options.MarkOccurencesSettings;
import org.netbeans.modules.java.hints.errors.ImportClass;
import org.netbeans.modules.java.hints.infrastructure.CreatorBasedLazyFixList;
import org.netbeans.modules.java.hints.infrastructure.ErrorHintsProvider;
+import org.netbeans.modules.java.hints.project.IncompleteClassPath;
import org.netbeans.modules.java.hints.spiimpl.JavaFixImpl;
import org.netbeans.modules.java.hints.spiimpl.hints.HintsInvoker;
import org.netbeans.modules.java.hints.spiimpl.options.HintsSettings;
@@ -877,6 +878,13 @@ public class TextDocumentServiceImpl implements TextDocumentService, LanguageCli
//TODO: ordering
for (Fix f : fixes) {
+ if (f instanceof IncompleteClassPath.ResolveFix) {
+ CodeAction action = new CodeAction(f.getText());
+ action.setDiagnostics(Collections.singletonList(diag));
+ action.setKind(CodeActionKind.QuickFix);
+ action.setCommand(new Command(f.getText(), Server.JAVA_BUILD_WORKSPACE));
+ result.add(Either.forRight(action));
+ }
if (f instanceof ImportClass.FixImport) {
//TODO: FixImport is not a JavaFix, create one. Is there a better solution?
String text = f.getText();
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CompilationInfoImpl.java b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CompilationInfoImpl.java
index c06c5a2..7c1d023 100644
--- a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CompilationInfoImpl.java
+++ b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/CompilationInfoImpl.java
@@ -556,13 +556,13 @@ public final class CompilationInfoImpl {
if (errors == null) {
source2Errors.put(file, errors = new Diagnostics());
if (this.jfo != null && this.jfo == file) {
- errors.add(-1, new IncompleteClassPath(this.jfo));
+ errors.add(0, new IncompleteClassPath(this.jfo));
}
}
} else {
errors = new Diagnostics();
if (this.jfo != null && this.jfo == file) {
- errors.add(-1, new IncompleteClassPath(this.jfo));
+ errors.add(0, new IncompleteClassPath(this.jfo));
}
}
} else {
@@ -702,7 +702,7 @@ public final class CompilationInfoImpl {
IncompleteClassPath(final JavaFileObject file) {
this.file = file;
- }
+ }
@Override
public Kind getKind() {
@@ -716,7 +716,7 @@ public final class CompilationInfoImpl {
@Override
public long getPosition() {
- return -1;
+ return 0;
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists