From c7cfca41b28d6d3e1043a69ab7776e1503e0ad28 Mon Sep 17 00:00:00 2001 From: Roland Grunberg Date: Mon, 11 Sep 2023 19:59:59 -0400 Subject: [PATCH] Add support for TransportKind.pipe through java.transport setting. - Do not expose java.transport setting to UI Signed-off-by: Roland Grunberg --- src/javaServerStarter.ts | 17 ++++++++++++++++- src/settings.ts | 3 ++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 656fe8ae6b..c69d334e2a 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -5,7 +5,7 @@ import * as net from 'net'; import * as os from 'os'; import * as path from 'path'; import { ExtensionContext, version, workspace } from 'vscode'; -import { Executable, ExecutableOptions, StreamInfo } from 'vscode-languageclient/node'; +import { Executable, ExecutableOptions, StreamInfo, TransportKind } from 'vscode-languageclient/node'; import { logger } from './log'; import { addLombokParam, isLombokSupportEnabled } from './lombokSupport'; import { RequirementsData } from './requirements'; @@ -48,6 +48,21 @@ export function prepareExecutable(requirements: RequirementsData, workspacePath, executable.options = options; executable.command = path.resolve(`${requirements.tooling_jre}/bin/java`); executable.args = prepareParams(requirements, workspacePath, context, isSyntaxServer); + const transportKind = getJavaConfiguration().get('transport'); + switch (transportKind) { + case 'pipe': + executable.transport = TransportKind.pipe; + break; + case 'stdio': + executable.transport = TransportKind.stdio; + break; + default: + const isInsider: boolean = version.includes("insider"); + const javaExtVersion = context.extension.packageJSON?.version; + const isPreReleaseVersion = /^\d+\.\d+\.\d{10}/.test(javaExtVersion); + executable.transport = (isInsider || isPreReleaseVersion) ? TransportKind.pipe : TransportKind.stdio; + break; + } logger.info(`Starting Java server with: ${executable.command} ${executable.args.join(' ')}`); return executable; } diff --git a/src/settings.ts b/src/settings.ts index 89c9cb536e..b79c6f3c9b 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -134,7 +134,8 @@ function hasJavaConfigChanged(oldConfig: WorkspaceConfiguration, newConfig: Work || hasConfigKeyChanged('home', oldConfig, newConfig) || hasConfigKeyChanged('jdt.ls.vmargs', oldConfig, newConfig) || hasConfigKeyChanged('server.launchMode', oldConfig, newConfig) - || hasConfigKeyChanged('sharedIndexes.location', oldConfig, newConfig);; + || hasConfigKeyChanged('sharedIndexes.location', oldConfig, newConfig) + || hasConfigKeyChanged('transport', oldConfig, newConfig); } function hasConfigKeyChanged(key, oldConfig, newConfig) {