diff --git a/atom-extensions/atom-bosh/lib/bosh-yaml-client.ts b/atom-extensions/atom-bosh/lib/bosh-yaml-client.ts index b152322db..d9a72ca16 100644 --- a/atom-extensions/atom-bosh/lib/bosh-yaml-client.ts +++ b/atom-extensions/atom-bosh/lib/bosh-yaml-client.ts @@ -1,5 +1,5 @@ import * as path from 'path'; -import {JavaProcessLanguageClient} from '@pivotal-tools/atom-languageclient-commons'; +import {JavaProcessLanguageClient, JavaOptions} from '@pivotal-tools/atom-languageclient-commons'; import {ActiveServer} from 'atom-languageclient'; import {JVM} from '@pivotal-tools/jvm-launch-utils'; @@ -49,4 +49,14 @@ export class BoshYamlClient extends JavaProcessLanguageClient { server.connection.didChangeConfiguration({ settings: atom.config.get('bosh-yaml') }); } + getJavaOptions(): JavaOptions { + const home = atom.config.get('bosh-yaml.java.home'); + const vmargs = atom.config.get('bosh-yaml.java.vmargs'); + return { + home: typeof home === 'string' ? home : undefined, + vmargs: Array.isArray(vmargs) ? vmargs : undefined + }; + } + + } \ No newline at end of file diff --git a/atom-extensions/atom-bosh/package.json b/atom-extensions/atom-bosh/package.json index 4f9443e26..ef5e4f081 100644 --- a/atom-extensions/atom-bosh/package.json +++ b/atom-extensions/atom-bosh/package.json @@ -45,12 +45,29 @@ "description": "Number of seconds before CLI commands are terminated with a timeout" } } + }, + "java": { + "type": "object", + "description": "JVM settings for starting the Language Server", + "properties": { + "vmargs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Custom VM arguments to start the Language Server" + }, + "home": { + "type": "string", + "description": "Java home folder to use to start the Language Server" + } + } } }, "dependencies": { "atom-package-deps": "^4.6.0", "download": "^6.2.5", - "@pivotal-tools/atom-languageclient-commons": "0.0.12" + "@pivotal-tools/atom-languageclient-commons": "0.0.15" }, "devDependencies": { "typescript": "^2.7.2", diff --git a/atom-extensions/atom-bosh/properties.json b/atom-extensions/atom-bosh/properties.json index c2daacddf..50840ae6c 100644 --- a/atom-extensions/atom-bosh/properties.json +++ b/atom-extensions/atom-bosh/properties.json @@ -1,3 +1,3 @@ { - "jarUrl": "https://s3.amazonaws.com/dist.springsource.com/release/STS4/fatjars/bosh-language-server-1.2.0-201812201255.jar" + "jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/bosh-language-server-1.6.0-201904021915.jar" } diff --git a/atom-extensions/atom-cf-manifest-yaml/lib/manifest-yaml-language-client.ts b/atom-extensions/atom-cf-manifest-yaml/lib/manifest-yaml-language-client.ts index bfe0d1ba4..f703d0c22 100644 --- a/atom-extensions/atom-cf-manifest-yaml/lib/manifest-yaml-language-client.ts +++ b/atom-extensions/atom-cf-manifest-yaml/lib/manifest-yaml-language-client.ts @@ -1,5 +1,5 @@ import * as path from 'path'; -import { JavaProcessLanguageClient } from '@pivotal-tools/atom-languageclient-commons'; +import { JavaProcessLanguageClient, JavaOptions } from '@pivotal-tools/atom-languageclient-commons'; import {JVM} from '@pivotal-tools/jvm-launch-utils'; export class ManifestYamlLanguageClient extends JavaProcessLanguageClient { @@ -42,4 +42,13 @@ export class ManifestYamlLanguageClient extends JavaProcessLanguageClient { } + getJavaOptions(): JavaOptions { + const home = atom.config.get('cf-manifest-yaml.java.home'); + const vmargs = atom.config.get('cf-manifest-yaml.java.vmargs'); + return { + home: typeof home === 'string' ? home : undefined, + vmargs: Array.isArray(vmargs) ? vmargs : undefined + }; + } + } \ No newline at end of file diff --git a/atom-extensions/atom-cf-manifest-yaml/package.json b/atom-extensions/atom-cf-manifest-yaml/package.json index 1b3b045c3..9e08ffa29 100644 --- a/atom-extensions/atom-cf-manifest-yaml/package.json +++ b/atom-extensions/atom-cf-manifest-yaml/package.json @@ -18,8 +18,27 @@ "server/", "properties.json" ], + "configSchema": { + "java": { + "type": "object", + "description": "JVM settings for starting the Language Server", + "properties": { + "vmargs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Custom VM arguments to start the Language Server" + }, + "home": { + "type": "string", + "description": "Java home folder to use to start the Language Server" + } + } + } + }, "dependencies": { - "@pivotal-tools/atom-languageclient-commons": "0.0.12", + "@pivotal-tools/atom-languageclient-commons": "0.0.15", "atom-package-deps": "^4.6.0", "download": "^6.2.5" }, diff --git a/atom-extensions/atom-cf-manifest-yaml/properties.json b/atom-extensions/atom-cf-manifest-yaml/properties.json index ac6be501a..24f2849e9 100644 --- a/atom-extensions/atom-cf-manifest-yaml/properties.json +++ b/atom-extensions/atom-cf-manifest-yaml/properties.json @@ -1,3 +1,3 @@ { - "jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/manifest-yaml-language-server-1.2.0-201812201255.jar" + "jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/manifest-yaml-language-server-1.6.0-201904021915.jar" } diff --git a/atom-extensions/atom-commons/lib/java-process-language-client.ts b/atom-extensions/atom-commons/lib/java-process-language-client.ts index 83f0aae0c..a0bd96b0c 100644 --- a/atom-extensions/atom-commons/lib/java-process-language-client.ts +++ b/atom-extensions/atom-commons/lib/java-process-language-client.ts @@ -121,7 +121,9 @@ export class JavaProcessLanguageClient extends AutoLanguageClient { } findJvm(): Promise { - return this.preferJdk() ? findJdk() : findJvm(); + const options = this.getJavaOptions(); + const javaHome = options ? this.getJavaOptions().home : ''; + return this.preferJdk() ? findJdk(javaHome) : findJvm(javaHome); } private launchProcess(port: number): Promise { @@ -162,6 +164,11 @@ export class JavaProcessLanguageClient extends AutoLanguageClient { '-Dlsp.yaml.completions.errors.disable=true', ]); + const javaOptions = this.getJavaOptions(); + if (javaOptions && javaOptions.vmargs) { + vmArgs.push(...javaOptions.vmargs); + } + this.logger.debug(`starting "${jvm.getJavaExecutable()} ${vmArgs.join('\n')}\n-jar ${launcher}"`); return jvm.jarLaunch(launcher, vmArgs, { cwd: this.serverHome }); } @@ -170,5 +177,14 @@ export class JavaProcessLanguageClient extends AutoLanguageClient { return null; } + protected getJavaOptions(): JavaOptions { + return {}; + } + +} + +export interface JavaOptions { + home?: string; + vmargs?: string[]; } diff --git a/atom-extensions/atom-commons/lib/main.ts b/atom-extensions/atom-commons/lib/main.ts index a196c7880..73b043875 100644 --- a/atom-extensions/atom-commons/lib/main.ts +++ b/atom-extensions/atom-commons/lib/main.ts @@ -1,8 +1,9 @@ -import {JavaProcessLanguageClient} from './java-process-language-client'; +import {JavaProcessLanguageClient, JavaOptions} from './java-process-language-client'; import {StsAdapter, CursorMovementParams, HighlightParams, ProgressParams} from './sts-adapter'; export { JavaProcessLanguageClient, + JavaOptions, StsAdapter, CursorMovementParams, HighlightParams, diff --git a/atom-extensions/atom-commons/package.json b/atom-extensions/atom-commons/package.json index 695c86d81..0d049a6b5 100644 --- a/atom-extensions/atom-commons/package.json +++ b/atom-extensions/atom-commons/package.json @@ -1,6 +1,6 @@ { "name": "@pivotal-tools/atom-languageclient-commons", - "version": "0.0.12", + "version": "0.0.15", "description": "Atom language client commons for STS4 language servers", "repository": "https://github.com/spring-projects/sts4", "license": "MIT", diff --git a/atom-extensions/atom-concourse/lib/concourse-ci-yaml-client.ts b/atom-extensions/atom-concourse/lib/concourse-ci-yaml-client.ts index 022fea9a4..2419d4675 100644 --- a/atom-extensions/atom-concourse/lib/concourse-ci-yaml-client.ts +++ b/atom-extensions/atom-concourse/lib/concourse-ci-yaml-client.ts @@ -1,5 +1,5 @@ import * as path from 'path'; -import { JavaProcessLanguageClient } from '@pivotal-tools/atom-languageclient-commons'; +import { JavaProcessLanguageClient, JavaOptions } from '@pivotal-tools/atom-languageclient-commons'; import {JVM} from '@pivotal-tools/jvm-launch-utils'; export class ConcourseCiYamlClient extends JavaProcessLanguageClient { @@ -39,4 +39,13 @@ export class ConcourseCiYamlClient extends JavaProcessLanguageClient { } + getJavaOptions(): JavaOptions { + const home = atom.config.get('concourse-pipeline-yaml.java.home'); + const vmargs = atom.config.get('concourse-pipeline-yaml.java.vmargs'); + return { + home: typeof home === 'string' ? home : undefined, + vmargs: Array.isArray(vmargs) ? vmargs : undefined + }; + } + } \ No newline at end of file diff --git a/atom-extensions/atom-concourse/package.json b/atom-extensions/atom-concourse/package.json index 6a3434cc3..ae4cb8438 100644 --- a/atom-extensions/atom-concourse/package.json +++ b/atom-extensions/atom-concourse/package.json @@ -18,10 +18,29 @@ "server/", "properties.json" ], + "configSchema": { + "java": { + "type": "object", + "description": "JVM settings for starting the Language Server", + "properties": { + "vmargs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Custom VM arguments to start the Language Server" + }, + "home": { + "type": "string", + "description": "Java home folder to use to start the Language Server" + } + } + } + }, "dependencies": { "atom-package-deps": "^4.6.0", "download": "^6.2.5", - "@pivotal-tools/atom-languageclient-commons": "0.0.12" + "@pivotal-tools/atom-languageclient-commons": "0.0.15" }, "devDependencies": { "typescript": "^2.7.2", diff --git a/atom-extensions/atom-concourse/properties.json b/atom-extensions/atom-concourse/properties.json index 53830b1e0..ce7d53dd4 100644 --- a/atom-extensions/atom-concourse/properties.json +++ b/atom-extensions/atom-concourse/properties.json @@ -1,3 +1,3 @@ { - "jarUrl": "https://s3.amazonaws.com/dist.springsource.com/release/STS4/fatjars/concourse-language-server-1.2.0-201812201255.jar" + "jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/concourse-language-server-1.6.0-201904021915.jar" } diff --git a/atom-extensions/atom-spring-boot/lib/spring-boot-language-client.ts b/atom-extensions/atom-spring-boot/lib/spring-boot-language-client.ts index a9f148f07..a3829243c 100644 --- a/atom-extensions/atom-spring-boot/lib/spring-boot-language-client.ts +++ b/atom-extensions/atom-spring-boot/lib/spring-boot-language-client.ts @@ -1,5 +1,5 @@ import * as path from 'path'; -import {JavaProcessLanguageClient} from '@pivotal-tools/atom-languageclient-commons'; +import {JavaProcessLanguageClient, JavaOptions} from '@pivotal-tools/atom-languageclient-commons'; import {BootStsAdapter} from './boot-sts-adapter'; import {ActiveServer} from 'atom-languageclient'; import {JVM} from '@pivotal-tools/jvm-launch-utils'; @@ -18,11 +18,11 @@ export class SpringBootLanguageClient extends JavaProcessLanguageClient { protected postInitialization(server: ActiveServer) { super.postInitialization(server); this.sendConfig(server); - (this)._disposable.add(atom.config.observe('boot-java', () => this.sendConfig(server))); + (this)._disposable.add(atom.config.observe('spring-boot', () => this.sendConfig(server))); } private sendConfig(server: ActiveServer) { - server.connection.didChangeConfiguration({ settings: {'boot-java': atom.config.get('boot-java') }}); + server.connection.didChangeConfiguration({ settings: {'boot-java': atom.config.get('spring-boot') }}); } getGrammarScopes() { @@ -71,4 +71,13 @@ export class SpringBootLanguageClient extends JavaProcessLanguageClient { return filePath.endsWith('.gradle') || filePath.endsWith(path.join('', 'pom.xml')); } + getJavaOptions(): JavaOptions { + const home = atom.config.get('spring-boot.java.home'); + const vmargs = atom.config.get('spring-boot.java.vmargs'); + return { + home: typeof home === 'string' ? home : undefined, + vmargs: Array.isArray(vmargs) ? vmargs : undefined + }; + } + } diff --git a/atom-extensions/atom-spring-boot/package.json b/atom-extensions/atom-spring-boot/package.json index 2c6dd7e72..3cdeac98a 100644 --- a/atom-extensions/atom-spring-boot/package.json +++ b/atom-extensions/atom-spring-boot/package.json @@ -49,10 +49,27 @@ } }, "description": "Array of jmx urls pointing to remote spring boot applications to poll for live hover information. A typical url looks something like this: `service:jmx:rmi://localhost:9111/jndi/rmi://localhost:9111/jmxrmi`" + }, + "java": { + "type": "object", + "description": "JVM settings for starting the Language Server", + "properties": { + "vmargs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Custom VM arguments to start the Language Server" + }, + "home": { + "type": "string", + "description": "Java home folder to use to start the Language Server" + } + } } }, "dependencies": { - "@pivotal-tools/atom-languageclient-commons": "0.0.12", + "@pivotal-tools/atom-languageclient-commons": "0.0.15", "vscode-languageserver-protocol": "3.12.0", "atom-package-deps": "^4.6.0", "download": "^6.2.5" diff --git a/atom-extensions/atom-spring-boot/properties.json b/atom-extensions/atom-spring-boot/properties.json index 5e026bad2..a18334eea 100644 --- a/atom-extensions/atom-spring-boot/properties.json +++ b/atom-extensions/atom-spring-boot/properties.json @@ -1,3 +1,3 @@ { - "jarUrl": "https://s3.amazonaws.com/dist.springsource.com/release/STS4/fatjars/spring-boot-language-server-1.2.0-201812201255.jar" + "jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/spring-boot-language-server-1.6.0-201904021915.jar" }