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

@@ -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;
}
}