From 677063c63716e745dbd00b561dc2d5bd7d02f209 Mon Sep 17 00:00:00 2001 From: Willians Cassiano Date: Mon, 11 Feb 2019 15:59:01 -0400 Subject: [PATCH 1/4] fix #1947, namespaces on typescript fetch --- .../AbstractTypeScriptClientCodegen.java | 4 +-- .../typescript-fetch/modelGeneric.mustache | 36 +++++++++---------- 2 files changed, 18 insertions(+), 22 deletions(-) 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 e6082564364c..e2ebe20995ef 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 @@ -522,14 +522,14 @@ public Map postProcessModels(Map objs) { // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { - var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + "." + var.enumName); + 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); + .replace(var.enumName, cm.classname + var.enumName); } } } diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache index e4523aadadca..9bde0bc758e4 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache @@ -88,26 +88,22 @@ export function {{classname}}ToJSON(value?: {{classname}}): any { return value; {{/hasVars}} } -{{#hasEnums}} -/** - * @export - * @namespace {{classname}} - */ -export namespace {{classname}} { +{{#hasEnums}} {{#vars}} - {{#isEnum}} - /** - * @export - * @enum {string} - */ - export enum {{enumName}} { - {{#allowableValues}} - {{#enumVars}} - {{{name}}} = {{{value}}}{{^-last}},{{/-last}} - {{/enumVars}} - {{/allowableValues}} - } - {{/isEnum}} +{{#isEnum}} +/** +* @export +* @enum {string} +*/ +export enum {{classname}}{{enumName}} { +{{#allowableValues}} + {{#enumVars}} + {{{name}}} = {{{value}}}{{^-last}},{{/-last}} + {{/enumVars}} +{{/allowableValues}} +} +{{/isEnum}} {{/vars}} -}{{/hasEnums}} + +{{/hasEnums}} \ No newline at end of file From fc215a297ae4ca326dc6cf94bd32aeae3ff93c04 Mon Sep 17 00:00:00 2001 From: Willians Cassiano Date: Mon, 11 Feb 2019 15:59:01 -0400 Subject: [PATCH 2/4] fix #1947, namespaces on typescript fetch --- .../AbstractTypeScriptClientCodegen.java | 4 +-- .../typescript-fetch/modelGeneric.mustache | 36 +++++++++---------- .../builds/default/models/Order.ts | 23 +++++------- .../builds/default/models/Pet.ts | 23 +++++------- .../builds/es6-target/models/Order.ts | 23 +++++------- .../builds/es6-target/models/Pet.ts | 23 +++++------- .../builds/with-interfaces/models/Order.ts | 23 +++++------- .../builds/with-interfaces/models/Pet.ts | 23 +++++------- .../builds/with-npm-version/models/Order.ts | 23 +++++------- .../builds/with-npm-version/models/Pet.ts | 23 +++++------- 10 files changed, 90 insertions(+), 134 deletions(-) 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 e6082564364c..e2ebe20995ef 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 @@ -522,14 +522,14 @@ public Map postProcessModels(Map objs) { // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { - var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + "." + var.enumName); + 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); + .replace(var.enumName, cm.classname + var.enumName); } } } diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache index e4523aadadca..9bde0bc758e4 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache @@ -88,26 +88,22 @@ export function {{classname}}ToJSON(value?: {{classname}}): any { return value; {{/hasVars}} } -{{#hasEnums}} -/** - * @export - * @namespace {{classname}} - */ -export namespace {{classname}} { +{{#hasEnums}} {{#vars}} - {{#isEnum}} - /** - * @export - * @enum {string} - */ - export enum {{enumName}} { - {{#allowableValues}} - {{#enumVars}} - {{{name}}} = {{{value}}}{{^-last}},{{/-last}} - {{/enumVars}} - {{/allowableValues}} - } - {{/isEnum}} +{{#isEnum}} +/** +* @export +* @enum {string} +*/ +export enum {{classname}}{{enumName}} { +{{#allowableValues}} + {{#enumVars}} + {{{name}}} = {{{value}}}{{^-last}},{{/-last}} + {{/enumVars}} +{{/allowableValues}} +} +{{/isEnum}} {{/vars}} -}{{/hasEnums}} + +{{/hasEnums}} \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts index 6a77a95173d4..7b16f43c4d56 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts @@ -47,7 +47,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: Order.StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any { } /** - * @export - * @namespace Order - */ -export namespace Order { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Placed = 'placed', - Approved = 'approved', - Delivered = 'delivered' - } +* @export +* @enum {string} +*/ +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } + diff --git a/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts index 7090b2fab2e7..756b3514ec50 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts @@ -62,7 +62,7 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: Pet.StatusEnum; + status?: PetStatusEnum; } export function PetFromJSON(json: any): Pet { @@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any { } /** - * @export - * @namespace Pet - */ -export namespace Pet { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Available = 'available', - Pending = 'pending', - Sold = 'sold' - } +* @export +* @enum {string} +*/ +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } + diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/models/Order.ts index 6a77a95173d4..7b16f43c4d56 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/models/Order.ts @@ -47,7 +47,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: Order.StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any { } /** - * @export - * @namespace Order - */ -export namespace Order { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Placed = 'placed', - Approved = 'approved', - Delivered = 'delivered' - } +* @export +* @enum {string} +*/ +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } + diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/models/Pet.ts index 7090b2fab2e7..756b3514ec50 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/models/Pet.ts @@ -62,7 +62,7 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: Pet.StatusEnum; + status?: PetStatusEnum; } export function PetFromJSON(json: any): Pet { @@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any { } /** - * @export - * @namespace Pet - */ -export namespace Pet { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Available = 'available', - Pending = 'pending', - Sold = 'sold' - } +* @export +* @enum {string} +*/ +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } + diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts index 6a77a95173d4..7b16f43c4d56 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts @@ -47,7 +47,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: Order.StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any { } /** - * @export - * @namespace Order - */ -export namespace Order { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Placed = 'placed', - Approved = 'approved', - Delivered = 'delivered' - } +* @export +* @enum {string} +*/ +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } + diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts index 7090b2fab2e7..756b3514ec50 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts @@ -62,7 +62,7 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: Pet.StatusEnum; + status?: PetStatusEnum; } export function PetFromJSON(json: any): Pet { @@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any { } /** - * @export - * @namespace Pet - */ -export namespace Pet { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Available = 'available', - Pending = 'pending', - Sold = 'sold' - } +* @export +* @enum {string} +*/ +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } + diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Order.ts index 6a77a95173d4..7b16f43c4d56 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Order.ts @@ -47,7 +47,7 @@ export interface Order { * @type {string} * @memberof Order */ - status?: Order.StatusEnum; + status?: OrderStatusEnum; /** * * @type {boolean} @@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any { } /** - * @export - * @namespace Order - */ -export namespace Order { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Placed = 'placed', - Approved = 'approved', - Delivered = 'delivered' - } +* @export +* @enum {string} +*/ +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' } + diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Pet.ts index 7090b2fab2e7..756b3514ec50 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/models/Pet.ts @@ -62,7 +62,7 @@ export interface Pet { * @type {string} * @memberof Pet */ - status?: Pet.StatusEnum; + status?: PetStatusEnum; } export function PetFromJSON(json: any): Pet { @@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any { } /** - * @export - * @namespace Pet - */ -export namespace Pet { - /** - * @export - * @enum {string} - */ - export enum StatusEnum { - Available = 'available', - Pending = 'pending', - Sold = 'sold' - } +* @export +* @enum {string} +*/ +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' } + From 2f9f85c5d03be2701a0f792448d0aec3fbeb7581 Mon Sep 17 00:00:00 2001 From: Willians Cassiano Date: Wed, 13 Feb 2019 13:36:46 -0400 Subject: [PATCH 3/4] reversed change in AbstractTypeScriptClientCodegen specialized TypeScriptFetchClientCodegen.postProcessModels --- .../AbstractTypeScriptClientCodegen.java | 4 +-- .../TypeScriptFetchClientCodegen.java | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) 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 ca14496269dc..f135af4af943 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 @@ -522,14 +522,14 @@ public Map postProcessModels(Map objs) { // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { - var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + var.enumName); + 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); + .replace(var.enumName, cm.classname + "." + var.enumName); } } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index bdec9ffeffdc..1bdfa1211b83 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -25,6 +25,7 @@ import java.io.File; import java.text.SimpleDateFormat; +import java.util.TreeSet; import java.util.Date; import java.util.List; import java.util.Locale; @@ -142,6 +143,34 @@ protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Sc addImport(codegenModel, codegenModel.additionalPropertiesType); } + @Override + public Map postProcessModels(Map 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 => Pet.StatusEnum + for (CodegenProperty var : cm.vars) { + if (Boolean.TRUE.equals(var.isEnum)) { + // behaviour for enum names is specific for Typescript Fetch, not using 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 public Map postProcessAllModels(Map objs) { Map result = super.postProcessAllModels(objs); From 573a618139eea80faf8a9900d430b3db829f6c40 Mon Sep 17 00:00:00 2001 From: Willians Cassiano Date: Wed, 13 Feb 2019 14:39:44 -0400 Subject: [PATCH 4/4] removed enums in ts-fetch tests --- .../petstore/typescript-fetch/tests/default/test/PetApi.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts b/samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts index 827cc99303c1..c452573699d5 100644 --- a/samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { PetApi, Pet, Category } from '@swagger/typescript-fetch-petstore'; +import { PetApi, Pet, PetStatusEnum, Category } from '@swagger/typescript-fetch-petstore'; import { config } from '../configuration'; describe('PetApi', () => { @@ -67,7 +67,7 @@ function createTestFixture(ts = Date.now()) { 'name': `pet${ts}`, 'category': category, 'photoUrls': ['http://foo.bar.com/1', 'http://foo.bar.com/2'], - 'status': Pet.StatusEnum.Available, + 'status': PetStatusEnum.Available, 'tags': [] };