diff --git a/src/core/Elsa.Core/DistributedLockingOptionsBuilder.cs b/src/core/Elsa.Core/DistributedLockingOptionsBuilder.cs index aaccf6110..b02aa27d6 100644 --- a/src/core/Elsa.Core/DistributedLockingOptionsBuilder.cs +++ b/src/core/Elsa.Core/DistributedLockingOptionsBuilder.cs @@ -8,15 +8,14 @@ namespace Elsa { public class DistributedLockingOptionsBuilder { - public DistributedLockingOptionsBuilder(ElsaOptionsBuilder elsaOptions) + public DistributedLockingOptionsBuilder(ElsaOptionsBuilder elsaOptionsBuilder) => ElsaOptionsBuilder = elsaOptionsBuilder; + public ElsaOptionsBuilder ElsaOptionsBuilder { get; } + public IServiceCollection Services => ElsaOptionsBuilder.Services; + + public DistributedLockingOptionsBuilder UseProviderFactory(Func> factory) { - ElsaOptions = elsaOptions; - DistributedLockProviderFactory = sp => name => new FileDistributedLock(new DirectoryInfo(Environment.CurrentDirectory), name); + ElsaOptionsBuilder.ElsaOptions.DistributedLockingOptions.DistributedLockProviderFactory = factory; + return this; } - - public ElsaOptionsBuilder ElsaOptions { get; } - public IServiceCollection Services => ElsaOptions.Services; - - public Func> DistributedLockProviderFactory { get; set; } } } \ No newline at end of file diff --git a/src/core/Elsa.Core/ElsaOptions.cs b/src/core/Elsa.Core/ElsaOptions.cs index c9e987149..c21b076a8 100644 --- a/src/core/Elsa.Core/ElsaOptions.cs +++ b/src/core/Elsa.Core/ElsaOptions.cs @@ -50,7 +50,7 @@ namespace Elsa public IList WorkflowTypes { get; } = new List(); public IList MessageTypes { get; } = new List(); public ServiceBusOptions ServiceBusOptions { get; } = new(); - public DistributedLockingOptions DistributedLockingOptions { get; } + public DistributedLockingOptions DistributedLockingOptions { get; set; } /// /// The amount of time to wait before giving up on trying to acquire a lock. diff --git a/src/locking/Elsa.DistributedLocking.AzureBlob/DistributedLockingOptionsExtensions.cs b/src/locking/Elsa.DistributedLocking.AzureBlob/DistributedLockingOptionsExtensions.cs index a1684e9d6..66af02563 100644 --- a/src/locking/Elsa.DistributedLocking.AzureBlob/DistributedLockingOptionsExtensions.cs +++ b/src/locking/Elsa.DistributedLocking.AzureBlob/DistributedLockingOptionsExtensions.cs @@ -7,9 +7,9 @@ namespace Elsa { public static class DistributedLockingOptionsExtensions { - public static DistributedLockingOptions UseSqlServerLockProvider(this DistributedLockingOptions options, Uri blobContainerUrl) + public static DistributedLockingOptionsBuilder UseSqlServerLockProvider(this DistributedLockingOptionsBuilder options, Uri blobContainerUrl) { - options.DistributedLockProviderFactory = sp => CreateAzureDistributedLockFactory(sp, blobContainerUrl); + options.UseProviderFactory(sp => CreateAzureDistributedLockFactory(sp, blobContainerUrl)); return options; } diff --git a/src/locking/Elsa.DistributedLocking.Redis/DistributedLockingOptionsExtensions.cs b/src/locking/Elsa.DistributedLocking.Redis/DistributedLockingOptionsExtensions.cs index cb7a3720c..c3293a9d8 100644 --- a/src/locking/Elsa.DistributedLocking.Redis/DistributedLockingOptionsExtensions.cs +++ b/src/locking/Elsa.DistributedLocking.Redis/DistributedLockingOptionsExtensions.cs @@ -18,7 +18,7 @@ namespace Elsa .UseStackExchangeConnectionMultiplexer(connectionString) .UseRedLockFactory(); - options.DistributedLockProviderFactory = CreateRedisDistributedLockFactory; + options.UseProviderFactory(CreateRedisDistributedLockFactory); return options; } diff --git a/src/locking/Elsa.DistributedLocking.SqlServer/DistributedLockingOptionsExtensions.cs b/src/locking/Elsa.DistributedLocking.SqlServer/DistributedLockingOptionsExtensions.cs index e0d19ea18..3319c62a0 100644 --- a/src/locking/Elsa.DistributedLocking.SqlServer/DistributedLockingOptionsExtensions.cs +++ b/src/locking/Elsa.DistributedLocking.SqlServer/DistributedLockingOptionsExtensions.cs @@ -4,9 +4,9 @@ namespace Elsa { public static class DistributedLockingOptionsExtensions { - public static DistributedLockingOptions UseSqlServerLockProvider(this DistributedLockingOptions options, string connectionString) + public static DistributedLockingOptionsBuilder UseSqlServerLockProvider(this DistributedLockingOptionsBuilder options, string connectionString) { - options.DistributedLockProviderFactory = sp => name => new SqlDistributedLock(name, connectionString); + options.UseProviderFactory(sp => name => new SqlDistributedLock(name, connectionString)); return options; } }