Skip to content

Commit

Permalink
fix(Sdk): Fixed YAML serializers and deserializers
Browse files Browse the repository at this point in the history
Signed-off-by: Charles d'Avernas <[email protected]>
  • Loading branch information
cdavernas committed Sep 8, 2024
1 parent 62c320a commit 0c7aabb
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,20 @@ public record OAuth2AuthenticationEndpointsDefinition
/// </summary>
[Required]
[DataMember(Name = "authority", Order = 1), JsonPropertyName("authority"), JsonPropertyOrder(1), YamlMember(Alias = "authority", Order = 1)]
public virtual Uri Token { get; set; } = new("/oauth2/token");
public virtual Uri Token { get; set; } = new("/oauth2/token", UriKind.RelativeOrAbsolute);

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

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

}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ public virtual RetryPolicyDefinition? Retry
get => this.RetryValue?.T1Value;
set
{
ArgumentNullException.ThrowIfNull(value);
this.RetryValue = value;

Check warning on line 56 in src/ServerlessWorkflow.Sdk/Models/ErrorCatcherDefinition.cs

View workflow job for this annotation

GitHub Actions / build (8.0.x)

Possible null reference argument for parameter 'value' in 'OneOf<RetryPolicyDefinition, string>.implicit operator OneOf<RetryPolicyDefinition, string>(RetryPolicyDefinition value)'.

Check warning on line 56 in src/ServerlessWorkflow.Sdk/Models/ErrorCatcherDefinition.cs

View workflow job for this annotation

GitHub Actions / build (8.0.x)

Possible null reference argument for parameter 'value' in 'OneOf<RetryPolicyDefinition, string>.implicit operator OneOf<RetryPolicyDefinition, string>(RetryPolicyDefinition value)'.

Check warning on line 56 in src/ServerlessWorkflow.Sdk/Models/ErrorCatcherDefinition.cs

View workflow job for this annotation

GitHub Actions / build (8.0.x)

Possible null reference argument for parameter 'value' in 'OneOf<RetryPolicyDefinition, string>.implicit operator OneOf<RetryPolicyDefinition, string>(RetryPolicyDefinition value)'.
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ public class MapEntryYamlConverter(Func<ISerializer> serializerFactory, Func<IDe
public virtual bool Accepts(Type type) => type.IsGenericType && type.GetGenericTypeDefinition() == typeof(MapEntry<,>);

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

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

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

/// <inheritdoc/>
public virtual object ReadYaml(IParser parser, Type type)
public virtual object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer)
{
parser.Consume<MappingStart>();
var key = deserializer.Deserialize<TKey>(parser);
Expand All @@ -66,7 +66,7 @@ public virtual object ReadYaml(IParser parser, Type type)
}

/// <inheritdoc/>
public virtual void WriteYaml(IEmitter emitter, object? value, Type type)
public virtual void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer rootSerializer)
{
if (value == null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ public class OneOfConverter
public virtual bool Accepts(Type type) => type.GetGenericType(typeof(OneOf<,>)) != null;

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

/// <inheritdoc/>
public virtual void WriteYaml(IEmitter emitter, object? value, Type type)
public virtual void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer rootSerializer)
{
if (value == null || value is not IOneOf oneOf)
{
Expand All @@ -47,7 +47,7 @@ public virtual void WriteYaml(IEmitter emitter, object? value, Type type)
return;
}
var jsonNode = JsonSerializer.Default.SerializeToNode(toSerialize);
new JsonNodeTypeConverter().WriteYaml(emitter, jsonNode, toSerialize.GetType());
new JsonNodeTypeConverter().WriteYaml(emitter, jsonNode, toSerialize.GetType(), rootSerializer);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ public class OneOfNodeDeserializer(INodeDeserializer inner)
protected INodeDeserializer Inner { get; } = inner;

/// <inheritdoc/>
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
{
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value);
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value)) return false;
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value, rootDeserializer)) return false;
value = JsonSerializer.Default.Deserialize(JsonSerializer.Default.SerializeToText(value!), expectedType);
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ public class OneOfScalarDeserializer(INodeDeserializer inner)
protected INodeDeserializer Inner { get; } = inner;

/// <inheritdoc/>
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
{
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value);
if (!this.Inner.Deserialize(reader, typeof(object), nestedObjectDeserializer, out value)) return false;
if (!typeof(IOneOf).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
if (!this.Inner.Deserialize(reader, typeof(object), nestedObjectDeserializer, out value, rootDeserializer)) return false;
value = JsonSerializer.Default.Deserialize(JsonSerializer.Default.SerializeToText(value!), expectedType);
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ public class TaskDefinitionYamlDeserializer(INodeDeserializer inner)
protected INodeDeserializer Inner { get; } = inner;

/// <inheritdoc/>
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value)
public virtual bool Deserialize(IParser reader, Type expectedType, Func<IParser, Type, object?> nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
{
if (!typeof(TaskDefinition).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value);
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value)) return false;
if (!typeof(TaskDefinition).IsAssignableFrom(expectedType)) return this.Inner.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
if (!this.Inner.Deserialize(reader, typeof(Dictionary<object, object>), nestedObjectDeserializer, out value, rootDeserializer)) return false;
value = JsonSerializer.Default.Deserialize<TaskDefinition>(JsonSerializer.Default.SerializeToText(value!));
return true;
}
Expand Down

0 comments on commit 0c7aabb

Please sign in to comment.