From 0df76b73ef12dd56751dec3b9df036cc32ce1880 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Wed, 24 May 2023 14:21:58 +0200 Subject: [PATCH] Generate default ID for flowchart if empty in converter --- .../Flowchart/Serialization/FlowchartJsonConverter.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs index 96a1fae43..5e3d0e618 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs @@ -10,10 +10,17 @@ namespace Elsa.Workflows.Core.Activities.Flowchart.Serialization; /// public class FlowchartJsonConverter : JsonConverter { + private readonly IIdentityGenerator _identityGenerator; private const string AllActivitiesKey = "AllActivities"; private const string AllConnectionsKey = "AllConnections"; private const string NotFoundConnectionsKey = "NotFoundConnectionsKey"; + /// + public FlowchartJsonConverter(IIdentityGenerator identityGenerator) + { + _identityGenerator = identityGenerator; + } + /// public override Activities.Flowchart Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { @@ -22,7 +29,7 @@ public class FlowchartJsonConverter : JsonConverter var connectionsElement = doc.RootElement.TryGetProperty("connections", out var connectionsEl) ? connectionsEl : default; var activitiesElement = doc.RootElement.TryGetProperty("activities", out var activitiesEl) ? activitiesEl : default; - var id = doc.RootElement.GetProperty("id").GetString()!; + var id = doc.RootElement.TryGetProperty("id", out var idAttribute) ? idAttribute.GetString() : _identityGenerator.GenerateId(); var startId = doc.RootElement.TryGetProperty("start", out var startElement) ? startElement.GetString() : default; var activities = activitiesElement.ValueKind != JsonValueKind.Undefined ? activitiesElement.Deserialize>(options) ?? new List() : new List(); var metadataElement = doc.RootElement.TryGetProperty("metadata", out var metadataEl) ? metadataEl : default;