From 7aaa2474eb4bce648f75de5dc315ddb51418d10a Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Fri, 8 Oct 2021 12:03:03 +0200 Subject: [PATCH] JSON Schema validation https failed without details. Fixes #127769 --- .../json-language-features/client/src/jsonClient.ts | 5 +++-- .../client/src/node/jsonClientMain.ts | 11 +++++++++-- .../json-language-features/client/src/requests.ts | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/extensions/json-language-features/client/src/jsonClient.ts b/extensions/json-language-features/client/src/jsonClient.ts index 1ab289ea408..8fb6dda91e1 100644 --- a/extensions/json-language-features/client/src/jsonClient.ts +++ b/extensions/json-language-features/client/src/jsonClient.ts @@ -220,7 +220,9 @@ export function startClient(context: ExtensionContext, newLanguageClient: Langua */ runtime.telemetry.sendTelemetryEvent('json.schema', { schemaURL: uriPath }); } - return runtime.http.getContent(uriPath); + return runtime.http.getContent(uriPath).catch(e => { + return Promise.reject(new ResponseError(4, e.toString())); + }); } else { return Promise.reject(new ResponseError(1, localize('schemaDownloadDisabled', 'Downloading schemas is disabled through setting \'{0}\'', SettingIds.enableSchemaDownload))); } @@ -233,7 +235,6 @@ export function startClient(context: ExtensionContext, newLanguageClient: Langua } return false; }; - const handleActiveEditorChange = (activeEditor?: TextEditor) => { if (!activeEditor) { return; diff --git a/extensions/json-language-features/client/src/node/jsonClientMain.ts b/extensions/json-language-features/client/src/node/jsonClientMain.ts index eba269138f7..b8f96f51753 100644 --- a/extensions/json-language-features/client/src/node/jsonClientMain.ts +++ b/extensions/json-language-features/client/src/node/jsonClientMain.ts @@ -64,12 +64,19 @@ function getPackageInfo(context: ExtensionContext): IPackageInfo { function getHTTPRequestService(): RequestService { return { - getContent(uri: string, _encoding?: string) { + getContent(uri: string, _encoding?: string): Promise { const headers = { 'Accept-Encoding': 'gzip, deflate' }; return xhr({ url: uri, followRedirects: 5, headers }).then(response => { return response.responseText; }, (error: XHRResponse) => { - return Promise.reject(error.responseText || getErrorStatusDescription(error.status) || error.toString()); + let status = getErrorStatusDescription(error.status); + if (status && error.responseText) { + status = `${status}\n${error.responseText.substring(0, 200)}`; + } + if (!status) { + status = error.toString(); + } + return Promise.reject(status); }); } }; diff --git a/extensions/json-language-features/client/src/requests.ts b/extensions/json-language-features/client/src/requests.ts index be05fae6aef..ed06ded574f 100644 --- a/extensions/json-language-features/client/src/requests.ts +++ b/extensions/json-language-features/client/src/requests.ts @@ -6,7 +6,7 @@ import { Uri } from 'vscode'; export interface RequestService { - getContent(uri: string, encoding?: string): Thenable; + getContent(uri: string, encoding?: string): Promise; } export function getScheme(uri: string) {