Skip to content

Commit f12d221

Browse files
committed
Remove uses of old load reference
1 parent 2a4eeb3 commit f12d221

File tree

8 files changed

+83
-230
lines changed

8 files changed

+83
-230
lines changed

src/Microsoft.OpenApi.Readers/Interface/IOpenApiVersionService.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,6 @@ namespace Microsoft.OpenApi.Readers.Interface
1313
/// </summary>
1414
internal interface IOpenApiVersionService
1515
{
16-
/// <summary>
17-
/// Load the referenced <see cref="IOpenApiReferenceable"/> object from a <see cref="OpenApiReference"/> object
18-
/// </summary>
19-
/// <param name="context">Instance of ParsingContext to use for retrieving references.</param>
20-
/// <param name="reference">The <see cref="OpenApiReference"/> object.</param>
21-
/// <param name="referencedObject">The object that is being referenced.</param>
22-
/// <returns>
23-
/// If the reference is found, return true and the referenced object in the out parameter.
24-
/// In the case of tag, it is psosible that the referenced object does not exist. In this case,
25-
/// a new tag will be returned in the outer parameter and the return value will be false.
26-
/// If reference is null, no object will be returned and the return value will be false.
27-
/// </returns>
28-
bool TryLoadReference(ParsingContext context, OpenApiReference reference, out IOpenApiReferenceable referencedObject);
2916

3017
/// <summary>
3118
/// Parse the string to a <see cref="OpenApiReference"/> object.

src/Microsoft.OpenApi.Readers/Services/OpenApiReferenceResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ private void ResolveTags(IList<OpenApiTag> tags)
181181
}
182182
else if (_resolveRemoteReferences == true)
183183
{
184-
// TODO
184+
// TODO: Resolve Remote reference
185185
return new T()
186186
{
187187
UnresolvedReference = true,

src/Microsoft.OpenApi.Readers/V2/OpenApiV2VersionService.cs

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -22,80 +22,6 @@ internal class OpenApiV2VersionService : IOpenApiVersionService
2222
/// </summary>
2323
public Func<MapNode, OpenApiTag> TagLoader => OpenApiV2Deserializer.LoadTag;
2424

25-
/// <summary>
26-
/// Load the referenced <see cref="IOpenApiReferenceable"/> object from a <see cref="OpenApiReference"/> object
27-
/// </summary>
28-
public bool TryLoadReference(ParsingContext context, OpenApiReference reference, out IOpenApiReferenceable referencedObject)
29-
{
30-
referencedObject = null;
31-
32-
if (reference == null)
33-
{
34-
return false;
35-
}
36-
37-
if (reference.IsExternal)
38-
{
39-
// TODO: need to read the external document and load the referenced object.
40-
throw new NotImplementedException(SRResource.LoadReferencedObjectFromExternalNotImplmented);
41-
}
42-
43-
if (!reference.Type.HasValue)
44-
{
45-
throw new ArgumentException("Local reference must have type specified.");
46-
}
47-
48-
// Special case for Tag
49-
if (reference.Type == ReferenceType.Tag)
50-
{
51-
foreach (var tag in context.Tags)
52-
{
53-
if (tag.Name == reference.Id)
54-
{
55-
referencedObject = tag;
56-
return true;
57-
}
58-
}
59-
60-
referencedObject = new OpenApiTag {Name = reference.Id};
61-
return false;
62-
}
63-
64-
var jsonPointer =
65-
new JsonPointer("#/" + GetReferenceTypeV2Name(reference.Type.Value) + "/" + reference.Id);
66-
67-
var node = context.RootNode.Find(jsonPointer);
68-
69-
switch (reference.Type)
70-
{
71-
case ReferenceType.Schema:
72-
referencedObject = OpenApiV2Deserializer.LoadSchema(node);
73-
break;
74-
75-
case ReferenceType.Response:
76-
referencedObject = OpenApiV2Deserializer.LoadResponse(node);
77-
break;
78-
79-
case ReferenceType.Parameter:
80-
// TODO: Handle referencing to a "body" parameter in V2
81-
referencedObject = OpenApiV2Deserializer.LoadParameter(node);
82-
break;
83-
84-
case ReferenceType.SecurityScheme:
85-
referencedObject = OpenApiV2Deserializer.LoadSecurityScheme(node);
86-
break;
87-
88-
default:
89-
throw new OpenApiException(
90-
string.Format(
91-
SRResource.ReferenceV2HasInvalidValue,
92-
reference.Type,
93-
jsonPointer));
94-
}
95-
96-
return true;
97-
}
98-
9925
private static OpenApiReference ParseLocalReference(string localReference)
10026
{
10127
if (string.IsNullOrWhiteSpace(localReference))

src/Microsoft.OpenApi.Readers/V3/OpenApiV3VersionService.cs

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -80,99 +80,6 @@ public OpenApiDocument LoadDocument(RootNode rootNode)
8080
return OpenApiV3Deserializer.LoadOpenApi(rootNode);
8181
}
8282

83-
/// <summary>
84-
/// Load the referenced <see cref="IOpenApiReferenceable"/> object from a <see cref="OpenApiReference"/> object
85-
/// </summary>
86-
public bool TryLoadReference(ParsingContext context, OpenApiReference reference, out IOpenApiReferenceable referencedObject)
87-
{
88-
referencedObject = null;
89-
90-
if (reference == null)
91-
{
92-
return false;
93-
}
94-
95-
if (reference.IsExternal)
96-
{
97-
// TODO: need to read the external document and load the referenced object.
98-
throw new NotImplementedException(SRResource.LoadReferencedObjectFromExternalNotImplmented);
99-
}
100-
101-
if (!reference.Type.HasValue)
102-
{
103-
throw new ArgumentException("Local reference must have type specified.");
104-
}
105-
106-
// Special case for Tag
107-
if (reference.Type == ReferenceType.Tag)
108-
{
109-
foreach (var tag in context.Tags)
110-
{
111-
if (tag.Name == reference.Id)
112-
{
113-
referencedObject = tag;
114-
return true;
115-
}
116-
}
117-
118-
referencedObject = new OpenApiTag {Name = reference.Id};
119-
return false;
120-
}
121-
122-
var componentJsonPointer =
123-
new JsonPointer("#/components/" + reference.Type.GetDisplayName() + "/" + reference.Id);
124-
125-
var node = context.RootNode.Find(componentJsonPointer);
126-
127-
switch (reference.Type)
128-
{
129-
case ReferenceType.Schema:
130-
referencedObject = OpenApiV3Deserializer.LoadSchema(node);
131-
break;
132-
133-
case ReferenceType.Response:
134-
referencedObject = OpenApiV3Deserializer.LoadResponse(node);
135-
break;
136-
137-
case ReferenceType.Parameter:
138-
referencedObject = OpenApiV3Deserializer.LoadParameter(node);
139-
break;
140-
141-
case ReferenceType.Example:
142-
referencedObject = OpenApiV3Deserializer.LoadExample(node);
143-
break;
144-
145-
case ReferenceType.RequestBody:
146-
referencedObject = OpenApiV3Deserializer.LoadRequestBody(node);
147-
break;
148-
149-
case ReferenceType.Header:
150-
referencedObject = OpenApiV3Deserializer.LoadHeader(node);
151-
break;
152-
153-
case ReferenceType.SecurityScheme:
154-
referencedObject = OpenApiV3Deserializer.LoadSecurityScheme(node);
155-
break;
156-
157-
case ReferenceType.Link:
158-
referencedObject = OpenApiV3Deserializer.LoadLink(node);
159-
break;
160-
161-
case ReferenceType.Callback:
162-
referencedObject = OpenApiV3Deserializer.LoadCallback(node);
163-
break;
164-
165-
default:
166-
throw new OpenApiException(
167-
string.Format(
168-
SRResource.ReferenceV3HasInvalidValue,
169-
reference.Type,
170-
componentJsonPointer));
171-
}
172-
173-
return true;
174-
}
175-
17683
private OpenApiReference ParseLocalReference(string localReference)
17784
{
17885
if (string.IsNullOrWhiteSpace(localReference))

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,12 @@ public IOpenApiReferenceable ResolveReference(OpenApiReference reference)
279279
if (reference.IsExternal)
280280
{
281281
// Should not attempt to resolve external references against a single document.
282-
throw new ArgumentException(); //TODO Add error message
282+
throw new ArgumentException(Properties.SRResource.RemoteReferenceNotSupported);
283283
}
284284

285285
if (!reference.Type.HasValue)
286286
{
287-
throw new ArgumentException("Local reference must have type specified.");
287+
throw new ArgumentException(Properties.SRResource.LocalReferenceRequiresType);
288288
}
289289

290290
// Special case for Tag

src/Microsoft.OpenApi/Properties/SRResource.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Microsoft.OpenApi/Properties/SRResource.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@
138138
<data name="InvalidReferenceType" xml:space="preserve">
139139
<value>Invalid Reference Type.</value>
140140
</data>
141+
<data name="LocalReferenceRequiresType" xml:space="preserve">
142+
<value>Local reference must have type specified.</value>
143+
</data>
141144
<data name="ObjectScopeNeededForPropertyNameWriting" xml:space="preserve">
142145
<value>The active scope must be an object scope for property name '{0}' to be written.</value>
143146
</data>
@@ -171,6 +174,9 @@
171174
<data name="ReferenceHasInvalidFormat" xml:space="preserve">
172175
<value>The reference string '{0}' has invalid format.</value>
173176
</data>
177+
<data name="RemoteReferenceNotSupported" xml:space="preserve">
178+
<value>Remote reference not supported.</value>
179+
</data>
174180
<data name="RuntimeExpressionHasInvalidFormat" xml:space="preserve">
175181
<value>The runtime expression '{0}' has invalid format.</value>
176182
</data>

0 commit comments

Comments
 (0)