forked from loafle/openapi-generator-original
[NancyFx] Fixed bug in the generation of enum models that were generated with compilation errors (#5910) (#5913)
* NancyFx - Fixed bug in the generation of enum types in the NancyFx server, which cause enums to be generated as general classes, without the enum values and with compilation errors (#5910) * NancyFx - Changes in the nancyfx sample after the updates in the nancyfx model.mustache template. (#5910)
This commit is contained in:
@@ -7,166 +7,11 @@ using NodaTime;
|
||||
{{#imports}}using {{import}};
|
||||
{{/imports}}
|
||||
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
namespace {{packageName}}.{{packageContext}}.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}}
|
||||
/// </summary>
|
||||
public {{^hasChildren}}sealed {{/hasChildren}}class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}>
|
||||
{ {{#vars}}{{^isInherited}}
|
||||
/// <summary>
|
||||
/// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}}
|
||||
/// </summary>
|
||||
public {{>nullableDataType}} {{name}} { get; private set; }
|
||||
{{/isInherited}}{{/vars}}
|
||||
|
||||
/// <summary>
|
||||
/// Empty constructor required by some serializers.
|
||||
/// Use {{classname}}.Builder() for instance creation instead.
|
||||
/// </summary>
|
||||
[Obsolete]
|
||||
public {{classname}}(){{#parent}} : base({{/parent}}{{#parentVars}}null{{#hasMore}}, {{/hasMore}}{{/parentVars}}{{#parent}}){{/parent}}
|
||||
{
|
||||
}
|
||||
|
||||
{{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{classname}}({{#vars}}{{>nullableDataType}} {{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}){{#parent}} : base({{#parentVars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/parentVars}}){{/parent}}
|
||||
{
|
||||
{{#vars}}{{^isInherited}}
|
||||
this.{{name}} = {{name}};
|
||||
{{/isInherited}}{{/vars}}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns builder of {{classname}}.
|
||||
/// </summary>
|
||||
/// <returns>{{classname}}Builder</returns>
|
||||
public static {{#parent}}new {{/parent}}{{classname}}Builder Builder()
|
||||
{
|
||||
return new {{classname}}Builder();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns {{classname}}Builder with properties set.
|
||||
/// Use it to change properties.
|
||||
/// </summary>
|
||||
/// <returns>{{classname}}Builder</returns>
|
||||
public {{#parent}}new {{/parent}}{{classname}}Builder With()
|
||||
{
|
||||
return Builder()
|
||||
{{#vars}}
|
||||
.{{name}}({{name}}){{#hasMore}}
|
||||
{{/hasMore}}{{/vars}};
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.PropertiesToString();
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return this.EqualsByProperties(obj);
|
||||
}
|
||||
|
||||
public bool Equals({{classname}} other)
|
||||
{
|
||||
return Equals((object) other);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.PropertiesHash();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Implementation of == operator for ({{classname}}.
|
||||
/// </summary>
|
||||
/// <param name="left">Compared ({{classname}}</param>
|
||||
/// <param name="right">Compared ({{classname}}</param>
|
||||
/// <returns>true if compared items are equals, false otherwise</returns>
|
||||
public static bool operator == ({{classname}} left, {{classname}} right)
|
||||
{
|
||||
return Equals(left, right);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Implementation of != operator for ({{classname}}.
|
||||
/// </summary>
|
||||
/// <param name="left">Compared ({{classname}}</param>
|
||||
/// <param name="right">Compared ({{classname}}</param>
|
||||
/// <returns>true if compared items are not equals, false otherwise</returns>
|
||||
public static bool operator != ({{classname}} left, {{classname}} right)
|
||||
{
|
||||
return !Equals(left, right);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builder of {{classname}}.
|
||||
/// </summary>
|
||||
public sealed class {{classname}}Builder
|
||||
{
|
||||
{{#vars}}
|
||||
private {{>nullableDataType}} _{{name}};
|
||||
{{/vars}}
|
||||
|
||||
internal {{classname}}Builder()
|
||||
{
|
||||
SetupDefaults();
|
||||
}
|
||||
|
||||
private void SetupDefaults()
|
||||
{
|
||||
{{#vars}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
_{{name}} = {{{defaultValue}}};
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
{{/vars}}
|
||||
}
|
||||
|
||||
{{#vars}}
|
||||
/// <summary>
|
||||
/// Sets value for {{classname}}.{{{name}}} property.
|
||||
/// </summary>
|
||||
/// <param name="value">{{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}}</param>
|
||||
public {{classname}}Builder {{name}}({{>nullableDataType}} value)
|
||||
{
|
||||
_{{name}} = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
{{/vars}}
|
||||
|
||||
/// <summary>
|
||||
/// Builds instance of {{classname}}.
|
||||
/// </summary>
|
||||
/// <returns>{{classname}}</returns>
|
||||
public {{classname}} Build()
|
||||
{
|
||||
Validate();
|
||||
return new {{classname}}(
|
||||
{{#vars}}
|
||||
{{name}}: _{{name}}{{#hasMore}},{{/hasMore}}
|
||||
{{/vars}}
|
||||
);
|
||||
}
|
||||
|
||||
private void Validate()
|
||||
{ {{#vars}}{{#required}}
|
||||
if (_{{name}} == null)
|
||||
{
|
||||
throw new ArgumentException("{{name}} is a required property for {{classname}} and cannot be null");
|
||||
} {{/required}}{{/vars}}
|
||||
}
|
||||
}
|
||||
|
||||
{{#vars}}{{#isEnum}}{{^parent}}
|
||||
{{>innerModelEnum}}{{/parent}}{{/isEnum}}{{#items.isEnum}}
|
||||
{{#items}}{{>innerModelEnum}}{{/items}}{{/items.isEnum}}{{/vars}}
|
||||
}
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{>modelGeneric}}{{/isEnum}}
|
||||
{{/model}}
|
||||
{{/models}}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/// <summary>
|
||||
/// {{^description}}Defines {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}}
|
||||
/// </summary>{{#description}}
|
||||
/// <value>{{{description}}}</value>{{/description}}
|
||||
public enum {{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}
|
||||
{
|
||||
{{#allowableValues}}{{#enumVars}}
|
||||
/// <summary>
|
||||
/// Enum {{name}}
|
||||
/// </summary>
|
||||
{{name}}{{#isInteger}} = {{{value}}}{{/isInteger}}{{^-last}},
|
||||
{{/-last}}{{/enumVars}}{{/allowableValues}}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
/// <summary>
|
||||
/// {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}}
|
||||
/// </summary>
|
||||
public {{^hasChildren}}sealed {{/hasChildren}}class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}>
|
||||
{ {{#vars}}{{^isInherited}}
|
||||
/// <summary>
|
||||
/// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}}
|
||||
/// </summary>
|
||||
public {{>nullableDataType}} {{name}} { get; private set; }
|
||||
{{/isInherited}}{{/vars}}
|
||||
|
||||
/// <summary>
|
||||
/// Empty constructor required by some serializers.
|
||||
/// Use {{classname}}.Builder() for instance creation instead.
|
||||
/// </summary>
|
||||
[Obsolete]
|
||||
public {{classname}}(){{#parent}} : base({{/parent}}{{#parentVars}}null{{#hasMore}}, {{/hasMore}}{{/parentVars}}{{#parent}}){{/parent}}
|
||||
{
|
||||
}
|
||||
|
||||
{{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{classname}}({{#vars}}{{>nullableDataType}} {{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}){{#parent}} : base({{#parentVars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/parentVars}}){{/parent}}
|
||||
{
|
||||
{{#vars}}{{^isInherited}}
|
||||
this.{{name}} = {{name}};
|
||||
{{/isInherited}}{{/vars}}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns builder of {{classname}}.
|
||||
/// </summary>
|
||||
/// <returns>{{classname}}Builder</returns>
|
||||
public static {{#parent}}new {{/parent}}{{classname}}Builder Builder()
|
||||
{
|
||||
return new {{classname}}Builder();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns {{classname}}Builder with properties set.
|
||||
/// Use it to change properties.
|
||||
/// </summary>
|
||||
/// <returns>{{classname}}Builder</returns>
|
||||
public {{#parent}}new {{/parent}}{{classname}}Builder With()
|
||||
{
|
||||
return Builder()
|
||||
{{#vars}}
|
||||
.{{name}}({{name}}){{#hasMore}}
|
||||
{{/hasMore}}{{/vars}};
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.PropertiesToString();
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return this.EqualsByProperties(obj);
|
||||
}
|
||||
|
||||
public bool Equals({{classname}} other)
|
||||
{
|
||||
return Equals((object) other);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.PropertiesHash();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Implementation of == operator for ({{classname}}.
|
||||
/// </summary>
|
||||
/// <param name="left">Compared ({{classname}}</param>
|
||||
/// <param name="right">Compared ({{classname}}</param>
|
||||
/// <returns>true if compared items are equals, false otherwise</returns>
|
||||
public static bool operator == ({{classname}} left, {{classname}} right)
|
||||
{
|
||||
return Equals(left, right);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Implementation of != operator for ({{classname}}.
|
||||
/// </summary>
|
||||
/// <param name="left">Compared ({{classname}}</param>
|
||||
/// <param name="right">Compared ({{classname}}</param>
|
||||
/// <returns>true if compared items are not equals, false otherwise</returns>
|
||||
public static bool operator != ({{classname}} left, {{classname}} right)
|
||||
{
|
||||
return !Equals(left, right);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builder of {{classname}}.
|
||||
/// </summary>
|
||||
public sealed class {{classname}}Builder
|
||||
{
|
||||
{{#vars}}
|
||||
private {{>nullableDataType}} _{{name}};
|
||||
{{/vars}}
|
||||
|
||||
internal {{classname}}Builder()
|
||||
{
|
||||
SetupDefaults();
|
||||
}
|
||||
|
||||
private void SetupDefaults()
|
||||
{
|
||||
{{#vars}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
_{{name}} = {{{defaultValue}}};
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
{{/vars}}
|
||||
}
|
||||
|
||||
{{#vars}}
|
||||
/// <summary>
|
||||
/// Sets value for {{classname}}.{{{name}}} property.
|
||||
/// </summary>
|
||||
/// <param name="value">{{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}}</param>
|
||||
public {{classname}}Builder {{name}}({{>nullableDataType}} value)
|
||||
{
|
||||
_{{name}} = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
{{/vars}}
|
||||
|
||||
/// <summary>
|
||||
/// Builds instance of {{classname}}.
|
||||
/// </summary>
|
||||
/// <returns>{{classname}}</returns>
|
||||
public {{classname}} Build()
|
||||
{
|
||||
Validate();
|
||||
return new {{classname}}(
|
||||
{{#vars}}
|
||||
{{name}}: _{{name}}{{#hasMore}},{{/hasMore}}
|
||||
{{/vars}}
|
||||
);
|
||||
}
|
||||
|
||||
private void Validate()
|
||||
{ {{#vars}}{{#required}}
|
||||
if (_{{name}} == null)
|
||||
{
|
||||
throw new ArgumentException("{{name}} is a required property for {{classname}} and cannot be null");
|
||||
} {{/required}}{{/vars}}
|
||||
}
|
||||
}
|
||||
|
||||
{{#vars}}{{#isEnum}}{{^parent}}
|
||||
{{>innerModelEnum}}{{/parent}}{{/isEnum}}{{#items.isEnum}}
|
||||
{{#items}}{{>innerModelEnum}}{{/items}}{{/items.isEnum}}{{/vars}}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
VisualStudioVersion = 12.0.0.0
|
||||
MinimumVisualStudioVersion = 10.0.0.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{768B8DC6-54EE-4D40-9B20-7857E1D742A4}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{7D0AE5BB-FFF1-4523-83ED-A60492D321D5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@@ -10,10 +10,10 @@ Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{768B8DC6-54EE-4D40-9B20-7857E1D742A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{768B8DC6-54EE-4D40-9B20-7857E1D742A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{768B8DC6-54EE-4D40-9B20-7857E1D742A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{768B8DC6-54EE-4D40-9B20-7857E1D742A4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7D0AE5BB-FFF1-4523-83ED-A60492D321D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7D0AE5BB-FFF1-4523-83ED-A60492D321D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7D0AE5BB-FFF1-4523-83ED-A60492D321D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7D0AE5BB-FFF1-4523-83ED-A60492D321D5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{768B8DC6-54EE-4D40-9B20-7857E1D742A4}</ProjectGuid>
|
||||
<ProjectGuid>{7D0AE5BB-FFF1-4523-83ED-A60492D321D5}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>IO.Swagger.v2</RootNamespace>
|
||||
|
||||
@@ -182,4 +182,4 @@ namespace IO.Swagger.v2.Models
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,4 +162,4 @@ namespace IO.Swagger.v2.Models
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -244,4 +244,4 @@ namespace IO.Swagger.v2.Models
|
||||
|
||||
public enum StatusEnum { Placed, Approved, Delivered };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,4 +251,4 @@ namespace IO.Swagger.v2.Models
|
||||
|
||||
public enum StatusEnum { Available, Pending, Sold };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,4 +162,4 @@ namespace IO.Swagger.v2.Models
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -282,4 +282,4 @@ namespace IO.Swagger.v2.Models
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user