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