From b9f5e9aa1e2e3b7beb95c865f3e1aa6c40dc73c8 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Mon, 22 May 2023 15:07:55 -0400 Subject: [PATCH 01/20] early changes with reusable code Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- .../i18n/sample/src/dataset/actions.i18n.json | 3 +- .../i18n/sample/src/shared/utils.i18n.json | 4 +- .../i18n/sample/src/uss/actions.i18n.json | 2 +- packages/zowe-explorer/src/dataset/actions.ts | 70 +++++++++-------- packages/zowe-explorer/src/shared/utils.ts | 55 ++++++++++++++ packages/zowe-explorer/src/uss/actions.ts | 75 ++++++++++--------- 6 files changed, 136 insertions(+), 73 deletions(-) diff --git a/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json b/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json index 8aa889ed6d..0710cce14b 100644 --- a/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json @@ -79,8 +79,7 @@ "saveFile.saving": "Saving file {0}", "saveFile.saveFailed.error": "Data set failed to save. Data set may have been deleted or renamed on mainframe.", "saveFile.progress.title": "Saving data set...", - "saveFile.etagMismatch.log.warning": "Remote file has changed. Presented with way to resolve file.", - "saveFile.etagMismatch.warning": "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict.", + "globals.ISTHEIA.forceUpload": "When was forcing an upload ever a good idea?", "pasteDataSetMembers.paste.error": "Invalid paste. Copy dataset(s) first.", "downloadDs.invalidNode.error": "Cannot download, item invalid.", "copySequentialDatasets.notSupported.error": "Copying datasets is not supported.", diff --git a/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json b/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json index 33228514f1..ab9b72634c 100644 --- a/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json @@ -12,5 +12,7 @@ "saveFile.overwriteConfirmation.no": "No", "uploadContent.cancelled": "Upload cancelled.", "searchJobs.owner.invalid": "Invalid job owner", - "searchJobs.prefix.invalid": "Invalid job prefix" + "searchJobs.prefix.invalid": "Invalid job prefix", + "saveFile.etagMismatch.log.warning": "Remote file has changed. Presented with way to resolve file.", + "saveFile.etagMismatch.warning": "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." } diff --git a/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json b/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json index 296c506f4f..b53dec7f1f 100644 --- a/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json @@ -8,7 +8,7 @@ "copyPath.infoMessage": "Copy Path is not yet supported in Theia.", "saveUSSFile.log.debug.saveRequest": "save requested for USS file ", "saveUSSFile.response.title": "Saving file...", - "saveFile.error.etagMismatch": "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict.", + "globals.ISTHEIA.forceUpload": "When was forcing an upload ever a good idea?", "deleteUssPrompt.confirmation.delete": "Delete", "deleteUssPrompt.confirmation.message": "Are you sure you want to delete the following item?\nThis will permanently remove the following file or folder from your system.\n\n{0}", "deleteUssPrompt.confirmation.cancel.log.debug": "Delete action was canceled.", diff --git a/packages/zowe-explorer/src/dataset/actions.ts b/packages/zowe-explorer/src/dataset/actions.ts index 71e587ee8a..558e81388b 100644 --- a/packages/zowe-explorer/src/dataset/actions.ts +++ b/packages/zowe-explorer/src/dataset/actions.ts @@ -26,6 +26,7 @@ import { JobSubmitDialogOpts, JOB_SUBMIT_DIALOG_OPTS, getDefaultUri, + compareFileEdit, } from "../shared/utils"; import { ZoweExplorerApiRegister } from "../ZoweExplorerApiRegister"; import { Profiles } from "../Profiles"; @@ -1495,41 +1496,44 @@ export async function saveFile(doc: vscode.TextDocument, datasetProvider: api.IZ } } else if (!uploadResponse.success && uploadResponse.commandResponse.includes("Rest API failure with HTTP(S) status 412")) { if (globals.ISTHEIA) { + ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); willForceUpload(node, doc, label, node ? node.getProfile() : profile); } else { - const oldDoc = doc; - const oldDocText = oldDoc.getText(); - const prof = node ? node.getProfile() : profile; - const downloadResponse = await ZoweExplorerApiRegister.getMvsApi(prof).getContents(label, { - file: doc.fileName, - returnEtag: true, - encoding: prof.profile?.encoding, - responseTimeout: prof.profile?.responseTimeout, - }); - // re-assign etag, so that it can be used with subsequent requests - const downloadEtag = downloadResponse.apiResponse.etag; - if (node && downloadEtag !== node.getEtag()) { - node.setEtag(downloadEtag); - } - ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); - api.Gui.warningMessage( - localize( - "saveFile.etagMismatch.warning", - "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." - ) - ); - if (vscode.window.activeTextEditor) { - // Store document in a separate variable, to be used on merge conflict - const startPosition = new vscode.Position(0, 0); - const endPosition = new vscode.Position(oldDoc.lineCount, 0); - const deleteRange = new vscode.Range(startPosition, endPosition); - await vscode.window.activeTextEditor.edit((editBuilder) => { - // re-write the old content in the editor view - editBuilder.delete(deleteRange); - editBuilder.insert(startPosition, oldDocText); - }); - await vscode.window.activeTextEditor.document.save(); - } + // const oldDoc = doc; + // const oldDocText = oldDoc.getText(); + // const prof = node ? node.getProfile() : profile; + // const downloadResponse = await ZoweExplorerApiRegister.getMvsApi(prof).getContents(label, { + // file: doc.fileName, + // returnEtag: true, + // encoding: prof.profile?.encoding, + // responseTimeout: prof.profile?.responseTimeout, + // }); + // // re-assign etag, so that it can be used with subsequent requests + // const downloadEtag = downloadResponse.apiResponse.etag; + // if (node && downloadEtag !== node.getEtag()) { + // node.setEtag(downloadEtag); + // } + // ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); + // api.Gui.warningMessage( + // localize( + // "saveFile.etagMismatch.warning", + // "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." + // ) + // ); + // if (vscode.window.activeTextEditor) { + // // Store document in a separate variable, to be used on merge conflict + // const startPosition = new vscode.Position(0, 0); + // const endPosition = new vscode.Position(oldDoc.lineCount, 0); + // const deleteRange = new vscode.Range(startPosition, endPosition); + // await vscode.window.activeTextEditor.edit((editBuilder) => { + // // re-write the old content in the editor view + // editBuilder.delete(deleteRange); + // editBuilder.insert(startPosition, oldDocText); + // }); + // await vscode.window.activeTextEditor.document.save(); + // } + // } + await compareFileEdit(doc, node, label, null, profile); } } else { await markDocumentUnsaved(doc); diff --git a/packages/zowe-explorer/src/shared/utils.ts b/packages/zowe-explorer/src/shared/utils.ts index 34950c73d1..1065bb82e6 100644 --- a/packages/zowe-explorer/src/shared/utils.ts +++ b/packages/zowe-explorer/src/shared/utils.ts @@ -353,3 +353,58 @@ export function jobStringValidator(text: string, localizedParam: "owner" | "pref export function getDefaultUri(): vscode.Uri { return vscode.workspace.workspaceFolders?.[0]?.uri ?? vscode.Uri.file(os.homedir()); } + +export async function compareFileEdit( + doc: vscode.TextDocument, + node: IZoweDatasetTreeNode | IZoweUSSTreeNode, + label?: string, + binary?: boolean, + profile?: imperative.IProfileLoaded +): Promise { + const oldDoc = doc; + const oldDocText = oldDoc.getText(); + const prof = node ? node.getProfile() : profile; + let downloadResponse; + + if (isTypeUssTreeNode(node)) { + downloadResponse = await ZoweExplorerApiRegister.getUssApi(prof).getContents(node.fullPath, { + file: node.getUSSDocumentFilePath(), + binary, + returnEtag: true, + encoding: prof.profile?.encoding, + responseTimeout: prof.profile?.responseTimeout, + }); + } else { + downloadResponse = await ZoweExplorerApiRegister.getMvsApi(prof).getContents(label, { + file: doc.fileName, + returnEtag: true, + encoding: prof.profile?.encoding, + responseTimeout: prof.profile?.responseTimeout, + }); + } + // re-assign etag, so that it can be used with subsequent requests + const downloadEtag = downloadResponse?.apiResponse?.etag; + if (node && downloadEtag !== node.getEtag()) { + node.setEtag(downloadEtag); + } + ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); + Gui.warningMessage( + localize("saveFile.etagMismatch.warning", "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict.") + ); + if (vscode.window.activeTextEditor) { + // Store document in a separate variable, to be used on merge conflict + const startPosition = new vscode.Position(0, 0); + const endPosition = new vscode.Position(oldDoc.lineCount, 0); + const deleteRange = new vscode.Range(startPosition, endPosition); + await vscode.window.activeTextEditor.edit((editBuilder) => { + // re-write the old content in the editor view + editBuilder.delete(deleteRange); + editBuilder.insert(startPosition, oldDocText); + }); + await vscode.window.activeTextEditor.document.save(); + } +} + +export function isTypeUssTreeNode(node): node is IZoweUSSTreeNode { + return (node as IZoweUSSTreeNode).getUSSDocumentFilePath !== undefined; +} diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index 14566f5692..131e18d7fb 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -14,7 +14,7 @@ import { imperative, IZosFilesResponse } from "@zowe/cli"; import * as fs from "fs"; import * as globals from "../globals"; import * as path from "path"; -import { concatChildNodes, willForceUpload, uploadContent, getSelectedNodeList, getDefaultUri } from "../shared/utils"; +import { concatChildNodes, willForceUpload, uploadContent, getSelectedNodeList, getDefaultUri, compareFileEdit } from "../shared/utils"; import { errorHandling } from "../utils/ProfilesUtils"; import { Gui, ValidProfileEnum, IZoweTree, IZoweUSSTreeNode } from "@zowe/zowe-explorer-api"; import { Profiles } from "../Profiles"; @@ -321,43 +321,46 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo // TODO: error handling must not be zosmf specific if (err.message.includes("Rest API failure with HTTP(S) status 412")) { if (globals.ISTHEIA) { + ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); } else { - // Store old document text in a separate variable, to be used on merge conflict - const oldDocText = doc.getText(); - const oldDocLineCount = doc.lineCount; - const prof = node.getProfile(); - const downloadResponse = await ZoweExplorerApiRegister.getUssApi(prof).getContents(node.fullPath, { - file: node.getUSSDocumentFilePath(), - binary, - returnEtag: true, - encoding: prof.profile?.encoding, - responseTimeout: prof.profile?.responseTimeout, - }); - // re-assign etag, so that it can be used with subsequent requests - const downloadEtag = downloadResponse.apiResponse.etag; - if (downloadEtag !== etagToUpload) { - node.setEtag(downloadEtag); - } - - ZoweLogger.warn(err); - Gui.warningMessage( - localize( - "saveFile.error.etagMismatch", - "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." - ) - ); - if (vscode.window.activeTextEditor) { - const startPosition = new vscode.Position(0, 0); - const endPosition = new vscode.Position(oldDocLineCount, 0); - const deleteRange = new vscode.Range(startPosition, endPosition); - await vscode.window.activeTextEditor.edit((editBuilder) => { - // re-write the old content in the editor view - editBuilder.delete(deleteRange); - editBuilder.insert(startPosition, oldDocText); - }); - await vscode.window.activeTextEditor.document.save(); - } + // // Store old document text in a separate variable, to be used on merge conflict + // const oldDocText = doc.getText(); + // const oldDocLineCount = doc.lineCount; + // const prof = node.getProfile(); + // const downloadResponse = await ZoweExplorerApiRegister.getUssApi(prof).getContents(node.fullPath, { + // file: node.getUSSDocumentFilePath(), + // binary, + // returnEtag: true, + // encoding: prof.profile?.encoding, + // responseTimeout: prof.profile?.responseTimeout, + // }); + // // re-assign etag, so that it can be used with subsequent requests + // const downloadEtag = downloadResponse.apiResponse.etag; + // if (downloadEtag !== etagToUpload) { + // node.setEtag(downloadEtag); + // } + + // ZoweLogger.warn(err); + // Gui.warningMessage( + // localize( + // "saveFile.error.etagMismatch", + // "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." + // ) + // ); + // if (vscode.window.activeTextEditor) { + // const startPosition = new vscode.Position(0, 0); + // const endPosition = new vscode.Position(oldDocLineCount, 0); + // const deleteRange = new vscode.Range(startPosition, endPosition); + // await vscode.window.activeTextEditor.edit((editBuilder) => { + // // re-write the old content in the editor view + // editBuilder.delete(deleteRange); + // editBuilder.insert(startPosition, oldDocText); + // }); + // await vscode.window.activeTextEditor.document.save(); + // } + // } + await compareFileEdit(doc, node, null, binary); } } else { await markDocumentUnsaved(doc); From 7d831c1cca6feab72c049ab007c85eb2d76b2f94 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 25 May 2023 08:19:22 -0400 Subject: [PATCH 02/20] remove duplicate code Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer/src/dataset/actions.ts | 34 ---------------- packages/zowe-explorer/src/uss/actions.ts | 39 +------------------ 2 files changed, 2 insertions(+), 71 deletions(-) diff --git a/packages/zowe-explorer/src/dataset/actions.ts b/packages/zowe-explorer/src/dataset/actions.ts index 558e81388b..4f956718b9 100644 --- a/packages/zowe-explorer/src/dataset/actions.ts +++ b/packages/zowe-explorer/src/dataset/actions.ts @@ -1499,40 +1499,6 @@ export async function saveFile(doc: vscode.TextDocument, datasetProvider: api.IZ ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); willForceUpload(node, doc, label, node ? node.getProfile() : profile); } else { - // const oldDoc = doc; - // const oldDocText = oldDoc.getText(); - // const prof = node ? node.getProfile() : profile; - // const downloadResponse = await ZoweExplorerApiRegister.getMvsApi(prof).getContents(label, { - // file: doc.fileName, - // returnEtag: true, - // encoding: prof.profile?.encoding, - // responseTimeout: prof.profile?.responseTimeout, - // }); - // // re-assign etag, so that it can be used with subsequent requests - // const downloadEtag = downloadResponse.apiResponse.etag; - // if (node && downloadEtag !== node.getEtag()) { - // node.setEtag(downloadEtag); - // } - // ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); - // api.Gui.warningMessage( - // localize( - // "saveFile.etagMismatch.warning", - // "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." - // ) - // ); - // if (vscode.window.activeTextEditor) { - // // Store document in a separate variable, to be used on merge conflict - // const startPosition = new vscode.Position(0, 0); - // const endPosition = new vscode.Position(oldDoc.lineCount, 0); - // const deleteRange = new vscode.Range(startPosition, endPosition); - // await vscode.window.activeTextEditor.edit((editBuilder) => { - // // re-write the old content in the editor view - // editBuilder.delete(deleteRange); - // editBuilder.insert(startPosition, oldDocText); - // }); - // await vscode.window.activeTextEditor.document.save(); - // } - // } await compareFileEdit(doc, node, label, null, profile); } } else { diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index 131e18d7fb..00b33da968 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -319,47 +319,12 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo } } catch (err) { // TODO: error handling must not be zosmf specific - if (err.message.includes("Rest API failure with HTTP(S) status 412")) { + const errorMessage = err?.message ? err.message : err.toString(); + if (errorMessage.includes("Rest API failure with HTTP(S) status 412")) { if (globals.ISTHEIA) { ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); } else { - // // Store old document text in a separate variable, to be used on merge conflict - // const oldDocText = doc.getText(); - // const oldDocLineCount = doc.lineCount; - // const prof = node.getProfile(); - // const downloadResponse = await ZoweExplorerApiRegister.getUssApi(prof).getContents(node.fullPath, { - // file: node.getUSSDocumentFilePath(), - // binary, - // returnEtag: true, - // encoding: prof.profile?.encoding, - // responseTimeout: prof.profile?.responseTimeout, - // }); - // // re-assign etag, so that it can be used with subsequent requests - // const downloadEtag = downloadResponse.apiResponse.etag; - // if (downloadEtag !== etagToUpload) { - // node.setEtag(downloadEtag); - // } - - // ZoweLogger.warn(err); - // Gui.warningMessage( - // localize( - // "saveFile.error.etagMismatch", - // "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." - // ) - // ); - // if (vscode.window.activeTextEditor) { - // const startPosition = new vscode.Position(0, 0); - // const endPosition = new vscode.Position(oldDocLineCount, 0); - // const deleteRange = new vscode.Range(startPosition, endPosition); - // await vscode.window.activeTextEditor.edit((editBuilder) => { - // // re-write the old content in the editor view - // editBuilder.delete(deleteRange); - // editBuilder.insert(startPosition, oldDocText); - // }); - // await vscode.window.activeTextEditor.document.save(); - // } - // } await compareFileEdit(doc, node, null, binary); } } else { From 0fd72b0af50915d0f91a5ea8fe5a18a4b447c9e8 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Fri, 26 May 2023 12:45:19 -0400 Subject: [PATCH 03/20] execute vsc command CompareWithSaved Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer/src/shared/utils.ts | 28 ++++++++++------------ 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/packages/zowe-explorer/src/shared/utils.ts b/packages/zowe-explorer/src/shared/utils.ts index 1065bb82e6..52bb8dacec 100644 --- a/packages/zowe-explorer/src/shared/utils.ts +++ b/packages/zowe-explorer/src/shared/utils.ts @@ -363,6 +363,9 @@ export async function compareFileEdit( ): Promise { const oldDoc = doc; const oldDocText = oldDoc.getText(); + const startPosition = oldDoc.lineAt(0).range.start; + const endPosition = oldDoc.lineAt(oldDoc.lineCount - 1).range.end; + const deleteRange = new vscode.Range(startPosition, endPosition); const prof = node ? node.getProfile() : profile; let downloadResponse; @@ -382,27 +385,20 @@ export async function compareFileEdit( responseTimeout: prof.profile?.responseTimeout, }); } + ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); + const editor = vscode.window.activeTextEditor; + if (editor) { + // Store document in a separate variable, to be used on merge conflict + await editor.edit((editBuilder) => { + editBuilder.replace(deleteRange, oldDocText); + }); + } + vscode.commands.executeCommand("workbench.files.action.compareWithSaved"); // re-assign etag, so that it can be used with subsequent requests const downloadEtag = downloadResponse?.apiResponse?.etag; if (node && downloadEtag !== node.getEtag()) { node.setEtag(downloadEtag); } - ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); - Gui.warningMessage( - localize("saveFile.etagMismatch.warning", "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict.") - ); - if (vscode.window.activeTextEditor) { - // Store document in a separate variable, to be used on merge conflict - const startPosition = new vscode.Position(0, 0); - const endPosition = new vscode.Position(oldDoc.lineCount, 0); - const deleteRange = new vscode.Range(startPosition, endPosition); - await vscode.window.activeTextEditor.edit((editBuilder) => { - // re-write the old content in the editor view - editBuilder.delete(deleteRange); - editBuilder.insert(startPosition, oldDocText); - }); - await vscode.window.activeTextEditor.document.save(); - } } export function isTypeUssTreeNode(node): node is IZoweUSSTreeNode { From c0a5f63e852690f78ccda35d6d0e30dcff6fd893 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Fri, 26 May 2023 15:12:33 -0400 Subject: [PATCH 04/20] cleanup Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer/src/dataset/actions.ts | 15 +++++++-------- packages/zowe-explorer/src/shared/utils.ts | 11 ++++++++++- packages/zowe-explorer/src/uss/actions.ts | 14 +++++++------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/packages/zowe-explorer/src/dataset/actions.ts b/packages/zowe-explorer/src/dataset/actions.ts index f7780b7839..c1d309beff 100644 --- a/packages/zowe-explorer/src/dataset/actions.ts +++ b/packages/zowe-explorer/src/dataset/actions.ts @@ -21,12 +21,11 @@ import { getDocumentFilePath, concatChildNodes, checkForAddedSuffix, - willForceUpload, getSelectedNodeList, JobSubmitDialogOpts, JOB_SUBMIT_DIALOG_OPTS, getDefaultUri, - compareFileEdit, + compareFileContent, } from "../shared/utils"; import { ZoweExplorerApiRegister } from "../ZoweExplorerApiRegister"; import { Profiles } from "../Profiles"; @@ -1495,12 +1494,12 @@ export async function saveFile(doc: vscode.TextDocument, datasetProvider: api.IZ setFileSaved(true); } } else if (!uploadResponse.success && uploadResponse.commandResponse.includes("Rest API failure with HTTP(S) status 412")) { - if (globals.ISTHEIA) { - ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); - willForceUpload(node, doc, label, node ? node.getProfile() : profile); - } else { - await compareFileEdit(doc, node, label, null, profile); - } + // if (globals.ISTHEIA) { + // ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); + // willForceUpload(node, doc, label, node ? node.getProfile() : profile); + // } else { + await compareFileContent(doc, node, label, null, profile); + // } } else { await markDocumentUnsaved(doc); api.Gui.errorMessage(uploadResponse.commandResponse); diff --git a/packages/zowe-explorer/src/shared/utils.ts b/packages/zowe-explorer/src/shared/utils.ts index 52bb8dacec..c1a2faeea0 100644 --- a/packages/zowe-explorer/src/shared/utils.ts +++ b/packages/zowe-explorer/src/shared/utils.ts @@ -354,7 +354,16 @@ export function getDefaultUri(): vscode.Uri { return vscode.workspace.workspaceFolders?.[0]?.uri ?? vscode.Uri.file(os.homedir()); } -export async function compareFileEdit( +/** + * Function that triggers compare of the old and new document in the active editor + * @param {vscode.TextDocument} doc - document to update and compare with previous content + * @param {IZoweDatasetTreeNode | IZoweUSSTreeNode} node - IZoweTreeNode + * @param {string} label - {optional} used by IZoweDatasetTreeNode to getContents of file + * @param {boolean} binary - {optional} used by IZoweUSSTreeNode to getContents of file + * @param {imperative.IProfileLoaded} profile - {optional} + * @returns {Promise} + */ +export async function compareFileContent( doc: vscode.TextDocument, node: IZoweDatasetTreeNode | IZoweUSSTreeNode, label?: string, diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index e1f38e1aea..f05084d885 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -14,7 +14,7 @@ import { imperative, IZosFilesResponse } from "@zowe/cli"; import * as fs from "fs"; import * as globals from "../globals"; import * as path from "path"; -import { concatChildNodes, willForceUpload, uploadContent, getSelectedNodeList, getDefaultUri, compareFileEdit } from "../shared/utils"; +import { concatChildNodes, uploadContent, getSelectedNodeList, getDefaultUri, compareFileContent } from "../shared/utils"; import { errorHandling } from "../utils/ProfilesUtils"; import { Gui, ValidProfileEnum, IZoweTree, IZoweUSSTreeNode } from "@zowe/zowe-explorer-api"; import { Profiles } from "../Profiles"; @@ -321,12 +321,12 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo // TODO: error handling must not be zosmf specific const errorMessage = err?.message ? err.message : err.toString(); if (errorMessage.includes("Rest API failure with HTTP(S) status 412")) { - if (globals.ISTHEIA) { - ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); - willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); - } else { - await compareFileEdit(doc, node, null, binary); - } + // if (globals.ISTHEIA) { + // ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); + // willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); + // } else { + await compareFileContent(doc, node, null, binary); + // } } else { await markDocumentUnsaved(doc); await errorHandling(err, sesName); From 3a421b5b50d75cefcd00473c3a50d1845df27c26 Mon Sep 17 00:00:00 2001 From: Timothy Johnson Date: Fri, 26 May 2023 17:03:56 -0400 Subject: [PATCH 05/20] Fix zowe.settings.version being added to workspace settings Signed-off-by: Timothy Johnson --- packages/zowe-explorer/CHANGELOG.md | 2 ++ packages/zowe-explorer/src/utils/SettingsConfig.ts | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index 40802edf61..edc090c898 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -8,6 +8,8 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen ### Bug fixes +- Fixed `zowe.settings.version` being added to settings.json in workspaces. [#2312](https://github.com/zowe/vscode-extension-for-zowe/issues/2312) + ## `2.8.1` ### Bug fixes diff --git a/packages/zowe-explorer/src/utils/SettingsConfig.ts b/packages/zowe-explorer/src/utils/SettingsConfig.ts index b29736b6e7..a5266e5647 100644 --- a/packages/zowe-explorer/src/utils/SettingsConfig.ts +++ b/packages/zowe-explorer/src/utils/SettingsConfig.ts @@ -94,9 +94,9 @@ export class SettingsConfig { public static async standardizeSettings(): Promise { ZoweLogger.trace("SettingsConfig.standardizeSettings called."); // Need to coerce all possible version values to a string to correct previous values - const globalVersion = String(SettingsConfig.configurations.inspect(globals.SETTINGS_VERSION).globalValue); - const workspaceVersion = String(SettingsConfig.configurations.inspect(globals.SETTINGS_VERSION).workspaceValue); - const currentVersion = String(SettingsConfig.currentVersionNumber); + const globalVersion = SettingsConfig.configurations.inspect(globals.SETTINGS_VERSION).globalValue?.toString(); + const workspaceVersion = SettingsConfig.configurations.inspect(globals.SETTINGS_VERSION).workspaceValue?.toString(); + const currentVersion = SettingsConfig.currentVersionNumber.toString(); const globalIsNotMigrated = SettingsConfig.majorVersionMismatch(globalVersion, currentVersion); const workspaceIsNotMigrated = SettingsConfig.majorVersionMismatch(workspaceVersion, currentVersion); From ba96cff339ba6fade27e500ec0b7192424b0012e Mon Sep 17 00:00:00 2001 From: Timothy Johnson Date: Tue, 30 May 2023 10:57:15 -0400 Subject: [PATCH 06/20] Add unit test to check settings not always updated Signed-off-by: Timothy Johnson --- .../utils/SettingsConfig.unit.test.ts | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/zowe-explorer/__tests__/__unit__/utils/SettingsConfig.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/utils/SettingsConfig.unit.test.ts index 20754fc836..695dc34372 100644 --- a/packages/zowe-explorer/__tests__/__unit__/utils/SettingsConfig.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/utils/SettingsConfig.unit.test.ts @@ -109,36 +109,56 @@ describe("SettingsConfig Unit Tests - function standardizeSettings", () => { value: ["test"], configurable: true, }); - jest.spyOn(SettingsConfig as any, "currentVersionNumber", "get").mockReturnValueOnce("vtest"); + jest.spyOn(SettingsConfig as any, "currentVersionNumber", "get").mockReturnValueOnce("v2"); jest.spyOn(SettingsConfig as any, "zoweOldConfigurations", "get").mockReturnValue(["zowe.settings.test"]); jest.spyOn(vscode.workspace, "getConfiguration").mockReturnValue({ update: jest.fn(), } as any); }); + afterEach(() => { + jest.clearAllMocks(); + }); + it("should standardize workspace settings if not migrated and workspace is open", async () => { jest.spyOn(SettingsConfig as any, "configurations", "get").mockReturnValue({ inspect: () => ({ - globalValue: "vtest", - workspaceValue: "", + globalValue: "v2", + workspaceValue: "v1", }), }); + const setDirectValueSpy = jest.spyOn(SettingsConfig as any, "setDirectValue").mockImplementation(); const standardizeWorkspaceSettingsSpy = jest.spyOn(SettingsConfig as any, "standardizeWorkspaceSettings").mockImplementation(); await expect(SettingsConfig.standardizeSettings()).resolves.not.toThrow(); + expect(setDirectValueSpy).toHaveBeenCalledTimes(1); expect(standardizeWorkspaceSettingsSpy).toHaveBeenCalledTimes(1); }); it("should standardize global settings if not migrated", async () => { jest.spyOn(SettingsConfig as any, "configurations", "get").mockReturnValue({ inspect: () => ({ - globalValue: "", - workspaceValue: "vtest", + globalValue: "v1", + workspaceValue: "v2", }), }); + const setDirectValueSpy = jest.spyOn(SettingsConfig as any, "setDirectValue").mockImplementation(); const standardizeGlobalSettingsSpy = jest.spyOn(SettingsConfig as any, "standardizeGlobalSettings").mockImplementation(); await expect(SettingsConfig.standardizeSettings()).resolves.not.toThrow(); + expect(setDirectValueSpy).toHaveBeenCalledTimes(1); expect(standardizeGlobalSettingsSpy).toHaveBeenCalledTimes(1); }); + + it("should not update settings if global is migrated and workspace is undefined", async () => { + jest.spyOn(SettingsConfig as any, "configurations", "get").mockReturnValue({ + inspect: () => ({ + globalValue: "v2", + workspaceValue: undefined, + }), + }); + const setDirectValueSpy = jest.spyOn(SettingsConfig as any, "setDirectValue").mockImplementation(); + await expect(SettingsConfig.standardizeSettings()).resolves.not.toThrow(); + expect(setDirectValueSpy).toHaveBeenCalledTimes(0); + }); }); describe("SettingsConfig Unit Tests - function currentVersionNumber", () => { From 5b0304bb2896a3c1d322ce006d725bf1bebc3b30 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Tue, 30 May 2023 11:56:05 -0400 Subject: [PATCH 07/20] run prepublish Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- .../zowe-explorer/i18n/sample/src/dataset/actions.i18n.json | 1 - packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json | 3 +-- packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json | 1 - packages/zowe-explorer/src/dataset/actions.ts | 1 - packages/zowe-explorer/src/uss/actions.ts | 1 - 5 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json b/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json index 0710cce14b..8e2f4778a8 100644 --- a/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json @@ -79,7 +79,6 @@ "saveFile.saving": "Saving file {0}", "saveFile.saveFailed.error": "Data set failed to save. Data set may have been deleted or renamed on mainframe.", "saveFile.progress.title": "Saving data set...", - "globals.ISTHEIA.forceUpload": "When was forcing an upload ever a good idea?", "pasteDataSetMembers.paste.error": "Invalid paste. Copy dataset(s) first.", "downloadDs.invalidNode.error": "Cannot download, item invalid.", "copySequentialDatasets.notSupported.error": "Copying datasets is not supported.", diff --git a/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json b/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json index ab9b72634c..428043ef06 100644 --- a/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json @@ -13,6 +13,5 @@ "uploadContent.cancelled": "Upload cancelled.", "searchJobs.owner.invalid": "Invalid job owner", "searchJobs.prefix.invalid": "Invalid job prefix", - "saveFile.etagMismatch.log.warning": "Remote file has changed. Presented with way to resolve file.", - "saveFile.etagMismatch.warning": "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." + "saveFile.etagMismatch.log.warning": "Remote file has changed. Presented with way to resolve file." } diff --git a/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json b/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json index b53dec7f1f..a4af6ec483 100644 --- a/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/uss/actions.i18n.json @@ -8,7 +8,6 @@ "copyPath.infoMessage": "Copy Path is not yet supported in Theia.", "saveUSSFile.log.debug.saveRequest": "save requested for USS file ", "saveUSSFile.response.title": "Saving file...", - "globals.ISTHEIA.forceUpload": "When was forcing an upload ever a good idea?", "deleteUssPrompt.confirmation.delete": "Delete", "deleteUssPrompt.confirmation.message": "Are you sure you want to delete the following item?\nThis will permanently remove the following file or folder from your system.\n\n{0}", "deleteUssPrompt.confirmation.cancel.log.debug": "Delete action was canceled.", diff --git a/packages/zowe-explorer/src/dataset/actions.ts b/packages/zowe-explorer/src/dataset/actions.ts index c1d309beff..bdb130a23e 100644 --- a/packages/zowe-explorer/src/dataset/actions.ts +++ b/packages/zowe-explorer/src/dataset/actions.ts @@ -1495,7 +1495,6 @@ export async function saveFile(doc: vscode.TextDocument, datasetProvider: api.IZ } } else if (!uploadResponse.success && uploadResponse.commandResponse.includes("Rest API failure with HTTP(S) status 412")) { // if (globals.ISTHEIA) { - // ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); // willForceUpload(node, doc, label, node ? node.getProfile() : profile); // } else { await compareFileContent(doc, node, label, null, profile); diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index f05084d885..dad57a35b9 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -322,7 +322,6 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo const errorMessage = err?.message ? err.message : err.toString(); if (errorMessage.includes("Rest API failure with HTTP(S) status 412")) { // if (globals.ISTHEIA) { - // ZoweLogger.debug(localize("globals.ISTHEIA.forceUpload", "When was forcing an upload ever a good idea?")); // willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); // } else { await compareFileContent(doc, node, null, binary); From 13b0676f5322ed2caa752eb3d2ee3d9999adebaf Mon Sep 17 00:00:00 2001 From: Timothy Johnson Date: Wed, 31 May 2023 08:37:26 -0400 Subject: [PATCH 08/20] Update version for 2.8.2 release Signed-off-by: Timothy Johnson --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 5317f71498..7ffe3ceba5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.8.2-SNAPSHOT", + "version": "2.8.2", "command": { "version": { "forcePublish": true, From 3738af71a1af3765e2a210091aed336525195cd9 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Wed, 31 May 2023 12:51:38 +0000 Subject: [PATCH 09/20] Bump version to 2.8.2 [ci skip] Signed-off-by: zowe-robot --- packages/eslint-plugin-zowe-explorer/CHANGELOG.md | 2 +- packages/eslint-plugin-zowe-explorer/package.json | 2 +- packages/zowe-explorer-api/CHANGELOG.md | 2 +- packages/zowe-explorer-api/package.json | 2 +- packages/zowe-explorer-ftp-extension/CHANGELOG.md | 2 +- packages/zowe-explorer-ftp-extension/package.json | 4 ++-- packages/zowe-explorer/CHANGELOG.md | 2 +- packages/zowe-explorer/package.json | 6 +++--- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md index f1e202e0dd..51529f7086 100644 --- a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md +++ b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md @@ -1,6 +1,6 @@ All notable changes to the "eslint-plugin-zowe-explorer" package will be documented in this file. -## TBD Release +## `2.8.2` ### New features and enhancements diff --git a/packages/eslint-plugin-zowe-explorer/package.json b/packages/eslint-plugin-zowe-explorer/package.json index b14590e113..1f3d5fa15a 100644 --- a/packages/eslint-plugin-zowe-explorer/package.json +++ b/packages/eslint-plugin-zowe-explorer/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-zowe-explorer", - "version": "2.8.2-SNAPSHOT", + "version": "2.8.2", "description": "Custom ESLint Rules for ZOWE Explorer", "keywords": [ "eslint", diff --git a/packages/zowe-explorer-api/CHANGELOG.md b/packages/zowe-explorer-api/CHANGELOG.md index 9b6b6b11e6..339ee121a2 100644 --- a/packages/zowe-explorer-api/CHANGELOG.md +++ b/packages/zowe-explorer-api/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to the "zowe-explorer-api" extension will be documented in this file. -## TBD Release +## `2.8.2` ### New features and enhancements diff --git a/packages/zowe-explorer-api/package.json b/packages/zowe-explorer-api/package.json index 6ddade87d9..d031ba73ef 100644 --- a/packages/zowe-explorer-api/package.json +++ b/packages/zowe-explorer-api/package.json @@ -1,6 +1,6 @@ { "name": "@zowe/zowe-explorer-api", - "version": "2.8.2-SNAPSHOT", + "version": "2.8.2", "description": "Extensibility API for Zowe Explorer.", "publisher": "Zowe", "author": "Zowe", diff --git a/packages/zowe-explorer-ftp-extension/CHANGELOG.md b/packages/zowe-explorer-ftp-extension/CHANGELOG.md index 3e9254b27a..cb86a86d50 100644 --- a/packages/zowe-explorer-ftp-extension/CHANGELOG.md +++ b/packages/zowe-explorer-ftp-extension/CHANGELOG.md @@ -1,6 +1,6 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be documented in this file. -## TBD Release +## `2.8.2` ### New features and enhancements diff --git a/packages/zowe-explorer-ftp-extension/package.json b/packages/zowe-explorer-ftp-extension/package.json index a7f28578f2..fabf3c4514 100644 --- a/packages/zowe-explorer-ftp-extension/package.json +++ b/packages/zowe-explorer-ftp-extension/package.json @@ -5,7 +5,7 @@ "author": "Zowe", "license": "EPL-2.0", "description": "Adds zFTP support to Zowe Explorer demonstrating how to extend the Zowe Explorer using its extensibility API.", - "version": "2.8.2-SNAPSHOT", + "version": "2.8.2", "icon": "resources/zowe-ftp-color.png", "repository": { "url": "https://github.com/zowe/vscode-extension-for-zowe" @@ -48,7 +48,7 @@ }, "dependencies": { "@zowe/zos-ftp-for-zowe-cli": "2.1.2", - "@zowe/zowe-explorer-api": "2.8.2-SNAPSHOT", + "@zowe/zowe-explorer-api": "2.8.2", "tmp": "0.2.1" }, "devDependencies": { diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index edc090c898..fa798118a7 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documented in this file. -## TBD Release +## `2.8.2` ### New features and enhancements diff --git a/packages/zowe-explorer/package.json b/packages/zowe-explorer/package.json index 6d02c1a2be..1d0ab7e586 100644 --- a/packages/zowe-explorer/package.json +++ b/packages/zowe-explorer/package.json @@ -2,7 +2,7 @@ "name": "vscode-extension-for-zowe", "displayName": "%displayName%", "description": "%description%", - "version": "2.8.2-SNAPSHOT", + "version": "2.8.2", "publisher": "Zowe", "author": "Zowe", "license": "EPL-2.0", @@ -1934,7 +1934,7 @@ "chalk": "^2.4.1", "cross-env": "^5.2.0", "del": "^4.1.1", - "eslint-plugin-zowe-explorer": "2.8.2-SNAPSHOT", + "eslint-plugin-zowe-explorer": "2.8.2", "event-stream": "^4.0.1", "expect": "^24.8.0", "geckodriver": "^1.19.1", @@ -1960,7 +1960,7 @@ "webpack-cli": "^3.3.11" }, "dependencies": { - "@zowe/zowe-explorer-api": "2.8.2-SNAPSHOT", + "@zowe/zowe-explorer-api": "2.8.2", "fs-extra": "8.0.1", "isbinaryfile": "4.0.4", "js-yaml": "3.13.1", From c7f3cad5264988f06e7a27ee3cc9e28208b279f2 Mon Sep 17 00:00:00 2001 From: zowe-robot Date: Wed, 31 May 2023 12:53:59 +0000 Subject: [PATCH 10/20] Bump version to 2.8.3-SNAPSHOT [ci skip] Signed-off-by: zowe-robot --- lerna.json | 2 +- packages/eslint-plugin-zowe-explorer/CHANGELOG.md | 6 ++++++ packages/eslint-plugin-zowe-explorer/package.json | 2 +- packages/zowe-explorer-api/CHANGELOG.md | 6 ++++++ packages/zowe-explorer-api/package.json | 2 +- packages/zowe-explorer-ftp-extension/CHANGELOG.md | 6 ++++++ packages/zowe-explorer-ftp-extension/package.json | 4 ++-- packages/zowe-explorer/CHANGELOG.md | 6 ++++++ packages/zowe-explorer/package.json | 6 +++--- 9 files changed, 32 insertions(+), 8 deletions(-) diff --git a/lerna.json b/lerna.json index 7ffe3ceba5..d20117ccad 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.8.2", + "version": "2.8.3-SNAPSHOT", "command": { "version": { "forcePublish": true, diff --git a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md index 51529f7086..85ae10a08e 100644 --- a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md +++ b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md @@ -1,5 +1,11 @@ All notable changes to the "eslint-plugin-zowe-explorer" package will be documented in this file. +## TBD Release + +### New features and enhancements + +### Bug fixes + ## `2.8.2` ### New features and enhancements diff --git a/packages/eslint-plugin-zowe-explorer/package.json b/packages/eslint-plugin-zowe-explorer/package.json index 1f3d5fa15a..ce26737d9a 100644 --- a/packages/eslint-plugin-zowe-explorer/package.json +++ b/packages/eslint-plugin-zowe-explorer/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-zowe-explorer", - "version": "2.8.2", + "version": "2.8.3-SNAPSHOT", "description": "Custom ESLint Rules for ZOWE Explorer", "keywords": [ "eslint", diff --git a/packages/zowe-explorer-api/CHANGELOG.md b/packages/zowe-explorer-api/CHANGELOG.md index 339ee121a2..0af83111f5 100644 --- a/packages/zowe-explorer-api/CHANGELOG.md +++ b/packages/zowe-explorer-api/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to the "zowe-explorer-api" extension will be documented in this file. +## TBD Release + +### New features and enhancements + +### Bug fixes + ## `2.8.2` ### New features and enhancements diff --git a/packages/zowe-explorer-api/package.json b/packages/zowe-explorer-api/package.json index d031ba73ef..6695f633a9 100644 --- a/packages/zowe-explorer-api/package.json +++ b/packages/zowe-explorer-api/package.json @@ -1,6 +1,6 @@ { "name": "@zowe/zowe-explorer-api", - "version": "2.8.2", + "version": "2.8.3-SNAPSHOT", "description": "Extensibility API for Zowe Explorer.", "publisher": "Zowe", "author": "Zowe", diff --git a/packages/zowe-explorer-ftp-extension/CHANGELOG.md b/packages/zowe-explorer-ftp-extension/CHANGELOG.md index cb86a86d50..ebf486c8b6 100644 --- a/packages/zowe-explorer-ftp-extension/CHANGELOG.md +++ b/packages/zowe-explorer-ftp-extension/CHANGELOG.md @@ -1,5 +1,11 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be documented in this file. +## TBD Release + +### New features and enhancements + +### Bug fixes + ## `2.8.2` ### New features and enhancements diff --git a/packages/zowe-explorer-ftp-extension/package.json b/packages/zowe-explorer-ftp-extension/package.json index fabf3c4514..0f291dddea 100644 --- a/packages/zowe-explorer-ftp-extension/package.json +++ b/packages/zowe-explorer-ftp-extension/package.json @@ -5,7 +5,7 @@ "author": "Zowe", "license": "EPL-2.0", "description": "Adds zFTP support to Zowe Explorer demonstrating how to extend the Zowe Explorer using its extensibility API.", - "version": "2.8.2", + "version": "2.8.3-SNAPSHOT", "icon": "resources/zowe-ftp-color.png", "repository": { "url": "https://github.com/zowe/vscode-extension-for-zowe" @@ -48,7 +48,7 @@ }, "dependencies": { "@zowe/zos-ftp-for-zowe-cli": "2.1.2", - "@zowe/zowe-explorer-api": "2.8.2", + "@zowe/zowe-explorer-api": "2.8.3-SNAPSHOT", "tmp": "0.2.1" }, "devDependencies": { diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index fa798118a7..0345a2bba9 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documented in this file. +## TBD Release + +### New features and enhancements + +### Bug fixes + ## `2.8.2` ### New features and enhancements diff --git a/packages/zowe-explorer/package.json b/packages/zowe-explorer/package.json index 1d0ab7e586..7faf652a12 100644 --- a/packages/zowe-explorer/package.json +++ b/packages/zowe-explorer/package.json @@ -2,7 +2,7 @@ "name": "vscode-extension-for-zowe", "displayName": "%displayName%", "description": "%description%", - "version": "2.8.2", + "version": "2.8.3-SNAPSHOT", "publisher": "Zowe", "author": "Zowe", "license": "EPL-2.0", @@ -1934,7 +1934,7 @@ "chalk": "^2.4.1", "cross-env": "^5.2.0", "del": "^4.1.1", - "eslint-plugin-zowe-explorer": "2.8.2", + "eslint-plugin-zowe-explorer": "2.8.3-SNAPSHOT", "event-stream": "^4.0.1", "expect": "^24.8.0", "geckodriver": "^1.19.1", @@ -1960,7 +1960,7 @@ "webpack-cli": "^3.3.11" }, "dependencies": { - "@zowe/zowe-explorer-api": "2.8.2", + "@zowe/zowe-explorer-api": "2.8.3-SNAPSHOT", "fs-extra": "8.0.1", "isbinaryfile": "4.0.4", "js-yaml": "3.13.1", From 71417ba12825cf5d3e974c4775fa59e1fa5c67cf Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 16:05:59 -0400 Subject: [PATCH 11/20] remove empty 2.8.2 CHANGELOG entries Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer-api/CHANGELOG.md | 6 ------ packages/zowe-explorer-ftp-extension/CHANGELOG.md | 6 ------ 2 files changed, 12 deletions(-) diff --git a/packages/zowe-explorer-api/CHANGELOG.md b/packages/zowe-explorer-api/CHANGELOG.md index 00003fcc43..0a0f9607a3 100644 --- a/packages/zowe-explorer-api/CHANGELOG.md +++ b/packages/zowe-explorer-api/CHANGELOG.md @@ -11,12 +11,6 @@ All notable changes to the "zowe-explorer-api" extension will be documented in t ### Bug fixes -## `2.8.2` - -### New features and enhancements - -### Bug fixes - ## `2.8.1` ### Bug fixes diff --git a/packages/zowe-explorer-ftp-extension/CHANGELOG.md b/packages/zowe-explorer-ftp-extension/CHANGELOG.md index 3b4c8f4f9e..f74aec7d47 100644 --- a/packages/zowe-explorer-ftp-extension/CHANGELOG.md +++ b/packages/zowe-explorer-ftp-extension/CHANGELOG.md @@ -6,12 +6,6 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be docum ### Bug fixes -## `2.8.2` - -### New features and enhancements - -### Bug fixes - ## `2.8.1` ### Bug fixes From 8139666ad7489d51f0982f5ceda7ab5e597137ea Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 16:07:28 -0400 Subject: [PATCH 12/20] missed one Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/eslint-plugin-zowe-explorer/CHANGELOG.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md index 85ae10a08e..98e0aa6f4a 100644 --- a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md +++ b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md @@ -6,16 +6,8 @@ All notable changes to the "eslint-plugin-zowe-explorer" package will be documen ### Bug fixes -## `2.8.2` - -### New features and enhancements - -### Bug fixes - ## `2.8.1` -### New features and enhancements - ### Bug fixes - Added `no-floating-promises` rule that ignores floating thenables without a `.catch` method. [#2291](https://github.com/zowe/vscode-extension-for-zowe/issues/2291) From 3b7cdd4547a6ea583bc401f54fd55e74012ec524 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 17:59:27 -0400 Subject: [PATCH 13/20] run prepublish and cleanup Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- .../i18n/sample/src/dataset/actions.i18n.json | 4 +--- .../i18n/sample/src/shared/utils.i18n.json | 2 +- packages/zowe-explorer/src/shared/context.ts | 10 +++++++++ packages/zowe-explorer/src/shared/utils.ts | 21 ++++--------------- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json b/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json index 68597fc44f..018eae804b 100644 --- a/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/dataset/actions.i18n.json @@ -78,9 +78,7 @@ "saveFile.saving": "Saving file {0}", "saveFile.saveFailed.error": "Data set failed to save. Data set may have been deleted or renamed on mainframe.", "saveFile.progress.title": "Saving data set...", - "pasteDataSetMembers.paste.error": "Invalid paste. Copy dataset(s) first.", - "saveFile.etagMismatch.log.warning": "Remote file has changed. Presented with way to resolve file.", - "saveFile.etagMismatch.warning": "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict.", + "pasteDataSetMembers.paste.error": "Invalid paste. Copy data set(s) first.", "downloadDs.invalidNode.error": "Cannot download, item invalid.", "copySequentialDatasets.notSupported.error": "Copying data sets is not supported.", "copyDataSet.replace.option1": "Replace", diff --git a/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json b/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json index 428043ef06..7bdcd3a109 100644 --- a/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json +++ b/packages/zowe-explorer/i18n/sample/src/shared/utils.i18n.json @@ -13,5 +13,5 @@ "uploadContent.cancelled": "Upload cancelled.", "searchJobs.owner.invalid": "Invalid job owner", "searchJobs.prefix.invalid": "Invalid job prefix", - "saveFile.etagMismatch.log.warning": "Remote file has changed. Presented with way to resolve file." + "saveFile.etagMismatch.log.warning": "Remote file has changed. Presenting with way to resolve file." } diff --git a/packages/zowe-explorer/src/shared/context.ts b/packages/zowe-explorer/src/shared/context.ts index 133777b91a..feb1b5faa3 100644 --- a/packages/zowe-explorer/src/shared/context.ts +++ b/packages/zowe-explorer/src/shared/context.ts @@ -12,6 +12,7 @@ import * as globals from "../globals"; import { TreeItem } from "vscode"; import { IZoweTreeNode } from "@zowe/zowe-explorer-api"; +import { IZoweUSSTreeNode } from "@zowe/zowe-explorer-api"; /** * @@ -456,3 +457,12 @@ export function isValidationEnabled(node: TreeItem): boolean { export function isJobsSession(node: TreeItem): boolean { return new RegExp("^(" + globals.JOBS_SESSION_CONTEXT + ")").test(node.contextValue); } + +/** + * Helper function which identifies if the node is part of the USS tree view + * @param node + * @return true if part of the USS tree, false otherwise + */ +export function isTypeUssTreeNode(node): node is IZoweUSSTreeNode { + return (node as IZoweUSSTreeNode).getUSSDocumentFilePath !== undefined; +} diff --git a/packages/zowe-explorer/src/shared/utils.ts b/packages/zowe-explorer/src/shared/utils.ts index 01ab630f99..312544a3db 100644 --- a/packages/zowe-explorer/src/shared/utils.ts +++ b/packages/zowe-explorer/src/shared/utils.ts @@ -21,6 +21,8 @@ import * as nls from "vscode-nls"; import { IZosFilesResponse, imperative } from "@zowe/cli"; import { IUploadOptions } from "@zowe/zos-files-for-zowe-sdk"; import { ZoweLogger } from "../utils/LoggerUtils"; +import { isTypeUssTreeNode } from "./context"; +import { markDocumentUnsaved } from "../utils/workspace"; // Set up localization nls.config({ @@ -358,11 +360,7 @@ export async function compareFileContent( binary?: boolean, profile?: imperative.IProfileLoaded ): Promise { - const oldDoc = doc; - const oldDocText = oldDoc.getText(); - const startPosition = oldDoc.lineAt(0).range.start; - const endPosition = oldDoc.lineAt(oldDoc.lineCount - 1).range.end; - const deleteRange = new vscode.Range(startPosition, endPosition); + await markDocumentUnsaved(doc); const prof = node ? node.getProfile() : profile; let downloadResponse; @@ -382,14 +380,7 @@ export async function compareFileContent( responseTimeout: prof.profile?.responseTimeout, }); } - ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presented with way to resolve file.")); - const editor = vscode.window.activeTextEditor; - if (editor) { - // Store document in a separate variable, to be used on merge conflict - await editor.edit((editBuilder) => { - editBuilder.replace(deleteRange, oldDocText); - }); - } + ZoweLogger.warn(localize("saveFile.etagMismatch.log.warning", "Remote file has changed. Presenting with way to resolve file.")); vscode.commands.executeCommand("workbench.files.action.compareWithSaved"); // re-assign etag, so that it can be used with subsequent requests const downloadEtag = downloadResponse?.apiResponse?.etag; @@ -397,7 +388,3 @@ export async function compareFileContent( node.setEtag(downloadEtag); } } - -export function isTypeUssTreeNode(node): node is IZoweUSSTreeNode { - return (node as IZoweUSSTreeNode).getUSSDocumentFilePath !== undefined; -} From 9a8010797e75622891db7a3c28e9afd76786c0e6 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 18:31:34 -0400 Subject: [PATCH 14/20] fix unit tests & add some coverage Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- .../__unit__/dataset/actions.unit.test.ts | 37 ++++++++++++------- .../__unit__/uss/actions.unit.test.ts | 19 ++++++++-- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/packages/zowe-explorer/__tests__/__unit__/dataset/actions.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/dataset/actions.unit.test.ts index 7f877cf35b..bfcd3ca333 100644 --- a/packages/zowe-explorer/__tests__/__unit__/dataset/actions.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/dataset/actions.unit.test.ts @@ -38,9 +38,11 @@ import * as fs from "fs"; import * as sharedUtils from "../../../src/shared/utils"; import { Profiles } from "../../../src/Profiles"; import * as utils from "../../../src/utils/ProfilesUtils"; - +import * as wsUtils from "../../../src/utils/workspace"; import { getNodeLabels } from "../../../src/dataset/utils"; import { ZoweLogger } from "../../../src/utils/LoggerUtils"; +import * as context from "../../../src/shared/context"; +import { ZoweExplorerApiRegister } from "../../../src/ZoweExplorerApiRegister"; // Missing the definition of path module, because I need the original logic for tests jest.mock("fs"); @@ -1393,30 +1395,39 @@ describe("Dataset Actions Unit Tests - Function saveFile", () => { commandResponse: "Rest API failure with HTTP(S) status 412", apiResponse: [], }); - mocked(zowe.Download.dataSet).mockResolvedValueOnce({ - success: true, - commandResponse: "", - apiResponse: { - etag: "", - }, - }); + mocked(vscode.window.withProgress).mockImplementation((progLocation, callback) => { return callback(); }); const profile = blockMocks.imperativeProfile; - const mainframeCodePage = 1047; - profile.profile.encoding = mainframeCodePage; + profile.profile.encoding = 1047; blockMocks.profileInstance.loadNamedProfile.mockReturnValueOnce(blockMocks.imperativeProfile); mocked(Profiles.getInstance).mockReturnValue(blockMocks.profileInstance); + Object.defineProperty(wsUtils, "markDocumentUnsaved", { + value: jest.fn(), + configurable: true, + }); + Object.defineProperty(context, "isTypeUssTreeNode", { + value: jest.fn().mockReturnValueOnce(false), + configurable: true, + }); + Object.defineProperty(ZoweExplorerApiRegister.getMvsApi, "getContents", { + value: jest.fn(), + configurable: true, + }); + const testDocument = createTextDocument("HLQ.TEST.AFILE", blockMocks.datasetSessionNode); (testDocument as any).fileName = path.join(globals.DS_DIR, testDocument.fileName); + const logSpy = jest.spyOn(ZoweLogger, "warn"); + const commandSpy = jest.spyOn(vscode.commands, "executeCommand"); await dsActions.saveFile(testDocument, blockMocks.testDatasetTree); - expect(mocked(Gui.warningMessage)).toBeCalledWith( - "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." - ); + expect(logSpy).toBeCalledWith("Remote file has changed. Presenting with way to resolve file."); expect(mocked(sharedUtils.concatChildNodes)).toBeCalled(); + expect(commandSpy).toBeCalledWith("workbench.files.action.compareWithSaved"); + logSpy.mockClear(); + commandSpy.mockClear(); }); }); diff --git a/packages/zowe-explorer/__tests__/__unit__/uss/actions.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/uss/actions.unit.test.ts index c4162ded7d..08b9c5e8b6 100644 --- a/packages/zowe-explorer/__tests__/__unit__/uss/actions.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/uss/actions.unit.test.ts @@ -37,6 +37,8 @@ import * as fs from "fs"; import { createUssApi, bindUssApi } from "../../../__mocks__/mockCreators/api"; import * as refreshActions from "../../../src/shared/refresh"; import { ZoweLogger } from "../../../src/utils/LoggerUtils"; +import * as wsUtils from "../../../src/utils/workspace"; +import * as context from "../../../src/shared/context"; function createGlobalMocks() { const globalMocks = { @@ -511,15 +513,26 @@ describe("USS Action Unit Tests - Function saveUSSFile", () => { globalMocks.withProgress.mockRejectedValueOnce(Error("Rest API failure with HTTP(S) status 412")); globalMocks.ussFile.mockResolvedValueOnce(downloadResponse); + Object.defineProperty(wsUtils, "markDocumentUnsaved", { + value: jest.fn(), + configurable: true, + }); + Object.defineProperty(context, "isTypeUssTreeNode", { + value: jest.fn().mockReturnValueOnce(true), + configurable: true, + }); + const logSpy = jest.spyOn(ZoweLogger, "warn"); + const commandSpy = jest.spyOn(vscode.commands, "executeCommand"); try { await ussNodeActions.saveUSSFile(blockMocks.testDoc, blockMocks.testUSSTree); } catch (e) { expect(e.message).toBe("vscode.Position is not a constructor"); } - expect(globalMocks.showWarningMessage.mock.calls[0][0]).toBe( - "Remote file has been modified in the meantime.\nSelect 'Compare' to resolve the conflict." - ); + expect(logSpy).toBeCalledWith("Remote file has changed. Presenting with way to resolve file."); + expect(commandSpy).toBeCalledWith("workbench.files.action.compareWithSaved"); + logSpy.mockClear(); + commandSpy.mockClear(); }); }); From c0a988a9a945137eda0037da0127170c8db15742 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 18:40:57 -0400 Subject: [PATCH 15/20] fix lint error Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer/src/shared/context.ts | 3 +-- packages/zowe-explorer/src/uss/actions.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/zowe-explorer/src/shared/context.ts b/packages/zowe-explorer/src/shared/context.ts index feb1b5faa3..6d47f0daa7 100644 --- a/packages/zowe-explorer/src/shared/context.ts +++ b/packages/zowe-explorer/src/shared/context.ts @@ -11,8 +11,7 @@ import * as globals from "../globals"; import { TreeItem } from "vscode"; -import { IZoweTreeNode } from "@zowe/zowe-explorer-api"; -import { IZoweUSSTreeNode } from "@zowe/zowe-explorer-api"; +import { IZoweTreeNode, IZoweUSSTreeNode } from "@zowe/zowe-explorer-api"; /** * diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index dad57a35b9..591a551a8d 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -319,7 +319,7 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo } } catch (err) { // TODO: error handling must not be zosmf specific - const errorMessage = err?.message ? err.message : err.toString(); + const errorMessage = err ? err.message : err.toString(); if (errorMessage.includes("Rest API failure with HTTP(S) status 412")) { // if (globals.ISTHEIA) { // willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); From 335a57363c362b0618de5fb2f53ab29fd12c0e3c Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 19:05:26 -0400 Subject: [PATCH 16/20] add CHANGELOG Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index 8a9975b702..ee784388f1 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen - Removed "/" characters in `path.join()` calls [#2172](https://github.com/zowe/vscode-extension-for-zowe/issues/2172) - Fixed issue where user was not able to view job spool file with the same DD name in different steps because of duplicated local file name. [#2279](https://github.com/zowe/vscode-extension-for-zowe/issues/2279) - Fixed issue where user was not able to view job spool file from jobs with duplicated step names because of duplicated local file name. [#2315](https://github.com/zowe/vscode-extension-for-zowe/issues/2315) +- Fixed an issue with mismatch etag error returned not triggering the compare editor and possible loss of data due to the issue. [#2277](https://github.com/zowe/vscode-extension-for-zowe/issues/2277) ## `2.8.2` From 6b4be2c8bab0da277cd43f1f3064c52a8b9c3604 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Thu, 1 Jun 2023 19:06:34 -0400 Subject: [PATCH 17/20] remove commented code Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer/src/dataset/actions.ts | 4 ---- packages/zowe-explorer/src/uss/actions.ts | 4 ---- 2 files changed, 8 deletions(-) diff --git a/packages/zowe-explorer/src/dataset/actions.ts b/packages/zowe-explorer/src/dataset/actions.ts index 952566736a..45b14d4201 100644 --- a/packages/zowe-explorer/src/dataset/actions.ts +++ b/packages/zowe-explorer/src/dataset/actions.ts @@ -1494,11 +1494,7 @@ export async function saveFile(doc: vscode.TextDocument, datasetProvider: api.IZ setFileSaved(true); } } else if (!uploadResponse.success && uploadResponse.commandResponse.includes("Rest API failure with HTTP(S) status 412")) { - // if (globals.ISTHEIA) { - // willForceUpload(node, doc, label, node ? node.getProfile() : profile); - // } else { await compareFileContent(doc, node, label, null, profile); - // } } else { await markDocumentUnsaved(doc); api.Gui.errorMessage(uploadResponse.commandResponse); diff --git a/packages/zowe-explorer/src/uss/actions.ts b/packages/zowe-explorer/src/uss/actions.ts index 591a551a8d..033bf20432 100644 --- a/packages/zowe-explorer/src/uss/actions.ts +++ b/packages/zowe-explorer/src/uss/actions.ts @@ -321,11 +321,7 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo // TODO: error handling must not be zosmf specific const errorMessage = err ? err.message : err.toString(); if (errorMessage.includes("Rest API failure with HTTP(S) status 412")) { - // if (globals.ISTHEIA) { - // willForceUpload(node, doc, remote, node.getProfile(), binary, returnEtag); - // } else { await compareFileContent(doc, node, null, binary); - // } } else { await markDocumentUnsaved(doc); await errorHandling(err, sesName); From 4612ec44a874603dea5807892f27132b9224209c Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Fri, 2 Jun 2023 07:34:55 -0400 Subject: [PATCH 18/20] copy edits in CHANGELOG Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/eslint-plugin-zowe-explorer/CHANGELOG.md | 2 ++ packages/zowe-explorer/CHANGELOG.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md index 98e0aa6f4a..f1e202e0dd 100644 --- a/packages/eslint-plugin-zowe-explorer/CHANGELOG.md +++ b/packages/eslint-plugin-zowe-explorer/CHANGELOG.md @@ -8,6 +8,8 @@ All notable changes to the "eslint-plugin-zowe-explorer" package will be documen ## `2.8.1` +### New features and enhancements + ### Bug fixes - Added `no-floating-promises` rule that ignores floating thenables without a `.catch` method. [#2291](https://github.com/zowe/vscode-extension-for-zowe/issues/2291) diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index ee784388f1..47c8780cd1 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -14,7 +14,7 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen - Removed "/" characters in `path.join()` calls [#2172](https://github.com/zowe/vscode-extension-for-zowe/issues/2172) - Fixed issue where user was not able to view job spool file with the same DD name in different steps because of duplicated local file name. [#2279](https://github.com/zowe/vscode-extension-for-zowe/issues/2279) - Fixed issue where user was not able to view job spool file from jobs with duplicated step names because of duplicated local file name. [#2315](https://github.com/zowe/vscode-extension-for-zowe/issues/2315) -- Fixed an issue with mismatch etag error returned not triggering the compare editor and possible loss of data due to the issue. [#2277](https://github.com/zowe/vscode-extension-for-zowe/issues/2277) +- Fixed an issue with mismatch etag error returned not triggering the diff editor and possible loss of data due to the issue. [#2277](https://github.com/zowe/vscode-extension-for-zowe/issues/2277) ## `2.8.2` From 7f03b0b7acfbbbdce9ac15db125473146f543569 Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Fri, 2 Jun 2023 08:29:26 -0400 Subject: [PATCH 19/20] fix error message for FTP to trigger diff view with mismatch etag Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer-ftp-extension/CHANGELOG.md | 2 ++ .../src/ZoweExplorerFtpMvsApi.ts | 8 +++----- .../src/ZoweExplorerFtpUssApi.ts | 5 +---- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/zowe-explorer-ftp-extension/CHANGELOG.md b/packages/zowe-explorer-ftp-extension/CHANGELOG.md index f74aec7d47..2079710797 100644 --- a/packages/zowe-explorer-ftp-extension/CHANGELOG.md +++ b/packages/zowe-explorer-ftp-extension/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be docum ### Bug fixes +- Fixed an issue with mismatch etag, correcting error message sent to Zowe Explorer to trigger diff editor. [#2312](https://github.com/zowe/vscode-extension-for-zowe/issues/2312) + ## `2.8.1` ### Bug fixes diff --git a/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpMvsApi.ts b/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpMvsApi.ts index 2f36a5d2fc..2bcde9dcc5 100644 --- a/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpMvsApi.ts +++ b/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpMvsApi.ts @@ -138,11 +138,9 @@ export class FtpMvsApi extends AbstractFtpApi implements ZoweExplorerApi.IMvs { if (options.returnEtag && options.etag) { const contentsTag = await this.getContentsTag(dataSetName); if (contentsTag && contentsTag !== options.etag) { - // TODO: extension.ts should not check for zosmf errors. - await Gui.errorMessage("Save conflict. Please pull the latest content from mainframe first.", { - logger: ZoweLogger, - }); - throw new Error(); + result.success = false; + result.commandResponse = "Rest API failure with HTTP(S) status 412 Save conflict."; + return result; } } const lrecl: number = dsAtrribute.apiResponse.items[0].lrecl; diff --git a/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpUssApi.ts b/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpUssApi.ts index f155a0fe4d..54915664c8 100644 --- a/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpUssApi.ts +++ b/packages/zowe-explorer-ftp-extension/src/ZoweExplorerFtpUssApi.ts @@ -130,10 +130,7 @@ export class FtpUssApi extends AbstractFtpApi implements ZoweExplorerApi.IUss { if (returnEtag && etag) { const contentsTag = await this.getContentsTag(ussFilePath); if (contentsTag && contentsTag !== etag) { - await Gui.errorMessage("Save conflict. Please pull the latest content from mainframe first.", { - logger: ZoweLogger, - }); - throw new Error(); + throw new Error("Rest API failure with HTTP(S) status 412 Save conflict."); } } await UssUtils.uploadFile(connection, ussFilePath, transferOptions); From ea8ae68b67db3f9405d04a98145a6202ae26d99e Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Fri, 2 Jun 2023 08:33:07 -0400 Subject: [PATCH 20/20] fix mistype in ftp CHANGELOG Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- packages/zowe-explorer-ftp-extension/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/zowe-explorer-ftp-extension/CHANGELOG.md b/packages/zowe-explorer-ftp-extension/CHANGELOG.md index 2079710797..ba8d342f17 100644 --- a/packages/zowe-explorer-ftp-extension/CHANGELOG.md +++ b/packages/zowe-explorer-ftp-extension/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be docum ### Bug fixes -- Fixed an issue with mismatch etag, correcting error message sent to Zowe Explorer to trigger diff editor. [#2312](https://github.com/zowe/vscode-extension-for-zowe/issues/2312) +- Fixed an issue with mismatch etag, correcting error message sent to Zowe Explorer to trigger diff editor. [#2277](https://github.com/zowe/vscode-extension-for-zowe/issues/2277) ## `2.8.1`