From cfcbc3d762ae255273d2fd3e61ae8a0391fee6d3 Mon Sep 17 00:00:00 2001 From: Sviataslau Hankovich Date: Thu, 22 Oct 2020 16:59:59 +0300 Subject: [PATCH] Code cleanup (#413) --- .../Activities/Join.cs | 6 +++--- .../Activities/Switch.cs | 5 ++--- .../Activities/While.cs | 7 +++---- .../Extensions/ServiceCollectionExtensions.cs | 2 -- .../Handlers/DropboxApiHandler.cs | 18 ------------------ .../Activities/SendEmail.cs | 6 +++--- .../CancelScheduledSendMassTransitMessage.cs | 1 - .../Activities/MassTransitBusActivity.cs | 8 ++------ .../Activities/ReceiveMassTransitMessage.cs | 7 ++----- .../Activities/ExecuteFunction.cs | 3 ++- .../Activities/CronEvent.cs | 5 ++--- .../Activities/TimerEvent.cs | 5 ++--- .../Activities/UserTask.cs | 4 ++-- .../Memory/MemoryWorkflowInstanceStore.cs | 2 +- .../WorkflowDesignerViewComponent.cs | 3 ++- .../TruncatingNumberJsonConverter.cs | 10 +++------- .../Handlers/CommonLiquidContextHandler.cs | 4 ++-- .../Services/LiquidExpressionEvaluator.cs | 8 ++++---- 18 files changed, 35 insertions(+), 69 deletions(-) delete mode 100644 src/activities/Elsa.Activities.Dropbox/Handlers/DropboxApiHandler.cs diff --git a/src/activities/Elsa.Activities.ControlFlow/Activities/Join.cs b/src/activities/Elsa.Activities.ControlFlow/Activities/Join.cs index 90fd6e3ac..4b2ba4424 100644 --- a/src/activities/Elsa.Activities.ControlFlow/Activities/Join.cs +++ b/src/activities/Elsa.Activities.ControlFlow/Activities/Join.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -22,7 +22,7 @@ namespace Elsa.Activities.ControlFlow.Activities { public Join() { - InboundTransitions = new List().AsReadOnly(); + InboundTransitions = new List(); } public enum JoinMode @@ -50,7 +50,7 @@ namespace Elsa.Activities.ControlFlow.Activities protected override ActivityExecutionResult OnExecute(WorkflowExecutionContext workflowContext) { - var recordedInboundTransitions = InboundTransitions ?? new List(); + var recordedInboundTransitions = InboundTransitions ?? Enumerable.Empty(); var workflow = workflowContext.Workflow; var inboundConnections = workflow.GetInboundConnections(Id); var done = false; diff --git a/src/activities/Elsa.Activities.ControlFlow/Activities/Switch.cs b/src/activities/Elsa.Activities.ControlFlow/Activities/Switch.cs index b410cc563..5c373b2f1 100644 --- a/src/activities/Elsa.Activities.ControlFlow/Activities/Switch.cs +++ b/src/activities/Elsa.Activities.ControlFlow/Activities/Switch.cs @@ -22,12 +22,11 @@ namespace Elsa.Activities.ControlFlow.Activities public class Switch : Activity { private readonly IWorkflowExpressionEvaluator expressionEvaluator; - - + public Switch(IWorkflowExpressionEvaluator expressionEvaluator) { this.expressionEvaluator = expressionEvaluator; - Cases = new List() + Cases = new List { "default" }; diff --git a/src/activities/Elsa.Activities.ControlFlow/Activities/While.cs b/src/activities/Elsa.Activities.ControlFlow/Activities/While.cs index 2ada3455b..a2093e7a4 100644 --- a/src/activities/Elsa.Activities.ControlFlow/Activities/While.cs +++ b/src/activities/Elsa.Activities.ControlFlow/Activities/While.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Elsa.Attributes; using Elsa.Expressions; @@ -39,13 +39,12 @@ namespace Elsa.Activities.ControlFlow.Activities { var loop = await expressionEvaluator.EvaluateAsync(ConditionExpression, context, cancellationToken); - if(HasStarted) + if (HasStarted) context.EndScope(); if (loop) { - if (!HasStarted) - HasStarted = true; + HasStarted = true; context.BeginScope(); return Outcome(OutcomeNames.Iterate); diff --git a/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs index 100d3ffd4..0cefb57fb 100644 --- a/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs @@ -2,7 +2,6 @@ using System; using System.Net.Http; using System.Net.Http.Headers; using Elsa.Activities.Dropbox.Activities; -using Elsa.Activities.Dropbox.Handlers; using Elsa.Activities.Dropbox.Options; using Elsa.Activities.Dropbox.Services; using Microsoft.Extensions.DependencyInjection; @@ -20,7 +19,6 @@ namespace Elsa.Activities.Dropbox.Extensions options?.Invoke(optionsBuilder); services - .AddTransient() .AddHttpClient() .ConfigureHttpClient(ConfigureHttpClient); diff --git a/src/activities/Elsa.Activities.Dropbox/Handlers/DropboxApiHandler.cs b/src/activities/Elsa.Activities.Dropbox/Handlers/DropboxApiHandler.cs deleted file mode 100644 index 2e9a9e94b..000000000 --- a/src/activities/Elsa.Activities.Dropbox/Handlers/DropboxApiHandler.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; - -namespace Elsa.Activities.Dropbox.Handlers -{ - public class DropboxApiHandler : DelegatingHandler - { - protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) - { - //request.Content = new ByteArrayContent(request.Content.); - var response = await base.SendAsync(request, cancellationToken); - var error = await response.Content.ReadAsStringAsync(); - - return response; - } - } -} \ No newline at end of file diff --git a/src/activities/Elsa.Activities.Email/Activities/SendEmail.cs b/src/activities/Elsa.Activities.Email/Activities/SendEmail.cs index 3ba3d872b..c2d7bf779 100644 --- a/src/activities/Elsa.Activities.Email/Activities/SendEmail.cs +++ b/src/activities/Elsa.Activities.Email/Activities/SendEmail.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Elsa.Activities.Email.Options; using Elsa.Activities.Email.Services; @@ -59,13 +59,13 @@ namespace Elsa.Activities.Email.Activities protected override async Task OnExecuteAsync(WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) { - var from = (await expressionEvaluator.EvaluateAsync(From, workflowContext, cancellationToken)) ?? options.Value.DefaultSender; + var from = await expressionEvaluator.EvaluateAsync(From, workflowContext, cancellationToken) ?? options.Value.DefaultSender; var to = await expressionEvaluator.EvaluateAsync(To, workflowContext, cancellationToken); var subject = await expressionEvaluator.EvaluateAsync(Subject, workflowContext, cancellationToken); var body = await expressionEvaluator.EvaluateAsync(Body, workflowContext, cancellationToken); var message = new MimeMessage(); - message.From.Add(new MailboxAddress(@from)); + message.From.Add(new MailboxAddress(from)); message.Subject = subject; message.Body = new TextPart(TextFormat.Html) diff --git a/src/activities/Elsa.Activities.MassTransit/Activities/CancelScheduledSendMassTransitMessage.cs b/src/activities/Elsa.Activities.MassTransit/Activities/CancelScheduledSendMassTransitMessage.cs index 4f6ff2f59..6fcc0193b 100644 --- a/src/activities/Elsa.Activities.MassTransit/Activities/CancelScheduledSendMassTransitMessage.cs +++ b/src/activities/Elsa.Activities.MassTransit/Activities/CancelScheduledSendMassTransitMessage.cs @@ -36,7 +36,6 @@ namespace Elsa.Activities.MassTransit.Activities set => SetState(value); } - protected override bool OnCanExecute(WorkflowExecutionContext context) { return TokenId != null && options.SchedulerAddress != null; diff --git a/src/activities/Elsa.Activities.MassTransit/Activities/MassTransitBusActivity.cs b/src/activities/Elsa.Activities.MassTransit/Activities/MassTransitBusActivity.cs index ed54bba07..800eb46f7 100644 --- a/src/activities/Elsa.Activities.MassTransit/Activities/MassTransitBusActivity.cs +++ b/src/activities/Elsa.Activities.MassTransit/Activities/MassTransitBusActivity.cs @@ -23,9 +23,7 @@ namespace Elsa.Activities.MassTransit.Activities /// the conversation and correlation id. /// protected IPublishEndpoint PublishEndpoint => - consumeContext != null - ? (IPublishEndpoint)consumeContext - : (IPublishEndpoint)bus; + consumeContext ?? (IPublishEndpoint)bus; /// /// Gets the send endpoint provider to use. @@ -35,9 +33,7 @@ namespace Elsa.Activities.MassTransit.Activities /// the conversation and correlation id. /// protected ISendEndpointProvider SendEndpointProvider => - consumeContext != null - ? (ISendEndpointProvider)consumeContext - : (ISendEndpointProvider)bus; + consumeContext ?? (ISendEndpointProvider)bus; } } \ No newline at end of file diff --git a/src/activities/Elsa.Activities.MassTransit/Activities/ReceiveMassTransitMessage.cs b/src/activities/Elsa.Activities.MassTransit/Activities/ReceiveMassTransitMessage.cs index 7f0c3e766..ea4a929fe 100644 --- a/src/activities/Elsa.Activities.MassTransit/Activities/ReceiveMassTransitMessage.cs +++ b/src/activities/Elsa.Activities.MassTransit/Activities/ReceiveMassTransitMessage.cs @@ -1,6 +1,4 @@ using System; -using System.Threading; -using System.Threading.Tasks; using Elsa.Attributes; using Elsa.Extensions; using Elsa.Results; @@ -44,13 +42,12 @@ namespace Elsa.Activities.MassTransit.Activities return Halt(true); } - protected override Task OnResumeAsync(WorkflowExecutionContext context, - CancellationToken cancellationToken) + protected override ActivityExecutionResult OnResume(WorkflowExecutionContext context) { var message = context.Workflow.Input.GetVariable(Constants.MessageInputKey); context.SetLastResult(message); - return Task.FromResult(Done()); + return Done(); } } } \ No newline at end of file diff --git a/src/activities/Elsa.Activities.Reflection/Activities/ExecuteFunction.cs b/src/activities/Elsa.Activities.Reflection/Activities/ExecuteFunction.cs index 249190f1e..1b216364f 100644 --- a/src/activities/Elsa.Activities.Reflection/Activities/ExecuteFunction.cs +++ b/src/activities/Elsa.Activities.Reflection/Activities/ExecuteFunction.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using System.Reflection; using System.Threading; @@ -50,7 +51,7 @@ namespace Elsa.Activities.Reflection.Activities if (type == null) return Fault($"Type {TypeName} not found."); - var inputValues = await context.EvaluateAsync(Arguments, cancellationToken) ?? new object[0]; + var inputValues = await context.EvaluateAsync(Arguments, cancellationToken) ?? Array.Empty(); var method = type .GetMethods(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) diff --git a/src/activities/Elsa.Activities.Timers/Activities/CronEvent.cs b/src/activities/Elsa.Activities.Timers/Activities/CronEvent.cs index 8d10c8b81..1831cd8de 100644 --- a/src/activities/Elsa.Activities.Timers/Activities/CronEvent.cs +++ b/src/activities/Elsa.Activities.Timers/Activities/CronEvent.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Elsa.Attributes; using Elsa.Expressions; @@ -76,8 +76,7 @@ namespace Elsa.Activities.Timers.Activities var schedule = CrontabSchedule.Parse(cronExpression); var now = clock.GetCurrentInstant(); - if (StartTime == null) - StartTime = now; + StartTime ??= now; var nextOccurrence = schedule.GetNextOccurrence(StartTime.Value.ToDateTimeUtc()); diff --git a/src/activities/Elsa.Activities.Timers/Activities/TimerEvent.cs b/src/activities/Elsa.Activities.Timers/Activities/TimerEvent.cs index a23cfd88c..f1ccd7eae 100644 --- a/src/activities/Elsa.Activities.Timers/Activities/TimerEvent.cs +++ b/src/activities/Elsa.Activities.Timers/Activities/TimerEvent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; using Elsa.Attributes; @@ -64,8 +64,7 @@ namespace Elsa.Activities.Timers.Activities { var now = clock.GetCurrentInstant(); - if (StartTime == null) - StartTime = now; + StartTime ??= now; var timeSpan = await expressionEvaluator.EvaluateAsync(TimeoutExpression, context, cancellationToken); var expiresAt = StartTime.Value.ToDateTimeUtc() + timeSpan; diff --git a/src/activities/Elsa.Activities.UserTask/Activities/UserTask.cs b/src/activities/Elsa.Activities.UserTask/Activities/UserTask.cs index 8f369ca8a..2318ae86f 100644 --- a/src/activities/Elsa.Activities.UserTask/Activities/UserTask.cs +++ b/src/activities/Elsa.Activities.UserTask/Activities/UserTask.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Elsa.Attributes; using Elsa.Design; @@ -23,7 +23,7 @@ namespace Elsa.Activities.UserTask.Activities )] public string[] Actions { - get => GetState(() => new string[0]); + get => GetState(() => Array.Empty()); set => SetState(value); } diff --git a/src/core/Elsa.Core/Persistence/Memory/MemoryWorkflowInstanceStore.cs b/src/core/Elsa.Core/Persistence/Memory/MemoryWorkflowInstanceStore.cs index 54ded7257..3fa34f2c8 100644 --- a/src/core/Elsa.Core/Persistence/Memory/MemoryWorkflowInstanceStore.cs +++ b/src/core/Elsa.Core/Persistence/Memory/MemoryWorkflowInstanceStore.cs @@ -21,7 +21,7 @@ namespace Elsa.Persistence.Memory public Task GetByIdAsync(string id, CancellationToken cancellationToken) { - var instance = workflowInstances.ContainsKey(id) ? workflowInstances[id] : default; + workflowInstances.TryGetValue(id, out var instance); return Task.FromResult(instance); } diff --git a/src/dashboard/Elsa.WorkflowDesigner/ViewComponents/WorkflowDesignerViewComponent.cs b/src/dashboard/Elsa.WorkflowDesigner/ViewComponents/WorkflowDesignerViewComponent.cs index 8fc993ec6..723765415 100644 --- a/src/dashboard/Elsa.WorkflowDesigner/ViewComponents/WorkflowDesignerViewComponent.cs +++ b/src/dashboard/Elsa.WorkflowDesigner/ViewComponents/WorkflowDesignerViewComponent.cs @@ -1,3 +1,4 @@ +using System; using Elsa.Metadata; using Elsa.WorkflowDesigner.Models; using Elsa.WorkflowDesigner.ViewModels; @@ -17,7 +18,7 @@ namespace Elsa.WorkflowDesigner.ViewComponents { var model = new WorkflowDesignerViewComponentModel( id, - Serialize(activityDefinitions ?? new ActivityDescriptor[0]), + Serialize(activityDefinitions ?? Array.Empty()), Serialize(workflow ?? new WorkflowModel()), isReadonly.GetValueOrDefault() ); diff --git a/src/scripting/Elsa.Scripting.JavaScript/Converters/TruncatingNumberJsonConverter.cs b/src/scripting/Elsa.Scripting.JavaScript/Converters/TruncatingNumberJsonConverter.cs index 98d0969bc..ed4514589 100644 --- a/src/scripting/Elsa.Scripting.JavaScript/Converters/TruncatingNumberJsonConverter.cs +++ b/src/scripting/Elsa.Scripting.JavaScript/Converters/TruncatingNumberJsonConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using Newtonsoft.Json; namespace Elsa.Scripting.JavaScript.Converters @@ -8,13 +8,9 @@ namespace Elsa.Scripting.JavaScript.Converters /// public class TruncatingNumberJsonConverter : JsonConverter { - public TruncatingNumberJsonConverter() - { - } - public override bool CanRead => false; public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) => throw new NotImplementedException("Unnecessary because CanRead is false. The type will skip the converter."); - public override bool CanConvert(Type objectType) => (objectType == typeof(decimal) || objectType == typeof(float) || objectType == typeof(double)); + public override bool CanConvert(Type objectType) => objectType == typeof(decimal) || objectType == typeof(float) || objectType == typeof(double); public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => writer.WriteRawValue(IsWholeValue(value) ? JsonConvert.ToString(Convert.ToInt64(value)) : JsonConvert.ToString(value)); private static bool IsWholeValue(object value) @@ -27,7 +23,7 @@ namespace Elsa.Scripting.JavaScript.Converters if (value is float || value is double) { - var doubleValue = (double) value; + var doubleValue = Convert.ToDouble(value); return doubleValue == Math.Truncate(doubleValue); } diff --git a/src/scripting/Elsa.Scripting.Liquid/Handlers/CommonLiquidContextHandler.cs b/src/scripting/Elsa.Scripting.Liquid/Handlers/CommonLiquidContextHandler.cs index ddad5870c..055f8a7a3 100644 --- a/src/scripting/Elsa.Scripting.Liquid/Handlers/CommonLiquidContextHandler.cs +++ b/src/scripting/Elsa.Scripting.Liquid/Handlers/CommonLiquidContextHandler.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Dynamic; using System.Linq; using System.Threading; @@ -41,7 +41,7 @@ namespace Elsa.Scripting.Liquid.Handlers } private Task ToFluidValue(IDictionary dictionary, string key) - => Task.FromResult(!dictionary.ContainsKey(key) ? default : FluidValue.Create(dictionary[key].Value)); + => Task.FromResult(!dictionary.TryGetValue(key, out var variable) ? default : FluidValue.Create(variable.Value)); private async Task GetActivityOutput(LiquidObjectAccessor accessor, string activityName, string outputKey) { diff --git a/src/scripting/Elsa.Scripting.Liquid/Services/LiquidExpressionEvaluator.cs b/src/scripting/Elsa.Scripting.Liquid/Services/LiquidExpressionEvaluator.cs index fab252c06..1e36caf95 100644 --- a/src/scripting/Elsa.Scripting.Liquid/Services/LiquidExpressionEvaluator.cs +++ b/src/scripting/Elsa.Scripting.Liquid/Services/LiquidExpressionEvaluator.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; using Elsa.Scripting.Liquid.Extensions; @@ -26,16 +26,16 @@ namespace Elsa.Scripting.Liquid.Services public async Task EvaluateAsync(string expression, Type type, WorkflowExecutionContext workflowExecutionContext, CancellationToken cancellationToken) { - var templateContext = await CreateTemplateContextAsync(workflowExecutionContext); + var templateContext = await CreateTemplateContextAsync(workflowExecutionContext, cancellationToken); var result = await liquidTemplateManager.RenderAsync(expression, templateContext); return string.IsNullOrWhiteSpace(result) ? default : type != null ? Convert.ChangeType(result, type) : result; } - private async Task CreateTemplateContextAsync(WorkflowExecutionContext workflowContext) + private async Task CreateTemplateContextAsync(WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) { var context = new TemplateContext(); context.SetValue("WorkflowExecutionContext", workflowContext); - await mediator.Publish(new EvaluatingLiquidExpression(context, workflowContext)); + await mediator.Publish(new EvaluatingLiquidExpression(context, workflowContext), cancellationToken); context.Model = workflowContext; return context; }