diff --git a/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/GenerationConfigurationConverter.java b/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/GenerationConfigurationConverter.java index 0ffa68832..5558a3bc8 100644 --- a/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/GenerationConfigurationConverter.java +++ b/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/GenerationConfigurationConverter.java @@ -7,6 +7,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.time.Year; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +22,7 @@ import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.OperationsMap; +import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.sap.cloud.sdk.datamodel.openapi.generator.model.ApiMaturity; import com.sap.cloud.sdk.datamodel.openapi.generator.model.GenerationConfiguration; @@ -49,7 +51,7 @@ class GenerationConfigurationConverter static final String SAP_COPYRIGHT_HEADER = "Copyright (c) " + Year.now() + " SAP SE or an SAP affiliate company. All rights reserved."; static final String TEMPLATE_DIRECTORY = Paths.get("openapi-generator").resolve("mustache-templates").toString(); - static final String LIBRARY_NAME = JavaClientCodegen.RESTTEMPLATE; + static final String LIBRARY_NAME = "resttemplate"; @Nonnull static ClientOptInput convertGenerationConfiguration( @@ -67,6 +69,9 @@ static ClientOptInput convertGenerationConfiguration( config.setTemplateDir(TEMPLATE_DIRECTORY); config.additionalProperties().putAll(getAdditionalProperties(generationConfiguration)); + final var operationIdNameMapping = getOperationIdNameMapping(generationConfiguration); + config.operationIdNameMapping().putAll(operationIdNameMapping); + final var clientOptInput = new ClientOptInput(); clientOptInput.config(config); clientOptInput.openAPI(parseOpenApiSpec(inputSpecFile)); @@ -96,6 +101,20 @@ public OperationsMap postProcessOperationsWithModels( }; } + private static Map getOperationIdNameMapping( @Nonnull final GenerationConfiguration config ) + { + var allowIds = config.getAdditionalProperties().get("operationIdNames"); + if( allowIds == null || allowIds.isBlank() ) { + return Collections.emptyMap(); + } + + // sanitized + allowIds = String.join(",", allowIds.trim().replaceAll(",?\\s+,?", ",")); + + // split to map, throw exception for duplicate keys or invalid strings + return Splitter.on(",").withKeyValueSeparator("=").split(allowIds); + } + private static void setGlobalSettings() { GlobalSettings.setProperty(CodegenConstants.APIS, "");