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