This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch release122 in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 54e4bff47585561d4aaf3c0e7a7024c7f89dd7d4 Author: Jaroslav Tulach <jaroslav.tul...@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-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