@@ -13,32 +13,8 @@ namespace Microsoft.OpenApi.Models.References
13
13
/// <summary>
14
14
/// Callback Object Reference: A reference to a map of possible out-of band callbacks related to the parent operation.
15
15
/// </summary>
16
- public class OpenApiCallbackReference : IOpenApiCallback , IOpenApiReferenceHolder < OpenApiCallback , IOpenApiCallback >
16
+ public class OpenApiCallbackReference : BaseOpenApiReferenceHolder < OpenApiCallback , IOpenApiCallback > , IOpenApiCallback
17
17
{
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
-
42
18
/// <summary>
43
19
/// Constructor initializing the reference object.
44
20
/// </summary>
@@ -49,39 +25,20 @@ public OpenApiCallback Target
49
25
/// 1. an absolute/relative file path, for example: ../commons/pet.json
50
26
/// 2. a Url, for example: http://localhost/pet.json
51
27
/// </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 )
53
29
{
54
- Utils . CheckArgumentNullOrEmpty ( referenceId ) ;
55
-
56
- Reference = new OpenApiReference ( )
57
- {
58
- Id = referenceId ,
59
- HostDocument = hostDocument ,
60
- Type = ReferenceType . Callback ,
61
- ExternalResource = externalResource
62
- } ;
63
30
}
64
31
65
32
/// <summary>
66
33
/// Copy constructor
67
34
/// </summary>
68
35
/// <param name="callback">The callback reference to copy</param>
69
- public OpenApiCallbackReference ( OpenApiCallbackReference callback )
36
+ public OpenApiCallbackReference ( OpenApiCallbackReference callback ) : base ( callback )
70
37
{
71
- Utils . CheckArgumentNull ( callback ) ;
72
- Reference = callback . Reference != null ? new ( callback . Reference ) : null ;
73
- UnresolvedReference = callback . UnresolvedReference ;
74
38
}
75
39
76
- internal OpenApiCallbackReference ( OpenApiCallback target , string referenceId )
40
+ internal OpenApiCallbackReference ( OpenApiCallback target , string referenceId ) : base ( target , referenceId , ReferenceType . Callback )
77
41
{
78
- _target = target ;
79
-
80
- Reference = new OpenApiReference ( )
81
- {
82
- Id = referenceId ,
83
- Type = ReferenceType . Callback ,
84
- } ;
85
42
}
86
43
87
44
/// <inheritdoc/>
@@ -91,7 +48,7 @@ internal OpenApiCallbackReference(OpenApiCallback target, string referenceId)
91
48
public IDictionary < string , IOpenApiExtension > Extensions { get => Target ? . Extensions ; }
92
49
93
50
/// <inheritdoc/>
94
- public void SerializeAsV3 ( IOpenApiWriter writer )
51
+ public override void SerializeAsV3 ( IOpenApiWriter writer )
95
52
{
96
53
if ( ! writer . GetSettings ( ) . ShouldInlineReference ( Reference ) )
97
54
{
@@ -104,7 +61,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
104
61
}
105
62
106
63
/// <inheritdoc/>
107
- public void SerializeAsV31 ( IOpenApiWriter writer )
64
+ public override void SerializeAsV31 ( IOpenApiWriter writer )
108
65
{
109
66
if ( ! writer . GetSettings ( ) . ShouldInlineReference ( Reference ) )
110
67
{
@@ -117,15 +74,15 @@ public void SerializeAsV31(IOpenApiWriter writer)
117
74
}
118
75
119
76
/// <inheritdoc/>
120
- public IOpenApiCallback CopyReferenceAsTargetElementWithOverrides ( IOpenApiCallback source )
77
+ public override IOpenApiCallback CopyReferenceAsTargetElementWithOverrides ( IOpenApiCallback source )
121
78
{
122
79
// the copy here is never called since callbacks do not have any overridable fields.
123
80
// if the spec evolves to include overridable fields for callbacks, the serialize methods will need to call this copy method.
124
81
return source is OpenApiCallback ? new OpenApiCallback ( this ) : source ;
125
82
}
126
83
127
84
/// <inheritdoc/>
128
- public void SerializeAsV2 ( IOpenApiWriter writer )
85
+ public override void SerializeAsV2 ( IOpenApiWriter writer )
129
86
{
130
87
// examples components are not supported in OAS 2.0
131
88
Reference . SerializeAsV2 ( writer ) ;
0 commit comments