< Summary

Information
Class: Elsa.Workflows.Management.Services.DefaultHostMethodParameterValueProvider
Assembly: Elsa.Workflows.Management
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Management/Services/DefaultHostMethodParameterValueProvider.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 16
Coverable lines: 16
Total lines: 45
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetValueAsync(...)0%156120%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Management/Services/DefaultHostMethodParameterValueProvider.cs

#LineLine coverage
 1using System.Reflection;
 2using Elsa.Expressions.Helpers;
 3using Elsa.Workflows.Management.Attributes;
 4using Elsa.Workflows.Models;
 5using Microsoft.Extensions.DependencyInjection;
 6
 7namespace Elsa.Workflows.Management.Services;
 8
 9/// <summary>
 10/// Default parameter binding implementation for host method activities.
 11/// </summary>
 12public class DefaultHostMethodParameterValueProvider : IHostMethodParameterValueProvider
 13{
 14    public ValueTask<HostMethodParameterValueProviderResult> GetValueAsync(HostMethodParameterValueProviderContext conte
 15    {
 016        var parameter = context.Parameter;
 17
 18        // Provided by runtime.
 019        if (parameter.ParameterType == typeof(CancellationToken))
 020            return ValueTask.FromResult(HostMethodParameterValueProviderResult.HandledValue(context.CancellationToken));
 21
 022        if (parameter.ParameterType == typeof(ActivityExecutionContext))
 023            return ValueTask.FromResult(HostMethodParameterValueProviderResult.HandledValue(context.ActivityExecutionCon
 24
 25        // Resolve from DI if explicitly requested.
 026        if (parameter.GetCustomAttribute<FromServicesAttribute>() != null)
 27        {
 028            var service = context.ServiceProvider.GetRequiredService(parameter.ParameterType);
 029            return ValueTask.FromResult(HostMethodParameterValueProviderResult.HandledValue(service));
 30        }
 31
 32        // Resolve from workflow inputs (default).
 033        var inputDescriptor = context.InputDescriptors.FirstOrDefault(x => string.Equals(x.Name, parameter.Name, StringC
 034        if (inputDescriptor == null)
 035            return ValueTask.FromResult(HostMethodParameterValueProviderResult.Unhandled);
 36
 037        var input = (Input?)inputDescriptor.ValueGetter(context.Activity);
 038        var inputValue = input != null ? context.ActivityExecutionContext.Get(input.MemoryBlockReference()) : null;
 39
 040        if (inputValue is System.Dynamic.ExpandoObject expandoObject)
 041            inputValue = expandoObject.ConvertTo(parameter.ParameterType);
 42
 043        return ValueTask.FromResult(HostMethodParameterValueProviderResult.HandledValue(inputValue));
 44    }
 45}