Skip to content

Commit ba224eb

Browse files
committed
Small adjustments in deserialization validation
1 parent 7cea38b commit ba224eb

3 files changed

Lines changed: 22 additions & 16 deletions

File tree

src/ByteBard.AsyncAPI.Readers/AsyncApiJsonDocumentReader.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -370,51 +370,51 @@ private IAsyncApiSerializable ResolveStreamReference(Stream stream, IAsyncApiRef
370370
case ReferenceType.Schema:
371371
if (reference is AsyncApiJsonSchemaReference)
372372
{
373-
result = this.ReadFragment<AsyncApiJsonSchema>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
373+
result = this.ReadFragment<AsyncApiJsonSchema>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
374374
}
375375

376376
if (reference is AsyncApiAvroSchemaReference)
377377
{
378-
result = this.ReadFragment<AsyncApiAvroSchema>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
378+
result = this.ReadFragment<AsyncApiAvroSchema>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
379379
}
380380

381381
break;
382382

383383
case ReferenceType.Server:
384-
result = this.ReadFragment<AsyncApiServer>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
384+
result = this.ReadFragment<AsyncApiServer>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
385385
break;
386386
case ReferenceType.Channel:
387-
result = this.ReadFragment<AsyncApiChannel>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
387+
result = this.ReadFragment<AsyncApiChannel>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
388388
break;
389389
case ReferenceType.Message:
390-
result = this.ReadFragment<AsyncApiMessage>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
390+
result = this.ReadFragment<AsyncApiMessage>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
391391
break;
392392
case ReferenceType.SecurityScheme:
393-
result = this.ReadFragment<AsyncApiSecurityScheme>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
393+
result = this.ReadFragment<AsyncApiSecurityScheme>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
394394
break;
395395
case ReferenceType.Parameter:
396-
result = this.ReadFragment<AsyncApiParameter>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
396+
result = this.ReadFragment<AsyncApiParameter>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
397397
break;
398398
case ReferenceType.CorrelationId:
399-
result = this.ReadFragment<AsyncApiCorrelationId>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
399+
result = this.ReadFragment<AsyncApiCorrelationId>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
400400
break;
401401
case ReferenceType.OperationTrait:
402-
result = this.ReadFragment<AsyncApiOperationTrait>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
402+
result = this.ReadFragment<AsyncApiOperationTrait>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
403403
break;
404404
case ReferenceType.MessageTrait:
405-
result = this.ReadFragment<AsyncApiMessageTrait>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
405+
result = this.ReadFragment<AsyncApiMessageTrait>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
406406
break;
407407
case ReferenceType.ServerBindings:
408-
result = this.ReadFragment<AsyncApiBindings<IServerBinding>>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
408+
result = this.ReadFragment<AsyncApiBindings<IServerBinding>>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
409409
break;
410410
case ReferenceType.ChannelBindings:
411-
result = this.ReadFragment<AsyncApiBindings<IChannelBinding>>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
411+
result = this.ReadFragment<AsyncApiBindings<IChannelBinding>>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
412412
break;
413413
case ReferenceType.OperationBindings:
414-
result = this.ReadFragment<AsyncApiBindings<IOperationBinding>>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
414+
result = this.ReadFragment<AsyncApiBindings<IOperationBinding>>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
415415
break;
416416
case ReferenceType.MessageBindings:
417-
result = this.ReadFragment<AsyncApiBindings<IMessageBinding>>(json, AsyncApiVersion.AsyncApi2_0, out fragmentDiagnostic);
417+
result = this.ReadFragment<AsyncApiBindings<IMessageBinding>>(json, diagnostic.SpecificationVersion, out fragmentDiagnostic);
418418
break;
419419
default:
420420
diagnostic.Errors.Add(new AsyncApiError(reference.Reference.Reference, "Could not resolve reference."));

src/ByteBard.AsyncAPI.Readers/V2/AsyncApiChannelDeserializer.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,19 @@ internal static partial class AsyncApiV2Deserializer
1111
private static readonly FixedFieldMap<AsyncApiChannel> ChannelFixedFields = new()
1212
{
1313
{ "description", (a, n) => { a.Description = n.GetScalarValue(); } },
14-
{ "servers", (a, n) => { a.Servers = n.CreateSimpleList(s => new AsyncApiServerReference("#/servers/" + s.GetScalarValue())); } },
14+
{ "servers", (a, n) => { a.Servers = n.CreateSimpleList(s => new AsyncApiServerReference(GetServerReferenceKey(s))); } },
1515
{ "subscribe", (a, n) => { /* happens after initial reading */ } },
1616
{ "publish", (a, n) => { /* happens after initial reading */ } },
1717
{ "parameters", (a, n) => { a.Parameters = n.CreateMap(LoadParameter); } },
1818
{ "bindings", (a, n) => { a.Bindings = LoadChannelBindings(n); } },
1919
};
2020

21+
private static string GetServerReferenceKey(ValueNode valueNode)
22+
{
23+
var stringValue = valueNode.GetScalarValue();
24+
return stringValue.StartsWith("#/servers/") ? stringValue : "#/servers/" + stringValue;
25+
}
26+
2127
private static readonly PatternFieldMap<AsyncApiChannel> ChannelPatternFields =
2228
new()
2329
{

src/ByteBard.AsyncAPI.Readers/V3/AsyncApiDocumentDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ internal static partial class AsyncApiV3Deserializer
88
{
99
private static FixedFieldMap<AsyncApiDocument> asyncApiFixedFields = new()
1010
{
11-
{ "asyncapi", (a, n) => { a.Asyncapi = "3.0.0"; } },
11+
{ "asyncapi", (a, n) => { a.Asyncapi = "3.1.0"; } },
1212
{ "id", (a, n) => a.Id = n.GetScalarValue() },
1313
{ "info", (a, n) => a.Info = LoadInfo(n) },
1414
{ "servers", (a, n) => a.Servers = n.CreateMap(LoadServer) },

0 commit comments

Comments
 (0)