From 052fa74d560efd63c64c7892ac42c6234fc181e8 Mon Sep 17 00:00:00 2001 From: Roshin Rajan Panackal Date: Mon, 30 Mar 2026 18:02:44 +0200 Subject: [PATCH 1/3] first draft --- .../apache/petstore/api/DefaultApi.java | 115 ++++++++++-------- .../apache/sodastore/api/OrdersApi.java | 40 ++++-- .../apache/sodastore/api/SodasApi.java | 115 ++++++++++-------- .../openapi/apache/apiclient/BaseApi.java | 40 ++++++ .../libraries/apache-httpclient/api.mustache | 17 +++ .../apache-httpclient/operationBody.mustache | 2 +- .../services/builder/api/AwesomeSodaApi.java | 19 ++- .../services/builder/api/AwesomeSodasApi.java | 19 ++- .../sdk/services/builder/api/DefaultApi.java | 23 +++- .../api/AwesomeSodaApi.java | 15 ++- .../api/AwesomeSodasApi.java | 15 ++- .../api/DefaultApi.java | 19 ++- .../api/DefaultApi.java | 23 +++- .../services/inlineobject/api/DefaultApi.java | 15 ++- .../sdk/services/builder/api/DefaultApi.java | 19 ++- .../sdk/services/builder/api/OrdersApi.java | 15 ++- .../sdk/services/builder/api/SodasApi.java | 19 ++- 17 files changed, 389 insertions(+), 141 deletions(-) diff --git a/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/petstore/api/DefaultApi.java b/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/petstore/api/DefaultApi.java index 1e5c00ff0..ee94b0175 100644 --- a/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/petstore/api/DefaultApi.java +++ b/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/petstore/api/DefaultApi.java @@ -53,6 +53,21 @@ public DefaultApi( @Nonnull final ApiClient apiClient ) super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders + * Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public DefaultApi withDefaultHeaders( @Nonnull final Map defaultHeaders ) + { + final var api = new DefaultApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

*

@@ -97,19 +112,18 @@ public Pet addPet( @Nonnull final PetInput pet ) { }; - return apiClient - .invokeAPI( - localVarPath, - "POST", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - pet, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + pet, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** @@ -159,19 +173,18 @@ public OpenApiResponse deletePet( @Nonnull final Long id ) { }; - return apiClient - .invokeAPI( - localVarPath, - "DELETE", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - null, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "DELETE", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + null, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** @@ -221,19 +234,18 @@ public Pet findPetById( @Nonnull final Long id ) { }; - return apiClient - .invokeAPI( - localVarPath, - "GET", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - null, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + null, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** @@ -281,19 +293,18 @@ public List findPets( @Nullable final List tags, @Nullable final In { }; - return apiClient - .invokeAPI( - localVarPath, - "GET", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - null, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + null, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** diff --git a/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/OrdersApi.java b/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/OrdersApi.java index a0b7df0b4..ce275650c 100644 --- a/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/OrdersApi.java +++ b/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/OrdersApi.java @@ -50,6 +50,21 @@ public OrdersApi( @Nonnull final ApiClient apiClient ) super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders + * Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public OrdersApi withDefaultHeaders( @Nonnull final Map defaultHeaders ) + { + final var api = new OrdersApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

* Create a new order @@ -92,18 +107,17 @@ public Order ordersPost( @Nonnull final Order order ) { }; - return apiClient - .invokeAPI( - localVarPath, - "POST", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - order, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + order, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } } diff --git a/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/SodasApi.java b/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/SodasApi.java index 94272d5d6..94bbfe667 100644 --- a/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/SodasApi.java +++ b/datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/SodasApi.java @@ -52,6 +52,21 @@ public SodasApi( @Nonnull final ApiClient apiClient ) super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders + * Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public SodasApi withDefaultHeaders( @Nonnull final Map defaultHeaders ) + { + final var api = new SodasApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

* Download soda product data as binary @@ -100,19 +115,18 @@ public byte[] sodasDownloadIdGet( @Nonnull final Long id ) { }; - return apiClient - .invokeAPI( - localVarPath, - "GET", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - null, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + null, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** @@ -151,19 +165,18 @@ public List sodasGet() { }; - return apiClient - .invokeAPI( - localVarPath, - "GET", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - null, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + null, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** @@ -213,19 +226,18 @@ public SodaWithId sodasIdGet( @Nonnull final Long id ) { }; - return apiClient - .invokeAPI( - localVarPath, - "GET", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - null, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + null, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } /** @@ -274,18 +286,17 @@ public Soda sodasPut( @Nonnull final SodaWithId sodaWithId ) { }; - return apiClient - .invokeAPI( - localVarPath, - "PUT", - localVarQueryParams, - localVarCollectionQueryParams, - localVarQueryStringJoiner.toString(), - sodaWithId, - localVarHeaderParams, - localVarFormParams, - localVarAccept, - localVarContentType, - localVarReturnType); + return invokeAPI( + localVarPath, + "PUT", + localVarQueryParams, + localVarCollectionQueryParams, + localVarQueryStringJoiner.toString(), + sodaWithId, + localVarHeaderParams, + localVarFormParams, + localVarAccept, + localVarContentType, + localVarReturnType); } } diff --git a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java index d9bdec66a..0c964a55b 100644 --- a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java +++ b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java @@ -12,8 +12,14 @@ package com.sap.cloud.sdk.services.openapi.apache.apiclient; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import com.fasterxml.jackson.core.type.TypeReference; import com.sap.cloud.sdk.cloudplatform.connectivity.Destination; /** @@ -26,6 +32,8 @@ public abstract class BaseApi */ protected final ApiClient apiClient; + protected final Map defaultHeaders = new HashMap<>(); + /** * Creates a new BaseApi instance with default configuration. */ @@ -55,4 +63,36 @@ protected BaseApi( @Nonnull final ApiClient apiClient ) { this.apiClient = apiClient; } + + @Nonnull + protected T invokeAPI( + @Nonnull final String path, + @Nonnull final String method, + @Nullable final List queryParams, + @Nullable final List collectionQueryParams, + @Nullable final String urlQueryDeepObject, + @Nullable final Object body, + @Nonnull final Map headerParams, + @Nonnull final Map formParams, + @Nullable final String accept, + @Nonnull final String contentType, + @Nonnull final TypeReference returnType ) + { + + final var mergedHeaderParams = new HashMap<>(defaultHeaders); + mergedHeaderParams.putAll(headerParams); + return apiClient + .invokeAPI( + path, + method, + queryParams, + collectionQueryParams, + urlQueryDeepObject, + body, + mergedHeaderParams, + formParams, + accept, + contentType, + returnType); + } } diff --git a/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/api.mustache b/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/api.mustache index d1c442437..b8d3f2b97 100644 --- a/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/api.mustache +++ b/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/api.mustache @@ -91,8 +91,25 @@ public class {{classname}} extends BaseApi { { super(aiCoreService.getApiClient()); } + + private {{classname}}(@Nonnull final ApiClient apiClient) { + super(apiClient); + } {{/aiSdkConstructor}} + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public {{classname}} withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new {{classname}}(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + {{#operation}} {{#hasOptionalParams}} /** diff --git a/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/operationBody.mustache b/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/operationBody.mustache index dd83ac4c9..b7f63c56a 100644 --- a/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/operationBody.mustache +++ b/datamodel/openapi/openapi-generator/src/main/resources/openapi-generator/mustache-templates/libraries/apache-httpclient/operationBody.mustache @@ -75,7 +75,7 @@ final TypeReference<{{{returnType}}}> localVarReturnType = new TypeReference<{{{ final TypeReference localVarReturnType = new TypeReference() {}; {{/returnType}} -return apiClient.invokeAPI( +return invokeAPI( localVarPath, "{{httpMethod}}", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodaApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodaApi.java index 2feef4ee1..cb27eb98e 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodaApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodaApi.java @@ -55,6 +55,23 @@ public AwesomeSodaApi( @Nonnull final AiCoreService aiCoreService ) super(aiCoreService.getApiClient()); } + private AwesomeSodaApi(@Nonnull final ApiClient apiClient) { + super(apiClient); + } + + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public AwesomeSodaApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new AwesomeSodaApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Add a new soda to the store @@ -95,7 +112,7 @@ public Soda addSoda(@Nonnull final NewSoda newSoda) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "POST", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodasApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodasApi.java index 5f33c5144..1d27c70f1 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodasApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/AwesomeSodasApi.java @@ -54,6 +54,23 @@ public AwesomeSodasApi( @Nonnull final AiCoreService aiCoreService ) super(aiCoreService.getApiClient()); } + private AwesomeSodasApi(@Nonnull final ApiClient apiClient) { + super(apiClient); + } + + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public AwesomeSodasApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new AwesomeSodasApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Get a list of all sodas @@ -86,7 +103,7 @@ public List getSodas() throws OpenApiRequestException { final TypeReference> localVarReturnType = new TypeReference>() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java index b47b94f4c..4d15c8825 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-for-ai-sdk/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java @@ -55,6 +55,23 @@ public DefaultApi( @Nonnull final AiCoreService aiCoreService ) super(aiCoreService.getApiClient()); } + private DefaultApi(@Nonnull final ApiClient apiClient) { + super(apiClient); + } + + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public DefaultApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new DefaultApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Delete a specific soda from the store @@ -97,7 +114,7 @@ public OpenApiResponse deleteSodaById(@Nonnull final Long sodaId) throws OpenApi final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "DELETE", localVarQueryParams, @@ -153,7 +170,7 @@ public Soda getSodaById(@Nonnull final Long sodaId) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -217,7 +234,7 @@ public Soda updateSodaById(@Nonnull final Long sodaId, @Nonnull final UpdateSoda final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "PUT", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodaApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodaApi.java index 639a7a5f8..b7d42a1f3 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodaApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodaApi.java @@ -57,6 +57,19 @@ public AwesomeSodaApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public AwesomeSodaApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new AwesomeSodaApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Add a new soda to the store @@ -97,7 +110,7 @@ public Soda addSoda(@Nonnull final NewSoda newSoda) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "POST", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodasApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodasApi.java index 2db36f4d7..ad9ac1c9c 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodasApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/AwesomeSodasApi.java @@ -56,6 +56,19 @@ public AwesomeSodasApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public AwesomeSodasApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new AwesomeSodasApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Get a list of all sodas @@ -88,7 +101,7 @@ public List getSodas() throws OpenApiRequestException { final TypeReference> localVarReturnType = new TypeReference>() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java index 14c82e950..696deeac0 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-json/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java @@ -57,6 +57,19 @@ public DefaultApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public DefaultApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new DefaultApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Delete a specific soda from the store @@ -99,7 +112,7 @@ public OpenApiResponse deleteSodaById(@Nonnull final Long sodaId) throws OpenApi final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "DELETE", localVarQueryParams, @@ -155,7 +168,7 @@ public Soda getSodaById(@Nonnull final Long sodaId) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -219,7 +232,7 @@ public Soda updateSodaById(@Nonnull final Long sodaId, @Nonnull final UpdateSoda final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "PUT", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-yaml/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-yaml/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java index ff1a6201a..32ce1cde4 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-yaml/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/api-class-vendor-extension-yaml/output/com/sap/cloud/sdk/services/apiclassvendorextension/api/DefaultApi.java @@ -58,6 +58,19 @@ public DefaultApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public DefaultApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new DefaultApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Add a new soda to the store @@ -98,7 +111,7 @@ public Soda addSoda(@Nonnull final NewSoda newSoda) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "POST", localVarQueryParams, @@ -154,7 +167,7 @@ public OpenApiResponse deleteSodaById(@Nonnull final Long sodaId) throws OpenApi final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "DELETE", localVarQueryParams, @@ -210,7 +223,7 @@ public Soda getSodaById(@Nonnull final Long sodaId) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -256,7 +269,7 @@ public List getSodas() throws OpenApiRequestException { final TypeReference> localVarReturnType = new TypeReference>() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -320,7 +333,7 @@ public Soda updateSodaById(@Nonnull final Long sodaId, @Nonnull final UpdateSoda final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "PUT", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/inlineobject-schemas-enabled/output/com/sap/cloud/sdk/services/inlineobject/api/DefaultApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/inlineobject-schemas-enabled/output/com/sap/cloud/sdk/services/inlineobject/api/DefaultApi.java index 3cf20579e..71e08e2b4 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/inlineobject-schemas-enabled/output/com/sap/cloud/sdk/services/inlineobject/api/DefaultApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/inlineobject-schemas-enabled/output/com/sap/cloud/sdk/services/inlineobject/api/DefaultApi.java @@ -59,6 +59,19 @@ public DefaultApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public DefaultApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new DefaultApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Get details of a specific soda @@ -102,7 +115,7 @@ public Soda getSodaById(@Nonnull final Long sodaId) throws OpenApiRequestExcepti final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/partial-generation/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/partial-generation/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java index 554cef3e0..cbe42c31b 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/partial-generation/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/partial-generation/output/com/sap/cloud/sdk/services/builder/api/DefaultApi.java @@ -58,6 +58,19 @@ public DefaultApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public DefaultApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new DefaultApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Delete a specific soda from the store @@ -100,7 +113,7 @@ public OpenApiResponse deleteSodaById(@Nonnull final Long sodaId) throws OpenApi final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "DELETE", localVarQueryParams, @@ -156,7 +169,7 @@ public SodaWithFoo getSodaById(@Nonnull final Long sodaId) throws OpenApiRequest final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -220,7 +233,7 @@ public Soda updateSodaById(@Nonnull final Long sodaId, @Nonnull final UpdateSoda final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "PUT", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/OrdersApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/OrdersApi.java index 2f94d3813..77d4f3a2a 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/OrdersApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/OrdersApi.java @@ -56,6 +56,19 @@ public OrdersApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public OrdersApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new OrdersApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Create a new order @@ -96,7 +109,7 @@ public Order get(@Nonnull final Order order) throws OpenApiRequestException { final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "POST", localVarQueryParams, diff --git a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/SodasApi.java b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/SodasApi.java index d3dedf9c6..de1275224 100644 --- a/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/SodasApi.java +++ b/datamodel/openapi/openapi-generator/src/test/resources/DataModelGeneratorApacheIntegrationTest/remove-operation-id-prefix/output/com/sap/cloud/sdk/services/builder/api/SodasApi.java @@ -57,6 +57,19 @@ public SodasApi(@Nonnull final ApiClient apiClient) { super(apiClient); } + /** + * Creates a new API instance with additional default headers. + * + * @param defaultHeaders Additional headers to include in all requests + * @return A new API instance with the combined headers + */ + public SodasApi withDefaultHeaders(@Nonnull final Map defaultHeaders) { + final var api = new SodasApi(apiClient); + api.defaultHeaders.putAll(this.defaultHeaders); + api.defaultHeaders.putAll(defaultHeaders); + return api; + } + /** *

Get all soda products @@ -89,7 +102,7 @@ public List get() throws OpenApiRequestException { final TypeReference> localVarReturnType = new TypeReference>() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -145,7 +158,7 @@ public SodaWithId sodasIdGet(@Nonnull final Long id) throws OpenApiRequestExcept final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "GET", localVarQueryParams, @@ -201,7 +214,7 @@ public Soda sodasPut(@Nonnull final SodaWithId sodaWithId) throws OpenApiRequest final TypeReference localVarReturnType = new TypeReference() {}; - return apiClient.invokeAPI( + return invokeAPI( localVarPath, "PUT", localVarQueryParams, From 0ec799b6f70154a68667360cecbbba0ba6426279 Mon Sep 17 00:00:00 2001 From: Roshin Rajan Panackal Date: Mon, 30 Mar 2026 18:10:50 +0200 Subject: [PATCH 2/3] Fix javadoc --- .../openapi/apache/apiclient/BaseApi.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java index 0c964a55b..94c45d831 100644 --- a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java +++ b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.sap.cloud.sdk.cloudplatform.connectivity.Destination; +import com.sap.cloud.sdk.services.openapi.apache.core.OpenApiRequestException; /** * Base class for generated API classes, providing common functionality for API client management. @@ -64,6 +65,37 @@ protected BaseApi( @Nonnull final ApiClient apiClient ) this.apiClient = apiClient; } + /** + * Invoke API by sending HTTP request with the given options. + * + * @param + * Type + * @param path + * The sub-path of the HTTP URL + * @param method + * The request method, one of "GET", "POST", "PUT", and "DELETE" + * @param queryParams + * The query parameters + * @param collectionQueryParams + * The collection query parameters + * @param urlQueryDeepObject + * A URL query string for deep object parameters + * @param body + * The request body object - if it is not binary, otherwise null + * @param headerParams + * The header parameters + * @param formParams + * The form parameters + * @param accept + * The request's Accept header + * @param contentType + * The request's Content-Type header + * @param returnType + * Return type + * @return The response body in type of string + * @throws OpenApiRequestException + * API exception + */ @Nonnull protected T invokeAPI( @Nonnull final String path, From 3e3cef19b5d283811361695fd39915056d96e5be Mon Sep 17 00:00:00 2001 From: Roshin Rajan Panackal Date: Mon, 30 Mar 2026 18:26:02 +0200 Subject: [PATCH 3/3] More javadoc --- .../cloud/sdk/services/openapi/apache/apiclient/BaseApi.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java index 94c45d831..b502fa77e 100644 --- a/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java +++ b/datamodel/openapi/openapi-core-apache/src/main/java/com/sap/cloud/sdk/services/openapi/apache/apiclient/BaseApi.java @@ -33,6 +33,9 @@ public abstract class BaseApi */ protected final ApiClient apiClient; + /** + * Default headers to be included in every request. + */ protected final Map defaultHeaders = new HashMap<>(); /**