Skip to content

Commit

Permalink
Expose QuartzOptions' jobs and triggers, use Replace for UseJobFactor…
Browse files Browse the repository at this point in the history
…y and UseTypeLoader
  • Loading branch information
lahma committed Oct 2, 2020
1 parent 4f24ffe commit 94a4f33
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 12 deletions.
15 changes: 9 additions & 6 deletions src/Quartz.Extensions.DependencyInjection/QuartzOptions.cs
Expand Up @@ -8,6 +8,9 @@ namespace Quartz
{
public class QuartzOptions : NameValueCollection
{
internal readonly List<IJobDetail> jobDetails = new List<IJobDetail>();
internal readonly List<ITrigger> triggers = new List<ITrigger>();

public string? SchedulerId
{
get => this[StdSchedulerFactory.PropertySchedulerInstanceId];
Expand All @@ -30,31 +33,31 @@ public class QuartzOptions : NameValueCollection

public JobFactoryOptions JobFactory { get; set; } = new JobFactoryOptions();

internal List<IJobDetail> JobDetails { get; set; } = new List<IJobDetail>();
internal List<ITrigger> Triggers { get; set; } = new List<ITrigger>();
internal List<CalendarConfiguration> Calendars { get; set; } = new List<CalendarConfiguration>();
internal IReadOnlyList<IJobDetail> JobDetails => jobDetails;

internal IReadOnlyList<ITrigger> Triggers => triggers;

public QuartzOptions AddJob(Type jobType, Action<JobBuilder> configure)
{
var builder = JobBuilder.Create(jobType);
configure(builder);
JobDetails.Add(builder.Build());
jobDetails.Add(builder.Build());
return this;
}

public QuartzOptions AddJob<T>(Action<JobBuilder> configure) where T : IJob
{
var builder = JobBuilder.Create<T>();
configure(builder);
JobDetails.Add(builder.Build());
jobDetails.Add(builder.Build());
return this;
}

public QuartzOptions AddTrigger(Action<TriggerBuilder> configure)
{
var builder = TriggerBuilder.Create();
configure(builder);
Triggers.Add(builder.Build());
triggers.Add(builder.Build());
return this;
}
}
Expand Down
Expand Up @@ -102,7 +102,7 @@ public static class ServiceCollectionExtensions

options.Services.Configure<QuartzOptions>(x =>
{
x.JobDetails.Add(jobDetail);
x.jobDetails.Add(jobDetail);
});
options.Services.TryAddTransient(jobDetail.JobType);

Expand All @@ -127,7 +127,7 @@ public static class ServiceCollectionExtensions

options.Services.Configure<QuartzOptions>(x =>
{
x.Triggers.Add(trigger);
x.triggers.Add(trigger);
});

return options;
Expand All @@ -151,7 +151,7 @@ public static class ServiceCollectionExtensions

options.Services.Configure<QuartzOptions>(quartzOptions =>
{
quartzOptions.JobDetails.Add(jobDetail);
quartzOptions.jobDetails.Add(jobDetail);
});

options.Services.TryAddTransient(jobDetail.JobType);
Expand All @@ -169,7 +169,7 @@ public static class ServiceCollectionExtensions

options.Services.Configure<QuartzOptions>(quartzOptions =>
{
quartzOptions.Triggers.Add(t);
quartzOptions.triggers.Add(t);
});

return options;
Expand Down
Expand Up @@ -69,7 +69,7 @@ public void UseMicrosoftDependencyInjectionScopedJobFactory(Action<JobFactoryOpt
public void UseJobFactory<T>(Action<JobFactoryOptions>? configure = null) where T : IJobFactory
{
schedulerBuilder.UseJobFactory<T>();
services.TryAddSingleton(typeof(IJobFactory), typeof(T));
services.Replace(new ServiceDescriptor(typeof(IJobFactory), typeof(T), ServiceLifetime.Singleton));
if (configure != null)
{
services.Configure<QuartzOptions>(options =>
Expand All @@ -82,7 +82,7 @@ public void UseMicrosoftDependencyInjectionScopedJobFactory(Action<JobFactoryOpt
public void UseTypeLoader<T>() where T : ITypeLoadHelper
{
schedulerBuilder.UseTypeLoader<T>();
services.TryAddSingleton(typeof(ITypeLoadHelper), typeof(T));
services.Replace(new ServiceDescriptor(typeof(ITypeLoadHelper), typeof(T), ServiceLifetime.Singleton));
}

public void UseThreadPool<T>(Action<SchedulerBuilder.ThreadPoolOptions>? configure = null) where T : IThreadPool
Expand Down

0 comments on commit 94a4f33

Please sign in to comment.