diff --git a/modules/swagger-codegen/src/main/resources/nancyfx/model.mustache b/modules/swagger-codegen/src/main/resources/nancyfx/model.mustache index 2313ae976f1e..090f503b42cd 100644 --- a/modules/swagger-codegen/src/main/resources/nancyfx/model.mustache +++ b/modules/swagger-codegen/src/main/resources/nancyfx/model.mustache @@ -7,166 +7,11 @@ using NodaTime; {{#imports}}using {{import}}; {{/imports}} -{{#models}} -{{#model}} namespace {{packageName}}.{{packageContext}}.Models { - /// - /// {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} - /// - public {{^hasChildren}}sealed {{/hasChildren}}class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}> - { {{#vars}}{{^isInherited}} - /// - /// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}} - /// - public {{>nullableDataType}} {{name}} { get; private set; } -{{/isInherited}}{{/vars}} - - /// - /// Empty constructor required by some serializers. - /// Use {{classname}}.Builder() for instance creation instead. - /// - [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}} - } - - /// - /// Returns builder of {{classname}}. - /// - /// {{classname}}Builder - public static {{#parent}}new {{/parent}}{{classname}}Builder Builder() - { - return new {{classname}}Builder(); - } - - /// - /// Returns {{classname}}Builder with properties set. - /// Use it to change properties. - /// - /// {{classname}}Builder - 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(); - } - - /// - /// Implementation of == operator for ({{classname}}. - /// - /// Compared ({{classname}} - /// Compared ({{classname}} - /// true if compared items are equals, false otherwise - public static bool operator == ({{classname}} left, {{classname}} right) - { - return Equals(left, right); - } - - /// - /// Implementation of != operator for ({{classname}}. - /// - /// Compared ({{classname}} - /// Compared ({{classname}} - /// true if compared items are not equals, false otherwise - public static bool operator != ({{classname}} left, {{classname}} right) - { - return !Equals(left, right); - } - - /// - /// Builder of {{classname}}. - /// - 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}} - /// - /// Sets value for {{classname}}.{{{name}}} property. - /// - /// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}} - public {{classname}}Builder {{name}}({{>nullableDataType}} value) - { - _{{name}} = value; - return this; - } - - {{/vars}} - - /// - /// Builds instance of {{classname}}. - /// - /// {{classname}} - 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}} -} +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/nancyfx/modelEnum.mustache b/modules/swagger-codegen/src/main/resources/nancyfx/modelEnum.mustache new file mode 100644 index 000000000000..ddc5c2a56cfb --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/nancyfx/modelEnum.mustache @@ -0,0 +1,13 @@ + /// + /// {{^description}}Defines {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} + /// {{#description}} + /// {{{description}}}{{/description}} + public enum {{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} + { + {{#allowableValues}}{{#enumVars}} + /// + /// Enum {{name}} + /// + {{name}}{{#isInteger}} = {{{value}}}{{/isInteger}}{{^-last}}, + {{/-last}}{{/enumVars}}{{/allowableValues}} + } \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/nancyfx/modelGeneric.mustache b/modules/swagger-codegen/src/main/resources/nancyfx/modelGeneric.mustache new file mode 100644 index 000000000000..1093e4dd266b --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/nancyfx/modelGeneric.mustache @@ -0,0 +1,156 @@ + /// + /// {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} + /// + public {{^hasChildren}}sealed {{/hasChildren}}class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}> + { {{#vars}}{{^isInherited}} + /// + /// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}} + /// + public {{>nullableDataType}} {{name}} { get; private set; } +{{/isInherited}}{{/vars}} + + /// + /// Empty constructor required by some serializers. + /// Use {{classname}}.Builder() for instance creation instead. + /// + [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}} + } + + /// + /// Returns builder of {{classname}}. + /// + /// {{classname}}Builder + public static {{#parent}}new {{/parent}}{{classname}}Builder Builder() + { + return new {{classname}}Builder(); + } + + /// + /// Returns {{classname}}Builder with properties set. + /// Use it to change properties. + /// + /// {{classname}}Builder + 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(); + } + + /// + /// Implementation of == operator for ({{classname}}. + /// + /// Compared ({{classname}} + /// Compared ({{classname}} + /// true if compared items are equals, false otherwise + public static bool operator == ({{classname}} left, {{classname}} right) + { + return Equals(left, right); + } + + /// + /// Implementation of != operator for ({{classname}}. + /// + /// Compared ({{classname}} + /// Compared ({{classname}} + /// true if compared items are not equals, false otherwise + public static bool operator != ({{classname}} left, {{classname}} right) + { + return !Equals(left, right); + } + + /// + /// Builder of {{classname}}. + /// + 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}} + /// + /// Sets value for {{classname}}.{{{name}}} property. + /// + /// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}} + public {{classname}}Builder {{name}}({{>nullableDataType}} value) + { + _{{name}} = value; + return this; + } + + {{/vars}} + + /// + /// Builds instance of {{classname}}. + /// + /// {{classname}} + 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}} + } \ No newline at end of file diff --git a/samples/server/petstore/nancyfx/IO.Swagger.sln b/samples/server/petstore/nancyfx/IO.Swagger.sln index 1e40deb1a147..5d8c69c5c30c 100644 --- a/samples/server/petstore/nancyfx/IO.Swagger.sln +++ b/samples/server/petstore/nancyfx/IO.Swagger.sln @@ -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 diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/IO.Swagger.csproj b/samples/server/petstore/nancyfx/src/IO.Swagger/IO.Swagger.csproj index e1577197b6fc..ad4e5e7a4bbe 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/IO.Swagger.csproj +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/IO.Swagger.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - {768B8DC6-54EE-4D40-9B20-7857E1D742A4} + {7D0AE5BB-FFF1-4523-83ED-A60492D321D5} Library Properties IO.Swagger.v2 diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/ApiResponse.cs b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/ApiResponse.cs index 3b8ad566af86..ebaa3c8d4f16 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/ApiResponse.cs +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/ApiResponse.cs @@ -182,4 +182,4 @@ namespace IO.Swagger.v2.Models } -} +} \ No newline at end of file diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Category.cs b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Category.cs index c6089446e516..bf811614b37f 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Category.cs +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Category.cs @@ -162,4 +162,4 @@ namespace IO.Swagger.v2.Models } -} +} \ No newline at end of file diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Order.cs b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Order.cs index f1f94f39d77a..0495a36f138c 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Order.cs +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Order.cs @@ -244,4 +244,4 @@ namespace IO.Swagger.v2.Models public enum StatusEnum { Placed, Approved, Delivered }; } -} +} \ No newline at end of file diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Pet.cs b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Pet.cs index b092feb9e851..f945a0fdd78a 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Pet.cs +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Pet.cs @@ -251,4 +251,4 @@ namespace IO.Swagger.v2.Models public enum StatusEnum { Available, Pending, Sold }; } -} +} \ No newline at end of file diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Tag.cs b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Tag.cs index 94b15c123a18..02d1e40f1ece 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Tag.cs +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/Tag.cs @@ -162,4 +162,4 @@ namespace IO.Swagger.v2.Models } -} +} \ No newline at end of file diff --git a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/User.cs b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/User.cs index bd720290ad4b..99f401750dfc 100644 --- a/samples/server/petstore/nancyfx/src/IO.Swagger/Models/User.cs +++ b/samples/server/petstore/nancyfx/src/IO.Swagger/Models/User.cs @@ -282,4 +282,4 @@ namespace IO.Swagger.v2.Models } -} +} \ No newline at end of file