Skip to content

Commit 8acb0d2

Browse files
committed
Remove ref resolution from doc.; update ctor
1 parent a5af833 commit 8acb0d2

File tree

1 file changed

+10
-60
lines changed

1 file changed

+10
-60
lines changed

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 10 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System;
55
using System.Collections.Generic;
66
using System.IO;
77
using System.Linq;
8+
using System.Runtime.InteropServices;
89
using System.Security.Cryptography;
910
using System.Text;
1011
using Json.Schema;
@@ -93,9 +94,10 @@ public class OpenApiDocument : IOpenApiSerializable, IOpenApiExtensible, IBaseDo
9394
/// </summary>
9495
public OpenApiDocument()
9596
{
96-
BaseUri = new Uri ("http://openapi.net/" + Guid.NewGuid());
97-
Workspace = new OpenApiWorkspace(BaseUri);
98-
Workspace.AddDocument(this);
97+
// BaseUri = new Uri("http://openapi.net/document/" + Guid.NewGuid());
98+
//_docId = Guid.NewGuid().ToString();
99+
Workspace = new OpenApiWorkspace();
100+
Workspace.AddDocument("/", this);
99101
}
100102

101103
/// <summary>
@@ -554,65 +556,13 @@ internal IOpenApiReferenceable ResolveReference(OpenApiReference reference, bool
554556
return null;
555557
}
556558

557-
if (this.Components == null)
558-
{
559-
throw new OpenApiException(string.Format(Properties.SRResource.InvalidReferenceId, reference.Id));
560-
}
559+
IOpenApiReferenceable resolvedReference = Workspace.ResolveReference<IOpenApiReferenceable>(reference.Id, reference.Type, Components);
561560

562-
try
561+
if (resolvedReference != null)
563562
{
564-
switch (reference.Type)
565-
{
566-
case ReferenceType.PathItem:
567-
var resolvedPathItem = this.Components.PathItems[reference.Id];
568-
resolvedPathItem.Description = reference.Description ?? resolvedPathItem.Description;
569-
resolvedPathItem.Summary = reference.Summary ?? resolvedPathItem.Summary;
570-
return resolvedPathItem;
571-
572-
case ReferenceType.Response:
573-
var resolvedResponse = this.Components.Responses[reference.Id];
574-
resolvedResponse.Description = reference.Description ?? resolvedResponse.Description;
575-
return resolvedResponse;
576-
577-
case ReferenceType.Parameter:
578-
var resolvedParameter = this.Components.Parameters[reference.Id];
579-
resolvedParameter.Description = reference.Description ?? resolvedParameter.Description;
580-
return resolvedParameter;
581-
582-
case ReferenceType.Example:
583-
var resolvedExample = this.Components.Examples[reference.Id];
584-
resolvedExample.Summary = reference.Summary ?? resolvedExample.Summary;
585-
resolvedExample.Description = reference.Description ?? resolvedExample.Description;
586-
return resolvedExample;
587-
588-
case ReferenceType.RequestBody:
589-
var resolvedRequestBody = this.Components.RequestBodies[reference.Id];
590-
resolvedRequestBody.Description = reference.Description ?? resolvedRequestBody.Description;
591-
return resolvedRequestBody;
592-
593-
case ReferenceType.Header:
594-
var resolvedHeader = this.Components.Headers[reference.Id];
595-
resolvedHeader.Description = reference.Description ?? resolvedHeader.Description;
596-
return resolvedHeader;
597-
598-
case ReferenceType.SecurityScheme:
599-
var resolvedSecurityScheme = this.Components.SecuritySchemes[reference.Id];
600-
resolvedSecurityScheme.Description = reference.Description ?? resolvedSecurityScheme.Description;
601-
return resolvedSecurityScheme;
602-
603-
case ReferenceType.Link:
604-
var resolvedLink = this.Components.Links[reference.Id];
605-
resolvedLink.Description = reference.Description ?? resolvedLink.Description;
606-
return resolvedLink;
607-
608-
case ReferenceType.Callback:
609-
return this.Components.Callbacks[reference.Id];
610-
611-
default:
612-
throw new OpenApiException(Properties.SRResource.InvalidReferenceType);
613-
}
563+
return resolvedReference;
614564
}
615-
catch (KeyNotFoundException)
565+
else
616566
{
617567
throw new OpenApiException(string.Format(Properties.SRResource.InvalidReferenceId, reference.Id));
618568
}

0 commit comments

Comments
 (0)