Skip to content

Commit aa98f54

Browse files
committed
Added Serialize overload-method to ISerializer
1 parent 8c7eb8b commit aa98f54

File tree

10 files changed

+28
-2
lines changed

10 files changed

+28
-2
lines changed

Core/Cleipnir.ResilientFunctions.Tests/InMemoryTests/RegistrationTests/RActionWithStateRegistrationTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public byte[] Serialize<T>(T value)
5353
return Default.Serialize(value);
5454
}
5555

56+
public byte[] Serialize(object? value, Type type) => Default.Serialize(value, type);
57+
5658
public T Deserialize<T>(byte[] json)
5759
=> Default.Deserialize<T>(json);
5860

Core/Cleipnir.ResilientFunctions.Tests/InMemoryTests/RegistrationTests/RFuncRegistrationTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ public byte[] Serialize<T>(T value)
5858
Invoked = true;
5959
return Default.Serialize(value);
6060
}
61+
62+
public byte[] Serialize(object? value, Type type) => Default.Serialize(value, type);
63+
6164
public T Deserialize<T>(byte[] json)
6265
=> Default.Deserialize<T>(json);
6366

Core/Cleipnir.ResilientFunctions.Tests/InMemoryTests/RegistrationTests/RFuncWithStateRegistrationTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ public byte[] Serialize<T>(T parameter)
6262
Invoked = true;
6363
return Default.Serialize(parameter);
6464
}
65+
66+
public byte[] Serialize(object? value, Type type) => Default.Serialize(value, type);
67+
6568
public T Deserialize<T>(byte[] bytes)
6669
=> Default.Deserialize<T>(bytes);
6770

Core/Cleipnir.ResilientFunctions.Tests/InMemoryTests/SerializationTests.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using Cleipnir.ResilientFunctions.CoreRuntime.Serialization;
33
using Cleipnir.ResilientFunctions.Domain;
4-
using Cleipnir.ResilientFunctions.Messaging;
54
using Cleipnir.ResilientFunctions.Reactive.Utilities;
65
using Cleipnir.ResilientFunctions.Tests.Utils;
76
using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -24,6 +23,15 @@ public void ConcreteTypeOfEventIsSerializedAndDeserializedByDefaultSerializer()
2423

2524
child.Value.ShouldBe("Hello World");
2625
}
26+
27+
[TestMethod]
28+
public void StringCanBeSerializedAndDeserializedUsingValueTypeSerializationOverload()
29+
{
30+
var serializer = DefaultSerializer.Instance;
31+
var serializedBytes = serializer.Serialize("Hello World", typeof(string));
32+
var deserialized = serializer.Deserialize<string>(serializedBytes);
33+
deserialized.ShouldBe("Hello World");
34+
}
2735

2836
[TestMethod]
2937
public void OptionCanBeDeserializedByDefaultSerializer()

Core/Cleipnir.ResilientFunctions.Tests/Messaging/TestTemplates/CustomMessageSerializerTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ private class EventSerializer : ISerializer
6565
public byte[] Serialize<T>(T value)
6666
=> DefaultSerializer.Instance.Serialize(value);
6767

68+
public byte[] Serialize(object? value, Type type) => DefaultSerializer.Instance.Serialize(value, type);
69+
6870
public T Deserialize<T>(byte[] json)
6971
=> DefaultSerializer.Instance.Deserialize<T>(json);
7072

Core/Cleipnir.ResilientFunctions.Tests/Messaging/TestTemplates/MessagesTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,8 @@ public ExceptionThrowingEventSerializer(Type failDeserializationOnType)
469469
public byte[] Serialize<T>(T value)
470470
=> DefaultSerializer.Instance.Serialize(value);
471471

472+
public byte[] Serialize(object? value, Type type) => DefaultSerializer.Instance.Serialize(value, type);
473+
472474
public T Deserialize<T>(byte[] json)
473475
=> DefaultSerializer.Instance.Deserialize<T>(json);
474476

Core/Cleipnir.ResilientFunctions/CoreRuntime/Serialization/CustomSerializableDecorator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ public byte[] Serialize<T>(T parameter)
1919
=> parameter is ICustomSerializable customSerializable
2020
? customSerializable.Serialize(this)
2121
: _inner.Serialize(parameter);
22-
22+
23+
public byte[] Serialize(object? value, Type type) => _inner.Serialize(value, type);
24+
2325
public T Deserialize<T>(byte[] json)
2426
=> typeof(T).IsAssignableTo(typeof(ICustomSerializable))
2527
? CustomDeserialize<T>(json)

Core/Cleipnir.ResilientFunctions/CoreRuntime/Serialization/DefaultSerializer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class DefaultSerializer : ISerializer
1313
private DefaultSerializer() {}
1414

1515
public byte[] Serialize<T>(T value) => JsonSerializer.SerializeToUtf8Bytes(value);
16+
public byte[] Serialize(object? value, Type type) => JsonSerializer.SerializeToUtf8Bytes(value, type);
17+
1618
public T Deserialize<T>(byte[] bytes) => JsonSerializer.Deserialize<T>(bytes)!;
1719

1820
public StoredException SerializeException(FatalWorkflowException exception)

Core/Cleipnir.ResilientFunctions/CoreRuntime/Serialization/ErrorHandlingDecorator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class ErrorHandlingDecorator : ISerializer
1212
public ErrorHandlingDecorator(ISerializer inner) => _inner = inner;
1313

1414
public byte[] Serialize<T>(T value) => _inner.Serialize(value);
15+
public byte[] Serialize(object? value, Type type) => _inner.Serialize(value, type);
1516

1617
public T Deserialize<T>(byte[] bytes)
1718
{

Core/Cleipnir.ResilientFunctions/CoreRuntime/Serialization/ISerializer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace Cleipnir.ResilientFunctions.CoreRuntime.Serialization;
77
public interface ISerializer
88
{
99
byte[] Serialize<T>(T value);
10+
byte[] Serialize(object? value, Type type);
1011
T Deserialize<T>(byte[] bytes);
1112

1213
StoredException SerializeException(FatalWorkflowException fatalWorkflowException);

0 commit comments

Comments
 (0)