Skip to content

Commit 8f3ab6f

Browse files
committed
fix: Avoid many error messages for copybook downloading eclipse-che4z#384
Doing existing profile check once for all list of downloading copybooks. Not for each copybook individually. Signed-off-by: Anton Grigorev <[email protected]>
1 parent ead52b7 commit 8f3ab6f

File tree

5 files changed

+12
-14
lines changed

5 files changed

+12
-14
lines changed

clients/cobol-lsp-vscode-extension/src/__tests__/CopybookDownloadServiceTest.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ describe("Validate download copybooks from mainframe with correct and incorrect
189189

190190
profileService.resolveProfile = jest.fn().mockReturnValue(profileName);
191191
const spy = jest.spyOn(copybookFix, spyMethod);
192-
await copybooksDownloader.downloadCopybook("copybook", "CBLPRG");
192+
await copybooksDownloader.downloadCopybooks("copybook", ["CBLPRG"]);
193193
expect(spy).toBeCalledTimes(toBeCalledTimes);
194194
}
195195

clients/cobol-lsp-vscode-extension/src/__tests__/MiddlewareTest.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ describe("Copybook downloader", () => {
2828
const copybookResolverURI: any = {
2929
resolveCopybookURI: resolveCopybookURIMock,
3030
};
31-
const downloadCopybookMock = jest.fn().mockResolvedValue(null);
31+
const downloadCopybooksMock = jest.fn().mockResolvedValue(null);
3232
const copybookDownloader: any = {
33-
downloadCopybook: downloadCopybookMock,
33+
downloadCopybooks: downloadCopybooksMock,
3434
};
3535
const middleware = new Middleware(copybookResolverURI, copybookDownloader);
3636

@@ -51,11 +51,10 @@ describe("Copybook downloader", () => {
5151
it("Handle copybook download request", async () => {
5252
const params = {items: [
5353
"broadcom-cobol-lsp.copybook-download.cobFile.bookName",
54-
"broadcom-cobol-lsp.copybook-download.USER.CLIST.COB.bookName",
54+
"broadcom-cobol-lsp.copybook-download.cobFile.bookName2",
5555
].map(sectionName => ({section: sectionName}))};
5656
await expect(middleware.handleConfigurationRequest(params, null, null)).resolves.toEqual([]);
57-
expect(downloadCopybookMock).toHaveBeenCalledWith("cobFile", "bookName");
58-
expect(downloadCopybookMock).toHaveBeenCalledWith("USER.CLIST.COB", "bookName");
57+
expect(downloadCopybooksMock).toHaveBeenCalledWith("cobFile", ["bookName", "bookName2"]);
5958
});
6059
it("Call next for non cobol params", async () => {
6160
const params = constructParams("foo.bar");

clients/cobol-lsp-vscode-extension/src/commands/FetchCopybookCommand.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
import {CopybookDownloadService} from "../services/CopybookDownloadService";
1515

1616
export function fetchCopybookCommand(copybook: string, downloader: CopybookDownloadService, programName: string) {
17-
downloader.downloadCopybook(programName, copybook);
17+
downloader.downloadCopybooks(programName, [copybook]);
1818
}

clients/cobol-lsp-vscode-extension/src/services/CopybookDownloadService.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,16 @@ export class CopybookDownloadService implements vscode.Disposable {
4747
* @param cobolFileName name of the document open in workspace
4848
* @param copybookName name of the copybook required by the LSP server
4949
*/
50-
public async downloadCopybook(cobolFileName: string, copybookName: string): Promise<void> {
50+
public async downloadCopybooks(cobolFileName: string, copybookNames: string[]): Promise<void> {
5151
if (!checkWorkspace()) {
5252
return;
5353
}
5454
const profile: string = await this.profileService.resolveProfile(cobolFileName);
5555
if (!profile) {
56-
this.createErrorMessageForCopybooks(new Set<string>().add(copybookName));
56+
this.createErrorMessageForCopybooks(new Set<string>(copybookNames));
5757
return;
5858
}
59-
await this.resolver.addCopybookInQueue([copybookName], profile);
59+
await this.resolver.addCopybookInQueue(copybookNames, profile);
6060

6161
}
6262

clients/cobol-lsp-vscode-extension/src/services/Middleware.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,9 @@ export class Middleware {
4141
return [await this.copybookResolverURI.resolveCopybookURI(copybookName, cobolFileName)];
4242
}
4343
if (sectionName.startsWith("broadcom-cobol-lsp.copybook-download")) {
44-
for (const item of params.items) {
45-
const [cobolFileName, copybookName] = Middleware.extractFileAndCopybookNames(item.section);
46-
this.copybookDownloader.downloadCopybook(cobolFileName, copybookName);
47-
}
44+
const extractedNames = params.items.map(item => Middleware.extractFileAndCopybookNames(item.section));
45+
const copybookNames = extractedNames.map(names => names[1]);
46+
this.copybookDownloader.downloadCopybooks(extractedNames[0][0], copybookNames);
4847
return [];
4948
}
5049
}

0 commit comments

Comments
 (0)