From 41afcd0f8646f72a5d9975cd9abbb7c972124c16 Mon Sep 17 00:00:00 2001 From: Minjae Kim Date: Fri, 18 Jun 2021 17:34:38 +0900 Subject: [PATCH] Handle boolean enum correctly in typescript-axios (#9025) can't use enum because of TS18033 --- .../main/java/org/openapitools/codegen/CodegenModel.java | 2 +- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 4 +++- .../codegen/languages/AbstractTypeScriptClientCodegen.java | 2 +- .../src/main/resources/typescript-axios/modelEnum.mustache | 6 ++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index 7669f837919..1ce5b200199 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -64,7 +64,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { public String defaultValue; public String arrayModelType; public boolean isAlias; // Is this effectively an alias of another simple type - public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate, isDateTime, isShort, isUnboundedInteger; + public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate, isDateTime, isShort, isUnboundedInteger, isBoolean; private boolean additionalPropertiesIsAnyType; public List vars = new ArrayList(); // all properties (without parent's properties) public List allVars = new ArrayList(); // all properties (with parent's properties) 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 7ab6694f817..1f4fecb0395 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 @@ -728,7 +728,7 @@ public class DefaultCodegen implements CodegenConfig { * @return the sanitized value for enum */ public String toEnumValue(String value, String datatype) { - if ("number".equalsIgnoreCase(datatype)) { + if ("number".equalsIgnoreCase(datatype) || "boolean".equalsIgnoreCase(datatype)) { return value; } else { return "\"" + escapeText(value) + "\""; @@ -2578,6 +2578,8 @@ public class DefaultCodegen implements CodegenConfig { } else { // type is number and without format m.isNumber = Boolean.TRUE; } + } else if (ModelUtils.isBooleanSchema(schema)) { + m.isBoolean = Boolean.TRUE; } else if (ModelUtils.isFreeFormObject(openAPI, schema)) { addAdditionPropertiesToCodeGenModel(m, schema); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index c6762f1903e..8a7d8b97aaf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -663,7 +663,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp @Override public String toEnumValue(String value, String datatype) { - if ("number".equals(datatype)) { + if ("number".equals(datatype) || "boolean".equals(datatype)) { return value; } else { return "\'" + escapeText(value) + "\'"; diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache index 1e25a6e2f02..7ff0379b4c3 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache @@ -3,6 +3,11 @@ * @export * @enum {string} */ +{{#isBoolean}} +export type {{classname}} = {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}} | {{/-last}}{{/enumVars}}{{/allowableValues}} +{{/isBoolean}} + +{{^isBoolean}} export enum {{classname}} { {{#allowableValues}} {{#enumVars}} @@ -15,3 +20,4 @@ export enum {{classname}} { {{/enumVars}} {{/allowableValues}} } +{{/isBoolean}}