This is an automated email from the ASF dual-hosted git repository.
dbalek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 982aab46d7 Option to switch off Java language support inside NBLS
added. (#4377)
982aab46d7 is described below
commit 982aab46d7387d8ab96a424f447b6e6a05d315c1
Author: Dusan Balek <[email protected]>
AuthorDate: Fri Jul 15 14:10:24 2022 +0200
Option to switch off Java language support inside NBLS added. (#4377)
---
.../nbcode/integration.java/build.xml | 25 +++
.../nbcode/integration.java/manifest.mf | 7 +
.../integration.java/nbproject/build-impl.xml | 45 ++++
.../integration.java/nbproject/genfiles.properties | 8 +
.../nbproject/project.properties | 14 +-
.../nbcode/integration.java/nbproject/project.xml | 32 +++
.../nbproject/suite.properties} | 13 +-
...es.java.lsp.server.protocol.CodeActionsProvider | 32 +++
...dules.refactoring.spi.RefactoringPluginFactory} | 17 +-
.../nbcode/integration/java/Bundle.properties} | 15 +-
.../modules/nbcode/integration/java/layer.xml | 51 +++++
.../netbeans/modules/nbcode/integration/layer.xml | 10 +-
.../nbcode/nbproject/project.properties | 4 +-
.../server/protocol/NbCodeClientCapabilities.java | 17 ++
.../modules/java/lsp/server/protocol/Server.java | 8 +-
.../server/protocol/TextDocumentServiceImpl.java | 7 +-
.../lsp/server/protocol/WorkspaceServiceImpl.java | 247 +++++++++++----------
java/java.lsp.server/vscode/package.json | 143 ++++++------
java/java.lsp.server/vscode/src/extension.ts | 69 ++++--
.../vscode/src/test/suite/extension.test.ts | 2 +-
20 files changed, 492 insertions(+), 274 deletions(-)
diff --git a/java/java.lsp.server/nbcode/integration.java/build.xml
b/java/java.lsp.server/nbcode/integration.java/build.xml
new file mode 100644
index 0000000000..48655e373c
--- /dev/null
+++ b/java/java.lsp.server/nbcode/integration.java/build.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project name="org.netbeans.modules.nbcode.integration.vscode.java"
default="netbeans" basedir=".">
+ <description>Builds, tests, and runs the project
org.netbeans.modules.nbcode.integration.java.</description>
+ <import file="nbproject/build-impl.xml"/>
+</project>
diff --git a/java/java.lsp.server/nbcode/integration.java/manifest.mf
b/java/java.lsp.server/nbcode/integration.java/manifest.mf
new file mode 100644
index 0000000000..c54c10abaf
--- /dev/null
+++ b/java/java.lsp.server/nbcode/integration.java/manifest.mf
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+AutoUpdate-Show-In-Client: true
+OpenIDE-Module: org.netbeans.modules.nbcode.integration.java
+OpenIDE-Module-Layer: org/netbeans/modules/nbcode/integration/java/layer.xml
+OpenIDE-Module-Localizing-Bundle:
org/netbeans/modules/nbcode/integration/java/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.0
+
diff --git
a/java/java.lsp.server/nbcode/integration.java/nbproject/build-impl.xml
b/java/java.lsp.server/nbcode/integration.java/nbproject/build-impl.xml
new file mode 100644
index 0000000000..aee96baa29
--- /dev/null
+++ b/java/java.lsp.server/nbcode/integration.java/nbproject/build-impl.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT ***
+*** EDIT ../build.xml INSTEAD ***
+-->
+<project name="org.netbeans.modules.nbcode.integration.java-impl" basedir="..">
+ <fail message="Please build using Ant 1.7.1 or higher.">
+ <condition>
+ <not>
+ <antversion atleast="1.7.1"/>
+ </not>
+ </condition>
+ </fail>
+ <property file="nbproject/private/suite-private.properties"/>
+ <property file="nbproject/suite.properties"/>
+ <fail unless="suite.dir">You must set 'suite.dir' to point to your
containing module suite</fail>
+ <property
file="${suite.dir}/nbproject/private/platform-private.properties"/>
+ <property file="${suite.dir}/nbproject/platform.properties"/>
+ <macrodef name="property"
uri="http://www.netbeans.org/ns/nb-module-project/2">
+ <attribute name="name"/>
+ <attribute name="value"/>
+ <sequential>
+ <property name="@{name}" value="${@{value}}"/>
+ </sequential>
+ </macrodef>
+ <macrodef name="evalprops"
uri="http://www.netbeans.org/ns/nb-module-project/2">
+ <attribute name="property"/>
+ <attribute name="value"/>
+ <sequential>
+ <property name="@{property}" value="@{value}"/>
+ </sequential>
+ </macrodef>
+ <property file="${user.properties.file}"/>
+ <nbmproject2:property name="harness.dir"
value="nbplatform.${nbplatform.active}.harness.dir"
xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
+ <nbmproject2:property name="nbplatform.active.dir"
value="nbplatform.${nbplatform.active}.netbeans.dest.dir"
xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
+ <nbmproject2:evalprops property="cluster.path.evaluated"
value="${cluster.path}"
xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
+ <fail message="Path to 'platform' cluster missing in $${cluster.path}
property or using corrupt Netbeans Platform (missing harness).">
+ <condition>
+ <not>
+ <contains string="${cluster.path.evaluated}"
substring="platform"/>
+ </not>
+ </condition>
+ </fail>
+ <import file="${harness.dir}/build.xml"/>
+</project>
diff --git
a/java/java.lsp.server/nbcode/integration.java/nbproject/genfiles.properties
b/java/java.lsp.server/nbcode/integration.java/nbproject/genfiles.properties
new file mode 100644
index 0000000000..5ed19573b8
--- /dev/null
+++ b/java/java.lsp.server/nbcode/integration.java/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=351dea9f
+build.xml.script.CRC32=78def90a
[email protected]
+# This file is used by a NetBeans-based IDE to track changes in generated
files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never
regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=0f964ba8
+nbproject/build-impl.xml.script.CRC32=a765edfb
+nbproject/[email protected]
diff --git a/java/java.lsp.server/nbcode/nbproject/project.properties
b/java/java.lsp.server/nbcode/integration.java/nbproject/project.properties
similarity index 54%
copy from java/java.lsp.server/nbcode/nbproject/project.properties
copy to
java/java.lsp.server/nbcode/integration.java/nbproject/project.properties
index 953ab452f0..5137752915 100644
--- a/java/java.lsp.server/nbcode/nbproject/project.properties
+++ b/java/java.lsp.server/nbcode/integration.java/nbproject/project.properties
@@ -15,15 +15,5 @@
# specific language governing permissions and limitations
# under the License.
-app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
-app.name=nbcode
-app.title=nbcode
-auxiliary.org-netbeans-modules-apisupport-installer.license-type=no
-auxiliary.org-netbeans-modules-apisupport-installer.os-linux=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-macosx=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-solaris=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-windows=false
-auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
-modules=\
- ${project.org.netbeans.modules.nbcode.integration}
-project.org.netbeans.modules.nbcode.integration=integration
+javac.source=1.8
+javac.compilerargs=-Xlint -Xlint:-serial
diff --git a/java/java.lsp.server/nbcode/integration.java/nbproject/project.xml
b/java/java.lsp.server/nbcode/integration.java/nbproject/project.xml
new file mode 100644
index 0000000000..79576822e3
--- /dev/null
+++ b/java/java.lsp.server/nbcode/integration.java/nbproject/project.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.apisupport.project</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+
<code-name-base>org.netbeans.modules.nbcode.integration.java</code-name-base>
+ <suite-component/>
+ <module-dependencies/>
+ <public-packages/>
+ </data>
+ </configuration>
+</project>
diff --git a/java/java.lsp.server/nbcode/nbproject/project.properties
b/java/java.lsp.server/nbcode/integration.java/nbproject/suite.properties
similarity index 54%
copy from java/java.lsp.server/nbcode/nbproject/project.properties
copy to java/java.lsp.server/nbcode/integration.java/nbproject/suite.properties
index 953ab452f0..7139182954 100644
--- a/java/java.lsp.server/nbcode/nbproject/project.properties
+++ b/java/java.lsp.server/nbcode/integration.java/nbproject/suite.properties
@@ -15,15 +15,4 @@
# specific language governing permissions and limitations
# under the License.
-app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
-app.name=nbcode
-app.title=nbcode
-auxiliary.org-netbeans-modules-apisupport-installer.license-type=no
-auxiliary.org-netbeans-modules-apisupport-installer.os-linux=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-macosx=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-solaris=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-windows=false
-auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
-modules=\
- ${project.org.netbeans.modules.nbcode.integration}
-project.org.netbeans.modules.nbcode.integration=integration
+suite.dir=${basedir}/..
diff --git
a/java/java.lsp.server/nbcode/integration.java/src/META-INF/services/org.netbeans.modules.java.lsp.server.protocol.CodeActionsProvider
b/java/java.lsp.server/nbcode/integration.java/src/META-INF/services/org.netbeans.modules.java.lsp.server.protocol.CodeActionsProvider
new file mode 100644
index 0000000000..6ebd485efa
--- /dev/null
+++
b/java/java.lsp.server/nbcode/integration.java/src/META-INF/services/org.netbeans.modules.java.lsp.server.protocol.CodeActionsProvider
@@ -0,0 +1,32 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#-org.netbeans.modules.java.lsp.server.protocol.ConstructorGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.LoggerGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.GetterSetterGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.EqualsHashCodeGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.ToStringGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.DelegateMethodGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.ImplementOverrideMethodGenerator
+#-org.netbeans.modules.java.lsp.server.protocol.SurroundWithHint
+#-org.netbeans.modules.java.lsp.server.protocol.OrganizeImportsCodeAction
+#-org.netbeans.modules.java.lsp.server.refactoring.MoveRefactoring
+#-org.netbeans.modules.java.lsp.server.refactoring.ExtractSuperclassOrInterfaceRefactoring
+#-org.netbeans.modules.java.lsp.server.refactoring.PullUpRefactoring
+#-org.netbeans.modules.java.lsp.server.refactoring.PushDownRefactoring
+#-org.netbeans.modules.java.lsp.server.refactoring.ChangeMethodParametersRefactoring
+#-org.netbeans.modules.java.lsp.server.protocol.QuickOpen
diff --git a/java/java.lsp.server/nbcode/nbproject/project.properties
b/java/java.lsp.server/nbcode/integration.java/src/META-INF/services/org.netbeans.modules.refactoring.spi.RefactoringPluginFactory
similarity index 54%
copy from java/java.lsp.server/nbcode/nbproject/project.properties
copy to
java/java.lsp.server/nbcode/integration.java/src/META-INF/services/org.netbeans.modules.refactoring.spi.RefactoringPluginFactory
index 953ab452f0..c10a765a47 100644
--- a/java/java.lsp.server/nbcode/nbproject/project.properties
+++
b/java/java.lsp.server/nbcode/integration.java/src/META-INF/services/org.netbeans.modules.refactoring.spi.RefactoringPluginFactory
@@ -15,15 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
-app.name=nbcode
-app.title=nbcode
-auxiliary.org-netbeans-modules-apisupport-installer.license-type=no
-auxiliary.org-netbeans-modules-apisupport-installer.os-linux=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-macosx=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-solaris=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-windows=false
-auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
-modules=\
- ${project.org.netbeans.modules.nbcode.integration}
-project.org.netbeans.modules.nbcode.integration=integration
+#-org.netbeans.modules.refactoring.java.plugins.InstantRefactoringPerformer$AllRefactoringsPluginFactory
+#-org.netbeans.modules.refactoring.java.plugins.JavaRefactoringsFactory
+#-org.netbeans.modules.refactoring.java.plugins.PackageRename
+#-org.netbeans.modules.refactoring.java.plugins.RefactoringPluginFactoryImpl
+#-org.netbeans.modules.refactoring.java.plugins.RenameTestClassPluginFactory
diff --git a/java/java.lsp.server/nbcode/nbproject/project.properties
b/java/java.lsp.server/nbcode/integration.java/src/org/netbeans/modules/nbcode/integration/java/Bundle.properties
similarity index 54%
copy from java/java.lsp.server/nbcode/nbproject/project.properties
copy to
java/java.lsp.server/nbcode/integration.java/src/org/netbeans/modules/nbcode/integration/java/Bundle.properties
index 953ab452f0..d52c731d5d 100644
--- a/java/java.lsp.server/nbcode/nbproject/project.properties
+++
b/java/java.lsp.server/nbcode/integration.java/src/org/netbeans/modules/nbcode/integration/java/Bundle.properties
@@ -15,15 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
-app.name=nbcode
-app.title=nbcode
-auxiliary.org-netbeans-modules-apisupport-installer.license-type=no
-auxiliary.org-netbeans-modules-apisupport-installer.os-linux=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-macosx=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-solaris=false
-auxiliary.org-netbeans-modules-apisupport-installer.os-windows=false
-auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
-modules=\
- ${project.org.netbeans.modules.nbcode.integration}
-project.org.netbeans.modules.nbcode.integration=integration
+OpenIDE-Module-Long-Description=\
+ Integration module with other VSCode's Java Support extensions.
+OpenIDE-Module-Name=VSCode Java Integration
diff --git
a/java/java.lsp.server/nbcode/integration.java/src/org/netbeans/modules/nbcode/integration/java/layer.xml
b/java/java.lsp.server/nbcode/integration.java/src/org/netbeans/modules/nbcode/integration/java/layer.xml
new file mode 100644
index 0000000000..f845715686
--- /dev/null
+++
b/java/java.lsp.server/nbcode/integration.java/src/org/netbeans/modules/nbcode/integration/java/layer.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN"
"http://www.netbeans.org/dtds/filesystem-1_2.dtd">
+<filesystem>
+ <folder name="Editors">
+ <file
name="org-netbeans-modules-gsf-testrunner-ui-TestMethodFinderImpl$Factory.instance_hidden"/>
+ <folder name="text">
+ <folder name="x-java">
+ <folder name="CompletionCollectors">
+ <file
name="org-netbeans-lib-editor-codetemplates-CodeTemplateCompletionProvider$Collector.instance_hidden"/>
+ <file
name="org-netbeans-modules-editor-java-JavaCompletionCollector.instance_hidden"/>
+ <file
name="org-netbeans-modules-java-editor-javadoc-JavadocCompletionCollector.instance_hidden"/>
+ <file
name="org-netbeans-modules-javadoc-hints-GenerateJavadocCollector.instance_hidden"/>
+ </folder>
+ <folder name="HoverProviders">
+ <file
name="org-netbeans-modules-editor-java-JavaHoverProvider.instance_hidden"/>
+ </folder>
+ <folder name="HyperlinkLocationProviders">
+ <file
name="org-netbeans-modules-java-editor-hyperlink-JavaHyperlinkProvider$LocationProvider.instance_hidden"/>
+ </folder>
+ <folder name="HyperlinkTypeDefLocationProviders">
+ <file
name="org-netbeans-modules-java-editor-hyperlink-JavaHyperlinkProvider$TypeDefLocationProvider.instance_hidden"/>
+ </folder>
+ <file name="Reformatter.instance_hidden"/>
+ <file name="Reindenter.instance_hidden"/>
+ <file
name="org-netbeans-modules-editor-java-JavaStructureProvider.instance_hidden"/>
+ <file
name="org-netbeans-modules-java-hints-infrastructure-JavaErrorProvider.instance_hidden"/>
+ <file
name="org-netbeans-modules-refactoring-java-callhierarchy-LspCallHierarchyProvider.instance_hidden"/>
+ </folder>
+ </folder>
+ </folder>
+</filesystem>
diff --git
a/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
b/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
index e8cbe2d07d..75a90d7e2b 100644
---
a/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
+++
b/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
@@ -50,6 +50,10 @@
<attr
name="action:org.netbeans.modules.cloud.oracle.actions.AddRepository"
stringvalue="Tools"/>
</file>
</folder>
+ <folder name="AutoupdateType">
+ <file name="82pluginportal-update-provider.instance_hidden"/>
+ <file name="pluginportal-update-provider.instance_hidden"/>
+ </folder>
</folder>
<folder name="Explorers">
<folder name="database.connections">
@@ -65,12 +69,6 @@
<folder name="Debugger">
<file
name="org-netbeans-modules-debugger-jpda-ui-CurrentThreadAnnotationListener.instance_hidden"/>
</folder>
- <folder name="Services">
- <folder name="AutoupdateType">
- <file name="82pluginportal-update-provider.instance_hidden"/>
- <file name="pluginportal-update-provider.instance_hidden"/>
- </folder>
- </folder>
<folder name="Templates">
<folder name="Classes">
<attr name="new.sourceGroup" stringvalue="java"/>
diff --git a/java/java.lsp.server/nbcode/nbproject/project.properties
b/java/java.lsp.server/nbcode/nbproject/project.properties
index 953ab452f0..e0c2eb4def 100644
--- a/java/java.lsp.server/nbcode/nbproject/project.properties
+++ b/java/java.lsp.server/nbcode/nbproject/project.properties
@@ -25,5 +25,7 @@
auxiliary.org-netbeans-modules-apisupport-installer.os-solaris=false
auxiliary.org-netbeans-modules-apisupport-installer.os-windows=false
auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
modules=\
- ${project.org.netbeans.modules.nbcode.integration}
+ ${project.org.netbeans.modules.nbcode.integration}:\
+ ${project.org.netbeans.modules.nbcode.integration.java}
project.org.netbeans.modules.nbcode.integration=integration
+project.org.netbeans.modules.nbcode.integration.java=integration.java
diff --git
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/NbCodeClientCapabilities.java
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/NbCodeClientCapabilities.java
index 05a5d0c0b9..1e869eec38 100644
---
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/NbCodeClientCapabilities.java
+++
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/NbCodeClientCapabilities.java
@@ -65,6 +65,11 @@ public final class NbCodeClientCapabilities {
*/
private Boolean showHtmlPageSupport;
+ /**
+ * Asks for java support.
+ */
+ private Boolean wantsJavaSupport = Boolean.TRUE;
+
/**
* Asks for groovy support. Temporary option, will be removed.
*/
@@ -110,6 +115,18 @@ public final class NbCodeClientCapabilities {
this.showHtmlPageSupport = showHtmlPageSupport;
}
+ public Boolean getWantsJavaSupport() {
+ return wantsJavaSupport;
+ }
+
+ public void setWantsJavaSupport(Boolean enableJava) {
+ this.wantsJavaSupport = enableJava == null ? Boolean.TRUE : enableJava;
+ }
+
+ public boolean wantsJavaSupport() {
+ return wantsJavaSupport.booleanValue();
+ }
+
public Boolean getWantsGroovySupport() {
return wantsGroovySupport;
}
diff --git
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/Server.java
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/Server.java
index 8c7143cf58..2a6da513e9 100644
---
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/Server.java
+++
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/Server.java
@@ -732,8 +732,8 @@ public final class Server {
chOpts.setWorkDoneProgress(true);
capabilities.setCallHierarchyProvider(chOpts);
Set<String> commands = new
LinkedHashSet<>(Arrays.asList(GRAALVM_PAUSE_SCRIPT,
- JAVA_BUILD_WORKSPACE,
- JAVA_CLEAN_WORKSPACE,
+ NBLS_BUILD_WORKSPACE,
+ NBLS_CLEAN_WORKSPACE,
JAVA_RUN_PROJECT_ACTION,
JAVA_FIND_DEBUG_ATTACH_CONFIGURATIONS,
JAVA_FIND_DEBUG_PROCESS_TO_ATTACH,
@@ -900,8 +900,8 @@ public final class Server {
}
}
- public static final String JAVA_BUILD_WORKSPACE = "java.build.workspace";
- public static final String JAVA_CLEAN_WORKSPACE = "java.clean.workspace";
+ public static final String NBLS_BUILD_WORKSPACE = "nbls.build.workspace";
+ public static final String NBLS_CLEAN_WORKSPACE = "nbls.clean.workspace";
public static final String JAVA_NEW_FROM_TEMPLATE =
"java.new.from.template";
public static final String JAVA_NEW_PROJECT = "java.new.project";
public static final String JAVA_GET_PROJECT_SOURCE_ROOTS =
"java.get.project.source.roots";
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 232e940fe9..1f45d80149 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
@@ -1083,6 +1083,9 @@ public class TextDocumentServiceImpl implements
TextDocumentService, LanguageCli
"# {0} - method name", "# {1} - configuration name",
"LBL_DebugWith=Debug {0} with {1}"})
@Override
public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams
params) {
+ if (!client.getNbCodeCapabilities().wantsJavaSupport()) {
+ return CompletableFuture.completedFuture(Collections.emptyList());
+ }
// shortcut: if the projects are not yet initialized, return empty:
if (server.openedProjects().getNow(null) == null) {
return CompletableFuture.completedFuture(Collections.emptyList());
@@ -1977,7 +1980,9 @@ public class TextDocumentServiceImpl implements
TextDocumentService, LanguageCli
@CheckForNull
public JavaSource getJavaSource(String fileUri) {
-
+ if (!client.getNbCodeCapabilities().wantsJavaSupport()) {
+ return null;
+ }
Document doc = server.getOpenedDocuments().getDocument(fileUri);
if (doc == null) {
FileObject file = fromURI(fileUri);
diff --git
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
index 17c458001d..352906751a 100644
---
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
+++
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
@@ -162,7 +162,7 @@ public final class WorkspaceServiceImpl implements
WorkspaceService, LanguageCli
return LspTemplateUI.createFromTemplate("Templates", client,
params);
case Server.JAVA_NEW_PROJECT:
return LspTemplateUI.createProject("Templates/Project",
client, params);
- case Server.JAVA_BUILD_WORKSPACE: {
+ case Server.NBLS_BUILD_WORKSPACE: {
final CommandProgress progressOfCompilation = new
CommandProgress();
final Lookup ctx = Lookups.singleton(progressOfCompilation);
for (Project prj :
server.openedProjects().getNow(OpenProjects.getDefault().getOpenProjects())) {
@@ -240,7 +240,7 @@ public final class WorkspaceServiceImpl implements
WorkspaceService, LanguageCli
return progressOfCompilation.getFinishFuture().thenApply(b
-> (b == Boolean.TRUE) && cfgNotFound);
});
}
- case Server.JAVA_CLEAN_WORKSPACE: {
+ case Server.NBLS_CLEAN_WORKSPACE: {
final CommandProgress progressOfCompilation = new
CommandProgress();
final Lookup ctx = Lookups.singleton(progressOfCompilation);
for (Project prj :
server.openedProjects().getNow(OpenProjects.getDefault().getOpenProjects())) {
@@ -709,157 +709,158 @@ public final class WorkspaceServiceImpl implements
WorkspaceService, LanguageCli
};
WORKER.post(() -> {
try {
- SearchType searchType = getSearchType(queryFin, exactFin,
false, null, null);
List<WorkspaceSymbol> symbols = new ArrayList<>();
-
- // CSL Part
- Collection<? extends IndexSearcher> providers =
Lookup.getDefault().lookupAll(IndexSearcher.class);
- Set<? extends IndexSearcher.Descriptor> descriptors;
- if (!providers.isEmpty()) {
- for (IndexSearcher provider : providers) {
- descriptors = provider.getSymbols(null, queryFin,
Utils.searchType2QueryKind(searchType), null);
- for (IndexSearcher.Descriptor desc : descriptors) {
- FileObject fo = desc.getFileObject();
- org.netbeans.modules.csl.api.ElementHandle element
= desc.getElement();
- if (fo != null) {
- Position startPos = Utils.createPosition(fo,
desc.getOffset());
- Position endPos = Utils.createPosition(fo,
desc.getOffset() + desc.getSimpleName().length());
- WorkspaceSymbol symbol = new WorkspaceSymbol(
- desc.getSimpleName(),
-
Utils.cslElementKind2SymbolKind(element.getKind()),
- Either.forLeft(new
Location(Utils.toUri(fo), new Range(startPos, endPos))),
- desc.getContextName());
- symbols.add(symbol);
+ if (client.getNbCodeCapabilities().wantsJavaSupport()) {
+ SearchType searchType = getSearchType(queryFin, exactFin,
false, null, null);
+
+ // CSL Part
+ Collection<? extends IndexSearcher> providers =
Lookup.getDefault().lookupAll(IndexSearcher.class);
+ Set<? extends IndexSearcher.Descriptor> descriptors;
+ if (!providers.isEmpty()) {
+ for (IndexSearcher provider : providers) {
+ descriptors = provider.getSymbols(null, queryFin,
Utils.searchType2QueryKind(searchType), null);
+ for (IndexSearcher.Descriptor desc : descriptors) {
+ FileObject fo = desc.getFileObject();
+ org.netbeans.modules.csl.api.ElementHandle
element = desc.getElement();
+ if (fo != null) {
+ Position startPos =
Utils.createPosition(fo, desc.getOffset());
+ Position endPos = Utils.createPosition(fo,
desc.getOffset() + desc.getSimpleName().length());
+ WorkspaceSymbol symbol = new
WorkspaceSymbol(
+ desc.getSimpleName(),
+
Utils.cslElementKind2SymbolKind(element.getKind()),
+ Either.forLeft(new
Location(Utils.toUri(fo), new Range(startPos, endPos))),
+ desc.getContextName());
+ symbols.add(symbol);
+ }
}
}
}
- }
-
- // java part
- // TODO rewrite the java part into a SymbolProvider
- JavaSymbolProvider.ResultHandler symbolHandler = new
JavaSymbolProvider.ResultHandler() {
- @Override
- public void setHighlightText(String text) {
- }
- private Map<ElementHandle<TypeElement>, List<String>>
type2Idents;
+ // Java part
+ JavaSymbolProvider.ResultHandler symbolHandler = new
JavaSymbolProvider.ResultHandler() {
+ @Override
+ public void setHighlightText(String text) {
+ }
- @Override
- public void runRoot(FileObject root, ClassIndexImpl ci,
Exec exec) throws IOException, InterruptedException {
- ClasspathInfo cpInfo = ClasspathInfo.create(root);
- try {
- type2Idents = new HashMap<>();
- exec.run();
- Map<FileObject, Map<ElementHandle<TypeElement>,
List<String>>> sources = new HashMap<>();
- for (Entry<ElementHandle<TypeElement>,
List<String>> e : type2Idents.entrySet()) {
- FileObject sourceFile =
SourceUtils.getFile(e.getKey(), cpInfo);
- sources.computeIfAbsent(sourceFile, s -> new
HashMap<>())
- .put(e.getKey(), e.getValue());
- }
- if (!sources.isEmpty()) {
- JavaSource.create(cpInfo, sources.keySet())
- .runUserActionTask(cc -> {
- if
(Phase.ELEMENTS_RESOLVED.compareTo(cc.toPhase(Phase.ELEMENTS_RESOLVED))> 0) {
- return ;
- }
- for
(Entry<ElementHandle<TypeElement>, List<String>> e :
sources.get(cc.getFileObject()).entrySet()) {
- TypeElement te =
e.getKey().resolve(cc);
+ private Map<ElementHandle<TypeElement>, List<String>>
type2Idents;
- if (te == null) {
- //cannot resolve
- continue;
+ @Override
+ public void runRoot(FileObject root, ClassIndexImpl
ci, Exec exec) throws IOException, InterruptedException {
+ ClasspathInfo cpInfo = ClasspathInfo.create(root);
+ try {
+ type2Idents = new HashMap<>();
+ exec.run();
+ Map<FileObject,
Map<ElementHandle<TypeElement>, List<String>>> sources = new HashMap<>();
+ for (Entry<ElementHandle<TypeElement>,
List<String>> e : type2Idents.entrySet()) {
+ FileObject sourceFile =
SourceUtils.getFile(e.getKey(), cpInfo);
+ sources.computeIfAbsent(sourceFile, s ->
new HashMap<>())
+ .put(e.getKey(), e.getValue());
+ }
+ if (!sources.isEmpty()) {
+ JavaSource.create(cpInfo, sources.keySet())
+ .runUserActionTask(cc -> {
+ if
(Phase.ELEMENTS_RESOLVED.compareTo(cc.toPhase(Phase.ELEMENTS_RESOLVED))> 0) {
+ return ;
}
+ for
(Entry<ElementHandle<TypeElement>, List<String>> e :
sources.get(cc.getFileObject()).entrySet()) {
+ TypeElement te =
e.getKey().resolve(cc);
- for (String ident :
e.getValue()) {
- if
(ident.equals(getSimpleName(te, null, false))) {
- TreePath path =
cc.getTrees().getPath(te);
-
- if (path != null) {
- final String
symbolName = te.getSimpleName().toString();
- final ElementKind
kind = te.getKind();
- if
(!kind.isClass() && !kind.isInterface()) {
-
WorkspaceSymbol symbol = new WorkspaceSymbol(symbolName,
Utils.elementKind2SymbolKind(kind), Either.forLeft(tree2Location(cc, path)),
te.getQualifiedName().toString());
-
symbols.add(symbol);
- }
- }
+ if (te == null) {
+ //cannot resolve
+ continue;
}
- for (Element ne :
te.getEnclosedElements()) {
- if
(ident.equals(getSimpleName(ne, te, false))) {
- TreePath path =
cc.getTrees().getPath(ne);
+
+ for (String ident :
e.getValue()) {
+ if
(ident.equals(getSimpleName(te, null, false))) {
+ TreePath path =
cc.getTrees().getPath(te);
if (path != null) {
- final
Pair<String,String> name = JavaSymbolProvider.getDisplayName(ne, te);
- final String
symbolName = name.first() + (name.second() != null ? name.second() : "");
- final
ElementKind kind = ne.getKind();
+ final String
symbolName = te.getSimpleName().toString();
+ final
ElementKind kind = te.getKind();
if
(!kind.isClass() && !kind.isInterface()) {
WorkspaceSymbol symbol = new WorkspaceSymbol(symbolName,
Utils.elementKind2SymbolKind(kind), Either.forLeft(tree2Location(cc, path)),
te.getQualifiedName().toString());
symbols.add(symbol);
}
}
}
+ for (Element ne :
te.getEnclosedElements()) {
+ if
(ident.equals(getSimpleName(ne, te, false))) {
+ TreePath path
= cc.getTrees().getPath(ne);
+
+ if (path !=
null) {
+ final
Pair<String,String> name = JavaSymbolProvider.getDisplayName(ne, te);
+ final
String symbolName = name.first() + (name.second() != null ? name.second() : "");
+ final
ElementKind kind = ne.getKind();
+ if
(!kind.isClass() && !kind.isInterface()) {
+
WorkspaceSymbol symbol = new WorkspaceSymbol(symbolName,
Utils.elementKind2SymbolKind(kind), Either.forLeft(tree2Location(cc, path)),
te.getQualifiedName().toString());
+
symbols.add(symbol);
+ }
+ }
+ }
+ }
}
}
- }
- }, true);
+ }, true);
+ }
+ //TODO: handle exceptions
+ } finally {
+ type2Idents = null;
}
- //TODO: handle exceptions
- } finally {
- type2Idents = null;
}
- }
- @Override
- public void handleResult(ElementHandle<TypeElement> owner,
String ident, boolean caseSensitive) {
- type2Idents.computeIfAbsent(owner, s -> new
ArrayList<>()).add(ident);
- }
- };
- JavaSymbolProvider.doComputeSymbols(searchType, queryFin,
symbolHandler, true, cancel);
- List<Pair<ElementHandle<TypeElement>, FileObject>> pairs = new
ArrayList<>();
-
JavaTypeProvider.ResultHandler<Pair<ElementHandle<TypeElement>, FileObject>>
typeHandler = new
JavaTypeProvider.ResultHandler<Pair<ElementHandle<TypeElement>, FileObject>>() {
- private FileObject root;
+ @Override
+ public void handleResult(ElementHandle<TypeElement>
owner, String ident, boolean caseSensitive) {
+ type2Idents.computeIfAbsent(owner, s -> new
ArrayList<>()).add(ident);
+ }
+ };
+ JavaSymbolProvider.doComputeSymbols(searchType, queryFin,
symbolHandler, true, cancel);
+ List<Pair<ElementHandle<TypeElement>, FileObject>> pairs =
new ArrayList<>();
+
JavaTypeProvider.ResultHandler<Pair<ElementHandle<TypeElement>, FileObject>>
typeHandler = new
JavaTypeProvider.ResultHandler<Pair<ElementHandle<TypeElement>, FileObject>>() {
+ private FileObject root;
- @Override
- public void setMessage(String msg) {
- }
+ @Override
+ public void setMessage(String msg) {
+ }
- @Override
- public void setHighlightText(String text) {
- }
+ @Override
+ public void setHighlightText(String text) {
+ }
- @Override
- public void pendingResult() {
- }
+ @Override
+ public void pendingResult() {
+ }
- @Override
- public void runRoot(FileObject root,
JavaTypeProvider.ResultHandler.Exec exec) throws IOException,
InterruptedException {
- this.root = root;
- try {
- exec.run();
- } finally {
- this.root = null;
+ @Override
+ public void runRoot(FileObject root,
JavaTypeProvider.ResultHandler.Exec exec) throws IOException,
InterruptedException {
+ this.root = root;
+ try {
+ exec.run();
+ } finally {
+ this.root = null;
+ }
}
- }
- @Override
- public Pair<ElementHandle<TypeElement>, FileObject>
create(JavaTypeProvider.CacheItem cacheItem, ElementHandle<TypeElement> handle,
String simpleName, String relativePath) {
- return Pair.of(handle, this.root);
- }
+ @Override
+ public Pair<ElementHandle<TypeElement>, FileObject>
create(JavaTypeProvider.CacheItem cacheItem, ElementHandle<TypeElement> handle,
String simpleName, String relativePath) {
+ return Pair.of(handle, this.root);
+ }
- @Override
- public void addResult(List<? extends
Pair<ElementHandle<TypeElement>, FileObject>> types) {
- pairs.addAll(types);
+ @Override
+ public void addResult(List<? extends
Pair<ElementHandle<TypeElement>, FileObject>> types) {
+ pairs.addAll(types);
+ }
+ };
+ JavaTypeProvider.doComputeTypes(searchType, queryFin,
typeHandler, cancel);
+ for (Pair<ElementHandle<TypeElement>, FileObject> pair :
pairs) {
+ ElementHandle<TypeElement> handle = pair.first();
+ String fqn = handle.getQualifiedName();
+ int idx = fqn.lastIndexOf('.');
+ String simpleName = idx < 0 ? fqn : fqn.substring(idx
+ 1);
+ String contextName = idx < 0 ? null : fqn.substring(0,
idx);
+ String uri =
URLEncoder.encode(pair.second().toURI().toString() + '?' +
handle.getKind().name() + '#' + handle.getBinaryName(),
StandardCharsets.UTF_8.toString());
+ WorkspaceSymbol symbol = new
WorkspaceSymbol(simpleName, Utils.elementKind2SymbolKind(handle.getKind()),
Either.forRight(new WorkspaceSymbolLocation(SOURCE_FOR + uri)), contextName);
+ symbols.add(symbol);
}
- };
- JavaTypeProvider.doComputeTypes(searchType, queryFin,
typeHandler, cancel);
- for (Pair<ElementHandle<TypeElement>, FileObject> pair :
pairs) {
- ElementHandle<TypeElement> handle = pair.first();
- String fqn = handle.getQualifiedName();
- int idx = fqn.lastIndexOf('.');
- String simpleName = idx < 0 ? fqn : fqn.substring(idx + 1);
- String contextName = idx < 0 ? null : fqn.substring(0,
idx);
- String uri =
URLEncoder.encode(pair.second().toURI().toString() + '?' +
handle.getKind().name() + '#' + handle.getBinaryName(),
StandardCharsets.UTF_8.toString());
- WorkspaceSymbol symbol = new WorkspaceSymbol(simpleName,
Utils.elementKind2SymbolKind(handle.getKind()), Either.forRight(new
WorkspaceSymbolLocation(SOURCE_FOR + uri)), contextName);
- symbols.add(symbol);
}
result.complete(Either.forRight(symbols));
} catch (Throwable t) {
@@ -941,7 +942,7 @@ public final class WorkspaceServiceImpl implements
WorkspaceService, LanguageCli
}
void updateJavaFormatPreferences(FileObject fo, JsonObject configuration) {
- if (configuration != null) {
+ if (configuration != null &&
client.getNbCodeCapabilities().wantsJavaSupport()) {
NbPreferences.Provider provider =
Lookup.getDefault().lookup(NbPreferences.Provider.class);
Preferences prefs = provider != null ?
provider.preferencesRoot().node("de/funfried/netbeans/plugins/externalcodeformatter")
: null;
JsonPrimitive formatterPrimitive =
configuration.getAsJsonPrimitive("codeFormatter");
diff --git a/java/java.lsp.server/vscode/package.json
b/java/java.lsp.server/vscode/package.json
index 8065fe1a1a..6eb49353a9 100644
--- a/java/java.lsp.server/vscode/package.json
+++ b/java/java.lsp.server/vscode/package.json
@@ -65,7 +65,7 @@
{
"id": "foundProjects",
"name": "Projects",
- "when": "nbJavaLSReady"
+ "when": "nbJavaLSReady &&
config.netbeans.javaSupport.enabled"
},
{
"id": "database.connections",
@@ -85,12 +85,12 @@
}
]
},
- "viewsWelcome": [
+ "viewsWelcome": [
{
"view": "database.connections",
"contents": "No Database Connections
found.\n[Add a new connection](command:db.add.connection)"
}
- ],
+ ],
"configuration": {
"title": "Java",
"properties": {
@@ -136,6 +136,11 @@
"default": false,
"description": "Enable Run/Debug test
in editor"
},
+ "netbeans.javaSupport.enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enables Java support in
Language Server"
+ },
"netbeans.groovySupport.enabled": {
"type": "boolean",
"default": true,
@@ -231,6 +236,7 @@
"type": "java8+",
"label": "Java 8+",
"runtime": "node",
+ "when": "config.netbeans.javaSupport.enabled",
"languages": [
"java",
"groovy"
@@ -435,12 +441,12 @@
],
"commands": [
{
- "command": "java.workspace.compile",
+ "command": "nbls.workspace.compile",
"title": "Compile Workspace",
"category": "Java"
},
{
- "command": "java.clean.workspace",
+ "command": "nbls.workspace.clean",
"title": "Clean Workspace",
"category": "Java"
},
@@ -479,7 +485,7 @@
"command": "db.add.connection",
"title": "Add Database Connection",
"category": "Database",
- "icon": "$(add)"
+ "icon": "$(add)"
},
{
"command":
"nbls:Database:netbeans.db.explorer.action.Connect",
@@ -496,22 +502,22 @@
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.CreateBuildRun",
"title": "Run",
- "icon": "$(run)"
+ "icon": "$(run)"
},
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.AddRepository",
"title": "Add Repository",
- "icon": "$(github-alt)"
+ "icon": "$(github-alt)"
},
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.AddToProject",
"title": "Add To Project",
- "icon": "$(star-empty)"
+ "icon": "$(star-empty)"
},
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.CloudRefresh",
"title": "Refresh",
- "icon": "$(refresh)"
+ "icon": "$(refresh)"
},
{
"command":
"nbls:Edit:org.openide.actions.DeleteAction",
@@ -594,28 +600,28 @@
],
"keybindings": [
{
- "command": "java.workspace.compile",
+ "command": "nbls.workspace.compile",
"key": "shift+alt+b",
- "when": "nbJavaLSReady"
+ "when": "nbJavaLSReady &&
config.netbeans.javaSupport.enabled"
},
{
"command": "java.goto.super.implementation",
"key": "alt+U",
"mac": "alt+cmd+U",
- "when": "editorHasCodeActionsProvider &&
editorTextFocus"
+ "when": "editorHasCodeActionsProvider &&
editorTextFocus && config.netbeans.javaSupport.enabled"
},
{
"command": "editor.action.sourceAction",
"key": "alt+insert",
"mac": "ctrl+alt+enter",
- "when": "editorHasCodeActionsProvider &&
editorTextFocus && !editorReadonly"
+ "when": "editorHasCodeActionsProvider &&
editorTextFocus && !editorReadonly && config.netbeans.javaSupport.enabled"
}
],
"menus": {
"editor/context": [
{
"command":
"java.goto.super.implementation",
- "when": "nbJavaLSReady && editorLangId
== java && editorTextFocus",
+ "when": "nbJavaLSReady && editorLangId
== java && editorTextFocus && config.netbeans.javaSupport.enabled",
"group": "navigation@100"
}
],
@@ -632,15 +638,16 @@
"when": "nbJavaLSReady"
},
{
- "command": "java.workspace.newproject"
+ "command": "java.workspace.newproject",
+ "when":
"config.netbeans.javaSupport.enabled"
},
{
- "command": "java.workspace.compile",
- "when": "nbJavaLSReady"
+ "command": "nbls.workspace.compile",
+ "when": "nbJavaLSReady &&
config.netbeans.javaSupport.enabled"
},
{
"command":
"java.goto.super.implementation",
- "when": "nbJavaLSReady && editorLangId
== java"
+ "when": "nbJavaLSReady && editorLangId
== java && config.netbeans.javaSupport.enabled"
},
{
"command": "graalvm.pause.script",
@@ -706,39 +713,39 @@
"view/title": [
{
"command": "java.workspace.newproject",
- "when": "nbJavaLSReady && view ==
foundProjects",
+ "when": "nbJavaLSReady && view ==
foundProjects && config.netbeans.javaSupport.enabled",
"group": "navigation"
},
{
- "command": "java.workspace.compile",
- "when": "nbJavaLSReady && view ==
foundProjects"
+ "command": "nbls.workspace.compile",
+ "when": "nbJavaLSReady && view ==
foundProjects && config.netbeans.javaSupport.enabled"
},
{
- "command": "java.clean.workspace",
- "when": "nbJavaLSReady && view ==
foundProjects"
+ "command": "nbls.workspace.clean",
+ "when": "nbJavaLSReady && view ==
foundProjects && config.netbeans.javaSupport.enabled"
},
{
"command": "testing.runAll",
- "when": "nbJavaLSReady && view ==
foundProjects"
+ "when": "nbJavaLSReady && view ==
foundProjects && config.netbeans.javaSupport.enabled"
},
{
"command": "workbench.action.debug.run",
- "when": "nbJavaLSReady && view ==
foundProjects"
+ "when": "nbJavaLSReady && view ==
foundProjects && config.netbeans.javaSupport.enabled"
},
{
"command":
"workbench.action.debug.start",
- "when": "nbJavaLSReady && view ==
foundProjects"
+ "when": "nbJavaLSReady && view ==
foundProjects && config.netbeans.javaSupport.enabled"
},
{
"command": "db.add.connection",
- "when": "view == database.connections",
- "group": "navigation@3"
+ "when": "view == database.connections",
+ "group": "navigation@3"
}
],
"view/item/context": [
{
"command": "foundProjects.deleteEntry",
- "when": "view == foundProjects &&
viewItem == node"
+ "when": "view == foundProjects &&
viewItem == node && config.netbeans.javaSupport.enabled"
},
{
"command":
"nbls:Database:netbeans.db.explorer.action.Connect",
@@ -763,25 +770,25 @@
},
{
"command": "java.project.run",
- "when": "view == foundProjects &&
viewItem =~ /is:project/ && viewItem =~ /^(?!.*is:projectRoot)/",
+ "when": "view == foundProjects &&
viewItem =~ /is:project/ && viewItem =~ /^(?!.*is:projectRoot)/ &&
config.netbeans.javaSupport.enabled",
"group": "inline@10"
},
{
"command": "java.project.debug",
- "when": "view == foundProjects &&
viewItem =~ /is:project/ && viewItem =~ /^(?!.*is:projectRoot)/",
+ "when": "view == foundProjects &&
viewItem =~ /is:project/ && viewItem =~ /^(?!.*is:projectRoot)/ &&
config.netbeans.javaSupport.enabled",
"group": "inline@11"
},
{
"command": "java.project.test",
- "when": "view == foundProjects &&
viewItem =~ /is:project/ && viewItem =~ /^(?!.*is:projectRoot)/"
+ "when": "view == foundProjects &&
viewItem =~ /is:project/ && viewItem =~ /^(?!.*is:projectRoot)/ &&
config.netbeans.javaSupport.enabled"
},
{
"command": "java.project.compile",
- "when": "view == foundProjects &&
viewItem =~ /is:project/"
+ "when": "view == foundProjects &&
viewItem =~ /is:project/ && config.netbeans.javaSupport.enabled"
},
{
"command": "java.project.clean",
- "when": "view == foundProjects &&
viewItem =~ /is:project/"
+ "when": "view == foundProjects &&
viewItem =~ /is:project/ && config.netbeans.javaSupport.enabled"
},
{
"command":
"java.local.db.set.preferred.connection",
@@ -802,26 +809,26 @@
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.AddRepository",
"when": "viewItem =~
/class:oracle.devops.DevopsProjectItem/",
- "group": "inline@12"
+ "group": "inline@12"
},
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.CreateBuildRun",
"when": "viewItem =~
/class:oracle.devops.BuildPipelineItem/",
- "group": "inline@12"
+ "group": "inline@12"
},
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.AddToProject",
"when": "viewItem =~ /class:oracle/",
- "group": "inline@14"
+ "group": "inline@14"
},
{
"command":
"nbls:Tools:org.netbeans.modules.cloud.oracle.actions.CloudRefresh",
"when": "viewItem =~ /class:oracle/",
- "group": "inline@13"
+ "group": "inline@13"
},
{
"command":
"java.workspace.configureRunSettings",
- "when": "view == run-config && viewItem
== configureRunSettings",
+ "when": "view == run-config && viewItem
== configureRunSettings && config.netbeans.javaSupport.enabled",
"group": "inline@1"
}
]
@@ -949,33 +956,33 @@
"uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/deploy_artifact.svg",
"codeicon": "file-binary"
},
- {
- "uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/green_dot.svg",
- "codeicon": "pass",
- "color": "charts.green"
- },
- {
- "uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/red_dot.svg",
- "codeicon": "error",
- "color": "charts.red"
- },
- {
- "uriExpression":
"nbres:/org/netbeans/modules/db/resources/connection_nbcode.svg",
- "codeicon": "database"
- },
- {
- "uriExpression":
"nbres:/org/netbeans/modules/db/resources/connectionDisconnected_nbcode.svg",
- "codeicon": "debug-disconnect"
- },
- {
- "uriExpression":
"nbres:/org/netbeans/modules/db/resources/folder_nbcode.svg",
- "codeicon": ""
- },
- {
- "uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/yellow_dot.svg",
- "codeicon": "circle-large-outline",
- "color": "charts.yellow"
- }
+ {
+ "uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/green_dot.svg",
+ "codeicon": "pass",
+ "color": "charts.green"
+ },
+ {
+ "uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/red_dot.svg",
+ "codeicon": "error",
+ "color": "charts.red"
+ },
+ {
+ "uriExpression":
"nbres:/org/netbeans/modules/db/resources/connection_nbcode.svg",
+ "codeicon": "database"
+ },
+ {
+ "uriExpression":
"nbres:/org/netbeans/modules/db/resources/connectionDisconnected_nbcode.svg",
+ "codeicon": "debug-disconnect"
+ },
+ {
+ "uriExpression":
"nbres:/org/netbeans/modules/db/resources/folder_nbcode.svg",
+ "codeicon": ""
+ },
+ {
+ "uriExpression":
"nbres:/org/netbeans/modules/cloud/oracle/resources/yellow_dot.svg",
+ "codeicon": "circle-large-outline",
+ "color": "charts.yellow"
+ }
],
"jsonValidation": [
{
@@ -1016,4 +1023,4 @@
"publisherId": "4dbc1d1a-d64b-46f8-8756-1c234855f645",
"isPreReleaseVersion": false
}
-}
\ No newline at end of file
+}
diff --git a/java/java.lsp.server/vscode/src/extension.ts
b/java/java.lsp.server/vscode/src/extension.ts
index 5f6733eb8f..37a707950c 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -153,7 +153,8 @@ export function awaitClient() : Promise<NbLanguageClient> {
function findJDK(onChange: (path : string | null) => void): void {
let nowDark : boolean = isDarkColorTheme();
-function find(): string | null {
+ let nowJavaEnabled : boolean = isJavaSupportEnabled();
+ function find(): string | null {
let nbJdk = workspace.getConfiguration('netbeans').get('jdkhome');
if (nbJdk) {
return nbJdk as string;
@@ -196,8 +197,10 @@ function find(): string | null {
timeout = undefined;
let newJdk = find();
let newD = isDarkColorTheme();
- if (newJdk !== currentJdk || newD != nowDark) {
+ let newJavaEnabled = isJavaSupportEnabled();
+ if (newJdk !== currentJdk || newD != nowDark || newJavaEnabled !=
nowJavaEnabled) {
nowDark = newD;
+ nowJavaEnabled = newJavaEnabled;
currentJdk = newJdk;
onChange(currentJdk);
}
@@ -292,24 +295,31 @@ function wrapCommandWithProgress(lsCommand : string,
title : string, log? : vsco
export function activate(context: ExtensionContext): VSNetBeansAPI {
let log = vscode.window.createOutputChannel("Apache NetBeans Language
Server");
- let conf = workspace.getConfiguration();
- if (conf.get("netbeans.conflict.check")) {
- const id = 'redhat.java';
- let e = vscode.extensions.getExtension(id);
- function disablingFailed(reason: any) {
- handleLog(log, 'Disabling some services failed ' + reason);
- }
- if (e && workspace.name) {
- vscode.window.showInformationMessage(`Another Java support
extension is already installed. It is recommended to use only one Java support
per workspace.`, `Manually disable`).then(() => {
-
vscode.commands.executeCommand('workbench.extensions.action.showInstalledExtensions');
- });
+ function checkConflict(): void {
+ let conf = workspace.getConfiguration();
+ if (conf.get("netbeans.conflict.check") &&
conf.get("netbeans.javaSupport.enabled")) {
+ 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", true,
false);
+ }
+ });
+ }
}
}
+ checkConflict();
// find acceptable JDK and launch the Java part
findJDK((specifiedJDK) => {
let currentClusters = findClusters(context.extensionPath).sort();
context.subscriptions.push(vscode.extensions.onDidChange(() => {
+ checkConflict();
const newClusters = findClusters(context.extensionPath).sort();
if (newClusters.length !== currentClusters.length ||
newClusters.find((value, index) => value !== currentClusters[index])) {
currentClusters = newClusters;
@@ -396,11 +406,11 @@ export function activate(context: ExtensionContext):
VSNetBeansAPI {
throw `Client ${c} doesn't support new project`;
}
}));
-
context.subscriptions.push(commands.registerCommand('java.workspace.compile',
() =>
- wrapCommandWithProgress('java.build.workspace', 'Compiling
workspace...', log, true)
+
context.subscriptions.push(commands.registerCommand('nbls.workspace.compile',
() =>
+ wrapCommandWithProgress('nbls.build.workspace', 'Compiling
workspace...', log, true)
));
-
context.subscriptions.push(commands.registerCommand('java.workspace.clean', ()
=>
- wrapCommandWithProgress('java.build.workspace', 'Cleaning
workspace...', log, true)
+
context.subscriptions.push(commands.registerCommand('nbls.workspace.clean', ()
=>
+ wrapCommandWithProgress('nbls.clean.workspace', 'Cleaning
workspace...', log, true)
));
context.subscriptions.push(commands.registerCommand('java.project.compile',
(args) => {
wrapProjectActionWithProgress('build', undefined, 'Compiling...', log,
true, args);
@@ -632,6 +642,10 @@ function isDarkColorTheme() : boolean {
return false;
}
+function isJavaSupportEnabled() : boolean {
+ return workspace.getConfiguration('netbeans')?.get('javaSupport.enabled')
as boolean;
+}
+
function doActivateWithJDK(specifiedJDK: string | null, context:
ExtensionContext, log : vscode.OutputChannel, notifyKill: boolean,
setClient : [(c : NbLanguageClient) => void, (err : any) => void]
): void {
@@ -693,6 +707,11 @@ function doActivateWithJDK(specifiedJDK: string | null,
context: ExtensionContex
if (isDarkColorTheme()) {
extras.push('--laf', 'com.formdev.flatlaf.FlatDarkLaf');
}
+ if (isJavaSupportEnabled()) {
+ extras.push('--direct-disable',
'org.netbeans.modules.nbcode.integration.java');
+ } else {
+ extras.push('--enable',
'org.netbeans.modules.nbcode.integration.java');
+ }
let p = launcher.launch(info, ...extras);
handleLog(log, "LSP server launching: " + p.pid);
handleLog(log, "LSP server user directory: " + userdir);
@@ -777,7 +796,8 @@ function doActivateWithJDK(specifiedJDK: string | null,
context: ExtensionContex
{ language: 'xml', pattern: '**/pom.xml' },
{ pattern: '**/build.gradle'}
];
- const enableGroovy : boolean =
conf.get("netbeans.groovySupport.enabled") || true;
+ const enableJava = isJavaSupportEnabled();
+ const enableGroovy : boolean =
conf.get("netbeans.groovySupport.enabled") as boolean;
if (enableGroovy) {
documentSelectors.push({ language: 'groovy'});
}
@@ -802,6 +822,7 @@ function doActivateWithJDK(specifiedJDK: string | null,
context: ExtensionContex
'statusBarMessageSupport' : true,
'testResultsSupport' : true,
'showHtmlPageSupport' : true,
+ 'wantsJavaSupport' : enableJava,
'wantsGroovySupport' : enableGroovy
}
},
@@ -829,7 +850,9 @@ function doActivateWithJDK(specifiedJDK: string | null,
context: ExtensionContex
);
handleLog(log, 'Language Client: Starting');
c.start().then(() => {
- testAdapter = new NbTestAdapter();
+ if (isJavaSupportEnabled()) {
+ testAdapter = new NbTestAdapter();
+ }
c.onNotification(StatusMessageRequest.type, showStatusBarMessage);
c.onRequest(HtmlPageRequest.type, showHtmlPage);
c.onNotification(LogMessageNotification.type, (param) =>
handleLog(log, param.message));
@@ -933,9 +956,11 @@ function doActivateWithJDK(specifiedJDK: string | null,
context: ExtensionContex
setClient[0](c);
commands.executeCommand('setContext', 'nbJavaLSReady', true);
- // create project explorer:
- //c.findTreeViewService().createView('foundProjects', 'Projects',
{ canSelectMany : false });
- createProjectView(context, c);
+ if (enableJava) {
+ // create project explorer:
+ //c.findTreeViewService().createView('foundProjects',
'Projects', { canSelectMany : false });
+ createProjectView(context, c);
+ }
createDatabaseView(c);
c.findTreeViewService().createView('cloud.resources', undefined, {
canSelectMany : false });
diff --git a/java/java.lsp.server/vscode/src/test/suite/extension.test.ts
b/java/java.lsp.server/vscode/src/test/suite/extension.test.ts
index dd815c0fc4..ef0dad3f42 100644
--- a/java/java.lsp.server/vscode/src/test/suite/extension.test.ts
+++ b/java/java.lsp.server/vscode/src/test/suite/extension.test.ts
@@ -94,7 +94,7 @@ suite('Extension Test Suite', () => {
try {
console.log("Test: invoking compile");
- let res = await
vscode.commands.executeCommand("java.workspace.compile");
+ let res = await
vscode.commands.executeCommand("nbls.workspace.compile");
console.log(`Test: compile finished with ${res}`);
} catch (error) {
dumpJava();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists