Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -142,6 +143,34 @@ protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Sc
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
// process enum in models
List<Object> models = (List<Object>) postProcessModelsEnum(objs).get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> result = super.postProcessAllModels(objs);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}

export function PetFromJSON(json: any): Pet {
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}

export function PetFromJSON(json: any): Pet {
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}

export function PetFromJSON(json: any): Pet {
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}

export function PetFromJSON(json: any): Pet {
Expand Down Expand Up @@ -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'
}


Original file line number Diff line number Diff line change
@@ -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', () => {
Expand Down Expand Up @@ -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': []
};

Expand Down