package moving

This commit is contained in:
bQUARKz 2026-05-06 00:25:23 +01:00
parent 7415b70d1b
commit 14d4751f9a
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
3 changed files with 10 additions and 8 deletions

View File

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

View File

@ -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");

View File

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