From 48bed3a7ecef9b7c61a8f3e3804d8e229900c8dd Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 10 Apr 2020 10:23:29 +0800 Subject: [PATCH 1/2] add variable --- .../PowerShellExperimentalClientCodegen.java | 37 ++++++++++++++++++- .../resources/3_0/powershell/petstore.yaml | 2 +- .../docs/ApiResponse.md | 4 +- .../src/PSPetstore/Model/ApiResponse.ps1 | 6 +-- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java index ff2e1d0b75eb..ea485825789f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java @@ -404,7 +404,42 @@ public PowerShellExperimentalClientCodegen() { "While", "Local", "Private", - "Where" + "Where", + // special variables + "ARGS", + "CONSOLEFILENAME", + "ERROR", + "EVENT", + "EVENTARGS", + "EVENTSUBSCRIBER", + "EXECUTIONCONTEXT", + "FALSE", + "FOREACH", + "HOME", + "HOST", + "INPUT", + "LASTEXITCODE", + "MATCHES", + "MYINVOCATION", + "NESTEDPROMPTLEVEL", + "NULL", + "PID", + "PROFILE", + "PSCMDLET", + "PSCOMMANDPATH", + "PSCULTURE", + "PSDEBUGCONTEXT", + "PSHOME", + "PSITEM", + "PSSCRIPTROOT", + "PSSENDERINFO", + "PSUICULTURE", + "PSVERSIONTABLE", + "SENDER", + "SHELLID", + "STACKTRACE", + "THIS", + "TRUE" )); defaultIncludes = new HashSet(Arrays.asList( diff --git a/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml index a2e1dbaefa6d..aefb8057e49e 100644 --- a/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml @@ -756,7 +756,7 @@ components: code: type: integer format: int32 - type: + host: type: string message: type: string diff --git a/samples/client/petstore/powershell-experimental/docs/ApiResponse.md b/samples/client/petstore/powershell-experimental/docs/ApiResponse.md index 5b4baf95c1a6..c980f6d237aa 100644 --- a/samples/client/petstore/powershell-experimental/docs/ApiResponse.md +++ b/samples/client/petstore/powershell-experimental/docs/ApiResponse.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Code** | **Int32** | | [optional] [default to null] -**Type** | **String** | | [optional] [default to null] +**Host** | **String** | | [optional] [default to null] **Message** | **String** | | [optional] [default to null] ## Examples @@ -12,7 +12,7 @@ Name | Type | Description | Notes - Prepare the resource ```powershell Initialize-PSPetstoreApiResponse -Code null ` - -Type null ` + -Host null ` -Message null ``` diff --git a/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 b/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 index 274ea380357e..0bb32340fd40 100644 --- a/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 +++ b/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 @@ -17,7 +17,7 @@ Describes the result of uploading an image resource .PARAMETER Code No description available. -.PARAMETER Type +.PARAMETER Host No description available. .PARAMETER Message @@ -36,7 +36,7 @@ function Initialize-PSApiResponse { ${Code}, [Parameter(Position = 1, ValueFromPipelineByPropertyName = $true)] [String] - ${Type}, + ${Host}, [Parameter(Position = 2, ValueFromPipelineByPropertyName = $true)] [String] ${Message} @@ -48,7 +48,7 @@ function Initialize-PSApiResponse { $PSO = [PSCustomObject]@{ "code" = ${Code} - "type" = ${Type} + "host" = ${Host} "message" = ${Message} } From b31c6b9a6c56a359eba2faebebe7bb1c40790e51 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 10 Apr 2020 18:00:47 +0800 Subject: [PATCH 2/2] fix reserved words --- .../PowerShellExperimentalClientCodegen.java | 178 ++++++++---------- .../resources/3_0/powershell/petstore.yaml | 2 +- .../docs/ApiResponse.md | 4 +- .../src/PSPetstore/Model/ApiResponse.ps1 | 6 +- .../src/PSPetstore/PSPetstore.psd1 | 2 +- 5 files changed, 85 insertions(+), 107 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java index ea485825789f..8de0ecb5cdd8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellExperimentalClientCodegen.java @@ -372,74 +372,75 @@ public PowerShellExperimentalClientCodegen() { "System.Nullable[Boolean]" )); - // https://richardspowershellblog.wordpress.com/2009/05/02/powershell-reserved-words/ + // list of reserved words - must be in lower case reservedWords = new HashSet(Arrays.asList( - "Begin", - "Break", - "Catch", - "Continue", - "Data", - "Do", - "Dynamicparam", - "Else", - "Elseif", - "End", - "Exit", - "Filter", - "Finally", - "For", - "Foreach", - "From", - "Function", - "If", - "In", - "Param", - "Process", - "Return", - "Switch", - "Throw", - "Trap", - "Try", - "Until", - "While", - "Local", - "Private", - "Where", + // https://richardspowershellblog.wordpress.com/2009/05/02/powershell-reserved-words/ + "begin", + "break", + "catch", + "continue", + "data", + "do", + "dynamicparam", + "else", + "elseif", + "end", + "exit", + "filter", + "finally", + "for", + "foreach", + "from", + "function", + "if", + "in", + "param", + "process", + "return", + "switch", + "throw", + "trap", + "try", + "until", + "while", + "local", + "private", + "where", // special variables - "ARGS", - "CONSOLEFILENAME", - "ERROR", - "EVENT", - "EVENTARGS", - "EVENTSUBSCRIBER", - "EXECUTIONCONTEXT", - "FALSE", - "FOREACH", - "HOME", - "HOST", - "INPUT", - "LASTEXITCODE", - "MATCHES", - "MYINVOCATION", - "NESTEDPROMPTLEVEL", - "NULL", - "PID", - "PROFILE", - "PSCMDLET", - "PSCOMMANDPATH", - "PSCULTURE", - "PSDEBUGCONTEXT", - "PSHOME", - "PSITEM", - "PSSCRIPTROOT", - "PSSENDERINFO", - "PSUICULTURE", - "PSVERSIONTABLE", - "SENDER", - "SHELLID", - "STACKTRACE", - "THIS", - "TRUE" + "args", + "consolefilename", + "error", + "event", + "eventargs", + "eventsubscriber", + "executioncontext", + "false", + "foreach", + "home", + "host", + "input", + "lastexitcode", + "matches", + "myinvocation", + "nestedpromptlevel", + "null", + "pid", + "profile", + "pscmdlet", + "pscommandpath", + "psculture", + "psdebugcontext", + "pshome", + "psitem", + "psscriptroot", + "pssenderinfo", + "psuiculture", + "psversiontable", + "sender", + "shellid", + "stacktrace", + "this", + "true" )); defaultIncludes = new HashSet(Arrays.asList( @@ -669,7 +670,7 @@ public String modelFileFolder() { @Override public String escapeReservedWord(String name) { - return "_" + name; + return "Var" + name; } /** @@ -689,23 +690,23 @@ public String toModelName(String name) { name = name + "_" + modelNameSuffix; } - name = sanitizeName(name); + // camelize the model name + // phone_number => PhoneNumber + name = camelize(sanitizeName(name)); // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); - name = "model_" + name; // e.g. return => ModelReturn (after camelize) + LOGGER.warn(name + " (reserved word or special variable name) cannot be used as model name. Renamed to " + camelize("model_" + name)); + name = camelize("model_" + name); // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); - name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) + name = camelize("model_" + name); // e.g. 200Response => Model200Response (after camelize) } - // camelize the model name - // phone_number => PhoneNumber - return camelize(name); + return name; } @Override @@ -771,27 +772,7 @@ public String toOperationId(String operationId) { @Override public String toParamName(String name) { - // sanitize name - name = sanitizeName(name); - - // replace - with _ e.g. created-at => created_at - name = name.replaceAll("-", "_"); - - // if it's all upper case, do nothing - if (name.matches("^[A-Z_]*$")) { - return name; - } - - // camelize the variable name - // pet_id => PetId - name = camelize(name, false); - - // for reserved word or word starting with number, append _ - if (isReservedWord(name) || name.matches("^\\d.*")) { - name = escapeReservedWord(name); - } - - return name; + return toVarName(name); } @Override @@ -870,17 +851,13 @@ public String toVarName(String name) { // sanitize name name = sanitizeName(name); - // if it's all uppper case, do nothing - if (name.matches("^[A-Z_]*$")) { - return name; - } - // camelize the variable name // pet_id => PetId name = camelize(name); // for reserved word or word starting with number, append _ if (isReservedWord(name) || name.matches("^\\d.*")) { + LOGGER.warn(name + " (reserved word or special variable name) cannot be used in naming. Renamed to " + escapeReservedWord(name)); name = escapeReservedWord(name); } @@ -1063,4 +1040,5 @@ private String toMethodName(String operationId) { public String toRegularExpression(String pattern) { return escapeText(pattern); } + } diff --git a/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml index aefb8057e49e..a2e1dbaefa6d 100644 --- a/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/powershell/petstore.yaml @@ -756,7 +756,7 @@ components: code: type: integer format: int32 - host: + type: type: string message: type: string diff --git a/samples/client/petstore/powershell-experimental/docs/ApiResponse.md b/samples/client/petstore/powershell-experimental/docs/ApiResponse.md index c980f6d237aa..5b4baf95c1a6 100644 --- a/samples/client/petstore/powershell-experimental/docs/ApiResponse.md +++ b/samples/client/petstore/powershell-experimental/docs/ApiResponse.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Code** | **Int32** | | [optional] [default to null] -**Host** | **String** | | [optional] [default to null] +**Type** | **String** | | [optional] [default to null] **Message** | **String** | | [optional] [default to null] ## Examples @@ -12,7 +12,7 @@ Name | Type | Description | Notes - Prepare the resource ```powershell Initialize-PSPetstoreApiResponse -Code null ` - -Host null ` + -Type null ` -Message null ``` diff --git a/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 b/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 index 0bb32340fd40..274ea380357e 100644 --- a/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 +++ b/samples/client/petstore/powershell-experimental/src/PSPetstore/Model/ApiResponse.ps1 @@ -17,7 +17,7 @@ Describes the result of uploading an image resource .PARAMETER Code No description available. -.PARAMETER Host +.PARAMETER Type No description available. .PARAMETER Message @@ -36,7 +36,7 @@ function Initialize-PSApiResponse { ${Code}, [Parameter(Position = 1, ValueFromPipelineByPropertyName = $true)] [String] - ${Host}, + ${Type}, [Parameter(Position = 2, ValueFromPipelineByPropertyName = $true)] [String] ${Message} @@ -48,7 +48,7 @@ function Initialize-PSApiResponse { $PSO = [PSCustomObject]@{ "code" = ${Code} - "host" = ${Host} + "type" = ${Type} "message" = ${Message} } diff --git a/samples/client/petstore/powershell-experimental/src/PSPetstore/PSPetstore.psd1 b/samples/client/petstore/powershell-experimental/src/PSPetstore/PSPetstore.psd1 index a481d378d49a..726f4ea51112 100644 --- a/samples/client/petstore/powershell-experimental/src/PSPetstore/PSPetstore.psd1 +++ b/samples/client/petstore/powershell-experimental/src/PSPetstore/PSPetstore.psd1 @@ -3,7 +3,7 @@ # # Generated by: OpenAPI Generator Team # -# Generated on: 4/9/20 +# Generated on: 4/10/20 # @{