Skip to content

Commit

Permalink
Integrate new NJS version: Fixes for OpenAPI, improve allOf inheritan…
Browse files Browse the repository at this point in the history
…ce (#1631)

* Fix OpenAPI null handling and more

* OpenAPI 3: Fix Parameter.IsNullable and add Parameter.Position

* Fix liquid template

* Improve ui

* Update NJS
  • Loading branch information
RicoSuter committed Sep 26, 2018
1 parent 26e0c58 commit 86e06e4
Show file tree
Hide file tree
Showing 79 changed files with 475 additions and 317 deletions.
Expand Up @@ -4,8 +4,14 @@
"swaggerGenerator": {
"aspNetCoreToSwagger": {
"project": "Sample.AspNetCore20.csproj",
"msBuildProjectExtensionsPath": null,
"configuration": null,
"runtime": null,
"targetFramework": null,
"noBuild": false,
"verbose": true,
"workingDirectory": null,
"requireParametersWithoutDefault": true,
"defaultPropertyNameHandling": "Default",
"defaultReferenceTypeNullHandling": "Null",
"defaultEnumHandling": "Integer",
Expand All @@ -16,12 +22,28 @@
"ignoreObsoleteProperties": false,
"allowReferencesWithProperties": false,
"excludedTypeNames": [],
"serviceHost": null,
"serviceBasePath": null,
"serviceSchemes": [],
"infoTitle": "My Title",
"infoDescription": null,
"infoVersion": "1.0.0",
"includedVersions": null,
"documentTemplate": null,
"documentProcessorTypes": [],
"operationProcessorTypes": [],
"typeNameGeneratorType": null,
"schemaNameGeneratorType": null,
"contractResolverType": null,
"serializerSettingsType": null,
"useDocumentProvider": false,
"startupType": null,
"output": "nswag_project_swagger.json",
"outputType": "Swagger2",
"assemblyPaths": [],
"referencePaths": []
"assemblyConfig": null,
"referencePaths": [],
"useNuGetCache": false
}
},
"codeGenerators": {}
Expand Down
@@ -1,5 +1,5 @@
{
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.10.73.0 (Newtonsoft.Json v10.0.0.0))",
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.11.0.0 (Newtonsoft.Json v10.0.0.0))",
"swagger": "2.0",
"info": {
"title": "My Title",
Expand Down
Expand Up @@ -3,8 +3,15 @@
"defaultVariables": "configuration=Debug",
"swaggerGenerator": {
"aspNetCoreToSwagger": {
"project": null,
"msBuildProjectExtensionsPath": null,
"configuration": null,
"runtime": null,
"targetFramework": null,
"noBuild": false,
"verbose": false,
"workingDirectory": null,
"requireParametersWithoutDefault": true,
"defaultPropertyNameHandling": "Default",
"defaultReferenceTypeNullHandling": "Null",
"defaultEnumHandling": "Integer",
Expand All @@ -15,13 +22,28 @@
"ignoreObsoleteProperties": false,
"allowReferencesWithProperties": false,
"excludedTypeNames": [],
"serviceHost": null,
"serviceBasePath": null,
"serviceSchemes": [],
"infoTitle": "My Title",
"infoDescription": null,
"infoVersion": "1.0.0",
"includedVersions": null,
"documentTemplate": null,
"documentProcessorTypes": [],
"operationProcessorTypes": [],
"typeNameGeneratorType": null,
"schemaNameGeneratorType": null,
"contractResolverType": null,
"serializerSettingsType": null,
"useDocumentProvider": false,
"startupType": null,
"output": "nswag_assembly_swagger.json",
"outputType": "Swagger2",
"assemblyPaths": [
"bin/$(configuration)/netcoreapp2.1/Sample.AspNetCore21.dll"
"bin/Release/netcoreapp2.1/Sample.AspNetCore21.dll"
],
"assemblyConfig": null,
"referencePaths": [],
"useNuGetCache": false
}
Expand Down
@@ -1,5 +1,5 @@
{
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.10.73.0 (Newtonsoft.Json v9.0.0.0))",
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.11.0.0 (Newtonsoft.Json v9.0.0.0))",
"swagger": "2.0",
"info": {
"title": "My Title",
Expand Down
Expand Up @@ -4,9 +4,14 @@
"swaggerGenerator": {
"aspNetCoreToSwagger": {
"project": "Sample.AspNetCore21.csproj",
"msBuildProjectExtensionsPath": null,
"configuration": "",
"runtime": null,
"targetFramework": null,
"noBuild": false,
"verbose": false,
"workingDirectory": null,
"requireParametersWithoutDefault": true,
"defaultPropertyNameHandling": "Default",
"defaultReferenceTypeNullHandling": "Null",
"defaultEnumHandling": "Integer",
Expand All @@ -17,12 +22,28 @@
"ignoreObsoleteProperties": false,
"allowReferencesWithProperties": false,
"excludedTypeNames": [],
"serviceHost": null,
"serviceBasePath": null,
"serviceSchemes": [],
"infoTitle": "My Title",
"infoDescription": null,
"infoVersion": "1.0.0",
"includedVersions": null,
"documentTemplate": null,
"documentProcessorTypes": [],
"operationProcessorTypes": [],
"typeNameGeneratorType": null,
"schemaNameGeneratorType": null,
"contractResolverType": null,
"serializerSettingsType": null,
"useDocumentProvider": false,
"startupType": null,
"output": "nswag_project_swagger.json",
"outputType": "Swagger2",
"assemblyPaths": [],
"referencePaths": []
"assemblyConfig": null,
"referencePaths": [],
"useNuGetCache": false
}
},
"codeGenerators": {}
Expand Down
@@ -1,5 +1,5 @@
{
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.10.73.0 (Newtonsoft.Json v11.0.0.0))",
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.11.0.0 (Newtonsoft.Json v11.0.0.0))",
"swagger": "2.0",
"info": {
"title": "My Title",
Expand Down
@@ -1,5 +1,5 @@
{
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.10.73.0 (Newtonsoft.Json v9.0.0.0))",
"x-generator": "NSwag v11.19.2.0 (NJsonSchema v9.11.0.0 (Newtonsoft.Json v9.0.0.0))",
"swagger": "2.0",
"info": {
"title": "My Title",
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj
Expand Up @@ -46,7 +46,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Owin" Version="3.0.1" />
<PackageReference Include="Microsoft.Owin.StaticFiles" Version="3.0.1" />
<PackageReference Include="NJsonSchema" Version="9.10.75" />
<PackageReference Include="NJsonSchema" Version="9.11.0" />
<PackageReference Include="Owin" Version="1.0" />
</ItemGroup>
<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj
Expand Up @@ -21,7 +21,7 @@
<DefineConstants>TRACE;DEBUG;NET45</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema" Version="9.10.75" />
<PackageReference Include="NJsonSchema" Version="9.11.0" />
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" />
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.3" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj
Expand Up @@ -24,7 +24,7 @@
<DefineConstants>TRACE;RELEASE;FullNet;NET451</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema" Version="9.10.75" />
<PackageReference Include="NJsonSchema" Version="9.11.0" />
<PackageReference Include="System.Net.Http" Version="4.3.2" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
Expand Down
Expand Up @@ -40,8 +40,8 @@
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NJsonSchema, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.75\lib\net45\NJsonSchema.dll</HintPath>
<Reference Include="NJsonSchema, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.11.0\lib\net45\NJsonSchema.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.CodeGeneration.CSharp.Tests/packages.config
Expand Up @@ -4,5 +4,5 @@
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net451" />
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net451" />
<package id="NJsonSchema" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema" version="9.11.0" targetFramework="net462" />
</packages>
14 changes: 12 additions & 2 deletions src/NSwag.CodeGeneration.CSharp/Models/CSharpOperationModel.cs
Expand Up @@ -54,9 +54,19 @@ public class CSharpOperationModel : OperationModelBase<CSharpParameterModel, CSh
if (settings.GenerateOptionalParameters)
{
if (generator is SwaggerToCSharpControllerGenerator)
parameters = parameters.OrderBy(p => !p.IsRequired).ThenBy(p => p.Default == null).ToList();
{
parameters = parameters
.OrderBy(p => p.Position ?? 0)
.OrderBy(p => !p.IsRequired)
.ThenBy(p => p.Default == null).ToList();
}
else
parameters = parameters.OrderBy(p => !p.IsRequired).ToList();
{
parameters = parameters
.OrderBy(p => p.Position ?? 0)
.OrderBy(p => !p.IsRequired)
.ToList();
}
}

Parameters = parameters.Select(parameter =>
Expand Down
Expand Up @@ -41,7 +41,7 @@
<EmbeddedResource Include="Templates\JsonExceptionConverter.liquid" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="9.10.75" />
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="9.11.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="Microsoft.CSharp" />
Expand Down
Expand Up @@ -35,11 +35,8 @@ public SwaggerToCSharpClientGenerator(SwaggerDocument document, SwaggerToCSharpC
public SwaggerToCSharpClientGenerator(SwaggerDocument document, SwaggerToCSharpClientGeneratorSettings settings, CSharpTypeResolver resolver)
: base(document, settings, resolver)
{
if (document == null)
throw new ArgumentNullException(nameof(document));

Settings = settings;
_document = document;
_document = document ?? throw new ArgumentNullException(nameof(document));
}

/// <summary>Gets or sets the generator settings.</summary>
Expand Down
Expand Up @@ -25,7 +25,7 @@ public abstract class SwaggerToCSharpGeneratorBase : ClientGeneratorBase<CSharpO
/// <param name="settings">The settings.</param>
/// <param name="resolver">The resolver.</param>
protected SwaggerToCSharpGeneratorBase(SwaggerDocument document, SwaggerToCSharpGeneratorSettings settings, CSharpTypeResolver resolver)
: base(resolver, settings.CodeGeneratorSettings)
: base(document, settings.CodeGeneratorSettings, resolver)
{
_document = document;
_settings = settings;
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.CodeGeneration.CSharp/Templates/File.liquid
Expand Up @@ -118,7 +118,7 @@ namespace {{ Namespace }}
public System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>> Headers { get; private set; }

public {{ exceptionClassName }}(string message, int statusCode, string response, System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Exception innerException)
: base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + response.Substring(0, response.Length >= 512 ? 512 : str.Length), innerException)
: base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + response.Substring(0, response.Length >= 512 ? 512 : response.Length), innerException)
{
StatusCode = statusCode;
Response = response;
Expand Down
16 changes: 8 additions & 8 deletions src/NSwag.CodeGeneration.Tests/NSwag.CodeGeneration.Tests.csproj
Expand Up @@ -75,17 +75,17 @@
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NJsonSchema, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.75\lib\net45\NJsonSchema.dll</HintPath>
<Reference Include="NJsonSchema, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.11.0\lib\net45\NJsonSchema.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.10.75\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.11.0\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration.CSharp, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.CSharp.9.10.75\lib\net451\NJsonSchema.CodeGeneration.CSharp.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration.CSharp, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.CSharp.9.11.0\lib\net451\NJsonSchema.CodeGeneration.CSharp.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.10.75\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.11.0\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
</Reference>
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
<HintPath>..\packages\Swashbuckle.Core.5.5.3\lib\net40\Swashbuckle.Core.dll</HintPath>
Expand Down
8 changes: 4 additions & 4 deletions src/NSwag.CodeGeneration.Tests/packages.config
Expand Up @@ -13,10 +13,10 @@
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net46" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net46" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
<package id="NJsonSchema" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.CSharp" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema" version="9.11.0" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.11.0" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.CSharp" version="9.11.0" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.11.0" targetFramework="net462" />
<package id="Swashbuckle.Core" version="5.5.3" targetFramework="net45" />
<package id="System.AppContext" version="4.3.0" targetFramework="net46" />
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
Expand Down
Expand Up @@ -46,14 +46,14 @@
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NJsonSchema, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.75\lib\net45\NJsonSchema.dll</HintPath>
<Reference Include="NJsonSchema, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.11.0\lib\net45\NJsonSchema.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.10.75\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.11.0\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.10.75.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.10.75\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.11.0.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.11.0\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
Expand Down
6 changes: 3 additions & 3 deletions src/NSwag.CodeGeneration.TypeScript.Tests/packages.config
Expand Up @@ -9,9 +9,9 @@
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net46" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net46" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net451" />
<package id="NJsonSchema" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.10.75" targetFramework="net462" />
<package id="NJsonSchema" version="9.11.0" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.11.0" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.11.0" targetFramework="net462" />
<package id="System.AppContext" version="4.3.0" targetFramework="net46" />
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net46" />
Expand Down
Expand Up @@ -38,7 +38,12 @@ public class TypeScriptOperationModel : OperationModelBase<TypeScriptParameterMo

var parameters = _operation.ActualParameters.ToList();
if (settings.GenerateOptionalParameters)
parameters = parameters.OrderBy(p => !p.IsRequired).ToList();
{
parameters = parameters
.OrderBy(p => p.Position ?? 0)
.OrderBy(p => !p.IsRequired)
.ToList();
}

Parameters = parameters.Select(parameter =>
new TypeScriptParameterModel(parameter.Name,
Expand Down
Expand Up @@ -36,7 +36,7 @@
<EmbeddedResource Include="Templates\JQueryPromisesClient.liquid" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema.CodeGeneration.TypeScript" Version="9.10.75" />
<PackageReference Include="NJsonSchema.CodeGeneration.TypeScript" Version="9.11.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="Microsoft.CSharp" />
Expand Down
Expand Up @@ -37,14 +37,11 @@ public SwaggerToTypeScriptClientGenerator(SwaggerDocument document, SwaggerToTyp
/// <param name="resolver">The resolver.</param>
/// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception>
public SwaggerToTypeScriptClientGenerator(SwaggerDocument document, SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptTypeResolver resolver)
: base(resolver, settings.CodeGeneratorSettings)
: base(document, settings.CodeGeneratorSettings, resolver)
{
if (document == null)
throw new ArgumentNullException(nameof(document));

Settings = settings;

_document = document;
_document = document ?? throw new ArgumentNullException(nameof(document));
_resolver = resolver;
_resolver.RegisterSchemaDefinitions(_document.Definitions);
_extensionCode = new TypeScriptExtensionCode(
Expand Down

0 comments on commit 86e06e4

Please sign in to comment.