diff --git a/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs b/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs
index 2d741dbc6..6821f23c1 100644
--- a/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs
+++ b/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs
@@ -4,30 +4,21 @@ using Elsa.Expressions.Helpers;
using Elsa.Extensions;
using Elsa.Workflows.Memory;
using Elsa.Workflows.Models;
+using Microsoft.Extensions.Logging;
namespace Elsa.Workflows.Management.Mappers;
///
/// Maps s to s and vice versa.
///
-public class VariableDefinitionMapper
+public class VariableDefinitionMapper(IWellKnownTypeRegistry wellKnownTypeRegistry, ILogger logger)
{
- private readonly IWellKnownTypeRegistry _wellKnownTypeRegistry;
-
- ///
- /// Constructor.
- ///
- public VariableDefinitionMapper(IWellKnownTypeRegistry wellKnownTypeRegistry)
- {
- _wellKnownTypeRegistry = wellKnownTypeRegistry;
- }
-
///
/// Maps a to a .
///
public Variable? Map(VariableDefinition source)
{
- if (!_wellKnownTypeRegistry.TryGetTypeOrDefault(source.TypeName, out var type))
+ if (!wellKnownTypeRegistry.TryGetTypeOrDefault(source.TypeName, out var type))
return null;
var valueType = source.IsArray ? type.MakeArrayType() : type;
@@ -38,8 +29,14 @@ public class VariableDefinitionMapper
variable.Id = source.Id;
variable.Name = source.Name;
- variable.Value = source.Value.ConvertTo(valueType);
- variable.StorageDriverType = !string.IsNullOrEmpty(source.StorageDriverTypeName) ? Type.GetType(source.StorageDriverTypeName) : default;
+ source.Value?.TryConvertTo(valueType).OnSuccess(value =>
+ {
+ variable.Value = value;
+ }).OnFailure(ex =>
+ {
+ logger.LogWarning(ex, "Failed to convert variable value.");
+ });
+ variable.StorageDriverType = !string.IsNullOrEmpty(source.StorageDriverTypeName) ? Type.GetType(source.StorageDriverTypeName) : null;
return variable;
}
@@ -52,7 +49,7 @@ public class VariableDefinitionMapper
.Select(Map)
.Where(x => x != null)
.Select(x => x!)
- ?? Enumerable.Empty();
+ ?? [];
///
/// Maps a to a .
@@ -64,16 +61,15 @@ public class VariableDefinitionMapper
var isArray = valueType.IsCollectionType();
var elementValueType = isArray ? valueType.GenericTypeArguments[0] : valueType;
var value = source.Value;
-
- var valueTypeAlias = _wellKnownTypeRegistry.GetAliasOrDefault(elementValueType);
+ var valueTypeAlias = wellKnownTypeRegistry.GetAliasOrDefault(elementValueType);
var storageDriverTypeName = source.StorageDriverType?.GetSimpleAssemblyQualifiedName();
var serializedValue = value.Format();
- return new VariableDefinition(source.Id, source.Name, valueTypeAlias, isArray, serializedValue, storageDriverTypeName);
+ return new(source.Id, source.Name, valueTypeAlias, isArray, serializedValue, storageDriverTypeName);
}
///
/// Maps a list of s to a list of s.
///
- public IEnumerable Map(IEnumerable? source) => source?.Select(Map) ?? Enumerable.Empty();
+ public IEnumerable Map(IEnumerable? source) => source?.Select(Map) ?? [];
}
\ No newline at end of file