Skip to content

Commit 2622110

Browse files
Support OpenAPI 3.2
Update to `[email protected]` to add basic support for OpenAPI 3.2 and fix compilation errors. Relates to #64317.
1 parent 377049b commit 2622110

File tree

30 files changed

+3014
-42
lines changed

30 files changed

+3014
-42
lines changed

eng/Versions.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@
188188
<XunitExtensibilityExecutionVersion>$(XunitVersion)</XunitExtensibilityExecutionVersion>
189189
<XUnitRunnerVisualStudioVersion>3.1.3</XUnitRunnerVisualStudioVersion>
190190
<MicrosoftDataSqlClientVersion>5.2.2</MicrosoftDataSqlClientVersion>
191-
<MicrosoftOpenApiVersion>2.0.0</MicrosoftOpenApiVersion>
192-
<MicrosoftOpenApiYamlReaderVersion>2.0.0</MicrosoftOpenApiYamlReaderVersion>
191+
<MicrosoftOpenApiVersion>3.0.0</MicrosoftOpenApiVersion>
192+
<MicrosoftOpenApiYamlReaderVersion>3.0.0</MicrosoftOpenApiYamlReaderVersion>
193193
<!-- dotnet tool versions (see also auto-updated DotnetEfVersion property). -->
194194
<DotnetDumpVersion>6.0.322601</DotnetDumpVersion>
195195
<DotnetServeVersion>1.10.93</DotnetServeVersion>

src/OpenApi/gen/XmlCommentGenerator.Emitter.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
415415
}
416416
foreach (var mediaType in content)
417417
{
418-
mediaType.Example = jsonString.Parse();
418+
if (mediaType is OpenApiMediaType concrete)
419+
{
420+
concrete.Example = jsonString.Parse();
421+
}
419422
}
420423
}
421424
}
@@ -476,7 +479,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
476479
var parsedExample = jsonString.Parse();
477480
foreach (var mediaType in content)
478481
{
479-
mediaType.Example = parsedExample;
482+
if (mediaType is OpenApiMediaType concrete)
483+
{
484+
concrete.Example = parsedExample;
485+
}
480486
}
481487
}
482488
}

src/OpenApi/src/Services/OpenApiDocumentService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ private async Task<OpenApiResponse> GetResponseAsync(
412412
var response = new OpenApiResponse
413413
{
414414
Description = apiResponseType.Description ?? ReasonPhrases.GetReasonPhrase(statusCode),
415-
Content = new Dictionary<string, OpenApiMediaType>()
415+
Content = new Dictionary<string, IOpenApiMediaType>()
416416
};
417417

418418
// ApiResponseFormats aggregates information about the supported response content types
@@ -570,7 +570,7 @@ private async Task<OpenApiRequestBody> GetFormRequestBody(
570570
// serializing a form collection from an empty body. Instead, requiredness
571571
// must be set on a per-parameter basis. See below.
572572
Required = true,
573-
Content = new Dictionary<string, OpenApiMediaType>()
573+
Content = new Dictionary<string, IOpenApiMediaType>()
574574
};
575575

576576
var schema = new OpenApiSchema { Type = JsonSchemaType.Object, Properties = new Dictionary<string, IOpenApiSchema>() };
@@ -744,7 +744,7 @@ private async Task<OpenApiRequestBody> GetJsonRequestBody(
744744
var requestBody = new OpenApiRequestBody
745745
{
746746
Required = IsRequired(bodyParameter),
747-
Content = new Dictionary<string, OpenApiMediaType>(),
747+
Content = new Dictionary<string, IOpenApiMediaType>(),
748748
Description = GetParameterDescriptionFromAttribute(bodyParameter)
749749
};
750750

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: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
397397
}
398398
foreach (var mediaType in content)
399399
{
400-
mediaType.Example = jsonString.Parse();
400+
if (mediaType is OpenApiMediaType concrete)
401+
{
402+
concrete.Example = jsonString.Parse();
403+
}
401404
}
402405
}
403406
}
@@ -458,7 +461,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
458461
var parsedExample = jsonString.Parse();
459462
foreach (var mediaType in content)
460463
{
461-
mediaType.Example = parsedExample;
464+
if (mediaType is OpenApiMediaType concrete)
465+
{
466+
concrete.Example = parsedExample;
467+
}
462468
}
463469
}
464470
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
426426
}
427427
foreach (var mediaType in content)
428428
{
429-
mediaType.Example = jsonString.Parse();
429+
if (mediaType is OpenApiMediaType concrete)
430+
{
431+
concrete.Example = jsonString.Parse();
432+
}
430433
}
431434
}
432435
}
@@ -487,7 +490,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
487490
var parsedExample = jsonString.Parse();
488491
foreach (var mediaType in content)
489492
{
490-
mediaType.Example = parsedExample;
493+
if (mediaType is OpenApiMediaType concrete)
494+
{
495+
concrete.Example = parsedExample;
496+
}
491497
}
492498
}
493499
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
524524
}
525525
foreach (var mediaType in content)
526526
{
527-
mediaType.Example = jsonString.Parse();
527+
if (mediaType is OpenApiMediaType concrete)
528+
{
529+
concrete.Example = jsonString.Parse();
530+
}
528531
}
529532
}
530533
}
@@ -585,7 +588,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
585588
var parsedExample = jsonString.Parse();
586589
foreach (var mediaType in content)
587590
{
588-
mediaType.Example = parsedExample;
591+
if (mediaType is OpenApiMediaType concrete)
592+
{
593+
concrete.Example = parsedExample;
594+
}
589595
}
590596
}
591597
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
401401
}
402402
foreach (var mediaType in content)
403403
{
404-
mediaType.Example = jsonString.Parse();
404+
if (mediaType is OpenApiMediaType concrete)
405+
{
406+
concrete.Example = jsonString.Parse();
407+
}
405408
}
406409
}
407410
}
@@ -462,7 +465,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
462465
var parsedExample = jsonString.Parse();
463466
foreach (var mediaType in content)
464467
{
465-
mediaType.Example = parsedExample;
468+
if (mediaType is OpenApiMediaType concrete)
469+
{
470+
concrete.Example = parsedExample;
471+
}
466472
}
467473
}
468474
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
445445
}
446446
foreach (var mediaType in content)
447447
{
448-
mediaType.Example = jsonString.Parse();
448+
if (mediaType is OpenApiMediaType concrete)
449+
{
450+
concrete.Example = jsonString.Parse();
451+
}
449452
}
450453
}
451454
}
@@ -506,7 +509,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
506509
var parsedExample = jsonString.Parse();
507510
foreach (var mediaType in content)
508511
{
509-
mediaType.Example = parsedExample;
512+
if (mediaType is OpenApiMediaType concrete)
513+
{
514+
concrete.Example = parsedExample;
515+
}
510516
}
511517
}
512518
}

src/OpenApi/test/Microsoft.AspNetCore.OpenApi.SourceGenerators.Tests/snapshots/SchemaTests.SupportsXmlCommentsOnSchemas#OpenApiXmlCommentSupport.generated.verified.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
427427
}
428428
foreach (var mediaType in content)
429429
{
430-
mediaType.Example = jsonString.Parse();
430+
if (mediaType is OpenApiMediaType concrete)
431+
{
432+
concrete.Example = jsonString.Parse();
433+
}
431434
}
432435
}
433436
}
@@ -488,7 +491,10 @@ public Task TransformAsync(OpenApiOperation operation, OpenApiOperationTransform
488491
var parsedExample = jsonString.Parse();
489492
foreach (var mediaType in content)
490493
{
491-
mediaType.Example = parsedExample;
494+
if (mediaType is OpenApiMediaType concrete)
495+
{
496+
concrete.Example = parsedExample;
497+
}
492498
}
493499
}
494500
}

0 commit comments

Comments
 (0)