Skip to content

Commit 8eb392b

Browse files
committed
Switch to TimeZoneId in CronTrigger (rather than full TimeZoneInfo)
1 parent 60e3c92 commit 8eb392b

File tree

9 files changed

+68
-4
lines changed

9 files changed

+68
-4
lines changed

IntegrationEngine.Model/CronTrigger.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ public class CronTrigger : ICronTrigger
88
public string JobType { get; set; }
99
public string CronExpressionString { get; set; }
1010
public string TimeZoneId { get; set; }
11-
public TimeZoneInfo TimeZone { get; set; }
1211
}
1312
}

IntegrationEngine.Model/ICronTrigger.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ public interface ICronTrigger : IHasStringId, IIntegrationJobTrigger
1010
{
1111
string CronExpressionString { get; set; }
1212
string TimeZoneId { get; set; }
13-
TimeZoneInfo TimeZone { get; set; }
1413
}
1514
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using IntegrationEngine.Scheduler;
2+
using InEngineTimeZone = IntegrationEngine.Scheduler.TimeZone;
3+
using System;
4+
using System.Linq;
5+
using System.Collections.Generic;
6+
using System.Web.Http;
7+
using System.Web.Http.Description;
8+
9+
namespace IntegrationEngine.Api.Controllers
10+
{
11+
public class TimeZoneController : ApiController
12+
{
13+
public TimeZoneController()
14+
{}
15+
16+
[ResponseType(typeof(ITimeZone))]
17+
public IHttpActionResult GetTimeZones()
18+
{
19+
var timeZones = TimeZoneInfo.GetSystemTimeZones().Select(x => new InEngineTimeZone(x)).ToList();
20+
return Ok(timeZones);
21+
}
22+
}
23+
}

IntegrationEngine/IntegrationEngine.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
<Compile Include="..\configuration\SharedAssemblyInfo.cs">
146146
<Link>Properties\SharedAssemblyInfo.cs</Link>
147147
</Compile>
148+
<Compile Include="Api\Controllers\TimeZoneController.cs" />
148149
<Compile Include="Api\Controllers\JobController.cs" />
149150
<Compile Include="Api\IntegrationEngineApi.cs" />
150151
<Compile Include="Api\Startup.cs" />
@@ -170,7 +171,9 @@
170171
<Compile Include="Scheduler\EngineScheduler.cs" />
171172
<Compile Include="Scheduler\ICronTriggerReadOnly.cs" />
172173
<Compile Include="Scheduler\IEngineScheduler.cs" />
174+
<Compile Include="Scheduler\ITimeZone.cs" />
173175
<Compile Include="Scheduler\SimpleTrigger.cs" />
176+
<Compile Include="Scheduler\TimeZone.cs" />
174177
<Compile Include="Scheduler\TriggerStringExtension.cs" />
175178
</ItemGroup>
176179
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

IntegrationEngine/Scheduler/CronTrigger.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ public class CronTrigger : ICronTrigger, ICronTriggerReadOnly
1111
public string JobType { get; set; }
1212
public string CronExpressionString { get; set; }
1313
public string TimeZoneId { get; set; }
14-
public TimeZoneInfo TimeZone { get; set; }
1514

1615
[ElasticProperty(OptOut = true)]
1716
public string CronExpressionDescription { get { return ExpressionDescriptor.GetDescription(CronExpressionString); } }
17+
[ElasticProperty(OptOut = true)]
18+
public TimeZoneInfo TimeZoneInfo { get { return TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId); } }
1819
}
1920
}

IntegrationEngine/Scheduler/EngineScheduler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public ITrigger SimpleTriggerFactory(SimpleTrigger triggerDefinition, Type jobTy
108108
public ITrigger CronTriggerFactory(CronTrigger triggerDefinition, Type jobType, IJobDetail jobDetail)
109109
{
110110
var triggerBuilder = TriggerBuilderFactory(triggerDefinition.Id, jobType.FullName);
111-
triggerBuilder.WithCronSchedule(triggerDefinition.CronExpressionString, x => x.InTimeZone(triggerDefinition.TimeZone));
111+
triggerBuilder.WithCronSchedule(triggerDefinition.CronExpressionString, x => x.InTimeZone(triggerDefinition.TimeZoneInfo));
112112
return triggerBuilder.Build();
113113
}
114114
}

IntegrationEngine/Scheduler/ICronTriggerReadOnly.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ namespace IntegrationEngine.Scheduler
1010
interface ICronTriggerReadOnly
1111
{
1212
string CronExpressionDescription { get; }
13+
TimeZoneInfo TimeZoneInfo { get; }
1314
}
1415
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace IntegrationEngine.Scheduler
8+
{
9+
public interface ITimeZone
10+
{
11+
string Id { get; set; }
12+
string DisplayName { get; set; }
13+
}
14+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace IntegrationEngine.Scheduler
8+
{
9+
public class TimeZone : ITimeZone
10+
{
11+
public string Id { get; set; }
12+
public string DisplayName { get; set; }
13+
14+
public TimeZone()
15+
{}
16+
17+
public TimeZone(TimeZoneInfo timeZoneInfo)
18+
: this()
19+
{
20+
Id = timeZoneInfo.Id;
21+
DisplayName = timeZoneInfo.DisplayName;
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)