From e95aac789d4aab24c244612b3f6be9579b47a81b Mon Sep 17 00:00:00 2001 From: I538344 Date: Wed, 4 Mar 2026 10:56:04 +0100 Subject: [PATCH 1/3] feat: [OpenAPI] GZIP encoding --- .../openapi/apache/apiclient/ApiClient.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java index 9c41962c0..8f5170190 100644 --- a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java +++ b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java @@ -15,6 +15,7 @@ import static com.sap.cloud.sdk.services.openapi.apache.apiclient.DefaultApiResponseHandler.isJsonMime; import static lombok.AccessLevel.PRIVATE; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URLEncoder; @@ -28,6 +29,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.zip.GZIPOutputStream; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -68,6 +70,7 @@ import lombok.Getter; import lombok.ToString; import lombok.With; +import lombok.val; /** * API client for executing HTTP requests using Apache HttpClient 5. @@ -560,7 +563,11 @@ public T invokeAPI( if( body != null || !formParams.isEmpty() ) { if( isBodyAllowed(Method.valueOf(method)) ) { // Add entity if we have content and a valid method - builder.setEntity(serialize(body, formParams, contentTypeObj)); + if( "gzip".equals(headerParams.get("Content-Encoding")) ) { + builder.setEntity(serializeGzip(body, contentTypeObj)); + } else { + builder.setEntity(serialize(body, formParams, contentTypeObj)); + } } else { throw new OpenApiRequestException("method " + method + " does not support a request body"); } @@ -578,4 +585,16 @@ public T invokeAPI( throw new OpenApiRequestException(e); } } + + private HttpEntity serializeGzip( Object body, ContentType contentType ) + { + val outputStream = new ByteArrayOutputStream(); + try( val gzip = new GZIPOutputStream(outputStream) ) { + gzip.write(objectMapper.writeValueAsBytes(body)); + } + catch( IOException e ) { + throw new OpenApiRequestException(e); + } + return new ByteArrayEntity(outputStream.toByteArray(), contentType.withCharset(StandardCharsets.UTF_8)); + } } From 660fd54b34e6f6e623dcb5bc61634fb6194c2b0d Mon Sep 17 00:00:00 2001 From: I538344 Date: Wed, 4 Mar 2026 11:07:15 +0100 Subject: [PATCH 2/3] PMD --- .../cloud/sdk/services/openapi/apache/apiclient/ApiClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java index 8f5170190..587ee9899 100644 --- a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java +++ b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java @@ -586,7 +586,7 @@ public T invokeAPI( } } - private HttpEntity serializeGzip( Object body, ContentType contentType ) + private HttpEntity serializeGzip( final Object body, final ContentType contentType ) { val outputStream = new ByteArrayOutputStream(); try( val gzip = new GZIPOutputStream(outputStream) ) { From d197730295244ce6470eb1953e847720d006f278 Mon Sep 17 00:00:00 2001 From: I538344 Date: Wed, 4 Mar 2026 11:14:09 +0100 Subject: [PATCH 3/3] Better if --- .../services/openapi/apache/apiclient/ApiClient.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java index 587ee9899..a90826000 100644 --- a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java +++ b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/ApiClient.java @@ -563,11 +563,11 @@ public T invokeAPI( if( body != null || !formParams.isEmpty() ) { if( isBodyAllowed(Method.valueOf(method)) ) { // Add entity if we have content and a valid method - if( "gzip".equals(headerParams.get("Content-Encoding")) ) { - builder.setEntity(serializeGzip(body, contentTypeObj)); - } else { - builder.setEntity(serialize(body, formParams, contentTypeObj)); - } + builder + .setEntity( + "gzip".equals(headerParams.get("Content-Encoding")) + ? serializeGzip(body, contentTypeObj) + : serialize(body, formParams, contentTypeObj)); } else { throw new OpenApiRequestException("method " + method + " does not support a request body"); }