|
1 |
| -// Copyright (c) Microsoft Corporation. All rights reserved. |
| 1 | +// Copyright (c) Microsoft Corporation. All rights reserved. |
2 | 2 | // Licensed under the MIT license.
|
3 | 3 |
|
4 | 4 | using System;
|
5 | 5 | using System.Collections.Generic;
|
6 | 6 | using System.IO;
|
7 | 7 | using System.Linq;
|
| 8 | +using System.Runtime.InteropServices; |
8 | 9 | using System.Security.Cryptography;
|
9 | 10 | using System.Text;
|
10 | 11 | using Json.Schema;
|
@@ -93,9 +94,10 @@ public class OpenApiDocument : IOpenApiSerializable, IOpenApiExtensible, IBaseDo
|
93 | 94 | /// </summary>
|
94 | 95 | public OpenApiDocument()
|
95 | 96 | {
|
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); |
99 | 101 | }
|
100 | 102 |
|
101 | 103 | /// <summary>
|
@@ -554,65 +556,13 @@ internal IOpenApiReferenceable ResolveReference(OpenApiReference reference, bool
|
554 | 556 | return null;
|
555 | 557 | }
|
556 | 558 |
|
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); |
561 | 560 |
|
562 |
| - try |
| 561 | + if (resolvedReference != null) |
563 | 562 | {
|
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; |
614 | 564 | }
|
615 |
| - catch (KeyNotFoundException) |
| 565 | + else |
616 | 566 | {
|
617 | 567 | throw new OpenApiException(string.Format(Properties.SRResource.InvalidReferenceId, reference.Id));
|
618 | 568 | }
|
|
0 commit comments