package moving
This commit is contained in:
parent
7415b70d1b
commit
14d4751f9a
@ -2,9 +2,10 @@ package p.studio;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import p.packer.Packer;
|
import p.packer.Packer;
|
||||||
|
import p.studio.lsp.api.LspServerLifecycle;
|
||||||
import p.studio.lsp.events.StudioEventBus;
|
import p.studio.lsp.events.StudioEventBus;
|
||||||
import p.studio.lsp.events.StudioPackerEventAdapter;
|
import p.studio.lsp.events.StudioPackerEventAdapter;
|
||||||
import p.studio.lsp.services.LspServerLifecycle;
|
import p.studio.lsp.services.LspServerLifecycleImpl;
|
||||||
import p.studio.lsp.services.compiler.CompilerLanguageServiceBridge;
|
import p.studio.lsp.services.compiler.CompilerLanguageServiceBridge;
|
||||||
import p.studio.lsp.services.host.TcpLspServerHostFactory;
|
import p.studio.lsp.services.host.TcpLspServerHostFactory;
|
||||||
import p.studio.utilities.ThemeService;
|
import p.studio.utilities.ThemeService;
|
||||||
@ -22,7 +23,7 @@ public final class AppContainer implements Container {
|
|||||||
private final ObjectMapper mapper;
|
private final ObjectMapper mapper;
|
||||||
private final EmbeddedPacker embeddedPacker;
|
private final EmbeddedPacker embeddedPacker;
|
||||||
private final StudioBackgroundTasks backgroundTasks;
|
private final StudioBackgroundTasks backgroundTasks;
|
||||||
private final p.studio.lsp.api.LspServerLifecycle lspServerLifecycle;
|
private final LspServerLifecycle lspServerLifecycle;
|
||||||
|
|
||||||
public AppContainer() {
|
public AppContainer() {
|
||||||
this.i18nService = new I18nService();
|
this.i18nService = new I18nService();
|
||||||
@ -33,7 +34,7 @@ public final class AppContainer implements Container {
|
|||||||
this.backgroundTasks = new StudioBackgroundTasks(backgroundExecutor);
|
this.backgroundTasks = new StudioBackgroundTasks(backgroundExecutor);
|
||||||
final Packer packer = Packer.bootstrap(this.mapper, new StudioPackerEventAdapter(studioEventBus));
|
final Packer packer = Packer.bootstrap(this.mapper, new StudioPackerEventAdapter(studioEventBus));
|
||||||
this.embeddedPacker = new EmbeddedPacker(packer.workspaceService(), packer::close);
|
this.embeddedPacker = new EmbeddedPacker(packer.workspaceService(), packer::close);
|
||||||
this.lspServerLifecycle = new LspServerLifecycle(
|
this.lspServerLifecycle = new LspServerLifecycleImpl(
|
||||||
new TcpLspServerHostFactory(),
|
new TcpLspServerHostFactory(),
|
||||||
new CompilerLanguageServiceBridge());
|
new CompilerLanguageServiceBridge());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package p.studio.lsp.services;
|
package p.studio.lsp.services;
|
||||||
|
|
||||||
|
import p.studio.lsp.api.LspServerLifecycle;
|
||||||
import p.studio.lsp.messages.LspProjectContext;
|
import p.studio.lsp.messages.LspProjectContext;
|
||||||
import p.studio.lsp.messages.LspServerBootRequest;
|
import p.studio.lsp.messages.LspServerBootRequest;
|
||||||
import p.studio.lsp.messages.LspServerHandle;
|
import p.studio.lsp.messages.LspServerHandle;
|
||||||
@ -11,12 +12,12 @@ import java.util.Objects;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
|
|
||||||
public final class LspServerLifecycle implements p.studio.lsp.api.LspServerLifecycle {
|
public final class LspServerLifecycleImpl implements LspServerLifecycle {
|
||||||
private final ProjectScopedLspServerHostFactory serverHostFactory;
|
private final ProjectScopedLspServerHostFactory serverHostFactory;
|
||||||
private final CompilerLanguageServiceBridge compilerBridge;
|
private final CompilerLanguageServiceBridge compilerBridge;
|
||||||
private final ConcurrentMap<String, ProjectScopedLspServerHost> activeServers;
|
private final ConcurrentMap<String, ProjectScopedLspServerHost> activeServers;
|
||||||
|
|
||||||
public LspServerLifecycle(
|
public LspServerLifecycleImpl(
|
||||||
final ProjectScopedLspServerHostFactory serverHostFactory,
|
final ProjectScopedLspServerHostFactory serverHostFactory,
|
||||||
final CompilerLanguageServiceBridge compilerBridge) {
|
final CompilerLanguageServiceBridge compilerBridge) {
|
||||||
this.serverHostFactory = Objects.requireNonNull(serverHostFactory, "serverHostFactory");
|
this.serverHostFactory = Objects.requireNonNull(serverHostFactory, "serverHostFactory");
|
||||||
@ -14,13 +14,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
class LspServerLifecycleTest {
|
class LspServerLifecycleImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void lifecycleBootsAndShutsDownProjectScopedHost() {
|
void lifecycleBootsAndShutsDownProjectScopedHost() {
|
||||||
final FakeHost host = new FakeHost();
|
final FakeHost host = new FakeHost();
|
||||||
final ProjectScopedLspServerHostFactory factory = (request, compilerBridge) -> host;
|
final ProjectScopedLspServerHostFactory factory = (request, compilerBridge) -> host;
|
||||||
final var lifecycle = new LspServerLifecycle(factory, new CompilerLanguageServiceBridge());
|
final var lifecycle = new LspServerLifecycleImpl(factory, new CompilerLanguageServiceBridge());
|
||||||
final var project = new LspProjectContext("demo", "pbs", Path.of("."));
|
final var project = new LspProjectContext("demo", "pbs", Path.of("."));
|
||||||
|
|
||||||
final var handle = lifecycle.bootServer(LspServerBootRequest.defaults(project));
|
final var handle = lifecycle.bootServer(LspServerBootRequest.defaults(project));
|
||||||
@ -37,7 +37,7 @@ class LspServerLifecycleTest {
|
|||||||
@Test
|
@Test
|
||||||
void lifecycleRejectsDoubleBootForSameProject() {
|
void lifecycleRejectsDoubleBootForSameProject() {
|
||||||
final ProjectScopedLspServerHostFactory factory = (request, compilerBridge) -> new FakeHost();
|
final ProjectScopedLspServerHostFactory factory = (request, compilerBridge) -> new FakeHost();
|
||||||
final var lifecycle = new LspServerLifecycle(factory, new CompilerLanguageServiceBridge());
|
final var lifecycle = new LspServerLifecycleImpl(factory, new CompilerLanguageServiceBridge());
|
||||||
final var request = LspServerBootRequest.defaults(new LspProjectContext("demo", "pbs", Path.of(".")));
|
final var request = LspServerBootRequest.defaults(new LspProjectContext("demo", "pbs", Path.of(".")));
|
||||||
|
|
||||||
lifecycle.bootServer(request);
|
lifecycle.bootServer(request);
|
||||||
Loading…
x
Reference in New Issue
Block a user