diff --git a/bin/configs/csharp-restsharp-name-mappings.yaml b/bin/configs/csharp-restsharp-net6.0-name-mappings.yaml similarity index 90% rename from bin/configs/csharp-restsharp-name-mappings.yaml rename to bin/configs/csharp-restsharp-net6.0-name-mappings.yaml index 6e87c97a2e0..56af6a800cb 100644 --- a/bin/configs/csharp-restsharp-name-mappings.yaml +++ b/bin/configs/csharp-restsharp-net6.0-name-mappings.yaml @@ -10,6 +10,9 @@ parameterNameMappings: _type: UnderscoreType type_: TypeWithUnderscore http_debug_operation: HttpDebugOperation +modelNameMappings: + Environment: Env additionalProperties: packageGuid: '{321C8C3F-0156-40C1-AE42-D59761FB9B6C}' hideGenerationTimestamp: "true" + targetFramework: net6.0 diff --git a/docs/customization.md b/docs/customization.md index 72522ee48bf..ea91e18c4bc 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -416,7 +416,16 @@ Here is an example to use `nameMappings` and `parameterNameMapping` in CLI: java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml -o /tmp/java2/ --name-mappings _type=underscoreType, type_=typeWithUnderscore, --parameter-name-mappings _type=paramType, type_=typeParam ``` -(Not all generators support this feature yet. Please give it a try to confirm the behaviour and open an issue (ticket) to let us know which generators you would like to have this feature enabled and we'll prioritize accordingly.) +To map model names, use `modelNameMappings` option, e.g. +```sh +java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g csharp -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/csharp/ --model-name-mappings Tag=Label +``` +will rename the Tag schema to Label instead. + + +(Not all generators support thess features yet. Please give it a try to confirm the behaviour and open an issue (ticket) to let us know which generators you would like to have this feature enabled and we'll prioritize accordingly.) + +Related PRs: #16209 (modelNameMappings), #16194, #16206 (nameMappings, parameterNameMappings) ## Schema Mapping diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java index 2871642347a..fd379374fba 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java @@ -86,6 +86,9 @@ public class ConfigHelp extends OpenApiGeneratorCommand { @Option(name = {"--parameter-name-mappings"}, title = "parameter name mappings", description = "displays the parameter name mappings (none)") private Boolean parameterNameMappings; + @Option(name = {"--model-name-mappings"}, title = "model name mappings", description = "displays the model name mappings (none)") + private Boolean modelNameMappings; + @Option(name = {"--openapi-normalizer"}, title = "openapi normalizer rules", description = "displays the OpenAPI normalizer rules (none)") private Boolean openapiNormalizer; @@ -527,6 +530,18 @@ public class ConfigHelp extends OpenApiGeneratorCommand { sb.append(newline); } + if (Boolean.TRUE.equals(modelNameMappings)) { + sb.append(newline).append("MODEL NAME MAPPING").append(newline).append(newline); + Map map = config.modelNameMapping() + .entrySet() + .stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> { + throw new IllegalStateException(String.format(Locale.ROOT, "Duplicated options! %s and %s", a, b)); + }, TreeMap::new)); + writePlainTextFromMap(sb, map, optIndent, optNestedIndent, "model name", "Mapped to"); + sb.append(newline); + } + if (Boolean.TRUE.equals(openapiNormalizer)) { sb.append(newline).append("OPENAPI NORMALIZER RULES").append(newline).append(newline); Map map = config.openapiNormalizer() diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java index c64e44757c4..7d4ed09e27b 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java @@ -202,6 +202,13 @@ public class Generate extends OpenApiGeneratorCommand { + " You can also have multiple occurrences of this option.") private List parameterNameMappings = new ArrayList<>(); + @Option( + name = {"--model-name-mappings"}, + title = "model name mappings", + description = "specifies mappings between the model name and the new name in the format of model_name=AnotherName,model_name2=OtherName2." + + " You can also have multiple occurrences of this option.") + private List modelNameMappings = new ArrayList<>(); + @Option( name = {"--openapi-normalizer"}, title = "OpenAPI normalizer rules", @@ -484,6 +491,7 @@ public class Generate extends OpenApiGeneratorCommand { applyInlineSchemaOptionsKvpList(inlineSchemaOptions, configurator); applyNameMappingsKvpList(nameMappings, configurator); applyParameterNameMappingsKvpList(parameterNameMappings, configurator); + applyModelNameMappingsKvpList(modelNameMappings, configurator); applyOpenAPINormalizerKvpList(openapiNormalizer, configurator); applyTypeMappingsKvpList(typeMappings, configurator); applyAdditionalPropertiesKvpList(additionalProperties, configurator); diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java index 4b5b41dd1be..3aaaccf1633 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java @@ -55,6 +55,7 @@ public final class GeneratorSettings implements Serializable { private final Map inlineSchemaOptions; private final Map nameMappings; private final Map parameterNameMappings; + private final Map modelNameMappings; private final Map openapiNormalizer; private final Set languageSpecificPrimitives; private final Map reservedWordsMappings; @@ -285,6 +286,15 @@ public final class GeneratorSettings implements Serializable { return parameterNameMappings; } + /** + * Gets model name mappings between a model name and the new name. + * + * @return the model name mappings + */ + public Map getModelNameMappings() { + return modelNameMappings; + } + /** * Gets OpenAPI normalizer rules * @@ -414,6 +424,7 @@ public final class GeneratorSettings implements Serializable { inlineSchemaOptions = Collections.unmodifiableMap(builder.inlineSchemaOptions); nameMappings = Collections.unmodifiableMap(builder.nameMappings); parameterNameMappings = Collections.unmodifiableMap(builder.parameterNameMappings); + modelNameMappings = Collections.unmodifiableMap(builder.modelNameMappings); openapiNormalizer = Collections.unmodifiableMap(builder.openapiNormalizer); languageSpecificPrimitives = Collections.unmodifiableSet(builder.languageSpecificPrimitives); reservedWordsMappings = Collections.unmodifiableMap(builder.reservedWordsMappings); @@ -490,6 +501,7 @@ public final class GeneratorSettings implements Serializable { inlineSchemaOptions = Collections.unmodifiableMap(new HashMap<>(0)); nameMappings = Collections.unmodifiableMap(new HashMap<>(0)); parameterNameMappings = Collections.unmodifiableMap(new HashMap<>(0)); + modelNameMappings = Collections.unmodifiableMap(new HashMap<>(0)); openapiNormalizer = Collections.unmodifiableMap(new HashMap<>(0)); languageSpecificPrimitives = Collections.unmodifiableSet(new HashSet<>(0)); reservedWordsMappings = Collections.unmodifiableMap(new HashMap<>(0)); @@ -557,6 +569,9 @@ public final class GeneratorSettings implements Serializable { if (copy.getParameterNameMappings() != null) { builder.parameterNameMappings.putAll(copy.getParameterNameMappings()); } + if (copy.getModelNameMappings() != null) { + builder.modelNameMappings.putAll(copy.getModelNameMappings()); + } if (copy.getOpenAPINormalizer() != null) { builder.openapiNormalizer.putAll(copy.getOpenAPINormalizer()); } @@ -604,6 +619,7 @@ public final class GeneratorSettings implements Serializable { private Map inlineSchemaOptions; private Map nameMappings; private Map parameterNameMappings; + private Map modelNameMappings; private Map openapiNormalizer; private Set languageSpecificPrimitives; private Map reservedWordsMappings; @@ -627,6 +643,7 @@ public final class GeneratorSettings implements Serializable { inlineSchemaOptions = new HashMap<>(); nameMappings = new HashMap<>(); parameterNameMappings = new HashMap<>(); + modelNameMappings = new HashMap<>(); openapiNormalizer = new HashMap<>(); languageSpecificPrimitives = new HashSet<>(); reservedWordsMappings = new HashMap<>(); @@ -1000,6 +1017,32 @@ public final class GeneratorSettings implements Serializable { return this; } + /** + * Sets the {@code modelNameMappings} and returns a reference to this Builder so that the methods can be chained together. + * + * @param modelNameMappings the {@code modelNameMappings} to set + * @return a reference to this Builder + */ + public Builder withModelNameMappings(Map modelNameMappings) { + this.modelNameMappings = modelNameMappings; + return this; + } + + /** + * Sets a single {@code modelNameMappings} and returns a reference to this Builder so that the methods can be chained together. + * + * @param key A key for the name mapping + * @param value The value of name mapping + * @return a reference to this Builder + */ + public Builder withModelNameMapping(String key, String value) { + if (this.modelNameMappings == null) { + this.modelNameMappings = new HashMap<>(); + } + this.modelNameMappings.put(key, value); + return this; + } + /** * Sets the {@code openapiNormalizer} and returns a reference to this Builder so that the methods can be chained together. * @@ -1216,6 +1259,7 @@ public final class GeneratorSettings implements Serializable { Objects.equals(getInlineSchemaOptions(), that.getInlineSchemaOptions()) && Objects.equals(getNameMappings(), that.getNameMappings()) && Objects.equals(getParameterNameMappings(), that.getParameterNameMappings()) && + Objects.equals(getModelNameMappings(), that.getModelNameMappings()) && Objects.equals(getOpenAPINormalizer(), that.getOpenAPINormalizer()) && Objects.equals(getLanguageSpecificPrimitives(), that.getLanguageSpecificPrimitives()) && Objects.equals(getReservedWordsMappings(), that.getReservedWordsMappings()) && @@ -1250,6 +1294,7 @@ public final class GeneratorSettings implements Serializable { getInlineSchemaOptions(), getNameMappings(), getParameterNameMappings(), + getModelNameMappings(), getOpenAPINormalizer(), getLanguageSpecificPrimitives(), getReservedWordsMappings(), diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt index 76c89b263e1..04e654942b6 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt @@ -177,6 +177,11 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { */ val parameterNameMappings = project.objects.mapProperty() + /** + * Specifies mappings between a model name and the new name + */ + val modelNameMappings = project.objects.mapProperty() + /** * Specifies mappings (rules) in OpenAPI normalizer */ diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt index a4fa91b375f..bb2380d0a61 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt @@ -286,6 +286,13 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac @Input val parameterNameMappings = project.objects.mapProperty() + /** + * Specifies mappings between the model name and the new name + */ + @Optional + @Input + val modelNameMappings = project.objects.mapProperty() + /** * Specifies mappings (rules) in OpenAPI normalizer */ @@ -833,6 +840,12 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac } } + if (modelNameMappings.isPresent) { + modelNameMappings.get().forEach { entry -> + configurator.addModelNameMapping(entry.key, entry.value) + } + } + if (openapiNormalizer.isPresent) { openapiNormalizer.get().forEach { entry -> configurator.addOpenAPINormalizer(entry.key, entry.value) diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index d887357349f..b45318b9f85 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -344,6 +344,12 @@ public class CodeGenMojo extends AbstractMojo { @Parameter(name = "parameterNameMappings", property = "openapi.generator.maven.plugin.parameterNameMappings") private List parameterNameMappings; + /** + * A map of model names and the new names + */ + @Parameter(name = "modelNameMappings", property = "openapi.generator.maven.plugin.modelNameMappings") + private List modelNameMappings; + /** * A set of rules for OpenAPI normalizer */ @@ -823,6 +829,11 @@ public class CodeGenMojo extends AbstractMojo { applyParameterNameMappingsKvpList(parameterNameMappings, configurator); } + // Apply Model Name Mappings + if (modelNameMappings != null && (configOptions == null || !configOptions.containsKey("model-name-mappings"))) { + applyModelNameMappingsKvpList(modelNameMappings, configurator); + } + // Apply OpenAPI normalizer rules if (openapiNormalizer != null && (configOptions == null || !configOptions.containsKey("openapi-normalizer"))) { applyOpenAPINormalizerKvpList(openapiNormalizer, configurator); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index 5bcd76b7375..0b0b3b8a887 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -151,6 +151,8 @@ public interface CodegenConfig { Map parameterNameMapping(); + Map modelNameMapping(); + Map openapiNormalizer(); Map apiTemplateFiles(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index a412b96eb70..082f378c695 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -168,6 +168,8 @@ public class DefaultCodegen implements CodegenConfig { protected Map nameMapping = new HashMap<>(); // a map to store the mapping between parameter name and the name provided by the user protected Map parameterNameMapping = new HashMap<>(); + // a map to store the mapping between model name and the name provided by the user + protected Map modelNameMapping = new HashMap<>(); // a map to store the rules in OpenAPI Normalizer protected Map openapiNormalizer = new HashMap<>(); protected String modelPackage = "", apiPackage = "", fileSuffix; @@ -1213,6 +1215,11 @@ public class DefaultCodegen implements CodegenConfig { return parameterNameMapping; } + @Override + public Map modelNameMapping() { + return modelNameMapping; + } + @Override public Map openapiNormalizer() { return openapiNormalizer; @@ -2616,6 +2623,11 @@ public class DefaultCodegen implements CodegenConfig { */ @Override public String toModelName(final String name) { + // obtain the name from modelNameMapping directly if provided + if (modelNameMapping.containsKey(name)) { + return modelNameMapping.get(name); + } + if (schemaKeyToModelNameCache.containsKey(name)) { return schemaKeyToModelNameCache.get(name); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java index c2268ab79eb..f494204a184 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java @@ -73,6 +73,7 @@ public class CodegenConfigurator { private Map inlineSchemaOptions = new HashMap<>(); private Map nameMappings = new HashMap<>(); private Map parameterNameMappings = new HashMap<>(); + private Map modelNameMappings = new HashMap<>(); private Map openapiNormalizer = new HashMap<>(); private Set languageSpecificPrimitives = new HashSet<>(); private Map reservedWordsMappings = new HashMap<>(); @@ -132,6 +133,9 @@ public class CodegenConfigurator { if(generatorSettings.getParameterNameMappings() != null) { configurator.parameterNameMappings.putAll(generatorSettings.getParameterNameMappings()); } + if(generatorSettings.getModelNameMappings() != null) { + configurator.modelNameMappings.putAll(generatorSettings.getModelNameMappings()); + } if(generatorSettings.getOpenAPINormalizer() != null) { configurator.openapiNormalizer.putAll(generatorSettings.getOpenAPINormalizer()); } @@ -234,6 +238,12 @@ public class CodegenConfigurator { return this; } + public CodegenConfigurator addModelNameMapping(String key, String value) { + this.modelNameMappings.put(key, value); + generatorSettingsBuilder.withModelNameMapping(key, value); + return this; + } + public CodegenConfigurator addOpenAPINormalizer(String key, String value) { this.openapiNormalizer.put(key, value); generatorSettingsBuilder.withOpenAPINormalizer(key, value); @@ -424,6 +434,12 @@ public class CodegenConfigurator { return this; } + public CodegenConfigurator setModelNameMappings(Map modelNameMappings) { + this.modelNameMappings = modelNameMappings; + generatorSettingsBuilder.withModelNameMappings(modelNameMappings); + return this; + } + public CodegenConfigurator setOpenAPINormalizer(Map openapiNormalizer) { this.openapiNormalizer = openapiNormalizer; generatorSettingsBuilder.withOpenAPINormalizer(openapiNormalizer); @@ -711,6 +727,7 @@ public class CodegenConfigurator { config.inlineSchemaOption().putAll(generatorSettings.getInlineSchemaOptions()); config.nameMapping().putAll(generatorSettings.getNameMappings()); config.parameterNameMapping().putAll(generatorSettings.getParameterNameMappings()); + config.modelNameMapping().putAll(generatorSettings.getModelNameMappings()); config.openapiNormalizer().putAll(generatorSettings.getOpenAPINormalizer()); config.languageSpecificPrimitives().addAll(generatorSettings.getLanguageSpecificPrimitives()); config.reservedWordsMappings().putAll(generatorSettings.getReservedWordsMappings()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java index 32c921c7f7c..c6a871b7c42 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java @@ -146,6 +146,19 @@ public final class CodegenConfiguratorUtils { } } + public static void applyModelNameMappingsKvpList(List modelNameMappings, CodegenConfigurator configurator) { + for (String propString : modelNameMappings) { + applyModelNameMappingsKvp(propString, configurator); + } + } + + public static void applyModelNameMappingsKvp(String modelNameMappings, CodegenConfigurator configurator) { + final Map map = createMapFromKeyValuePairs(modelNameMappings); + for (Map.Entry entry : map.entrySet()) { + configurator.addModelNameMapping(entry.getKey().trim(), entry.getValue().trim()); + } + } + public static void applyOpenAPINormalizerKvpList(List openapiNormalizer, CodegenConfigurator configurator) { for (String propString : openapiNormalizer) { applyOpenAPINormalizerKvp(propString, configurator); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index a37f70e7b34..fac84740841 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -521,10 +521,10 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co // GrandparentAnimal has a discriminator, but no oneOf nor anyOf // modules\openapi-generator\src\test\resources\3_0\csharp\petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml model.setHasDiscriminatorWithNonEmptyMapping( - ((model.anyOf != null && model.anyOf.size() > 0) || (model.anyOf != null &&model.oneOf.size() > 0)) && - model.discriminator != null && - model.discriminator.getMappedModels() != null && - model.discriminator.getMappedModels().size() > 0); + ((model.anyOf != null && model.anyOf.size() > 0) || (model.anyOf != null && model.oneOf.size() > 0)) && + model.discriminator != null && + model.discriminator.getMappedModels() != null && + model.discriminator.getMappedModels().size() > 0); if (model.isEnum) { enumRefs.put(model.getClassname(), model); @@ -539,7 +539,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co if (composedSchemas != null) { List allOf = composedSchemas.getAllOf(); if (allOf != null) { - for(CodegenProperty property : allOf) { + for (CodegenProperty property : allOf) { property.name = patchPropertyName(model, property.baseType); patchPropertyVendorExtensinos(property); } @@ -548,7 +548,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co List anyOf = composedSchemas.getAnyOf(); if (anyOf != null) { removePropertiesDeclaredInComposedTypes(objs, model, anyOf); - for(CodegenProperty property : anyOf) { + for (CodegenProperty property : anyOf) { property.name = patchPropertyName(model, property.baseType); property.isNullable = true; patchPropertyVendorExtensinos(property); @@ -558,7 +558,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co List oneOf = composedSchemas.getOneOf(); if (oneOf != null) { removePropertiesDeclaredInComposedTypes(objs, model, oneOf); - for(CodegenProperty property : oneOf) { + for (CodegenProperty property : oneOf) { property.name = patchPropertyName(model, property.baseType); property.isNullable = true; patchPropertyVendorExtensinos(property); @@ -598,10 +598,10 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } /** - * Returns true if the model contains any properties with a public setter - * If true, the model's constructor accessor should be made public to ensure end users - * can instantiate the object. If false, then the model is only ever given - * to us by the server, so we do not need a public constructor + * Returns true if the model contains any properties with a public setter + * If true, the model's constructor accessor should be made public to ensure end users + * can instantiate the object. If false, then the model is only ever given + * to us by the server, so we do not need a public constructor */ private boolean modelIsMutatable(CodegenModel model, Set processed) { if (processed == null) { @@ -850,14 +850,18 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } } - /** Returns the model related to the given parameter */ + /** + * Returns the model related to the given parameter + */ private CodegenModel getModelFromParameter(List allModels, CodegenParameter parameter) { return parameter.isModel - ? allModels.stream().map(m -> m.getModel()).filter(m -> m.getClassname().equals(parameter.dataType)).findFirst().orElse(null) - : null; + ? allModels.stream().map(m -> m.getModel()).filter(m -> m.getClassname().equals(parameter.dataType)).findFirst().orElse(null) + : null; } - /** This is the same as patchVendorExtensionNullableValueType except it uses the deprecated getNullableTypes property */ + /** + * This is the same as patchVendorExtensionNullableValueType except it uses the deprecated getNullableTypes property + */ protected void patchVendorExtensionNullableValueTypeLegacy(CodegenParameter parameter) { if (parameter.isNullable && !parameter.isContainer && (this.getNullableTypes().contains(parameter.dataType) || parameter.isEnum)) { parameter.vendorExtensions.put("x-nullable-value-type", true); @@ -1021,8 +1025,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co name = this.escapeReservedWord(name); return name.equalsIgnoreCase(model.getClassname()) - ? this.invalidNamePrefix + camelize(name) - : name; + ? this.invalidNamePrefix + camelize(name) + : name; } @Override @@ -1046,8 +1050,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co @Override public String toExampleValue(Schema p) { return p.getExample() == null - ? null - : p.getExample().toString(); + ? null + : p.getExample().toString(); } /** @@ -1176,6 +1180,11 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co @Override public String toModelName(String name) { + // obtain the name from modelNameMapping directly if provided + if (modelNameMapping.containsKey(name)) { + return modelNameMapping.get(name); + } + // We need to check if schema-mapping has a different model for this class, so we use it // instead of the auto-generated one. if (schemaMapping.containsKey(name)) { diff --git a/modules/openapi-generator/src/test/resources/3_0/name-parameter-mappings.yaml b/modules/openapi-generator/src/test/resources/3_0/name-parameter-mappings.yaml index 35830d7824f..bcbe90b2dfe 100644 --- a/modules/openapi-generator/src/test/resources/3_0/name-parameter-mappings.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/name-parameter-mappings.yaml @@ -42,8 +42,16 @@ paths: responses: 200: description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' components: schemas: + Environment: + properties: + dummy: + type: string PropertyNameMapping: properties: http_debug_operation: diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/.openapi-generator/FILES b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/.openapi-generator/FILES index 6c5ad7b08bd..7ba297eae0f 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/.openapi-generator/FILES @@ -3,6 +3,7 @@ Org.OpenAPITools.sln README.md api/openapi.yaml appveyor.yml +docs/Env.md docs/FakeApi.md docs/PropertyNameMapping.md git_push.sh @@ -25,5 +26,6 @@ src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs src/Org.OpenAPITools/Client/RequestOptions.cs src/Org.OpenAPITools/Client/RetryConfiguration.cs src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/Env.cs src/Org.OpenAPITools/Model/PropertyNameMapping.cs src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/README.md b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/README.md index d9c2ce3ca20..5cc4dbc8109 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/README.md +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/README.md @@ -94,7 +94,8 @@ namespace Example try { // parameter name mapping test - apiInstance.GetParameterNameMapping(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + Env result = apiInstance.GetParameterNameMapping(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + Debug.WriteLine(result); } catch (ApiException e) { @@ -121,6 +122,7 @@ Class | Method | HTTP request | Description ## Documentation for Models + - [Model.Env](docs/Env.md) - [Model.PropertyNameMapping](docs/PropertyNameMapping.md) diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/api/openapi.yaml b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/api/openapi.yaml index 68780421d1f..fbb5fb24974 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/api/openapi.yaml +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/api/openapi.yaml @@ -48,12 +48,22 @@ paths: style: form responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' description: OK summary: parameter name mapping test tags: - fake components: schemas: + Environment: + example: + dummy: dummy + properties: + dummy: + type: string PropertyNameMapping: properties: http_debug_operation: diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/Env.md b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/Env.md new file mode 100644 index 00000000000..c9c69c0f23a --- /dev/null +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/Env.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Env + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Dummy** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/FakeApi.md b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/FakeApi.md index 2aa6ced4c78..38edc53dab9 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/FakeApi.md +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/docs/FakeApi.md @@ -8,7 +8,7 @@ All URIs are relative to *http://localhost* # **GetParameterNameMapping** -> void GetParameterNameMapping (long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption) +> Env GetParameterNameMapping (long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption) parameter name mapping test @@ -37,7 +37,8 @@ namespace Example try { // parameter name mapping test - apiInstance.GetParameterNameMapping(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + Env result = apiInstance.GetParameterNameMapping(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + Debug.WriteLine(result); } catch (ApiException e) { @@ -57,7 +58,10 @@ This returns an ApiResponse object which contains the response data, status code try { // parameter name mapping test - apiInstance.GetParameterNameMappingWithHttpInfo(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + ApiResponse response = apiInstance.GetParameterNameMappingWithHttpInfo(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + Debug.Write("Status Code: " + response.StatusCode); + Debug.Write("Response Headers: " + response.Headers); + Debug.Write("Response Body: " + response.Data); } catch (ApiException e) { @@ -78,7 +82,7 @@ catch (ApiException e) ### Return type -void (empty response body) +[**Env**](Env.md) ### Authorization @@ -87,7 +91,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: Not defined + - **Accept**: application/json ### HTTP response details diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Model/EnvTests.cs b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Model/EnvTests.cs new file mode 100644 index 00000000000..9da726a22bc --- /dev/null +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Model/EnvTests.cs @@ -0,0 +1,66 @@ +/* + * Dummy + * + * To test name, parameter mapping options + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Env + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnvTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Env + //private Env instance; + + public EnvTests() + { + // TODO uncomment below to create an instance of Env + //instance = new Env(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Env + /// + [Fact] + public void EnvInstanceTest() + { + // TODO uncomment below to test "IsType" Env + //Assert.IsType(instance); + } + + /// + /// Test the property 'Dummy' + /// + [Fact] + public void DummyTest() + { + // TODO unit test for the property 'Dummy' + } + } +} diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj index ca4153189a5..ebda386b94d 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj @@ -3,7 +3,7 @@ Org.OpenAPITools.Test Org.OpenAPITools.Test - net7.0 + net6.0 false annotations diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Api/FakeApi.cs index 0ea7552d84a..f61afa1411b 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Api/FakeApi.cs @@ -15,6 +15,7 @@ using System.Linq; using System.Net; using System.Net.Mime; using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api { @@ -34,8 +35,8 @@ namespace Org.OpenAPITools.Api /// type_ /// http debug option (to test parameter naming option) /// Index associated with the operation. - /// - void GetParameterNameMapping(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0); + /// Env + Env GetParameterNameMapping(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0); /// /// parameter name mapping test @@ -49,8 +50,8 @@ namespace Org.OpenAPITools.Api /// type_ /// http debug option (to test parameter naming option) /// Index associated with the operation. - /// ApiResponse of Object(void) - ApiResponse GetParameterNameMappingWithHttpInfo(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0); + /// ApiResponse of Env + ApiResponse GetParameterNameMappingWithHttpInfo(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0); #endregion Synchronous Operations } @@ -73,8 +74,8 @@ namespace Org.OpenAPITools.Api /// http debug option (to test parameter naming option) /// Index associated with the operation. /// Cancellation Token to cancel the request. - /// Task of void - System.Threading.Tasks.Task GetParameterNameMappingAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// Task of Env + System.Threading.Tasks.Task GetParameterNameMappingAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// parameter name mapping test @@ -89,8 +90,8 @@ namespace Org.OpenAPITools.Api /// http debug option (to test parameter naming option) /// Index associated with the operation. /// Cancellation Token to cancel the request. - /// Task of ApiResponse - System.Threading.Tasks.Task> GetParameterNameMappingWithHttpInfoAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// Task of ApiResponse (Env) + System.Threading.Tasks.Task> GetParameterNameMappingWithHttpInfoAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); #endregion Asynchronous Operations } @@ -220,10 +221,11 @@ namespace Org.OpenAPITools.Api /// type_ /// http debug option (to test parameter naming option) /// Index associated with the operation. - /// - public void GetParameterNameMapping(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0) + /// Env + public Env GetParameterNameMapping(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0) { - GetParameterNameMappingWithHttpInfo(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetParameterNameMappingWithHttpInfo(UnderscoreType, type, TypeWithUnderscore, httpDebugOption); + return localVarResponse.Data; } /// @@ -235,8 +237,8 @@ namespace Org.OpenAPITools.Api /// type_ /// http debug option (to test parameter naming option) /// Index associated with the operation. - /// ApiResponse of Object(void) - public Org.OpenAPITools.Client.ApiResponse GetParameterNameMappingWithHttpInfo(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0) + /// ApiResponse of Env + public Org.OpenAPITools.Client.ApiResponse GetParameterNameMappingWithHttpInfo(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0) { // verify the required parameter 'type' is set if (type == null) @@ -263,6 +265,7 @@ namespace Org.OpenAPITools.Api // to determine the Accept header string[] _accepts = new string[] { + "application/json" }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -287,7 +290,7 @@ namespace Org.OpenAPITools.Api // make the HTTP request - var localVarResponse = this.Client.Get("/fake/parameter-name-mapping", localVarRequestOptions, this.Configuration); + var localVarResponse = this.Client.Get("/fake/parameter-name-mapping", localVarRequestOptions, this.Configuration); if (this.ExceptionFactory != null) { Exception _exception = this.ExceptionFactory("GetParameterNameMapping", localVarResponse); @@ -310,10 +313,11 @@ namespace Org.OpenAPITools.Api /// http debug option (to test parameter naming option) /// Index associated with the operation. /// Cancellation Token to cancel the request. - /// Task of void - public async System.Threading.Tasks.Task GetParameterNameMappingAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + /// Task of Env + public async System.Threading.Tasks.Task GetParameterNameMappingAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { - await GetParameterNameMappingWithHttpInfoAsync(UnderscoreType, type, TypeWithUnderscore, httpDebugOption, operationIndex, cancellationToken).ConfigureAwait(false); + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetParameterNameMappingWithHttpInfoAsync(UnderscoreType, type, TypeWithUnderscore, httpDebugOption, operationIndex, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; } /// @@ -326,8 +330,8 @@ namespace Org.OpenAPITools.Api /// http debug option (to test parameter naming option) /// Index associated with the operation. /// Cancellation Token to cancel the request. - /// Task of ApiResponse - public async System.Threading.Tasks.Task> GetParameterNameMappingWithHttpInfoAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + /// Task of ApiResponse (Env) + public async System.Threading.Tasks.Task> GetParameterNameMappingWithHttpInfoAsync(long UnderscoreType, string type, string TypeWithUnderscore, string httpDebugOption, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { // verify the required parameter 'type' is set if (type == null) @@ -355,6 +359,7 @@ namespace Org.OpenAPITools.Api // to determine the Accept header string[] _accepts = new string[] { + "application/json" }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -379,7 +384,7 @@ namespace Org.OpenAPITools.Api // make the HTTP request - var localVarResponse = await this.AsynchronousClient.GetAsync("/fake/parameter-name-mapping", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake/parameter-name-mapping", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); if (this.ExceptionFactory != null) { diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Model/Env.cs b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Model/Env.cs new file mode 100644 index 00000000000..f540de64f58 --- /dev/null +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Model/Env.cs @@ -0,0 +1,128 @@ +/* + * Dummy + * + * To test name, parameter mapping options + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; + +namespace Org.OpenAPITools.Model +{ + /// + /// Env + /// + [DataContract(Name = "Environment")] + public partial class Env : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// dummy. + public Env(string dummy = default(string)) + { + this.Dummy = dummy; + } + + /// + /// Gets or Sets Dummy + /// + [DataMember(Name = "dummy", EmitDefaultValue = false)] + public string Dummy { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class Env {\n"); + sb.Append(" Dummy: ").Append(Dummy).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Env); + } + + /// + /// Returns true if Env instances are equal + /// + /// Instance of Env to be compared + /// Boolean + public bool Equals(Env input) + { + if (input == null) + { + return false; + } + return + ( + this.Dummy == input.Dummy || + (this.Dummy != null && + this.Dummy.Equals(input.Dummy)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Dummy != null) + { + hashCode = (hashCode * 59) + this.Dummy.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Org.OpenAPITools.csproj index 04d24edbf5d..89948381e2e 100644 --- a/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Org.OpenAPITools.csproj +++ b/samples/client/petstore/csharp-restsharp-name-parameter-mappings/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -2,7 +2,7 @@ false - net7.0 + net6.0 Org.OpenAPITools Org.OpenAPITools Library diff --git a/samples/client/petstore/kotlin-name-parameter-mappings/.openapi-generator/FILES b/samples/client/petstore/kotlin-name-parameter-mappings/.openapi-generator/FILES index 3e52f58af4b..c23198de3c8 100644 --- a/samples/client/petstore/kotlin-name-parameter-mappings/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-name-parameter-mappings/.openapi-generator/FILES @@ -1,5 +1,6 @@ README.md build.gradle +docs/Environment.md docs/FakeApi.md docs/PropertyNameMapping.md gradle/wrapper/gradle-wrapper.jar @@ -25,4 +26,5 @@ src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +src/main/kotlin/org/openapitools/client/models/Environment.kt src/main/kotlin/org/openapitools/client/models/PropertyNameMapping.kt diff --git a/samples/client/petstore/kotlin-name-parameter-mappings/README.md b/samples/client/petstore/kotlin-name-parameter-mappings/README.md index 7873db5b81d..d67b16fd2f7 100644 --- a/samples/client/petstore/kotlin-name-parameter-mappings/README.md +++ b/samples/client/petstore/kotlin-name-parameter-mappings/README.md @@ -50,6 +50,7 @@ Class | Method | HTTP request | Description ## Documentation for Models + - [org.openapitools.client.models.Environment](docs/Environment.md) - [org.openapitools.client.models.PropertyNameMapping](docs/PropertyNameMapping.md) diff --git a/samples/client/petstore/kotlin-name-parameter-mappings/docs/Environment.md b/samples/client/petstore/kotlin-name-parameter-mappings/docs/Environment.md new file mode 100644 index 00000000000..90250da0b67 --- /dev/null +++ b/samples/client/petstore/kotlin-name-parameter-mappings/docs/Environment.md @@ -0,0 +1,10 @@ + +# Environment + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**dummy** | **kotlin.String** | | [optional] + + + diff --git a/samples/client/petstore/kotlin-name-parameter-mappings/docs/FakeApi.md b/samples/client/petstore/kotlin-name-parameter-mappings/docs/FakeApi.md index 10a34e9f9ea..46c7a5435fc 100644 --- a/samples/client/petstore/kotlin-name-parameter-mappings/docs/FakeApi.md +++ b/samples/client/petstore/kotlin-name-parameter-mappings/docs/FakeApi.md @@ -9,7 +9,7 @@ Method | HTTP request | Description # **getParameterNameMapping** -> getParameterNameMapping(underscoreType, type, typeWithUnderscore, httpDebugOption) +> Environment getParameterNameMapping(underscoreType, type, typeWithUnderscore, httpDebugOption) parameter name mapping test @@ -25,7 +25,8 @@ val type : kotlin.String = type_example // kotlin.String | type val typeWithUnderscore : kotlin.String = typeWithUnderscore_example // kotlin.String | type_ val httpDebugOption : kotlin.String = httpDebugOption_example // kotlin.String | http debug option (to test parameter naming option) try { - apiInstance.getParameterNameMapping(underscoreType, type, typeWithUnderscore, httpDebugOption) + val result : Environment = apiInstance.getParameterNameMapping(underscoreType, type, typeWithUnderscore, httpDebugOption) + println(result) } catch (e: ClientException) { println("4xx response calling FakeApi#getParameterNameMapping") e.printStackTrace() @@ -46,7 +47,7 @@ Name | Type | Description | Notes ### Return type -null (empty response body) +[**Environment**](Environment.md) ### Authorization @@ -55,5 +56,5 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: Not defined + - **Accept**: application/json diff --git a/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/apis/FakeApi.kt b/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/apis/FakeApi.kt index 49c61653a51..294e6db2e14 100644 --- a/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/apis/FakeApi.kt +++ b/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/apis/FakeApi.kt @@ -19,6 +19,7 @@ import java.io.IOException import okhttp3.OkHttpClient import okhttp3.HttpUrl +import org.openapitools.client.models.Environment import com.squareup.moshi.Json @@ -51,19 +52,20 @@ class FakeApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = * @param type type * @param typeWithUnderscore type_ * @param httpDebugOption http debug option (to test parameter naming option) - * @return void + * @return Environment * @throws IllegalStateException If the request is not correctly configured * @throws IOException Rethrows the OkHttp execute method exception * @throws UnsupportedOperationException If the API returns an informational or redirection response * @throws ClientException If the API returns a client error response * @throws ServerException If the API returns a server error response */ + @Suppress("UNCHECKED_CAST") @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class) - fun getParameterNameMapping(underscoreType: kotlin.Long, type: kotlin.String, typeWithUnderscore: kotlin.String, httpDebugOption: kotlin.String) : Unit { + fun getParameterNameMapping(underscoreType: kotlin.Long, type: kotlin.String, typeWithUnderscore: kotlin.String, httpDebugOption: kotlin.String) : Environment { val localVarResponse = getParameterNameMappingWithHttpInfo(underscoreType = underscoreType, type = type, typeWithUnderscore = typeWithUnderscore, httpDebugOption = httpDebugOption) return when (localVarResponse.responseType) { - ResponseType.Success -> Unit + ResponseType.Success -> (localVarResponse as Success<*>).data as Environment ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.") ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.") ResponseType.ClientError -> { @@ -84,15 +86,16 @@ class FakeApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = * @param type type * @param typeWithUnderscore type_ * @param httpDebugOption http debug option (to test parameter naming option) - * @return ApiResponse + * @return ApiResponse * @throws IllegalStateException If the request is not correctly configured * @throws IOException Rethrows the OkHttp execute method exception */ + @Suppress("UNCHECKED_CAST") @Throws(IllegalStateException::class, IOException::class) - fun getParameterNameMappingWithHttpInfo(underscoreType: kotlin.Long, type: kotlin.String, typeWithUnderscore: kotlin.String, httpDebugOption: kotlin.String) : ApiResponse { + fun getParameterNameMappingWithHttpInfo(underscoreType: kotlin.Long, type: kotlin.String, typeWithUnderscore: kotlin.String, httpDebugOption: kotlin.String) : ApiResponse { val localVariableConfig = getParameterNameMappingRequestConfig(underscoreType = underscoreType, type = type, typeWithUnderscore = typeWithUnderscore, httpDebugOption = httpDebugOption) - return request( + return request( localVariableConfig ) } @@ -116,7 +119,8 @@ class FakeApi(basePath: kotlin.String = defaultBasePath, client: OkHttpClient = val localVariableHeaders: MutableMap = mutableMapOf() underscoreType.apply { localVariableHeaders["_type"] = this.toString() } typeWithUnderscore.apply { localVariableHeaders["type_"] = this.toString() } - + localVariableHeaders["Accept"] = "application/json" + return RequestConfig( method = RequestMethod.GET, path = "/fake/parameter-name-mapping", diff --git a/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/models/Environment.kt b/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/models/Environment.kt new file mode 100644 index 00000000000..7a4c656b0a3 --- /dev/null +++ b/samples/client/petstore/kotlin-name-parameter-mappings/src/main/kotlin/org/openapitools/client/models/Environment.kt @@ -0,0 +1,35 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package org.openapitools.client.models + + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass + +/** + * + * + * @param dummy + */ + + +data class Environment ( + + @Json(name = "dummy") + val dummy: kotlin.String? = null + +) +