@@ -13,32 +13,8 @@ namespace Microsoft.OpenApi.Models.References
1313 /// <summary>
1414 /// Callback Object Reference: A reference to a map of possible out-of band callbacks related to the parent operation.
1515 /// </summary>
16- public class OpenApiCallbackReference : IOpenApiCallback , IOpenApiReferenceHolder < OpenApiCallback , IOpenApiCallback >
16+ public class OpenApiCallbackReference : BaseOpenApiReferenceHolder < OpenApiCallback , IOpenApiCallback > , IOpenApiCallback
1717 {
18- #nullable enable
19- internal OpenApiCallback _target ;
20- /// <inheritdoc/>
21- public OpenApiReference Reference { get ; set ; }
22-
23- /// <inheritdoc/>
24- public bool UnresolvedReference { get ; set ; }
25-
26- /// <summary>
27- /// Gets the target callback.
28- /// </summary>
29- /// <remarks>
30- /// If the reference is not resolved, this will return null.
31- /// </remarks>
32- public OpenApiCallback Target
33- #nullable restore
34- {
35- get
36- {
37- _target ??= Reference . HostDocument . ResolveReferenceTo < OpenApiCallback > ( Reference ) ;
38- return _target ;
39- }
40- }
41-
4218 /// <summary>
4319 /// Constructor initializing the reference object.
4420 /// </summary>
@@ -49,39 +25,20 @@ public OpenApiCallback Target
4925 /// 1. an absolute/relative file path, for example: ../commons/pet.json
5026 /// 2. a Url, for example: http://localhost/pet.json
5127 /// </param>
52- public OpenApiCallbackReference ( string referenceId , OpenApiDocument hostDocument , string externalResource = null )
28+ public OpenApiCallbackReference ( string referenceId , OpenApiDocument hostDocument , string externalResource = null ) : base ( referenceId , hostDocument , ReferenceType . Callback , externalResource )
5329 {
54- Utils . CheckArgumentNullOrEmpty ( referenceId ) ;
55-
56- Reference = new OpenApiReference ( )
57- {
58- Id = referenceId ,
59- HostDocument = hostDocument ,
60- Type = ReferenceType . Callback ,
61- ExternalResource = externalResource
62- } ;
6330 }
6431
6532 /// <summary>
6633 /// Copy constructor
6734 /// </summary>
6835 /// <param name="callback">The callback reference to copy</param>
69- public OpenApiCallbackReference ( OpenApiCallbackReference callback )
36+ public OpenApiCallbackReference ( OpenApiCallbackReference callback ) : base ( callback )
7037 {
71- Utils . CheckArgumentNull ( callback ) ;
72- Reference = callback . Reference != null ? new ( callback . Reference ) : null ;
73- UnresolvedReference = callback . UnresolvedReference ;
7438 }
7539
76- internal OpenApiCallbackReference ( OpenApiCallback target , string referenceId )
40+ internal OpenApiCallbackReference ( OpenApiCallback target , string referenceId ) : base ( target , referenceId , ReferenceType . Callback )
7741 {
78- _target = target ;
79-
80- Reference = new OpenApiReference ( )
81- {
82- Id = referenceId ,
83- Type = ReferenceType . Callback ,
84- } ;
8542 }
8643
8744 /// <inheritdoc/>
@@ -91,7 +48,7 @@ internal OpenApiCallbackReference(OpenApiCallback target, string referenceId)
9148 public IDictionary < string , IOpenApiExtension > Extensions { get => Target ? . Extensions ; }
9249
9350 /// <inheritdoc/>
94- public void SerializeAsV3 ( IOpenApiWriter writer )
51+ public override void SerializeAsV3 ( IOpenApiWriter writer )
9552 {
9653 if ( ! writer . GetSettings ( ) . ShouldInlineReference ( Reference ) )
9754 {
@@ -104,7 +61,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
10461 }
10562
10663 /// <inheritdoc/>
107- public void SerializeAsV31 ( IOpenApiWriter writer )
64+ public override void SerializeAsV31 ( IOpenApiWriter writer )
10865 {
10966 if ( ! writer . GetSettings ( ) . ShouldInlineReference ( Reference ) )
11067 {
@@ -117,15 +74,15 @@ public void SerializeAsV31(IOpenApiWriter writer)
11774 }
11875
11976 /// <inheritdoc/>
120- public IOpenApiCallback CopyReferenceAsTargetElementWithOverrides ( IOpenApiCallback source )
77+ public override IOpenApiCallback CopyReferenceAsTargetElementWithOverrides ( IOpenApiCallback source )
12178 {
12279 // the copy here is never called since callbacks do not have any overridable fields.
12380 // if the spec evolves to include overridable fields for callbacks, the serialize methods will need to call this copy method.
12481 return source is OpenApiCallback ? new OpenApiCallback ( this ) : source ;
12582 }
12683
12784 /// <inheritdoc/>
128- public void SerializeAsV2 ( IOpenApiWriter writer )
85+ public override void SerializeAsV2 ( IOpenApiWriter writer )
12986 {
13087 // examples components are not supported in OAS 2.0
13188 Reference . SerializeAsV2 ( writer ) ;
0 commit comments