Skip to content

Commit b611676

Browse files
committed
Replaced ValidationError with OpenApiError
1 parent a6b2e71 commit b611676

31 files changed

+102
-123
lines changed

src/Microsoft.OpenApi.Readers/OpenApiDiagnostic.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT license.
33

44
using System.Collections.Generic;
5+
using Microsoft.OpenApi.Models;
56
using Microsoft.OpenApi.Readers.Interface;
67

78
namespace Microsoft.OpenApi.Readers

src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
9494
var errors = document.Validate(_settings.RuleSet);
9595
foreach (var item in errors)
9696
{
97-
diagnostic.Errors.Add(new OpenApiError(item.ErrorPath, item.ErrorMessage));
97+
diagnostic.Errors.Add(item);
9898
}
9999

100100
return document;

src/Microsoft.OpenApi.Readers/ParseNodes/PropertyNode.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Linq;
77
using Microsoft.OpenApi.Any;
88
using Microsoft.OpenApi.Exceptions;
9+
using Microsoft.OpenApi.Models;
910
using SharpYaml.Serialization;
1011

1112
namespace Microsoft.OpenApi.Readers.ParseNodes

src/Microsoft.OpenApi/Extensions/OpenApiElementExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System.Collections.Generic;
55
using Microsoft.OpenApi.Interfaces;
6+
using Microsoft.OpenApi.Models;
67
using Microsoft.OpenApi.Services;
78
using Microsoft.OpenApi.Validations;
89

@@ -19,7 +20,7 @@ public static class OpenApiElementExtensions
1920
/// <param name="element">Element to validate</param>
2021
/// <param name="ruleSet">Optional set of rules to use for validation</param>
2122
/// <returns>An IEnumerable of errors. This function will never return null.</returns>
22-
public static IEnumerable<ValidationError> Validate(this IOpenApiElement element, ValidationRuleSet ruleSet = null) {
23+
public static IEnumerable<OpenApiError> Validate(this IOpenApiElement element, ValidationRuleSet ruleSet = null) {
2324
var validator = new OpenApiValidator(ruleSet);
2425
var walker = new OpenApiWalker(validator);
2526
walker.Walk(element);

src/Microsoft.OpenApi.Readers/OpenApiError.cs renamed to src/Microsoft.OpenApi/Models/OpenApiError.cs

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,36 @@
33

44
using Microsoft.OpenApi.Exceptions;
55

6-
namespace Microsoft.OpenApi.Readers
6+
namespace Microsoft.OpenApi.Models
77
{
88
/// <summary>
9-
/// Error related to reading Open API YAML/JSON.
9+
/// Error reason.
10+
/// </summary>
11+
public enum ErrorReason
12+
{
13+
/// <summary>
14+
/// Field is required.
15+
/// </summary>
16+
Required,
17+
18+
/// <summary>
19+
/// Format error.
20+
/// </summary>
21+
Format,
22+
23+
/// <summary>
24+
/// Duplicate Key error.
25+
/// </summary>
26+
DuplicateKey
27+
28+
}
29+
30+
/// <summary>
31+
/// Error related to the Open API Document.
1032
/// </summary>
1133
public class OpenApiError
1234
{
35+
1336
/// <summary>
1437
/// Initializes the <see cref="OpenApiError"/> class using the message and pointer from the given exception.
1538
/// </summary>
@@ -28,6 +51,20 @@ public OpenApiError(string pointer, string message)
2851
Message = message;
2952
}
3053

54+
/// <summary>
55+
/// Initializes the <see cref="OpenApiError"/> class.
56+
/// </summary>
57+
public OpenApiError(ErrorReason reason, string pointer, string message)
58+
{
59+
Pointer = pointer;
60+
Message = message;
61+
}
62+
63+
/// <summary>
64+
/// Classified Reason for the error.
65+
/// </summary>
66+
public ErrorReason ReasonClass { get; set; }
67+
3168
/// <summary>
3269
/// Message explaining the error.
3370
/// </summary>

src/Microsoft.OpenApi/Validations/IValidationContext.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Linq;
7+
using Microsoft.OpenApi.Models;
78
using Microsoft.OpenApi.Services;
89
using Microsoft.OpenApi.Validations.Rules;
910

@@ -18,7 +19,8 @@ public interface IValidationContext
1819
/// Register an error with the validation context.
1920
/// </summary>
2021
/// <param name="error">Error to register.</param>
21-
void AddError(ValidationError error);
22+
void AddError(OpenApiError error);
23+
2224

2325
/// <summary>
2426
/// Allow Rule to indicate validation error occured at a deeper context level.

src/Microsoft.OpenApi/Validations/OpenApiValidator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Microsoft.OpenApi.Validations
1616
public class OpenApiValidator : OpenApiVisitorBase, IValidationContext
1717
{
1818
private readonly ValidationRuleSet _ruleSet;
19-
private readonly IList<ValidationError> _errors = new List<ValidationError>();
19+
private readonly IList<OpenApiError> _errors = new List<OpenApiError>();
2020

2121
/// <summary>
2222
/// Create a vistor that will validate an OpenAPIDocument
@@ -30,7 +30,7 @@ public OpenApiValidator(ValidationRuleSet ruleSet = null)
3030
/// <summary>
3131
/// Gets the validation errors.
3232
/// </summary>
33-
public IEnumerable<ValidationError> Errors
33+
public IEnumerable<OpenApiError> Errors
3434
{
3535
get
3636
{
@@ -42,7 +42,7 @@ public IEnumerable<ValidationError> Errors
4242
/// Register an error with the validation context.
4343
/// </summary>
4444
/// <param name="error">Error to register.</param>
45-
public void AddError(ValidationError error)
45+
public void AddError(OpenApiError error)
4646
{
4747
if (error == null)
4848
{

src/Microsoft.OpenApi/Validations/Rules/OpenApiComponentsRules.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private static void ValidateKeys(IValidationContext context, IEnumerable<string>
5757
{
5858
if (!KeyRegex.IsMatch(key))
5959
{
60-
ValidationError error = new ValidationError(ErrorReason.Format, context.PathString,
60+
OpenApiError error = new OpenApiError(ErrorReason.Format, context.PathString,
6161
string.Format(SRResource.Validation_ComponentsKeyMustMatchRegularExpr, key, component, KeyRegex.ToString()));
6262
context.AddError(error);
6363
}

src/Microsoft.OpenApi/Validations/Rules/OpenApiContactRules.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static class OpenApiContactRules
2626
{
2727
if (!item.Email.IsEmailAddress())
2828
{
29-
ValidationError error = new ValidationError(ErrorReason.Format, context.PathString,
29+
OpenApiError error = new OpenApiError(ErrorReason.Format, context.PathString,
3030
String.Format(SRResource.Validation_StringMustBeEmailAddress, item.Email));
3131
context.AddError(error);
3232
}

src/Microsoft.OpenApi/Validations/Rules/OpenApiDocumentRules.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static class OpenApiDocumentRules
2424
context.Enter("info");
2525
if (item.Info == null)
2626
{
27-
ValidationError error = new ValidationError(ErrorReason.Required, context.PathString,
27+
OpenApiError error = new OpenApiError(ErrorReason.Required, context.PathString,
2828
String.Format(SRResource.Validation_FieldIsRequired, "info", "document"));
2929
context.AddError(error);
3030
}
@@ -34,7 +34,7 @@ public static class OpenApiDocumentRules
3434
context.Enter("paths");
3535
if (item.Paths == null)
3636
{
37-
ValidationError error = new ValidationError(ErrorReason.Required, context.PathString,
37+
OpenApiError error = new OpenApiError(ErrorReason.Required, context.PathString,
3838
String.Format(SRResource.Validation_FieldIsRequired, "paths", "document"));
3939
context.AddError(error);
4040
}

0 commit comments

Comments
 (0)