SpringModelService minor refactoring and flattening
This commit is contained in:
@@ -97,8 +97,10 @@ import org.springframework.ide.vscode.commons.languageserver.reconcile.IProblemC
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblem;
|
||||
import org.springframework.ide.vscode.commons.protocol.STS4LanguageClient;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringModelLanguageServer;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringModelService;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.Bean;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.BeansParams;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringIndex;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageServer;
|
||||
import org.springframework.ide.vscode.commons.util.Assert;
|
||||
import org.springframework.ide.vscode.commons.util.AsyncRunner;
|
||||
import org.springframework.ide.vscode.commons.util.BadLocationException;
|
||||
@@ -121,7 +123,7 @@ import reactor.core.scheduler.Schedulers;
|
||||
* with apis to register various callbacks so that language server implementor
|
||||
* can attach their own 'handlers' for whatever the functionality they want to implement.
|
||||
*/
|
||||
public final class SimpleLanguageServer implements Sts4LanguageServer, SpringModelLanguageServer, LanguageClientAware, ServiceNotificationsClient, SimpleLanguageServerWrapper {
|
||||
public final class SimpleLanguageServer implements Sts4LanguageServer, SpringIndexLanguageServer, LanguageClientAware, ServiceNotificationsClient, SimpleLanguageServerWrapper {
|
||||
|
||||
private static Logger log = LoggerFactory.getLogger(SimpleLanguageServer.class);
|
||||
|
||||
@@ -924,12 +926,14 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, SpringMod
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpringModelService getSpringModelService() {
|
||||
try {
|
||||
return (SpringModelService) appContext.getBean(SpringModelService.class);
|
||||
} catch (Throwable e) {
|
||||
return null;
|
||||
public CompletableFuture<List<Bean>> beans(BeansParams params) {
|
||||
Map<String, SpringIndex> allSpringIndex = appContext.getBeansOfType(SpringIndex.class, false, false);
|
||||
Assert.isLegal(allSpringIndex.size() <= 1, "One at most SpringModel bean is expected");
|
||||
if (!allSpringIndex.isEmpty()) {
|
||||
SpringIndex springIndex = allSpringIndex.values().iterator().next();
|
||||
return springIndex.beans(params);
|
||||
}
|
||||
return CompletableFuture.completedFuture(Collections.emptyList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ import org.springframework.ide.vscode.commons.protocol.java.JavaSearchParams;
|
||||
import org.springframework.ide.vscode.commons.protocol.java.JavaTypeHierarchyParams;
|
||||
import org.springframework.ide.vscode.commons.protocol.java.TypeData;
|
||||
import org.springframework.ide.vscode.commons.protocol.java.TypeDescriptorData;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringModelLanguageClient;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringIndexLanguageClient;
|
||||
|
||||
/**
|
||||
* Some 'custom' extensions to standard LSP {@link LanguageClient}.
|
||||
*
|
||||
* @author Kris De Volder
|
||||
*/
|
||||
public interface STS4LanguageClient extends LanguageClient, SpringModelLanguageClient {
|
||||
public interface STS4LanguageClient extends LanguageClient, SpringIndexLanguageClient {
|
||||
|
||||
@JsonNotification("sts/liveprocess/connected")
|
||||
void liveProcessConnected(LiveProcessSummary processKey);
|
||||
|
||||
@@ -10,15 +10,11 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.commons.protocol.spring;
|
||||
|
||||
import org.eclipse.lsp4j.jsonrpc.services.JsonDelegate;
|
||||
import org.eclipse.lsp4j.services.LanguageServer;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface SpringModelLanguageServer extends LanguageServer {
|
||||
|
||||
/**
|
||||
* Provides access to the spring model services.
|
||||
*/
|
||||
@JsonDelegate
|
||||
SpringModelService getSpringModelService();
|
||||
public interface SpringIndex {
|
||||
|
||||
CompletableFuture<List<Bean>> beans(BeansParams params);
|
||||
|
||||
}
|
||||
@@ -13,7 +13,7 @@ package org.springframework.ide.vscode.commons.protocol.spring;
|
||||
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
|
||||
import org.eclipse.lsp4j.services.LanguageClient;
|
||||
|
||||
public interface SpringModelLanguageClient extends LanguageClient {
|
||||
public interface SpringIndexLanguageClient extends LanguageClient {
|
||||
|
||||
@JsonNotification("spring/index/updated")
|
||||
void indexUpdated();
|
||||
@@ -14,12 +14,11 @@ import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
|
||||
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
|
||||
import org.eclipse.lsp4j.services.LanguageServer;
|
||||
|
||||
@JsonSegment("spring/index")
|
||||
public interface SpringModelService {
|
||||
|
||||
@JsonRequest
|
||||
public interface SpringIndexLanguageServer extends LanguageServer {
|
||||
|
||||
@JsonRequest("spring/index/beans")
|
||||
default CompletableFuture<List<Bean>> beans(BeansParams params) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
@@ -71,7 +71,7 @@ import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocu
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleWorkspaceService;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.Bean;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.BeansParams;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringModelService;
|
||||
import org.springframework.ide.vscode.commons.protocol.spring.SpringIndex;
|
||||
import org.springframework.ide.vscode.commons.util.Futures;
|
||||
import org.springframework.ide.vscode.commons.util.StringUtil;
|
||||
import org.springframework.ide.vscode.commons.util.UriUtil;
|
||||
@@ -84,7 +84,7 @@ import com.google.common.collect.ImmutableList;
|
||||
* @author Martin Lippert
|
||||
*/
|
||||
@Component
|
||||
public class SpringSymbolIndex implements InitializingBean, SpringModelService {
|
||||
public class SpringSymbolIndex implements InitializingBean, SpringIndex {
|
||||
|
||||
@Autowired SimpleLanguageServer server;
|
||||
@Autowired BootJavaConfig config;
|
||||
|
||||
Reference in New Issue
Block a user