Skip to content

Commit 0c7aabb

Browse files
committed
fix(Sdk): Fixed YAML serializers and deserializers
Signed-off-by: Charles d'Avernas <[email protected]>
1 parent 62c320a commit 0c7aabb

7 files changed

+19
-20
lines changed

src/ServerlessWorkflow.Sdk/Models/Authentication/OAuth2AuthenticationEndpointsDefinition.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,20 @@ public record OAuth2AuthenticationEndpointsDefinition
2525
/// </summary>
2626
[Required]
2727
[DataMember(Name = "authority", Order = 1), JsonPropertyName("authority"), JsonPropertyOrder(1), YamlMember(Alias = "authority", Order = 1)]
28-
public virtual Uri Token { get; set; } = new("/oauth2/token");
28+
public virtual Uri Token { get; set; } = new("/oauth2/token", UriKind.RelativeOrAbsolute);
2929

3030
/// <summary>
3131
/// Gets/sets the relative path to the revocation endpoint. Defaults to `/oauth2/revoke`
3232
/// </summary>
3333
[Required]
3434
[DataMember(Name = "revocation", Order = 2), JsonPropertyName("revocation"), JsonPropertyOrder(2), YamlMember(Alias = "revocation", Order = 2)]
35-
public virtual Uri Revocation { get; set; } = new("/oauth2/revoke");
35+
public virtual Uri Revocation { get; set; } = new("/oauth2/revoke", UriKind.RelativeOrAbsolute);
3636

3737
/// <summary>
3838
/// Gets/sets the relative path to the introspection endpoint. Defaults to `/oauth2/introspect`
3939
/// </summary>
4040
[Required]
4141
[DataMember(Name = "introspection", Order = 3), JsonPropertyName("introspection"), JsonPropertyOrder(3), YamlMember(Alias = "introspection", Order = 3)]
42-
public virtual Uri Introspection { get; set; } = new("/oauth2/introspect");
42+
public virtual Uri Introspection { get; set; } = new("/oauth2/introspect", UriKind.RelativeOrAbsolute);
4343

4444
}

src/ServerlessWorkflow.Sdk/Models/ErrorCatcherDefinition.cs

-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public virtual RetryPolicyDefinition? Retry
5353
get => this.RetryValue?.T1Value;
5454
set
5555
{
56-
ArgumentNullException.ThrowIfNull(value);
5756
this.RetryValue = value;
5857
}
5958
}

src/ServerlessWorkflow.Sdk/Serialization/Yaml/MapEntryYamlConverter.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public class MapEntryYamlConverter(Func<ISerializer> serializerFactory, Func<IDe
3030
public virtual bool Accepts(Type type) => type.IsGenericType && type.GetGenericTypeDefinition() == typeof(MapEntry<,>);
3131

3232
/// <inheritdoc/>
33-
public virtual object? ReadYaml(IParser parser, Type type) => this.CreateGenericConverter(type).ReadYaml(parser, type);
33+
public virtual object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) => this.CreateGenericConverter(type).ReadYaml(parser, type, rootDeserializer);
3434

3535
/// <inheritdoc/>
36-
public virtual void WriteYaml(IEmitter emitter, object? value, Type type) => this.CreateGenericConverter(type).WriteYaml(emitter, value, type);
36+
public virtual void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer rootSerializer) => this.CreateGenericConverter(type).WriteYaml(emitter, value, type, rootSerializer);
3737

3838
/// <summary>
3939
/// Creates a new generic <see cref="MapEntryConverter{TKey, TValue}"/>
@@ -56,7 +56,7 @@ class MapEntryConverter<TKey, TValue> (ISerializer serializer, IDeserializer des
5656
public bool Accepts(Type type) => type == typeof(MapEntry<TKey, TValue>);
5757

5858
/// <inheritdoc/>
59-
public virtual object ReadYaml(IParser parser, Type type)
59+
public virtual object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer)
6060
{
6161
parser.Consume<MappingStart>();
6262
var key = deserializer.Deserialize<TKey>(parser);
@@ -66,7 +66,7 @@ public virtual object ReadYaml(IParser parser, Type type)
6666
}
6767

6868
/// <inheritdoc/>
69-
public virtual void WriteYaml(IEmitter emitter, object? value, Type type)
69+
public virtual void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer rootSerializer)
7070
{
7171
if (value == null)
7272
{

src/ServerlessWorkflow.Sdk/Serialization/Yaml/OneOfConverter.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public class OneOfConverter
3030
public virtual bool Accepts(Type type) => type.GetGenericType(typeof(OneOf<,>)) != null;
3131

3232
/// <inheritdoc/>
33-
public virtual object? ReadYaml(IParser parser, Type type) => throw new NotImplementedException();
33+
public virtual object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) => throw new NotImplementedException();
3434

3535
/// <inheritdoc/>
36-
public virtual void WriteYaml(IEmitter emitter, object? value, Type type)
36+
public virtual void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer rootSerializer)
3737
{
3838
if (value == null || value is not IOneOf oneOf)
3939
{
@@ -47,7 +47,7 @@ public virtual void WriteYaml(IEmitter emitter, object? value, Type type)
4747
return;
4848
}
4949
var jsonNode = JsonSerializer.Default.SerializeToNode(toSerialize);
50-
new JsonNodeTypeConverter().WriteYaml(emitter, jsonNode, toSerialize.GetType());
50+
new JsonNodeTypeConverter().WriteYaml(emitter, jsonNode, toSerialize.GetType(), rootSerializer);
5151
}
5252

5353
}

src/ServerlessWorkflow.Sdk/Serialization/Yaml/OneOfNodeDeserializer.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ public class OneOfNodeDeserializer(INodeDeserializer inner)
3131
protected INodeDeserializer Inner { get; } = inner;
3232

3333
/// <inheritdoc/>
34-
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
34+
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
3535
{
36-
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value);
37-
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value)) return false;
36+
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
37+
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value, rootDeserializer)) return false;
3838
value = JsonSerializer.Default.Deserialize(JsonSerializer.Default.SerializeToText(value!), expectedType);
3939
return true;
4040
}

src/ServerlessWorkflow.Sdk/Serialization/Yaml/OneOfScalarDeserializer.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ public class OneOfScalarDeserializer(INodeDeserializer inner)
3131
protected INodeDeserializer Inner { get; } = inner;
3232

3333
/// <inheritdoc/>
34-
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
34+
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
3535
{
36-
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value);
37-
if (!this.Inner.Deserialize(reader, typeof(object), nestedObjectDeserializer, out value)) return false;
36+
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
37+
if (!this.Inner.Deserialize(reader, typeof(object), nestedObjectDeserializer, out value, rootDeserializer)) return false;
3838
value = JsonSerializer.Default.Deserialize(JsonSerializer.Default.SerializeToText(value!), expectedType);
3939
return true;
4040
}

src/ServerlessWorkflow.Sdk/Serialization/Yaml/TaskDefinitionYamlConverter.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ public class TaskDefinitionYamlDeserializer(INodeDeserializer inner)
3434
protected INodeDeserializer Inner { get; } = inner;
3535

3636
/// <inheritdoc/>
37-
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
37+
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
3838
{
39-
if (!typeof(TaskDefinition).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value);
40-
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value)) return false;
39+
if (!typeof(TaskDefinition).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
40+
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value, rootDeserializer)) return false;
4141
value = JsonSerializer.Default.Deserialize<TaskDefinition>(JsonSerializer.Default.SerializeToText(value!));
4242
return true;
4343
}

0 commit comments

Comments
 (0)