@@ -118,7 +118,7 @@ internal sealed class OpenApiSchemaService(
118
118
}
119
119
} ;
120
120
121
- internal async Task < IOpenApiSchema > GetOrCreateSchemaAsync ( OpenApiDocument document , Type type , IServiceProvider scopedServiceProvider , IOpenApiSchemaTransformer [ ] schemaTransformers , ApiParameterDescription ? parameterDescription = null , CancellationToken cancellationToken = default )
121
+ internal async Task < OpenApiSchema > GetOrCreateUnresolvedSchemaAsync ( OpenApiDocument ? document , Type type , IServiceProvider scopedServiceProvider , IOpenApiSchemaTransformer [ ] schemaTransformers , ApiParameterDescription ? parameterDescription = null , CancellationToken cancellationToken = default )
122
122
{
123
123
var key = parameterDescription ? . ParameterDescriptor is IParameterInfoParameterDescriptor parameterInfoDescription
124
124
&& parameterDescription . ModelMetadata . PropertyName is null
@@ -133,7 +133,13 @@ internal async Task<IOpenApiSchema> GetOrCreateSchemaAsync(OpenApiDocument docum
133
133
var deserializedSchema = JsonSerializer . Deserialize ( schemaAsJsonObject , _jsonSchemaContext . OpenApiJsonSchema ) ;
134
134
Debug . Assert ( deserializedSchema != null , "The schema should have been deserialized successfully and materialize a non-null value." ) ;
135
135
var schema = deserializedSchema . Schema ;
136
- await ApplySchemaTransformersAsync ( schema , type , scopedServiceProvider , schemaTransformers , parameterDescription , cancellationToken ) ;
136
+ await ApplySchemaTransformersAsync ( document , schema , type , scopedServiceProvider , schemaTransformers , parameterDescription , cancellationToken ) ;
137
+ return schema ;
138
+ }
139
+
140
+ internal async Task < IOpenApiSchema > GetOrCreateSchemaAsync ( OpenApiDocument document , Type type , IServiceProvider scopedServiceProvider , IOpenApiSchemaTransformer [ ] schemaTransformers , ApiParameterDescription ? parameterDescription = null , CancellationToken cancellationToken = default )
141
+ {
142
+ var schema = await GetOrCreateUnresolvedSchemaAsync ( document , type , scopedServiceProvider , schemaTransformers , parameterDescription , cancellationToken ) ;
137
143
return ResolveReferenceForSchema ( document , schema ) ;
138
144
}
139
145
@@ -229,7 +235,7 @@ internal static IOpenApiSchema ResolveReferenceForSchema(OpenApiDocument documen
229
235
return schema ;
230
236
}
231
237
232
- internal async Task ApplySchemaTransformersAsync ( IOpenApiSchema schema , Type type , IServiceProvider scopedServiceProvider , IOpenApiSchemaTransformer [ ] schemaTransformers , ApiParameterDescription ? parameterDescription = null , CancellationToken cancellationToken = default )
238
+ internal async Task ApplySchemaTransformersAsync ( OpenApiDocument ? document , IOpenApiSchema schema , Type type , IServiceProvider scopedServiceProvider , IOpenApiSchemaTransformer [ ] schemaTransformers , ApiParameterDescription ? parameterDescription = null , CancellationToken cancellationToken = default )
233
239
{
234
240
if ( schemaTransformers . Length == 0 )
235
241
{
@@ -242,7 +248,9 @@ internal async Task ApplySchemaTransformersAsync(IOpenApiSchema schema, Type typ
242
248
JsonTypeInfo = jsonTypeInfo ,
243
249
JsonPropertyInfo = null ,
244
250
ParameterDescription = parameterDescription ,
245
- ApplicationServices = scopedServiceProvider
251
+ ApplicationServices = scopedServiceProvider ,
252
+ Document = document ,
253
+ SchemaTransformers = schemaTransformers
246
254
} ;
247
255
for ( var i = 0 ; i < schemaTransformers . Length ; i ++ )
248
256
{
0 commit comments