Skip to content

Commit f22d135

Browse files
committed
Run against NSwag v14 (requires to clone NSwag sources and checkout RicoSuter/NSwag#4888)
1 parent 6ddd7b8 commit f22d135

File tree

12 files changed

+112
-40
lines changed

12 files changed

+112
-40
lines changed

nuget.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<configuration>
33
<packageSources>
44
<add key="Swashbuckle MyGet" value="https://www.myget.org/F/domaindrivendev/api/v3/index.json" />
5+
<add key="NSwag MyGet" value="https://www.myget.org/F/nswag/api/v3/index.json" />
56
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
67
</packageSources>
78
</configuration>

package-versions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<InheritDocVersion>2.0.*</InheritDocVersion>
2121
<KiotaVersion>1.*</KiotaVersion>
2222
<MicrosoftApiClientVersion>8.0.*</MicrosoftApiClientVersion>
23-
<NSwagApiClientVersion>13.20.*</NSwagApiClientVersion>
23+
<NSwagApiClientVersion>14.0.8-preview-20240707-1915</NSwagApiClientVersion>
2424
<NewtonsoftJsonVersion>13.0.*</NewtonsoftJsonVersion>
2525
<SourceLinkVersion>8.0.*</SourceLinkVersion>
2626
<SwashbuckleVersion>6.*-*</SwashbuckleVersion>

src/Examples/OpenApiNSwagClientExample/ExampleApiClient.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ namespace OpenApiNSwagClientExample;
77
[UsedImplicitly(ImplicitUseTargetFlags.Itself)]
88
public partial class ExampleApiClient : JsonApiClient
99
{
10-
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
10+
partial void Initialize()
1111
{
12-
SetSerializerSettingsForJsonApi(settings);
12+
_instanceSettings = new JsonSerializerSettings();
1313

1414
#if DEBUG
15-
settings.Formatting = Formatting.Indented;
15+
_instanceSettings.Formatting = Formatting.Indented;
1616
#endif
17+
18+
SetSerializerSettingsForJsonApi(_instanceSettings);
1719
}
1820
}

src/Examples/OpenApiNSwagClientExample/OpenApiNSwagClientExample.csproj

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,14 @@
2424
<ClassName>ExampleApiClient</ClassName>
2525
<OutputPath>ExampleApiClient.cs</OutputPath>
2626
<CodeGenerator>NSwagCSharp</CodeGenerator>
27-
<Options>/GenerateExceptionClasses:false /WrapResponses:true /GenerateResponseClasses:false /ResponseClass:ApiResponse /GenerateNullableReferenceTypes:true /GenerateOptionalPropertiesAsNullable:true /GenerateOptionalParameters:true /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
27+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
28+
<NSwagWrapResponses>true</NSwagWrapResponses>
29+
<NSwagGenerateResponseClasses>false</NSwagGenerateResponseClasses>
30+
<NSwagResponseClass>ApiResponse</NSwagResponseClass>
31+
<NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes>
32+
<NSwagGenerateOptionalPropertiesAsNullable>true</NSwagGenerateOptionalPropertiesAsNullable>
33+
<NSwagGenerateOptionalParameters>true</NSwagGenerateOptionalParameters>
34+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
2835
</OpenApiReference>
2936
</ItemGroup>
3037
</Project>

src/JsonApiDotNetCore.OpenApi/SwaggerComponents/DocumentationOpenApiOperationFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ private static void AddQueryStringParameters(OpenApiOperation operation, bool is
540540
// The next best thing is to expose the query string parameters as unstructured and optional.
541541
// - This makes SwaggerUI ask for JSON, which is a bit odd, but it works. For example: {"sort":"-id"} produces: ?sort=-id
542542
// - This makes NSwag produce a C# client with method signature: GetAsync(IDictionary<string, string?>? query)
543-
// when combined with <Options>/GenerateNullableReferenceTypes:true</Options> in the project file.
543+
// when combined with <NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes> in the project file.
544544

545545
operation.Parameters.Add(new OpenApiParameter
546546
{

test/OpenApiNSwagClientTests/LegacyOpenApi/GeneratedCode/LegacyClient.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.LegacyOpenApi.GeneratedCode;
55

66
internal partial class LegacyClient : JsonApiClient
77
{
8-
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
8+
partial void Initialize()
99
{
10-
SetSerializerSettingsForJsonApi(settings);
10+
_instanceSettings = new JsonSerializerSettings
11+
{
12+
Formatting = Formatting.Indented
13+
};
1114

12-
settings.Formatting = Formatting.Indented;
15+
SetSerializerSettingsForJsonApi(_instanceSettings);
1316
}
1417
}

test/OpenApiNSwagClientTests/OpenApiNSwagClientTests.csproj

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,56 +28,77 @@
2828
<ClassName>LegacyClient</ClassName>
2929
<OutputPath>LegacyClient.cs</OutputPath>
3030
<CodeGenerator>NSwagCSharp</CodeGenerator>
31-
<Options>/GenerateClientInterfaces:true /ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
31+
<NSwagGenerateClientInterfaces>true</NSwagGenerateClientInterfaces>
32+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
33+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
34+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
3235
</OpenApiReference>
3336
<OpenApiReference Include="..\OpenApiTests\NamingConventions\KebabCase\GeneratedSwagger\swagger.g.json">
3437
<Namespace>OpenApiNSwagClientTests.NamingConventions.KebabCase.GeneratedCode</Namespace>
3538
<ClassName>KebabCaseClient</ClassName>
3639
<OutputPath>KebabCaseClient.cs</OutputPath>
3740
<CodeGenerator>NSwagCSharp</CodeGenerator>
38-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
41+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
42+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
43+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
3944
</OpenApiReference>
4045
<OpenApiReference Include="..\OpenApiTests\NamingConventions\CamelCase\GeneratedSwagger\swagger.g.json">
4146
<Namespace>OpenApiNSwagClientTests.NamingConventions.CamelCase.GeneratedCode</Namespace>
4247
<ClassName>CamelCaseClient</ClassName>
4348
<OutputPath>CamelCaseClient.cs</OutputPath>
4449
<CodeGenerator>NSwagCSharp</CodeGenerator>
45-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
50+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
51+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
52+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
4653
</OpenApiReference>
4754
<OpenApiReference Include="..\OpenApiTests\NamingConventions\PascalCase\GeneratedSwagger\swagger.g.json">
4855
<Namespace>OpenApiNSwagClientTests.NamingConventions.PascalCase.GeneratedCode</Namespace>
4956
<ClassName>PascalCaseClient</ClassName>
5057
<OutputPath>PascalCaseClient.cs</OutputPath>
5158
<CodeGenerator>NSwagCSharp</CodeGenerator>
52-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag</Options>
59+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
60+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
61+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
5362
</OpenApiReference>
5463
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOff\ModelStateValidationOff\GeneratedSwagger\swagger.g.json">
64+
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOff.GeneratedCode</Namespace>
5565
<ClassName>NrtOffMsvOffClient</ClassName>
5666
<OutputPath>NrtOffMsvOffClient.cs</OutputPath>
5767
<CodeGenerator>NSwagCSharp</CodeGenerator>
58-
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOff.GeneratedCode</Namespace>
59-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:false</Options>
68+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
69+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
70+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
71+
<NSwagGenerateNullableReferenceTypes>false</NSwagGenerateNullableReferenceTypes>
6072
</OpenApiReference>
6173
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOff\ModelStateValidationOn\GeneratedSwagger\swagger.g.json">
74+
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOn.GeneratedCode</Namespace>
6275
<ClassName>NrtOffMsvOnClient</ClassName>
6376
<OutputPath>NrtOffMsvOnClient.cs</OutputPath>
6477
<CodeGenerator>NSwagCSharp</CodeGenerator>
65-
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOff.ModelStateValidationOn.GeneratedCode</Namespace>
66-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:false</Options>
78+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
79+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
80+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
81+
<NSwagGenerateNullableReferenceTypes>false</NSwagGenerateNullableReferenceTypes>
6782
</OpenApiReference>
6883
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOn\ModelStateValidationOff\GeneratedSwagger\swagger.g.json">
84+
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOff.GeneratedCode</Namespace>
6985
<ClassName>NrtOnMsvOffClient</ClassName>
7086
<OutputPath>NrtOnMsvOffClient.cs</OutputPath>
7187
<CodeGenerator>NSwagCSharp</CodeGenerator>
72-
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOff.GeneratedCode</Namespace>
73-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:true</Options>
88+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
89+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
90+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
91+
<NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes>
7492
</OpenApiReference>
7593
<OpenApiReference Include="..\OpenApiTests\ResourceFieldValidation\NullableReferenceTypesOn\ModelStateValidationOn\GeneratedSwagger\swagger.g.json">
94+
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOn.GeneratedCode</Namespace>
7695
<ClassName>NrtOnMsvOnClient</ClassName>
7796
<OutputPath>NrtOnMsvOnClient.cs</OutputPath>
7897
<CodeGenerator>NSwagCSharp</CodeGenerator>
79-
<Namespace>OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypesOn.ModelStateValidationOn.GeneratedCode</Namespace>
80-
<Options>/ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.NSwag /GenerateNullableReferenceTypes:true</Options>
98+
<NSwagClientClassAccessModifier>internal</NSwagClientClassAccessModifier>
99+
<NSwagGenerateExceptionClasses>false</NSwagGenerateExceptionClasses>
100+
<NSwagAdditionalNamespaceUsages>JsonApiDotNetCore.OpenApi.Client.NSwag</NSwagAdditionalNamespaceUsages>
101+
<NSwagGenerateNullableReferenceTypes>true</NSwagGenerateNullableReferenceTypes>
81102
</OpenApiReference>
82103
</ItemGroup>
83104
</Project>

test/OpenApiNSwagClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOff/GeneratedCode/NrtOffMsvOffClient.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes
55

66
internal partial class NrtOffMsvOffClient : JsonApiClient
77
{
8-
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
8+
partial void Initialize()
99
{
10-
SetSerializerSettingsForJsonApi(settings);
10+
_instanceSettings = new JsonSerializerSettings
11+
{
12+
Formatting = Formatting.Indented
13+
};
1114

12-
settings.Formatting = Formatting.Indented;
15+
SetSerializerSettingsForJsonApi(_instanceSettings);
1316
}
1417
}

test/OpenApiNSwagClientTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOn/GeneratedCode/NrtOffMsvOnClient.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes
55

66
internal partial class NrtOffMsvOnClient : JsonApiClient
77
{
8-
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
8+
partial void Initialize()
99
{
10-
SetSerializerSettingsForJsonApi(settings);
10+
_instanceSettings = new JsonSerializerSettings
11+
{
12+
Formatting = Formatting.Indented
13+
};
1114

12-
settings.Formatting = Formatting.Indented;
15+
SetSerializerSettingsForJsonApi(_instanceSettings);
1316
}
1417
}

test/OpenApiNSwagClientTests/ResourceFieldValidation/NullableReferenceTypesOn/ModelStateValidationOff/GeneratedCode/NrtOnMsvOffClient.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ namespace OpenApiNSwagClientTests.ResourceFieldValidation.NullableReferenceTypes
55

66
internal partial class NrtOnMsvOffClient : JsonApiClient
77
{
8-
partial void UpdateJsonSerializerSettings(JsonSerializerSettings settings)
8+
partial void Initialize()
99
{
10-
SetSerializerSettingsForJsonApi(settings);
10+
_instanceSettings = new JsonSerializerSettings
11+
{
12+
Formatting = Formatting.Indented
13+
};
1114

12-
settings.Formatting = Formatting.Indented;
15+
SetSerializerSettingsForJsonApi(_instanceSettings);
1316
}
1417
}

0 commit comments

Comments
 (0)