diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java index 56df5a82472..d16b26f7c48 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java @@ -25,6 +25,7 @@ import org.openapitools.codegen.utils.ModelUtils; import java.io.File; import java.text.SimpleDateFormat; +import java.util.TreeSet; import java.util.Date; import java.util.List; import java.util.Locale; @@ -144,8 +145,30 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen @Override public Map postProcessModels(Map objs) { - // don't do enum modifications - return objs; + // process enum in models + List models = (List) postProcessModelsEnum(objs).get("models"); + for (Object _mo : models) { + Map mo = (Map) _mo; + CodegenModel cm = (CodegenModel) mo.get("model"); + cm.imports = new TreeSet(cm.imports); + // name enum with model name, e.g. StatusEnum => PetStatusEnum + for (CodegenProperty var : cm.vars) { + if (Boolean.TRUE.equals(var.isEnum)) { + // behaviour for enum names is specific for typescript to not use namespaces + var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + var.enumName); + } + } + if (cm.parent != null) { + for (CodegenProperty var : cm.allVars) { + if (Boolean.TRUE.equals(var.isEnum)) { + var.datatypeWithEnum = var.datatypeWithEnum + .replace(var.enumName, cm.classname + var.enumName); + } + } + } + } + + return objs; } @Override diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache index 331b03ea1d3..ce0cc74bbd6 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache @@ -31,7 +31,7 @@ export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{ * @export * @enum {string} */ -export enum {{enumName}} { +export enum {{classname}}{{enumName}} { {{#allowableValues}} {{#enumVars}} {{{name}}} = {{{value}}}{{^-last}},{{/-last}} diff --git a/samples/client/petstore/typescript-rxjs/builds/default/models/Order.ts b/samples/client/petstore/typescript-rxjs/builds/default/models/Order.ts index 805786fadab..4ff7d8e5ea4 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/models/Order.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/models/Order.ts @@ -46,7 +46,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -59,6 +59,9 @@ export interface Order { * @export * @enum {string} */ -export enum StatusEnum { +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } diff --git a/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts index 10a8f347d1b..dccbe366574 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts @@ -57,13 +57,16 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: StatusEnum; + status?: PetStatusEnum; } /** * @export * @enum {string} */ -export enum StatusEnum { +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Order.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Order.ts index 805786fadab..4ff7d8e5ea4 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Order.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Order.ts @@ -46,7 +46,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -59,6 +59,9 @@ export interface Order { * @export * @enum {string} */ -export enum StatusEnum { +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts index 10a8f347d1b..dccbe366574 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts @@ -57,13 +57,16 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: StatusEnum; + status?: PetStatusEnum; } /** * @export * @enum {string} */ -export enum StatusEnum { +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Order.ts b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Order.ts index 805786fadab..4ff7d8e5ea4 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Order.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Order.ts @@ -46,7 +46,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -59,6 +59,9 @@ export interface Order { * @export * @enum {string} */ -export enum StatusEnum { +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Pet.ts index 10a8f347d1b..dccbe366574 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/models/Pet.ts @@ -57,13 +57,16 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: StatusEnum; + status?: PetStatusEnum; } /** * @export * @enum {string} */ -export enum StatusEnum { +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Order.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Order.ts index 805786fadab..4ff7d8e5ea4 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Order.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Order.ts @@ -46,7 +46,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -59,6 +59,9 @@ export interface Order { * @export * @enum {string} */ -export enum StatusEnum { +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts index 10a8f347d1b..dccbe366574 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts @@ -57,13 +57,16 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: StatusEnum; + status?: PetStatusEnum; } /** * @export * @enum {string} */ -export enum StatusEnum { +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' }