XML LS extension for namespace resolution

This commit is contained in:
BoykoAlex
2020-10-06 08:42:18 -04:00
parent e0bba737d3
commit 787aa0fc0b
29 changed files with 2353 additions and 6 deletions

View File

@@ -6,4 +6,5 @@ bin.includes = META-INF/,\
servers/,\
syntaxes/,\
icons/,\
about.html
about.html,\
jars/

View File

@@ -355,5 +355,14 @@
class="org.springframework.tooling.boot.ls.prefs.RemoteAppsFromPrefsDataContributor">
</injection>
</extension>
<extension
point="org.eclipse.wildwebdeveloper.xml.lemminxExtension">
<jar
path="jars/commons-lsp-extensions.jar">
</jar>
<jar
path="jars/xml-ls-extension.jar">
</jar>
</extension>
</plugin>

View File

@@ -43,6 +43,33 @@
<outputDirectory>${project.build.directory}/../servers/spring-boot-language-server</outputDirectory>
</configuration>
</execution>
<execution>
<id>xml-extension</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.springframework.ide.vscode</groupId>
<artifactId>xml-ls-extension</artifactId>
<version>${project.version}</version>
<overWrite>true</overWrite>
</artifactItem>
<artifactItem>
<groupId>org.springframework.ide.vscode</groupId>
<artifactId>commons-lsp-extensions</artifactId>
<version>${project.version}</version>
<overWrite>true</overWrite>
</artifactItem>
</artifactItems>
<stripVersion>true</stripVersion>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<outputDirectory>${project.build.directory}/../jars</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
@@ -71,6 +98,9 @@
<fileset>
<directory>servers</directory>
</fileset>
<fileset>
<directory>jars</directory>
</fileset>
</filesets>
</configuration>
</plugin>

View File

@@ -91,6 +91,10 @@
class="org.springframework.tooling.ls.eclipse.commons.commands.OpenResourceInEditor"
commandId="org.springframework.tooling.ls.eclipse.commons.commands.OpenResourceInEditor">
</handler>
<handler
class="org.springframework.tooling.ls.eclipse.commons.commands.JavaWorkspaceCommandHanlder"
commandId="java.execute.workspaceCommand">
</handler>
</extension>
<extension
point="org.eclipse.ui.commands">

View File

@@ -93,7 +93,7 @@ import com.google.common.collect.ImmutableMap;
@SuppressWarnings("restriction")
public class STS4LanguageClientImpl extends LanguageClientImpl implements STS4LanguageClient {
private static ReusableClasspathListenerHandler classpathService = new ReusableClasspathListenerHandler (
public static final ReusableClasspathListenerHandler CLASSPATH_SERVICE = new ReusableClasspathListenerHandler (
Logger.forEclipsePlugin(LanguageServerCommonsActivator::getInstance),
new LSP4ECommandExecutor(),
() -> new ProjectSorter()
@@ -371,7 +371,7 @@ public class STS4LanguageClientImpl extends LanguageClientImpl implements STS4La
public STS4LanguageClientImpl() {
classpathService.addNotificationsSentCallback(projectNames -> {
CLASSPATH_SERVICE.addNotificationsSentCallback(projectNames -> {
List<IProject> projects = projectNames.stream().map(projectName -> ResourcesPlugin.getWorkspace().getRoot().getProject(projectName)).filter(Objects::nonNull).collect(Collectors.toList());
for (IWorkbenchWindow ww : PlatformUI.getWorkbench().getWorkbenchWindows()) {
for (IWorkbenchPage page : ww.getPages()) {
@@ -397,12 +397,12 @@ public class STS4LanguageClientImpl extends LanguageClientImpl implements STS4La
@Override
public CompletableFuture<Object> addClasspathListener(ClasspathListenerParams params) {
return CompletableFuture.completedFuture(classpathService.addClasspathListener(params.getCallbackCommandId(), params.isBatched()));
return CompletableFuture.completedFuture(CLASSPATH_SERVICE.addClasspathListener(params.getCallbackCommandId(), params.isBatched()));
}
@Override
public CompletableFuture<Object> removeClasspathListener(ClasspathListenerParams params) {
return CompletableFuture.completedFuture(classpathService.removeClasspathListener(params.getCallbackCommandId()));
return CompletableFuture.completedFuture(CLASSPATH_SERVICE.removeClasspathListener(params.getCallbackCommandId()));
}
@Override

View File

@@ -0,0 +1,38 @@
package org.springframework.tooling.ls.eclipse.commons.commands;
import java.util.List;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.lsp4e.command.LSPCommandHandler;
import org.eclipse.lsp4j.Command;
import org.springframework.tooling.ls.eclipse.commons.STS4LanguageClientImpl;
public class JavaWorkspaceCommandHanlder extends LSPCommandHandler {
public static final String JAVA_WORKSPACE_COMMAND = "java.execute.workspaceCommand";
public static final String ADD_CLASSPATH_LISTENER_COMMAND = "sts.java.addClasspathListener";
public static final String REMOVE_CLASSPATH_LISTENER_COMMAND = "sts.java.removeClasspathListener";
@Override
public Object execute(ExecutionEvent event, Command command, IPath path) throws ExecutionException {
if (JAVA_WORKSPACE_COMMAND.equals(command.getCommand())) {
String cmdId = (String) command.getArguments().get(0);
List<Object> arguments = command.getArguments().subList(1, command.getArguments().size());
switch (cmdId) {
case ADD_CLASSPATH_LISTENER_COMMAND:
String callbackCommandIdForAdd = (String) arguments.get(0);
Boolean batched = (Boolean) arguments.get(1);
return STS4LanguageClientImpl.CLASSPATH_SERVICE.addClasspathListener(callbackCommandIdForAdd, batched);
case REMOVE_CLASSPATH_LISTENER_COMMAND:
String callbackCommandIdForRemove = (String) arguments.get(0);
return STS4LanguageClientImpl.CLASSPATH_SERVICE.removeClasspathListener(callbackCommandIdForRemove);
}
}
return null;
}
}

View File

@@ -165,6 +165,11 @@
<layout>p2</layout>
<url>https://download.eclipse.org/tm4e/snapshots/</url>
</repository>
<repository>
<id>wwd</id>
<layout>p2</layout>
<url>https://download.eclipse.org/wildwebdeveloper/releases/latest/</url>
</repository>
</repositories>
</profile>
@@ -210,6 +215,11 @@
<layout>p2</layout>
<url>https://download.eclipse.org/tm4e/snapshots/</url>
</repository>
<repository>
<id>wwd</id>
<layout>p2</layout>
<url>https://download.eclipse.org/wildwebdeveloper/releases/latest/</url>
</repository>
</repositories>
</profile>
@@ -260,6 +270,11 @@
<layout>p2</layout>
<url>https://download.eclipse.org/tm4e/snapshots/</url>
</repository>
<repository>
<id>wwd</id>
<layout>p2</layout>
<url>https://download.eclipse.org/wildwebdeveloper/releases/latest/</url>
</repository>
</repositories>
</profile>