@@ -44,7 +44,7 @@ public class OpenApiSchema : IOpenApiAnnotatable, IOpenApiExtensible, IOpenApiRe
44
44
/// <summary>
45
45
/// $vocabulary- used in meta-schemas to identify the vocabularies available for use in schemas described by that meta-schema.
46
46
/// </summary>
47
- public virtual string Vocabulary { get ; set ; }
47
+ public virtual IDictionary < string , bool > Vocabulary { get ; set ; }
48
48
49
49
/// <summary>
50
50
/// $dynamicRef - an applicator that allows for deferring the full resolution until runtime, at which point it is resolved each time it is encountered while evaluating an instance
@@ -56,16 +56,6 @@ public class OpenApiSchema : IOpenApiAnnotatable, IOpenApiExtensible, IOpenApiRe
56
56
/// </summary>
57
57
public virtual string DynamicAnchor { get ; set ; }
58
58
59
- /// <summary>
60
- /// $recursiveAnchor - used to construct recursive schemas i.e one that has a reference to its own root, identified by the empty fragment URI reference ("#")
61
- /// </summary>
62
- public virtual string RecursiveAnchor { get ; set ; }
63
-
64
- /// <summary>
65
- /// $recursiveRef - used to construct recursive schemas i.e one that has a reference to its own root, identified by the empty fragment URI reference ("#")
66
- /// </summary>
67
- public virtual string RecursiveRef { get ; set ; }
68
-
69
59
/// <summary>
70
60
/// $defs - reserves a location for schema authors to inline re-usable JSON Schemas into a more general schema.
71
61
/// The keyword does not directly affect the validation result
@@ -359,11 +349,9 @@ public OpenApiSchema(OpenApiSchema schema)
359
349
Id = schema ? . Id ?? Id ;
360
350
Schema = schema ? . Schema ?? Schema ;
361
351
Comment = schema ? . Comment ?? Comment ;
362
- Vocabulary = schema ? . Vocabulary ?? Vocabulary ;
352
+ Vocabulary = schema ? . Vocabulary != null ? new Dictionary < string , bool > ( schema . Vocabulary ) : null ;
363
353
DynamicAnchor = schema ? . DynamicAnchor ?? DynamicAnchor ;
364
354
DynamicRef = schema ? . DynamicRef ?? DynamicRef ;
365
- RecursiveAnchor = schema ? . RecursiveAnchor ?? RecursiveAnchor ;
366
- RecursiveRef = schema ? . RecursiveRef ?? RecursiveRef ;
367
355
Definitions = schema ? . Definitions != null ? new Dictionary < string , OpenApiSchema > ( schema . Definitions ) : null ;
368
356
UnevaluatedProperties = schema ? . UnevaluatedProperties ?? UnevaluatedProperties ;
369
357
V31ExclusiveMaximum = schema ? . V31ExclusiveMaximum ?? V31ExclusiveMaximum ;
@@ -491,30 +479,30 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
491
479
SerializeTypeProperty ( Type , writer , version ) ;
492
480
493
481
// allOf
494
- writer . WriteOptionalCollection ( OpenApiConstants . AllOf , AllOf , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
482
+ writer . WriteOptionalCollection ( OpenApiConstants . AllOf , AllOf , callback ) ;
495
483
496
484
// anyOf
497
- writer . WriteOptionalCollection ( OpenApiConstants . AnyOf , AnyOf , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
485
+ writer . WriteOptionalCollection ( OpenApiConstants . AnyOf , AnyOf , callback ) ;
498
486
499
487
// oneOf
500
- writer . WriteOptionalCollection ( OpenApiConstants . OneOf , OneOf , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
488
+ writer . WriteOptionalCollection ( OpenApiConstants . OneOf , OneOf , callback ) ;
501
489
502
490
// not
503
- writer . WriteOptionalObject ( OpenApiConstants . Not , Not , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
491
+ writer . WriteOptionalObject ( OpenApiConstants . Not , Not , callback ) ;
504
492
505
493
// items
506
- writer . WriteOptionalObject ( OpenApiConstants . Items , Items , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
494
+ writer . WriteOptionalObject ( OpenApiConstants . Items , Items , callback ) ;
507
495
508
496
// properties
509
- writer . WriteOptionalMap ( OpenApiConstants . Properties , Properties , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
497
+ writer . WriteOptionalMap ( OpenApiConstants . Properties , Properties , callback ) ;
510
498
511
499
// additionalProperties
512
500
if ( AdditionalPropertiesAllowed )
513
501
{
514
502
writer . WriteOptionalObject (
515
503
OpenApiConstants . AdditionalProperties ,
516
504
AdditionalProperties ,
517
- ( w , s ) => s . SerializeAsV3 ( w ) ) ;
505
+ callback ) ;
518
506
}
519
507
else
520
508
{
@@ -537,7 +525,7 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
537
525
}
538
526
539
527
// discriminator
540
- writer . WriteOptionalObject ( OpenApiConstants . Discriminator , Discriminator , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
528
+ writer . WriteOptionalObject ( OpenApiConstants . Discriminator , Discriminator , callback ) ;
541
529
542
530
// readOnly
543
531
writer . WriteProperty ( OpenApiConstants . ReadOnly , ReadOnly , false ) ;
@@ -549,7 +537,7 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
549
537
writer . WriteOptionalObject ( OpenApiConstants . Xml , Xml , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
550
538
551
539
// externalDocs
552
- writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
540
+ writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , callback ) ;
553
541
554
542
// example
555
543
writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
@@ -558,7 +546,7 @@ public void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version,
558
546
writer . WriteProperty ( OpenApiConstants . Deprecated , Deprecated , false ) ;
559
547
560
548
// extensions
561
- writer . WriteExtensions ( Extensions , OpenApiSpecVersion . OpenApi3_0 ) ;
549
+ writer . WriteExtensions ( Extensions , version ) ;
562
550
563
551
writer . WriteEndObject ( ) ;
564
552
}
@@ -575,12 +563,10 @@ internal void WriteV31Properties(IOpenApiWriter writer)
575
563
writer . WriteProperty ( OpenApiConstants . Id , Id ) ;
576
564
writer . WriteProperty ( OpenApiConstants . DollarSchema , Schema ) ;
577
565
writer . WriteProperty ( OpenApiConstants . Comment , Comment ) ;
578
- writer . WriteProperty ( OpenApiConstants . Vocabulary , Vocabulary ) ;
579
- writer . WriteOptionalMap ( OpenApiConstants . Defs , Definitions , ( w , s ) => s . SerializeAsV3 ( w ) ) ;
566
+ writer . WriteOptionalMap ( OpenApiConstants . Vocabulary , Vocabulary , ( w , s ) => w . WriteValue ( s ) ) ;
567
+ writer . WriteOptionalMap ( OpenApiConstants . Defs , Definitions , ( w , s ) => s . SerializeAsV31 ( w ) ) ;
580
568
writer . WriteProperty ( OpenApiConstants . DynamicRef , DynamicRef ) ;
581
569
writer . WriteProperty ( OpenApiConstants . DynamicAnchor , DynamicAnchor ) ;
582
- writer . WriteProperty ( OpenApiConstants . RecursiveAnchor , RecursiveAnchor ) ;
583
- writer . WriteProperty ( OpenApiConstants . RecursiveRef , RecursiveRef ) ;
584
570
writer . WriteProperty ( OpenApiConstants . V31ExclusiveMaximum , V31ExclusiveMaximum ) ;
585
571
writer . WriteProperty ( OpenApiConstants . V31ExclusiveMinimum , V31ExclusiveMinimum ) ;
586
572
writer . WriteProperty ( OpenApiConstants . UnevaluatedProperties , UnevaluatedProperties , false ) ;
0 commit comments