From ab20c6da0e22e804bd006c8fc97bb46cd9685e77 Mon Sep 17 00:00:00 2001 From: Kasper Helsted Date: Wed, 21 Jan 2026 11:32:29 +0100 Subject: [PATCH] fix: update encoding header handling in DsnGet and add corresponding test Signed-off-by: Kasper Helsted --- .../client/sdk/zosfiles/dsn/methods/DsnGet.java | 8 ++++++-- .../sdk/zosfiles/dsn/methods/DsnGetTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGet.java b/src/main/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGet.java index 7944e7567..b75cad4a6 100644 --- a/src/main/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGet.java +++ b/src/main/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGet.java @@ -139,8 +139,12 @@ public InputStream get(final String targetName, final DsnDownloadInputData downl value = ZosmfHeaders.HEADERS.get("X_IBM_BINARY").get(1); headers.put(key, value); } else if (downloadInputData.getEncoding().isPresent()) { - key = ZosmfHeaders.X_IBM_TEXT; - value = ZosmfHeaders.X_IBM_TEXT + ZosmfHeaders.X_IBM_TEXT_ENCODING + downloadInputData.getEncoding(); + key = ZosmfHeaders.HEADERS.get("X_IBM_TEXT").get(0); + value = String.format("%s%sIBM-%s", + ZosmfHeaders.HEADERS.get("X_IBM_TEXT").get(1), + ZosmfHeaders.HEADERS.get("X_IBM_TEXT_ENCODING").get(0), + downloadInputData.getEncoding().getAsLong() + ); headers.put(key, value); } diff --git a/src/test/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGetTest.java b/src/test/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGetTest.java index 189765541..53bcdd509 100644 --- a/src/test/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGetTest.java +++ b/src/test/java/zowe/client/sdk/zosfiles/dsn/methods/DsnGetTest.java @@ -106,6 +106,21 @@ public void tstDsnGetTokenWithMultipleParamsSuccess() throws ZosmfRequestExcepti assertEquals("https://1:443/zosmf/restfiles/ds/TEST.DATASET", mockGetRequestToken.getUrl()); } + @Test + public void tstDsnGetTokenWithOnlyEncodingParamsSuccess() throws ZosmfRequestException, IOException { + final DsnGet dsnGet = new DsnGet(connection, mockGetRequestToken); + final DsnDownloadInputData downloadInputData = new DsnDownloadInputData.Builder() + .encoding(1047L) + .build(); + final InputStream inputStream = dsnGet.get("TEST.DATASET", downloadInputData); + assertEquals("{X-IBM-Data-Type=text;fileEncoding=IBM-1047, " + + "Accept-Encoding=1047, X-CSRF-ZOSMF-HEADER=true, " + + "Content-Type=application/json}", + mockGetRequestToken.getHeaders().toString()); + assertEquals("test data", new String(inputStream.readAllBytes())); + assertEquals("https://1:443/zosmf/restfiles/ds/TEST.DATASET", mockGetRequestToken.getUrl()); + } + @Test public void tstDsnGetTokenWithMultipleParamsWithoutEncodingSuccess() throws ZosmfRequestException, IOException { final DsnGet dsnGet = new DsnGet(connection, mockGetRequestToken);