forked from loafle/openapi-generator-original
[PowerShell] better enum model support (#12082)
* better enum model/class support in powershell client generator * add new files
This commit is contained in:
parent
f852c9c695
commit
6591d4e6fb
@ -1125,7 +1125,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
|
||||
}
|
||||
}
|
||||
|
||||
return objs;
|
||||
// process enum in models
|
||||
return postProcessModelsEnum(objs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1545,4 +1546,30 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
|
||||
|
||||
@Override
|
||||
public GeneratorLanguage generatorLanguage() { return GeneratorLanguage.POWERSHELL; }
|
||||
|
||||
@Override
|
||||
public String toEnumVarName(String name, String datatype) {
|
||||
if (name.length() == 0) {
|
||||
return "EMPTY";
|
||||
}
|
||||
|
||||
// for symbol, e.g. $, #
|
||||
if (getSymbolName(name) != null) {
|
||||
return (getSymbolName(name)).toUpperCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
// number
|
||||
if ("Int16".equals(datatype) || "Int32".equals(datatype) || "Int64".equals(datatype) ||
|
||||
"UInt16".equals(datatype) || "UInt32".equals(datatype) || "UInt64".equals(datatype) ||
|
||||
"Double".equals(datatype) || "Single".equals(datatype) || "Decimal".equals(datatype)) {
|
||||
String varName = name;
|
||||
varName = varName.replaceAll("-", "MINUS_");
|
||||
varName = varName.replaceAll("\\+", "PLUS_");
|
||||
varName = varName.replaceAll("\\.", "_DOT_");
|
||||
return varName;
|
||||
}
|
||||
|
||||
// remove special character
|
||||
return sanitizeName(name);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,11 @@
|
||||
{{> partial_header}}
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEnum}}
|
||||
{{>model_enum}}
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
{{#oneOf}}{{#-first}}{{>model_oneof}}{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}{{>model_anyof}}{{/-first}}{{/anyOf}}{{^anyOf}}{{>model_simple}}{{/anyOf}}{{/oneOf}}
|
||||
{{/isEnum}}
|
||||
{{/model}}
|
||||
{{/models}}
|
||||
|
18
modules/openapi-generator/src/main/resources/powershell/model_enum.mustache
vendored
Normal file
18
modules/openapi-generator/src/main/resources/powershell/model_enum.mustache
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
{{{summary}}}{{^summary}}Enum {{{classname}}}.{{/summary}}
|
||||
|
||||
.DESCRIPTION
|
||||
|
||||
{{{description}}}{{^description}}No description available.{{/description}}
|
||||
#>
|
||||
|
||||
enum {{{classname}}} {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
# enum value: {{{value}}}
|
||||
{{{name}}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
}
|
@ -1525,42 +1525,42 @@ components:
|
||||
# - _abc
|
||||
# - '-efg'
|
||||
# - (xyz)
|
||||
#Enum_Test:
|
||||
# type: object
|
||||
# required:
|
||||
# - enum_string_required
|
||||
# properties:
|
||||
# enum_string:
|
||||
# type: string
|
||||
# enum:
|
||||
# - UPPER
|
||||
# - lower
|
||||
# - ''
|
||||
# enum_string_required:
|
||||
# type: string
|
||||
# enum:
|
||||
# - UPPER
|
||||
# - lower
|
||||
# - ''
|
||||
# enum_integer:
|
||||
# type: integer
|
||||
# format: int32
|
||||
# enum:
|
||||
# - 1
|
||||
# - -1
|
||||
# enum_integer_only:
|
||||
# type: integer
|
||||
# enum:
|
||||
# - 2
|
||||
# - -2
|
||||
# enum_number:
|
||||
# type: number
|
||||
# format: double
|
||||
# enum:
|
||||
# - 1.1
|
||||
# - -1.2
|
||||
# outerEnum:
|
||||
# $ref: '#/components/schemas/OuterEnum'
|
||||
Enum_Test:
|
||||
type: object
|
||||
required:
|
||||
- enum_string_required
|
||||
properties:
|
||||
enum_string:
|
||||
type: string
|
||||
enum:
|
||||
- UPPER
|
||||
- lower
|
||||
- ''
|
||||
enum_string_required:
|
||||
type: string
|
||||
enum:
|
||||
- UPPER
|
||||
- lower
|
||||
- ''
|
||||
enum_integer:
|
||||
type: integer
|
||||
format: int32
|
||||
enum:
|
||||
- 1
|
||||
- -1
|
||||
enum_integer_only:
|
||||
type: integer
|
||||
enum:
|
||||
- 2
|
||||
- -2
|
||||
enum_number:
|
||||
type: number
|
||||
format: double
|
||||
enum:
|
||||
- 1.1
|
||||
- -1.2
|
||||
outerEnum:
|
||||
$ref: '#/components/schemas/OuterEnum'
|
||||
# outerEnumInteger:
|
||||
# $ref: '#/components/schemas/OuterEnumInteger'
|
||||
# outerEnumDefaultValue:
|
||||
@ -1733,13 +1733,13 @@ components:
|
||||
enum:
|
||||
- fish
|
||||
- crab
|
||||
#OuterEnum:
|
||||
# nullable: true
|
||||
# type: string
|
||||
# enum:
|
||||
# - placed
|
||||
# - approved
|
||||
# - delivered
|
||||
OuterEnum:
|
||||
nullable: true
|
||||
type: string
|
||||
enum:
|
||||
- placed
|
||||
- approved
|
||||
- delivered
|
||||
#OuterEnumInteger:
|
||||
# type: integer
|
||||
# enum:
|
||||
|
@ -26,6 +26,7 @@ docs/Dog.md
|
||||
docs/DogAllOf.md
|
||||
docs/Drawing.md
|
||||
docs/EnumArrays.md
|
||||
docs/EnumTest.md
|
||||
docs/EquilateralTriangle.md
|
||||
docs/File.md
|
||||
docs/FileSchemaTestClass.md
|
||||
@ -50,6 +51,7 @@ docs/NumberOnly.md
|
||||
docs/ObjectWithDeprecatedFields.md
|
||||
docs/Order.md
|
||||
docs/OuterComposite.md
|
||||
docs/OuterEnum.md
|
||||
docs/PSAnotherFakeApi.md
|
||||
docs/PSDefaultApi.md
|
||||
docs/PSFakeApi.md
|
||||
@ -109,6 +111,7 @@ src/PSPetstore/Model/Dog.ps1
|
||||
src/PSPetstore/Model/DogAllOf.ps1
|
||||
src/PSPetstore/Model/Drawing.ps1
|
||||
src/PSPetstore/Model/EnumArrays.ps1
|
||||
src/PSPetstore/Model/EnumTest.ps1
|
||||
src/PSPetstore/Model/EquilateralTriangle.ps1
|
||||
src/PSPetstore/Model/File.ps1
|
||||
src/PSPetstore/Model/FileSchemaTestClass.ps1
|
||||
@ -135,6 +138,7 @@ src/PSPetstore/Model/NumberOnly.ps1
|
||||
src/PSPetstore/Model/ObjectWithDeprecatedFields.ps1
|
||||
src/PSPetstore/Model/Order.ps1
|
||||
src/PSPetstore/Model/OuterComposite.ps1
|
||||
src/PSPetstore/Model/OuterEnum.ps1
|
||||
src/PSPetstore/Model/ParentPet.ps1
|
||||
src/PSPetstore/Model/Pet.ps1
|
||||
src/PSPetstore/Model/PetWithRequiredTags.ps1
|
||||
|
@ -122,6 +122,7 @@ Class | Method | HTTP request | Description
|
||||
- [PSPetstore/Model.DogAllOf](docs/DogAllOf.md)
|
||||
- [PSPetstore/Model.Drawing](docs/Drawing.md)
|
||||
- [PSPetstore/Model.EnumArrays](docs/EnumArrays.md)
|
||||
- [PSPetstore/Model.EnumTest](docs/EnumTest.md)
|
||||
- [PSPetstore/Model.EquilateralTriangle](docs/EquilateralTriangle.md)
|
||||
- [PSPetstore/Model.File](docs/File.md)
|
||||
- [PSPetstore/Model.FileSchemaTestClass](docs/FileSchemaTestClass.md)
|
||||
@ -148,6 +149,7 @@ Class | Method | HTTP request | Description
|
||||
- [PSPetstore/Model.ObjectWithDeprecatedFields](docs/ObjectWithDeprecatedFields.md)
|
||||
- [PSPetstore/Model.Order](docs/Order.md)
|
||||
- [PSPetstore/Model.OuterComposite](docs/OuterComposite.md)
|
||||
- [PSPetstore/Model.OuterEnum](docs/OuterEnum.md)
|
||||
- [PSPetstore/Model.ParentPet](docs/ParentPet.md)
|
||||
- [PSPetstore/Model.Pet](docs/Pet.md)
|
||||
- [PSPetstore/Model.PetWithRequiredTags](docs/PetWithRequiredTags.md)
|
||||
|
@ -9,9 +9,6 @@ Name | Type | Description | Notes
|
||||
**EnumIntegerOnly** | **Int32** | | [optional]
|
||||
**EnumNumber** | **Double** | | [optional]
|
||||
**OuterEnum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
||||
**OuterEnumInteger** | [**OuterEnumInteger**](OuterEnumInteger.md) | | [optional]
|
||||
**OuterEnumDefaultValue** | [**OuterEnumDefaultValue**](OuterEnumDefaultValue.md) | | [optional]
|
||||
**OuterEnumIntegerDefaultValue** | [**OuterEnumIntegerDefaultValue**](OuterEnumIntegerDefaultValue.md) | | [optional]
|
||||
|
||||
## Examples
|
||||
|
||||
@ -22,10 +19,7 @@ $EnumTest = Initialize-PSPetstoreEnumTest -EnumString null `
|
||||
-EnumInteger null `
|
||||
-EnumIntegerOnly null `
|
||||
-EnumNumber null `
|
||||
-OuterEnum null `
|
||||
-OuterEnumInteger null `
|
||||
-OuterEnumDefaultValue null `
|
||||
-OuterEnumIntegerDefaultValue null
|
||||
-OuterEnum null
|
||||
```
|
||||
|
||||
- Convert the resource to JSON
|
||||
|
@ -26,12 +26,6 @@ No description available.
|
||||
No description available.
|
||||
.PARAMETER OuterEnum
|
||||
No description available.
|
||||
.PARAMETER OuterEnumInteger
|
||||
No description available.
|
||||
.PARAMETER OuterEnumDefaultValue
|
||||
No description available.
|
||||
.PARAMETER OuterEnumIntegerDefaultValue
|
||||
No description available.
|
||||
.OUTPUTS
|
||||
|
||||
EnumTest<PSCustomObject>
|
||||
@ -62,16 +56,7 @@ function Initialize-PSEnumTest {
|
||||
${EnumNumber},
|
||||
[Parameter(Position = 5, ValueFromPipelineByPropertyName = $true)]
|
||||
[PSCustomObject]
|
||||
${OuterEnum},
|
||||
[Parameter(Position = 6, ValueFromPipelineByPropertyName = $true)]
|
||||
[PSCustomObject]
|
||||
${OuterEnumInteger},
|
||||
[Parameter(Position = 7, ValueFromPipelineByPropertyName = $true)]
|
||||
[PSCustomObject]
|
||||
${OuterEnumDefaultValue},
|
||||
[Parameter(Position = 8, ValueFromPipelineByPropertyName = $true)]
|
||||
[PSCustomObject]
|
||||
${OuterEnumIntegerDefaultValue}
|
||||
${OuterEnum}
|
||||
)
|
||||
|
||||
Process {
|
||||
@ -90,9 +75,6 @@ function Initialize-PSEnumTest {
|
||||
"enum_integer_only" = ${EnumIntegerOnly}
|
||||
"enum_number" = ${EnumNumber}
|
||||
"outerEnum" = ${OuterEnum}
|
||||
"outerEnumInteger" = ${OuterEnumInteger}
|
||||
"outerEnumDefaultValue" = ${OuterEnumDefaultValue}
|
||||
"outerEnumIntegerDefaultValue" = ${OuterEnumIntegerDefaultValue}
|
||||
}
|
||||
|
||||
|
||||
@ -130,7 +112,7 @@ function ConvertFrom-PSJsonToEnumTest {
|
||||
$JsonParameters = ConvertFrom-Json -InputObject $Json
|
||||
|
||||
# check if Json contains properties not defined in PSEnumTest
|
||||
$AllProperties = ("enum_string", "enum_string_required", "enum_integer", "enum_integer_only", "enum_number", "outerEnum", "outerEnumInteger", "outerEnumDefaultValue", "outerEnumIntegerDefaultValue")
|
||||
$AllProperties = ("enum_string", "enum_string_required", "enum_integer", "enum_integer_only", "enum_number", "outerEnum")
|
||||
foreach ($name in $JsonParameters.PsObject.Properties.Name) {
|
||||
if (!($AllProperties.Contains($name))) {
|
||||
throw "Error! JSON key '$name' not found in the properties: $($AllProperties)"
|
||||
@ -177,24 +159,6 @@ function ConvertFrom-PSJsonToEnumTest {
|
||||
$OuterEnum = $JsonParameters.PSobject.Properties["outerEnum"].value
|
||||
}
|
||||
|
||||
if (!([bool]($JsonParameters.PSobject.Properties.name -match "outerEnumInteger"))) { #optional property not found
|
||||
$OuterEnumInteger = $null
|
||||
} else {
|
||||
$OuterEnumInteger = $JsonParameters.PSobject.Properties["outerEnumInteger"].value
|
||||
}
|
||||
|
||||
if (!([bool]($JsonParameters.PSobject.Properties.name -match "outerEnumDefaultValue"))) { #optional property not found
|
||||
$OuterEnumDefaultValue = $null
|
||||
} else {
|
||||
$OuterEnumDefaultValue = $JsonParameters.PSobject.Properties["outerEnumDefaultValue"].value
|
||||
}
|
||||
|
||||
if (!([bool]($JsonParameters.PSobject.Properties.name -match "outerEnumIntegerDefaultValue"))) { #optional property not found
|
||||
$OuterEnumIntegerDefaultValue = $null
|
||||
} else {
|
||||
$OuterEnumIntegerDefaultValue = $JsonParameters.PSobject.Properties["outerEnumIntegerDefaultValue"].value
|
||||
}
|
||||
|
||||
$PSO = [PSCustomObject]@{
|
||||
"enum_string" = ${EnumString}
|
||||
"enum_string_required" = ${EnumStringRequired}
|
||||
@ -202,9 +166,6 @@ function ConvertFrom-PSJsonToEnumTest {
|
||||
"enum_integer_only" = ${EnumIntegerOnly}
|
||||
"enum_number" = ${EnumNumber}
|
||||
"outerEnum" = ${OuterEnum}
|
||||
"outerEnumInteger" = ${OuterEnumInteger}
|
||||
"outerEnumDefaultValue" = ${OuterEnumDefaultValue}
|
||||
"outerEnumIntegerDefaultValue" = ${OuterEnumIntegerDefaultValue}
|
||||
}
|
||||
|
||||
return $PSO
|
||||
|
@ -0,0 +1,26 @@
|
||||
#
|
||||
# OpenAPI Petstore
|
||||
# This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: "" \
|
||||
# Version: 1.0.0
|
||||
# Generated by OpenAPI Generator: https://openapi-generator.tech
|
||||
#
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
Enum OuterEnum.
|
||||
|
||||
.DESCRIPTION
|
||||
|
||||
No description available.
|
||||
#>
|
||||
|
||||
enum OuterEnum {
|
||||
# enum value: "placed"
|
||||
placed
|
||||
# enum value: "approved"
|
||||
approved
|
||||
# enum value: "delivered"
|
||||
delivered
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
# Generated by: OpenAPI Generator Team
|
||||
#
|
||||
# Generated on: 04/06/2022
|
||||
# Generated on: 04/08/2022
|
||||
#
|
||||
|
||||
@{
|
||||
|
Loading…
x
Reference in New Issue
Block a user