Merge pull request #4595 from sdedic/lsp/projectInfo
Project info exported through LSP
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
index 628e3f8..6663416 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java
@@ -43,7 +43,12 @@
@Override
public ProjectManager.Result isProject2(FileObject dir) {
- return isProject(dir) ? new ProjectManager.Result(NbGradleProject.getIcon()) : null;
+ if (!isProject(dir)) {
+ return null;
+ }
+ // project display name can be only safely determined if the project is loaded
+ return isProject(dir) ? new ProjectManager.Result(
+ null, NbGradleProject.GRADLE_PROJECT_TYPE, NbGradleProject.getIcon()) : null;
}
@Override
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/spi/GradleFiles.java b/extide/gradle/src/org/netbeans/modules/gradle/spi/GradleFiles.java
index 5652510..eca56b7 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/spi/GradleFiles.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/GradleFiles.java
@@ -220,7 +220,7 @@
}
public boolean isRootProject() {
- return (buildScript != null) && rootDir.equals(projectDir);
+ return isProject() && rootDir.equals(projectDir);
}
public boolean isSubProject() {
diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java
index 4041f77..c2ea1e5 100644
--- a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java
+++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/NbGradleProjectFactoryTest.java
@@ -21,6 +21,7 @@
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.Random;
+import org.netbeans.modules.gradle.api.NbGradleProject;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.LocalFileSystem;
@@ -129,9 +130,31 @@
}
FileObject app = FileUtil.createFolder(parentPrj, "app");
FileObject gradle = FileUtil.createData(app, "build.gradle");
-
+ assertProjectsRecognized(parentPrj, app);
+ }
+
+ private void assertProjectsRecognized(FileObject parentPrj, FileObject app) {
assertTrue("Parent Gradle recognized", NbGradleProjectFactory.isProjectCheck(parentPrj, false));
assertTrue("Child Gradle recognized", NbGradleProjectFactory.isProjectCheck(app, false));
+ NbGradleProjectFactory factoryInstance = new NbGradleProjectFactory();
+ assertEquals("Gradle project type of main project", NbGradleProject.GRADLE_PROJECT_TYPE, factoryInstance.isProject2(parentPrj).getProjectType());
+ assertEquals("Gradle project type of subproject", NbGradleProject.GRADLE_PROJECT_TYPE, factoryInstance.isProject2(app).getProjectType());
+ }
+
+ /**
+ * Checks that project with just settings.gradle and no build.gradle is recognized as a project.
+ */
+ public void testNoBuildFileProject() throws Exception {
+ FileObject parentPrj = root;
+ FileObject settings = FileUtil.createData(parentPrj, "settings.gradle");
+ try (OutputStream os = settings.getOutputStream()) {
+ os.write(("\n"
+ + "rootProject.name = 'example'\n"
+ + "include('app')\n"
+ ).getBytes(StandardCharsets.UTF_8));
+ }
+ FileObject app = FileUtil.createFolder(parentPrj, "app");
+ assertProjectsRecognized(parentPrj, app);
}
}
diff --git a/ide/editor/src/org/netbeans/modules/editor/NbEditorDocument.java b/ide/editor/src/org/netbeans/modules/editor/NbEditorDocument.java
index 468d86c..2f570f0 100644
--- a/ide/editor/src/org/netbeans/modules/editor/NbEditorDocument.java
+++ b/ide/editor/src/org/netbeans/modules/editor/NbEditorDocument.java
@@ -130,7 +130,6 @@
return null;
}
});
- putProperty("Issue-222763-debug", new Exception()); // Issue #222763 debugging - to be removed soon
}
public @Override int getShiftWidth() {
diff --git a/java/java.lsp.server/vscode/src/extension.ts b/java/java.lsp.server/vscode/src/extension.ts
index 4198f42..be5fe62 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -301,15 +301,19 @@
const id = 'redhat.java';
let e = vscode.extensions.getExtension(id);
if (e && workspace.name) {
- const DISABLE_EXTENSION = `Manually disable extension`;
- const DISABLE_JAVA = `Disable Java in Apache NetBeans Language Server`;
- vscode.window.showInformationMessage(`Another Java support extension is already installed. It is recommended to use only one Java support per workspace.`, DISABLE_EXTENSION, DISABLE_JAVA).then((selected) => {
- if (DISABLE_EXTENSION === selected) {
- vscode.commands.executeCommand('workbench.extensions.action.showInstalledExtensions');
- } else if (DISABLE_JAVA === selected) {
- conf.update("netbeans.javaSupport.enabled", false, true);
- }
- });
+ if (vscode.extensions.getExtension('oracle-labs-graalvm.gcn')) {
+ conf.update("netbeans.javaSupport.enabled", false, true);
+ } else {
+ const DISABLE_EXTENSION = `Manually disable extension`;
+ const DISABLE_JAVA = `Disable Java in Apache NetBeans Language Server`;
+ vscode.window.showInformationMessage(`Another Java support extension is already installed. It is recommended to use only one Java support per workspace.`, DISABLE_EXTENSION, DISABLE_JAVA).then((selected) => {
+ if (DISABLE_EXTENSION === selected) {
+ vscode.commands.executeCommand('workbench.extensions.action.showInstalledExtensions');
+ } else if (DISABLE_JAVA === selected) {
+ conf.update("netbeans.javaSupport.enabled", false, true);
+ }
+ });
+ }
}
}
}
diff --git a/java/maven/src/org/netbeans/modules/maven/NbMavenProjectFactory.java b/java/maven/src/org/netbeans/modules/maven/NbMavenProjectFactory.java
index 3346cae..69f1f94 100644
--- a/java/maven/src/org/netbeans/modules/maven/NbMavenProjectFactory.java
+++ b/java/maven/src/org/netbeans/modules/maven/NbMavenProjectFactory.java
@@ -24,6 +24,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectManager;
+import org.netbeans.modules.maven.api.NbMavenProject;
import org.netbeans.spi.project.ProjectFactory;
import org.netbeans.spi.project.ProjectFactory2;
import org.netbeans.spi.project.ProjectState;
@@ -77,7 +78,9 @@
public @Override ProjectManager.Result isProject2(FileObject projectDirectory) {
if (isProject(projectDirectory)) {
- return new ProjectManager.Result(ImageUtilities.loadImageIcon("org/netbeans/modules/maven/resources/Maven2Icon.gif", true)); //NOI18N
+ return new ProjectManager.Result(
+ null, NbMavenProject.TYPE,
+ ImageUtilities.loadImageIcon("org/netbeans/modules/maven/resources/Maven2Icon.gif", true)); //NOI18N
}
return null;
}