Skip to content

Commit 4e09789

Browse files
[release/11.0-preview2] feat: adds support for OpenAPI 3.2.0 (#65476)
* feat: adds support for OpenAPI 3.2.0 * tests: fixes failing unit test for generator due to blank spaces * feat: makes OpenAPI 3.2.0 the default version * tests: adds missing integration tests for version 3.2.0 Signed-off-by: Vincent Biret <vibiret@microsoft.com> * fix: updates the outdated default version in the message Signed-off-by: Vincent Biret <vibiret@microsoft.com> * tests: aligns test values with error message Signed-off-by: Vincent Biret <vibiret@microsoft.com> * chore: reverts default versions to 3.1 to avoid breaking swagger UI for now. Needs to be reverted before GA. Signed-off-by: Vincent Biret <vibiret@microsoft.com> * tests: reverts version after change in default version Signed-off-by: Vincent Biret <vibiret@microsoft.com> * chore: formatting --------- Signed-off-by: Vincent Biret <vibiret@microsoft.com> Co-authored-by: Vincent Biret <vibiret@microsoft.com>
1 parent 0e67366 commit 4e09789

File tree

34 files changed

+3013
-102
lines changed

34 files changed

+3013
-102
lines changed

eng/Versions.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@
193193
<XunitExtensibilityExecutionVersion>$(XunitVersion)</XunitExtensibilityExecutionVersion>
194194
<XUnitRunnerVisualStudioVersion>3.1.3</XUnitRunnerVisualStudioVersion>
195195
<MicrosoftDataSqlClientVersion>5.2.2</MicrosoftDataSqlClientVersion>
196-
<MicrosoftOpenApiVersion>2.0.0</MicrosoftOpenApiVersion>
197-
<MicrosoftOpenApiYamlReaderVersion>2.0.0</MicrosoftOpenApiYamlReaderVersion>
196+
<MicrosoftOpenApiVersion>3.3.1</MicrosoftOpenApiVersion>
197+
<MicrosoftOpenApiYamlReaderVersion>3.3.1</MicrosoftOpenApiYamlReaderVersion>
198198
<!-- dotnet tool versions (see also auto-updated DotnetEfVersion property). -->
199199
<DotnetDumpVersion>6.0.322601</DotnetDumpVersion>
200200
<DotnetServeVersion>1.10.93</DotnetServeVersion>

src/OpenApi/gen/XmlCommentGenerator.Emitter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
413413
{
414414
continue;
415415
}
416-
foreach (var mediaType in content)
416+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
417417
{
418418
mediaType.Example = jsonString.Parse();
419419
}
@@ -475,7 +475,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
475475
continue;
476476
}
477477
var parsedExample = jsonString.Parse();
478-
foreach (var mediaType in content)
478+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
479479
{
480480
mediaType.Example = parsedExample;
481481
}

src/OpenApi/src/Services/OpenApiDocumentService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ private async Task<OpenApiResponse> GetResponseAsync(
418418
var response = new OpenApiResponse
419419
{
420420
Description = apiResponseType.Description ?? ReasonPhrases.GetReasonPhrase(statusCode),
421-
Content = new Dictionary<string, OpenApiMediaType>()
421+
Content = new Dictionary<string, IOpenApiMediaType>()
422422
};
423423

424424
// ApiResponseFormats aggregates information about the supported response content types
@@ -576,7 +576,7 @@ private async Task<OpenApiRequestBody> GetFormRequestBody(
576576
// serializing a form collection from an empty body. Instead, requiredness
577577
// must be set on a per-parameter basis. See below.
578578
Required = true,
579-
Content = new Dictionary<string, OpenApiMediaType>()
579+
Content = new Dictionary<string, IOpenApiMediaType>()
580580
};
581581

582582
var schema = new OpenApiSchema { Type = JsonSchemaType.Object, Properties = new Dictionary<string, IOpenApiSchema>() };
@@ -750,7 +750,7 @@ private async Task<OpenApiRequestBody> GetJsonRequestBody(
750750
var requestBody = new OpenApiRequestBody
751751
{
752752
Required = IsRequired(bodyParameter),
753-
Content = new Dictionary<string, OpenApiMediaType>(),
753+
Content = new Dictionary<string, IOpenApiMediaType>(),
754754
Description = GetParameterDescriptionFromAttribute(bodyParameter)
755755
};
756756

src/OpenApi/src/Services/OpenApiGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ private static OpenApiResponses GetOpenApiResponses(MethodInfo method, EndpointM
197197

198198
// TODO: Use the discarded response Type for schema generation
199199
var (_, contentTypes) = annotation.Value;
200-
var responseContent = new Dictionary<string, OpenApiMediaType>();
200+
var responseContent = new Dictionary<string, IOpenApiMediaType>();
201201

202202
foreach (var contentType in contentTypes)
203203
{
@@ -269,7 +269,7 @@ private static void GenerateDefaultResponses(Dictionary<int, (Type?, MediaTypeCo
269269
}
270270

271271
var acceptsMetadata = metadata.GetMetadata<IAcceptsMetadata>();
272-
var requestBodyContent = new Dictionary<string, OpenApiMediaType>();
272+
var requestBodyContent = new Dictionary<string, IOpenApiMediaType>();
273273

274274
if (acceptsMetadata is not null)
275275
{

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AddOpenApiTests.CanInterceptAddOpenApi#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
395395
{
396396
continue;
397397
}
398-
foreach (var mediaType in content)
398+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
399399
{
400400
mediaType.Example = jsonString.Parse();
401401
}
@@ -457,7 +457,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
457457
continue;
458458
}
459459
var parsedExample = jsonString.Parse();
460-
foreach (var mediaType in content)
460+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
461461
{
462462
mediaType.Example = parsedExample;
463463
}

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/AdditionalTextsTests.CanHandleXmlForSchemasInAdditionalTexts#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
424424
{
425425
continue;
426426
}
427-
foreach (var mediaType in content)
427+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
428428
{
429429
mediaType.Example = jsonString.Parse();
430430
}
@@ -486,7 +486,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
486486
continue;
487487
}
488488
var parsedExample = jsonString.Parse();
489-
foreach (var mediaType in content)
489+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
490490
{
491491
mediaType.Example = parsedExample;
492492
}

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/CompletenessTests.SupportsAllXmlTagsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
522522
{
523523
continue;
524524
}
525-
foreach (var mediaType in content)
525+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
526526
{
527527
mediaType.Example = jsonString.Parse();
528528
}
@@ -584,7 +584,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
584584
continue;
585585
}
586586
var parsedExample = jsonString.Parse();
587-
foreach (var mediaType in content)
587+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
588588
{
589589
mediaType.Example = parsedExample;
590590
}

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsRouteParametersFromControllers#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
396396
{
397397
continue;
398398
}
399-
foreach (var mediaType in content)
399+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
400400
{
401401
mediaType.Example = jsonString.Parse();
402402
}
@@ -458,7 +458,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
458458
continue;
459459
}
460460
var parsedExample = jsonString.Parse();
461-
foreach (var mediaType in content)
461+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
462462
{
463463
mediaType.Example = parsedExample;
464464
}

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromControllers#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
399399
{
400400
continue;
401401
}
402-
foreach (var mediaType in content)
402+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
403403
{
404404
mediaType.Example = jsonString.Parse();
405405
}
@@ -461,7 +461,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
461461
continue;
462462
}
463463
var parsedExample = jsonString.Parse();
464-
foreach (var mediaType in content)
464+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
465465
{
466466
mediaType.Example = parsedExample;
467467
}

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/OperationTests.SupportsXmlCommentsOnOperationsFromMinimalApis#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
443443
{
444444
continue;
445445
}
446-
foreach (var mediaType in content)
446+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
447447
{
448448
mediaType.Example = jsonString.Parse();
449449
}
@@ -505,7 +505,7 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
505505
continue;
506506
}
507507
var parsedExample = jsonString.Parse();
508-
foreach (var mediaType in content)
508+
foreach (var mediaType in content.OfType<OpenApiMediaType>())
509509
{
510510
mediaType.Example = parsedExample;
511511
}

0 commit comments

Comments
 (0)