Cleaning Quartz.NET integration, removing #ifs as now only Quartz.NET 2.0 supported

This commit is contained in:
Marko Lahma
2012-05-13 11:13:45 +03:00
parent 36f032c58e
commit 50198bf8b8
25 changed files with 118 additions and 582 deletions

View File

@@ -15,12 +15,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Aop.2008", "..\..\sr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.2008", "..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj", "{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz.2008", "..\..\src\Spring\Spring.Scheduling.Quartz\Spring.Scheduling.Quartz.2008.csproj", "{E823D54C-CE82-4868-929F-5F95A999F61E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz.Tests.2008", "..\..\test\Spring\Spring.Scheduling.Quartz.Tests\Spring.Scheduling.Quartz.Tests.2008.csproj", "{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz.Integration.Tests.2008", "..\..\test\Spring\Spring.Scheduling.Quartz.Integration.Tests\Spring.Scheduling.Quartz.Integration.Tests.2008.csproj", "{E4328F68-C3FC-43E2-9D63-30CEC55215B0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Core.Tests.2008", "..\..\test\Spring\Spring.Core.Tests\Spring.Core.Tests.2008.csproj", "{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz20.Integration.Tests.2008", "..\..\test\Spring\Spring.Scheduling.Quartz20.Integration.Tests\Spring.Scheduling.Quartz20.Integration.Tests.2008.csproj", "{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}"
@@ -75,36 +69,6 @@ Global
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Any CPU.Build.0 = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Release|.NET.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Any CPU.Build.0 = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|.NET.ActiveCfg = Debug|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|.NET.ActiveCfg = Release|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Any CPU.Build.0 = Release|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|.NET.ActiveCfg = Release|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Any CPU.Build.0 = Release|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|.NET.ActiveCfg = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -153,10 +117,7 @@ Global
{710961A3-0DF4-49E4-A26E-F5B9C044AC84} = {438FE108-6F55-4C8A-8BF4-C85D0906D134}
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C} = {438FE108-6F55-4C8A-8BF4-C85D0906D134}
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40} = {438FE108-6F55-4C8A-8BF4-C85D0906D134}
{E823D54C-CE82-4868-929F-5F95A999F61E} = {438FE108-6F55-4C8A-8BF4-C85D0906D134}
{764C3A6A-8690-49DD-B9AF-99E7C09AE4F0} = {438FE108-6F55-4C8A-8BF4-C85D0906D134}
{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5} = {5ECE7B2B-6975-4800-982E-618794909499}
{E4328F68-C3FC-43E2-9D63-30CEC55215B0} = {5ECE7B2B-6975-4800-982E-618794909499}
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904} = {5ECE7B2B-6975-4800-982E-618794909499}
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26} = {5ECE7B2B-6975-4800-982E-618794909499}
{47E7DF97-2515-4F2F-BBFD-0A4C205800DE} = {5ECE7B2B-6975-4800-982E-618794909499}

View File

@@ -20,12 +20,6 @@ using Quartz;
using Quartz.Spi;
using Quartz.Util;
#if QUARTZ_2_0
using JobDetail = Quartz.IJobDetail;
#else
using JobDetail = Quartz.JobDetail;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -38,7 +32,6 @@ namespace Spring.Scheduling.Quartz
/// <seealso cref="AdaptJob(object)" />
public class AdaptableJobFactory : IJobFactory
{
#if QUARTZ_2_0
/// <summary>
/// Called by the scheduler at the time of the trigger firing, in order to
/// produce a <see cref="IJob"/> instance on which to call Execute.
@@ -52,32 +45,12 @@ namespace Spring.Scheduling.Quartz
/// intervention (e.g. an application restart after fixing whatever
/// configuration problem led to the issue wih instantiating the Job.
/// </remarks>
/// <param name="bundle">The TriggerFiredBundle from which the <see cref="JobDetail"/>
/// <param name="bundle">The TriggerFiredBundle from which the <see cref="IJobDetail"/>
/// and other info relating to the trigger firing can be obtained.</param>
/// <param name="scheduler">The scheduler instance.</param>
/// <returns>the newly instantiated Job</returns>
/// <throws>SchedulerException if there is a problem instantiating the Job.</throws>
public virtual IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
#else
/// <summary>
/// Called by the scheduler at the time of the trigger firing, in order to
/// produce a <see cref="IJob"/> instance on which to call Execute.
/// </summary>
/// <remarks>
/// It should be extremely rare for this method to throw an exception -
/// basically only the the case where there is no way at all to instantiate
/// and prepare the Job for execution. When the exception is thrown, the
/// Scheduler will move all triggers associated with the Job into the
/// <see cref="TriggerState.Error"/> state, which will require human
/// intervention (e.g. an application restart after fixing whatever
/// configuration problem led to the issue wih instantiating the Job.
/// </remarks>
/// <param name="bundle">The TriggerFiredBundle from which the <see cref="JobDetail"/>
/// and other info relating to the trigger firing can be obtained.</param>
/// <returns>the newly instantiated Job</returns>
/// <throws>SchedulerException if there is a problem instantiating the Job.</throws>
public virtual IJob NewJob(TriggerFiredBundle bundle)
#endif
{
try
{
@@ -103,11 +76,7 @@ namespace Spring.Scheduling.Quartz
/// <returns>The job instance.</returns>
protected virtual object CreateJobInstance(TriggerFiredBundle bundle)
{
#if QUARTZ_2_0
return ObjectUtils.InstantiateType<object>(bundle.JobDetail.JobType);
#else
return ObjectUtils.InstantiateType(bundle.JobDetail.JobType);
#endif
}
/// <summary>

View File

@@ -140,7 +140,7 @@ namespace Spring.Scheduling.Quartz
{
set
{
AssertUtils.State(value > TimeSpan.Zero, "Start delay cannot be negative.");
AssertUtils.State(value >= TimeSpan.Zero, "Start delay cannot be negative.");
startDelay = value;
}
get { return startDelay; }
@@ -174,17 +174,10 @@ namespace Spring.Scheduling.Quartz
/// </exception>
public virtual void AfterPropertiesSet()
{
#if QUARTZ_2_0
if (StartTimeUtc == DateTimeOffset.MinValue)
{
StartTimeUtc = DateTimeOffset.UtcNow;
}
#else
if (StartTimeUtc == DateTime.MinValue)
{
StartTimeUtc = DateTime.UtcNow;
}
#endif
if (StartDelay > TimeSpan.Zero)
{
StartTimeUtc = DateTime.UtcNow.Add(startDelay);

View File

@@ -19,12 +19,6 @@ using Quartz;
using Spring.Util;
#if QUARTZ_2_0
using JobExecutionContext = Quartz.IJobExecutionContext;
#else
using JobExecutionContext = Quartz.JobExecutionContext;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -39,7 +33,7 @@ namespace Spring.Scheduling.Quartz
/// <author>Juergen Hoeller</author>
/// <author>Marko Lahma (.NET)</author>
/// <seealso cref="SpringObjectJobFactory" />
/// <seealso cref="IJob.Execute(JobExecutionContext)" />
/// <seealso cref="IJob.Execute(IJobExecutionContext)" />
public class DelegatingJob : IJob
{
private readonly ThreadStart delegateInstance;
@@ -69,7 +63,7 @@ namespace Spring.Scheduling.Quartz
/// <summary>
/// Delegates execution to the underlying ThreadStart.
/// </summary>
public virtual void Execute(JobExecutionContext context)
public virtual void Execute(IJobExecutionContext context)
{
delegateInstance.Invoke();
}

View File

@@ -14,11 +14,7 @@
* limitations under the License.
*/
#if QUARTZ_2_0
using JobDetail = Quartz.IJobDetail;
#else
using JobDetail = Quartz.JobDetail;
#endif
using Quartz;
namespace Spring.Scheduling.Quartz
{
@@ -47,6 +43,6 @@ namespace Spring.Scheduling.Quartz
/// Return the JobDetail that this Trigger is associated with.
/// </summary>
/// <returns>The associated JobDetail, or <code>null</code> if none</returns>
JobDetail JobDetail { get; }
IJobDetail JobDetail { get; }
}
}

View File

@@ -23,12 +23,6 @@ using Quartz;
using Spring.Objects.Support;
#if QUARTZ_2_0
using JobExecutionContext = Quartz.IJobExecutionContext;
#else
using JobExecutionContext = Quartz.JobExecutionContext;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -64,7 +58,7 @@ namespace Spring.Scheduling.Quartz
/// Invoke the method via the MethodInvoker.
/// </summary>
/// <param name="context"></param>
protected override void ExecuteInternal(JobExecutionContext context)
protected override void ExecuteInternal(IJobExecutionContext context)
{
if (methodInvoker == null)
{

View File

@@ -17,12 +17,6 @@ using Quartz;
using Spring.Objects;
#if QUARTZ_2_0
using JobExecutionContext = Quartz.IJobExecutionContext;
#else
using JobExecutionContext = Quartz.JobExecutionContext;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -48,7 +42,7 @@ namespace Spring.Scheduling.Quartz
/// </p>
/// </remarks>
/// <author>Juergen Hoeller</author>
/// <seealso cref="JobExecutionContext.MergedJobDataMap" />
/// <seealso cref="IJobExecutionContext.MergedJobDataMap" />
/// <seealso cref="IScheduler.Context" />
/// <seealso cref="JobDetailObject.JobDataAsMap" />
/// <seealso cref="CronTriggerObject.JobDataAsMap" />
@@ -62,7 +56,7 @@ namespace Spring.Scheduling.Quartz
/// values, and delegates to <code>ExecuteInternal</code> afterwards.
/// </summary>
/// <seealso cref="ExecuteInternal" />
public void Execute(JobExecutionContext context)
public void Execute(IJobExecutionContext context)
{
try
{
@@ -85,6 +79,6 @@ namespace Spring.Scheduling.Quartz
/// exactly the same as for the standard Quartz execute method.
/// </summary>
/// <seealso cref="Execute" />
protected abstract void ExecuteInternal(JobExecutionContext context);
protected abstract void ExecuteInternal(IJobExecutionContext context);
}
}

View File

@@ -18,9 +18,7 @@ using System;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
#if QUARTZ_2_0
using System.Linq;
#endif
using Quartz;
using Quartz.Impl;
@@ -569,11 +567,7 @@ namespace Spring.Scheduling.Quartz
public virtual void AfterPropertiesSet()
{
// Create SchedulerFactory instance.
#if QUARTZ_2_0
ISchedulerFactory schedulerFactory = ObjectUtils.InstantiateType<ISchedulerFactory>(schedulerFactoryType);
#else
ISchedulerFactory schedulerFactory = (ISchedulerFactory) ObjectUtils.InstantiateType(schedulerFactoryType);
#endif
InitSchedulerFactory(schedulerFactory);
@@ -762,12 +756,8 @@ namespace Spring.Scheduling.Quartz
// Put specified objects into Scheduler context.
if (schedulerContextMap != null)
{
#if QUARTZ_2_0
var dictionary = schedulerContextMap.Cast<DictionaryEntry>().ToDictionary(entry => entry.Key.ToString(), entry => entry.Value);
scheduler.Context.PutAll(dictionary);
#else
scheduler.Context.PutAll(schedulerContextMap);
#endif
}
// Register IApplicationContext in Scheduler context.

View File

@@ -15,8 +15,10 @@
*/
using System;
using System.Collections;
using Quartz;
using Quartz.Impl.Triggers;
using Spring.Objects.Factory;
using Spring.Util;
@@ -115,7 +117,7 @@ namespace Spring.Scheduling.Quartz
{
set
{
AssertUtils.State(value > TimeSpan.Zero, "Start delay cannot be negative.");
AssertUtils.State(value >= TimeSpan.Zero, "Start delay cannot be negative.");
startDelay = value;
}
get { return startDelay; }
@@ -181,17 +183,10 @@ namespace Spring.Scheduling.Quartz
/// </exception>
public virtual void AfterPropertiesSet()
{
#if QUARTZ_2_0
if (StartTimeUtc == DateTimeOffset.MinValue)
{
StartTimeUtc = DateTimeOffset.UtcNow;
}
#else
if (StartTimeUtc == DateTime.MinValue)
{
StartTimeUtc = DateTime.UtcNow;
}
#endif
if (StartDelay > TimeSpan.Zero)
{
StartTimeUtc = DateTime.UtcNow.Add(startDelay);

View File

@@ -18,7 +18,6 @@ using System;
using System.Data;
using System.Reflection;
using Quartz.Impl.AdoJobStore;
using Quartz.Impl.AdoJobStore.Common;
using IDbMetadata=Spring.Data.Common.IDbMetadata;

View File

@@ -16,7 +16,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz20\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET_2_0,NET_3_0,NET_3_5,QUARTZ_2_0</DefineConstants>
<DefineConstants>TRACE;DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz\Debug\Spring.Scheduling.Quartz20.XML</DocumentationFile>
@@ -26,7 +26,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz20\Release\</OutputPath>
<DefineConstants>TRACE;NET_2_0,QUARTZ_2_0</DefineConstants>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>

View File

@@ -22,7 +22,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.NET.2010\Spring.Scheduling.Quartz20\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET_4_0,QUARTZ_2_0</DefineConstants>
<DefineConstants>TRACE;DEBUG;NET_4_0</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\..\build\VS.NET.2010\Spring.Scheduling.Quartz20\Debug\Spring.Scheduling.Quartz20.XML</DocumentationFile>

View File

@@ -16,7 +16,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz20.Integration.Tests\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET_2_0;NET_3_5</DefineConstants>
<DefineConstants>TRACE;DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -24,7 +24,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz20.Integration.Tests\Release\</OutputPath>
<DefineConstants>TRACE;NET_2_0;NET_3_5</DefineConstants>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -69,6 +69,14 @@
<Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project>
<Name>Spring.Core.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj">
<Project>{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}</Project>
<Name>Spring.Data.2008</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\src\Spring\Spring.Scheduling.Quartz20\Spring.Scheduling.Quartz20.2008.csproj">
<Project>{764C3A6A-8690-49DD-B9AF-99E7C09AE4F0}</Project>
<Name>Spring.Scheduling.Quartz20.2008</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -13,8 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using NUnit.Framework;
using Quartz;
using Quartz.Job;
using Quartz.Spi;
@@ -49,11 +52,7 @@ namespace Spring.Scheduling.Quartz
{
// this actually fails already in Quartz level
TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof (object));
#if QUARTZ_2_0
jobFactory.NewJob(bundle, null);
#else
jobFactory.NewJob(bundle);
#endif
Assert.Fail("Created job which was not an IJob");
}
catch (ArgumentException)
@@ -86,11 +85,7 @@ namespace Spring.Scheduling.Quartz
public void TestNewJob_NormalIJob()
{
TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof (NoOpJob));
#if QUARTZ_2_0
IJob job = jobFactory.NewJob(bundle, null);
#else
IJob job = jobFactory.NewJob(bundle);
#endif
Assert.IsNotNull(job, "Returned job was null");
}

View File

@@ -17,14 +17,13 @@
using System;
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using Quartz;
using Quartz.Impl;
using Quartz.Job;
#if QUARTZ_2_0
using JobDetail = Quartz.Impl.JobDetailImpl;
#endif
namespace Spring.Scheduling.Quartz
{
@@ -70,7 +69,7 @@ namespace Spring.Scheduling.Quartz
{
const string jobName = "jobName";
const string jobGroup = "jobGroup";
JobDetail jd = new JobDetail(jobName, jobGroup, typeof (NoOpJob));
IJobDetail jd = new JobDetailImpl(jobName, jobGroup, typeof(NoOpJob));
cronTrigger.JobDetail = jd;
cronTrigger.AfterPropertiesSet();
base.TestAfterPropertiesSet_JobDetailGiven();
@@ -83,11 +82,7 @@ namespace Spring.Scheduling.Quartz
[Test]
public void TestJobDataAsMap()
{
#if QUARTZ_2_0
IDictionary data = new Dictionary<string, object>();
#else
Hashtable data = new Hashtable();
#endif
data["foo"] = "bar";
data["number"] = 123;
cronTrigger.JobDataAsMap = data;

View File

@@ -18,9 +18,6 @@ using NUnit.Framework;
using Quartz;
#if QUARTZ_2_0
using JobDetail = Quartz.Impl.JobDetailImpl;
#endif
namespace Spring.Scheduling.Quartz
{
@@ -53,14 +50,11 @@ namespace Spring.Scheduling.Quartz
public void TestGetObject_MinimalDefaults()
{
factory.AfterPropertiesSet();
JobDetail jd = (JobDetail) factory.GetObject();
IJobDetail jd = (IJobDetail) factory.GetObject();
Assert.IsNotNull(jd, "job detail was null");
Assert.AreEqual(FACTORY_NAME, jd.Name, "job name did not default to factory name");
Assert.AreEqual(FACTORY_NAME, jd.Key.Name, "job name did not default to factory name");
Assert.AreEqual(jd.JobType, typeof(MethodInvokingJob), "factory did not create method invoking job");
Assert.IsTrue(jd.Durable, "job was not durable");
#if !QUARTZ_2_0
Assert.IsTrue(jd.Volatile, "job was not volatile");
#endif
}
/// <summary>
@@ -71,25 +65,9 @@ namespace Spring.Scheduling.Quartz
{
factory.Concurrent = false;
factory.AfterPropertiesSet();
JobDetail jd = (JobDetail)factory.GetObject();
IJobDetail jd = (IJobDetail)factory.GetObject();
Assert.IsNotNull(jd, "job detail was null");
Assert.AreEqual(jd.JobType, typeof(StatefulMethodInvokingJob), "factory did not create stateful method invoking job");
}
#if !QUARTZ_2_0
/// <summary>
/// Tests JobDetail retrieval and it's set properties.
/// </summary>
[Test]
public void TestGetObject_TriggerListenersSet()
{
string[] LISTENER_NAMES = new string[] {"Foo", "Bar"};
factory.JobListenerNames = LISTENER_NAMES;
factory.AfterPropertiesSet();
JobDetail jd = (JobDetail)factory.GetObject();
CollectionAssert.AreEquivalent(LISTENER_NAMES, jd.JobListenerNames);
}
#endif
}
}

View File

@@ -20,6 +20,8 @@ using System.Threading;
using NUnit.Framework;
using Quartz;
using Quartz.Impl;
using Quartz.Impl.Triggers;
using Quartz.Job;
using Quartz.Spi;
@@ -27,12 +29,6 @@ using Rhino.Mocks;
using Spring.Objects.Support;
#if QUARTZ_2_0
using JobExecutionContext = Quartz.Impl.JobExecutionContextImpl;
using JobDetail = Quartz.Impl.JobDetailImpl;
using SimpleTrigger = Quartz.Impl.Triggers.SimpleTriggerImpl;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -101,7 +97,7 @@ namespace Spring.Scheduling.Quartz
mi.TargetMethod = "InvokeWithReturnValue";
mi.Prepare();
methodInvokingJob.MethodInvoker = mi;
JobExecutionContext context = CreateMinimalJobExecutionContext();
IJobExecutionContext context = CreateMinimalJobExecutionContext();
methodInvokingJob.Execute(context);
Assert.AreEqual(InvocationCountingJob.DefaultReturnValue, context.Result, "result value was not set to context");
@@ -146,18 +142,18 @@ namespace Spring.Scheduling.Quartz
methodInvokingJob.Execute(CreateMinimalJobExecutionContext());
}
private static JobExecutionContext CreateMinimalJobExecutionContext()
private static IJobExecutionContext CreateMinimalJobExecutionContext()
{
MockRepository repo = new MockRepository();
IScheduler sched = (IScheduler) repo.DynamicMock(typeof (IScheduler));
JobExecutionContext ctx = new JobExecutionContext(sched, ConstructMinimalTriggerFiredBundle(), null);
IScheduler sched = (IScheduler)repo.DynamicMock(typeof(IScheduler));
IJobExecutionContext ctx = new JobExecutionContextImpl(sched, ConstructMinimalTriggerFiredBundle(), null);
return ctx;
}
private static TriggerFiredBundle ConstructMinimalTriggerFiredBundle()
{
JobDetail jd = new JobDetail("jobName", "jobGroup", typeof(NoOpJob));
SimpleTrigger trigger = new SimpleTrigger("triggerName", "triggerGroup");
IJobDetail jd = new JobDetailImpl("jobName", "jobGroup", typeof(NoOpJob));
IOperableTrigger trigger = new SimpleTriggerImpl("triggerName", "triggerGroup");
TriggerFiredBundle retValue = new TriggerFiredBundle(jd, trigger, null, false, null, null, null, null);
return retValue;

View File

@@ -22,6 +22,7 @@ using NUnit.Framework;
using Quartz;
using Quartz.Impl;
using Quartz.Impl.Triggers;
using Quartz.Spi;
using Rhino.Mocks;
@@ -30,14 +31,6 @@ using Spring.Context.Support;
using Spring.Objects;
using Spring.Objects.Factory.Support;
#if QUARTZ_2_0
using CronTrigger = Quartz.Impl.Triggers.CronTriggerImpl;
using JobExecutionContext = Quartz.IJobExecutionContext;
using JobDetail = Quartz.Impl.JobDetailImpl;
using SimpleTrigger = Quartz.Impl.Triggers.SimpleTriggerImpl;
using Trigger = Quartz.ITrigger;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -111,7 +104,7 @@ namespace Spring.Scheduling.Quartz
}
mijdfb.TargetMethod = ("doSomething");
mijdfb.AfterPropertiesSet();
JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject();
IJobDetail jobDetail1 = (IJobDetail) mijdfb.GetObject();
SimpleTriggerObject trigger1 = new SimpleTriggerObject();
trigger1.ObjectName = ("myTrigger1");
@@ -131,9 +124,9 @@ namespace Spring.Scheduling.Quartz
schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext);
if (explicitJobDetail)
{
schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0});
schedulerFactoryObject.JobDetails = (new IJobDetail[] {jobDetail0});
}
schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1});
schedulerFactoryObject.Triggers = (new ITrigger[] {trigger0, trigger1});
try
{
schedulerFactoryObject.AfterPropertiesSet();
@@ -196,7 +189,7 @@ namespace Spring.Scheduling.Quartz
mijdfb.TargetObject = (task1);
mijdfb.TargetMethod = ("doSomething");
mijdfb.AfterPropertiesSet();
JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject();
IJobDetail jobDetail1 = (IJobDetail) mijdfb.GetObject();
SimpleTriggerObject trigger1 = new SimpleTriggerObject();
trigger1.ObjectName = ("myTrigger1");
@@ -207,18 +200,11 @@ namespace Spring.Scheduling.Quartz
IScheduler scheduler = MockRepository.GenerateMock<IScheduler>();
scheduler.Stub(x => x.Context).Return(new SchedulerContext());
#if QUARTZ_2_0
scheduler.Stub(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))).Return(new SimpleTrigger());
#else
scheduler.Stub(x => x.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(new SimpleTrigger());
#endif
scheduler.Stub(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))).Return(new SimpleTriggerImpl());
if (overwrite)
{
#if QUARTZ_2_0
scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), trigger1)).Return(DateTime.UtcNow);
#else
scheduler.Stub(x => x.RescheduleJob("myTrigger1", SchedulerConstants.DefaultGroup, trigger1)).Return(DateTime.UtcNow);
#endif
}
SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler);
@@ -226,7 +212,7 @@ namespace Spring.Scheduling.Quartz
IDictionary schedulerContext = new Hashtable();
schedulerContext.Add("otherTestObject", tb);
schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext);
schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1});
schedulerFactoryObject.Triggers = (new ITrigger[] {trigger0, trigger1});
if (overwrite)
{
schedulerFactoryObject.OverwriteExistingJobs = (true);
@@ -289,7 +275,7 @@ namespace Spring.Scheduling.Quartz
mijdfb.TargetObject = (task1);
mijdfb.TargetMethod = ("doSomething");
mijdfb.AfterPropertiesSet();
JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject();
IJobDetail jobDetail1 = (IJobDetail) mijdfb.GetObject();
SimpleTriggerObject trigger1 = new SimpleTriggerObject();
trigger1.ObjectName = ("myTrigger1");
@@ -300,30 +286,18 @@ namespace Spring.Scheduling.Quartz
IScheduler scheduler = MockRepository.GenerateMock<IScheduler>();
scheduler.Stub(x => x.Context).Return(new SchedulerContext());
#if QUARTZ_2_0
scheduler.Stub(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))).Return(new SimpleTrigger());
#else
scheduler.Stub(x => x.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(new SimpleTrigger());
#endif
scheduler.Stub(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))).Return(new SimpleTriggerImpl());
if (overwrite)
{
scheduler.AddJob(jobDetail1, true);
#if QUARTZ_2_0
scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), trigger1)).Return(DateTime.UtcNow);
#else
scheduler.Stub(x => x.RescheduleJob("myTrigger1", SchedulerConstants.DefaultGroup, trigger1)).Return(DateTime.UtcNow);
#endif
}
scheduler.Stub(x => x.ScheduleJob(trigger0)).Throw(new ObjectAlreadyExistsException(""));
if (overwrite)
{
#if QUARTZ_2_0
scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup), trigger0)).Return(DateTime.UtcNow);
#else
scheduler.Stub(x => x.RescheduleJob("myTrigger0", SchedulerConstants.DefaultGroup, trigger0)).Return(DateTime.UtcNow);
#endif
}
scheduler.Start();
@@ -335,7 +309,7 @@ namespace Spring.Scheduling.Quartz
IDictionary schedulerContext = new Hashtable();
schedulerContext.Add("otherTestObject", tb);
schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext);
schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1});
schedulerFactoryObject.Triggers = (new ITrigger[] {trigger0, trigger1});
if (overwrite)
{
schedulerFactoryObject.OverwriteExistingJobs = (true);
@@ -354,62 +328,7 @@ namespace Spring.Scheduling.Quartz
}
#if !QUARTZ_2_0
/// <summary>
/// </summary>
[Test]
public void TestSchedulerFactoryObjectWithListeners()
{
IJobFactory jobFactory = new AdaptableJobFactory();
IScheduler scheduler = MockRepository.GenerateMock<IScheduler>();
ISchedulerListener schedulerListener = new TestSchedulerListener();
IJobListener globalJobListener = new TestJobListener();
IJobListener jobListener = new TestJobListener();
ITriggerListener globalTriggerListener = new TestTriggerListener();
ITriggerListener triggerListener = new TestTriggerListener();
Expect.Call(scheduler.JobFactory = (jobFactory));
scheduler.AddSchedulerListener(schedulerListener);
scheduler.AddGlobalJobListener(globalJobListener);
scheduler.AddJobListener(jobListener);
scheduler.AddGlobalTriggerListener(globalTriggerListener);
scheduler.AddTriggerListener(triggerListener);
scheduler.Start();
scheduler.Shutdown(false);
SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler);
schedulerFactoryObject.JobFactory = (jobFactory);
schedulerFactoryObject.SchedulerListeners = (new ISchedulerListener[] {schedulerListener});
schedulerFactoryObject.GlobalJobListeners = (new IJobListener[] {globalJobListener});
schedulerFactoryObject.JobListeners = (new IJobListener[] {jobListener});
schedulerFactoryObject.GlobalTriggerListeners = (new ITriggerListener[] {globalTriggerListener});
schedulerFactoryObject.TriggerListeners = (new ITriggerListener[] {triggerListener});
try
{
schedulerFactoryObject.AfterPropertiesSet();
schedulerFactoryObject.Start();
}
finally
{
schedulerFactoryObject.Dispose();
}
}
#endif
/*public void TestMethodInvocationWithConcurrency() {
methodInvokingConcurrency(true);
}*/
// We can't test both since Quartz somehow seems to keep things in memory
// enable both and one of them will fail (order doesn't matter).
/*public void TestMethodInvocationWithoutConcurrency() {
methodInvokingConcurrency(false);
}*/
private void methodInvokingConcurrency(bool concurrent)
private void MethodInvokingConcurrency(bool concurrent)
{
// Test the concurrency flag.
// Method invoking job with two triggers.
@@ -424,7 +343,7 @@ namespace Spring.Scheduling.Quartz
mijdfb.TargetObject = (task1);
mijdfb.TargetMethod = ("doWait");
mijdfb.AfterPropertiesSet();
JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject();
IJobDetail jobDetail1 = (IJobDetail) mijdfb.GetObject();
SimpleTriggerObject trigger0 = new SimpleTriggerObject();
trigger0.ObjectName = ("myTrigger1");
@@ -443,8 +362,8 @@ namespace Spring.Scheduling.Quartz
trigger1.AfterPropertiesSet();
SchedulerFactoryObject schedulerFactoryObject = new SchedulerFactoryObject();
schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail1});
schedulerFactoryObject.Triggers = (new Trigger[] {trigger1, trigger0});
schedulerFactoryObject.JobDetails = (new IJobDetail[] {jobDetail1});
schedulerFactoryObject.Triggers = (new ITrigger[] {trigger1, trigger0});
schedulerFactoryObject.AfterPropertiesSet();
// ok scheduler is set up... let's wait for like 4 seconds
@@ -497,14 +416,14 @@ namespace Spring.Scheduling.Quartz
IJobFactory jobFactory = new AdaptableJobFactory();
TestObject tb = new TestObject("tb", 99);
JobDetail jobDetail0 = new JobDetail();
JobDetailImpl jobDetail0 = new JobDetailImpl();
jobDetail0.JobType = typeof (IJob);
jobDetail0.Name = ("myJob0");
jobDetail0.Group = (SchedulerConstants.DefaultGroup);
jobDetail0.JobDataMap.Add("testObject", tb);
Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject"));
CronTrigger trigger0 = new CronTrigger();
CronTriggerImpl trigger0 = new CronTriggerImpl();
trigger0.Name = ("myTrigger0");
trigger0.Group = SchedulerConstants.DefaultGroup;
trigger0.JobName = "myJob0";
@@ -519,15 +438,15 @@ namespace Spring.Scheduling.Quartz
mijdfb.TargetObject = (task1);
mijdfb.TargetMethod = ("doSomething");
mijdfb.AfterPropertiesSet();
JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject();
IJobDetail jobDetail1 = (IJobDetail) mijdfb.GetObject();
SimpleTrigger trigger1 = new SimpleTrigger();
SimpleTriggerImpl trigger1 = new SimpleTriggerImpl();
trigger1.Name = "myTrigger1";
trigger1.Group = SchedulerConstants.DefaultGroup;
trigger1.JobName = "myJob1";
trigger1.JobGroup = SchedulerConstants.DefaultGroup;
trigger1.StartTimeUtc = (DateTime.UtcNow);
trigger1.RepeatCount = (SimpleTrigger.RepeatIndefinitely);
trigger1.RepeatCount = (SimpleTriggerImpl.RepeatIndefinitely);
trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20);
IScheduler scheduler = MockRepository.GenerateMock<IScheduler>();
@@ -535,8 +454,8 @@ namespace Spring.Scheduling.Quartz
SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler);
schedulerFactoryObject.JobFactory = (jobFactory);
schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0, jobDetail1});
schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1});
schedulerFactoryObject.JobDetails = (new IJobDetail[] {jobDetail0, jobDetail1});
schedulerFactoryObject.Triggers = (new ITrigger[] {trigger0, trigger1});
try
{
schedulerFactoryObject.AfterPropertiesSet();
@@ -550,17 +469,10 @@ namespace Spring.Scheduling.Quartz
scheduler.AssertWasCalled(x => x.JobFactory = jobFactory);
scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true));
scheduler.AssertWasCalled(x => x.AddJob(jobDetail1, true));
#if QUARTZ_2_0
scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob0", SchedulerConstants.DefaultGroup)));
scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob1", SchedulerConstants.DefaultGroup)));
scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup)));
scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup)));
#else
scheduler.AssertWasCalled(x => x.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup));
scheduler.AssertWasCalled(x => x.GetJobDetail("myJob1", SchedulerConstants.DefaultGroup));
scheduler.AssertWasCalled(x => x.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup));
scheduler.AssertWasCalled(x => x.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup));
#endif
}
/// <summary>
@@ -618,62 +530,6 @@ namespace Spring.Scheduling.Quartz
Assert.AreEqual(ac, jobDetail.JobDataMap.Get("appCtx"));
}
#if !QUARTZ_2_0
/// <summary>
/// </summary>
[Test]
public void TestMethodInvokingJobDetailFactoryObjectWithListenerNames()
{
TestMethodInvokingTask task = new TestMethodInvokingTask();
MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject();
String[] names = new String[] {"test1", "test2"};
mijdfb.Name = ("myJob1");
mijdfb.Group = (SchedulerConstants.DefaultGroup);
mijdfb.TargetObject = (task);
mijdfb.TargetMethod = ("doSomething");
mijdfb.JobListenerNames = (names);
mijdfb.AfterPropertiesSet();
JobDetail jobDetail = (JobDetail) mijdfb.GetObject();
ArrayList result = new ArrayList(jobDetail.JobListenerNames);
Assert.AreEqual(names, result);
}
/// <summary>
/// </summary>
[Test]
public void TestJobDetailObjectWithListenerNames()
{
JobDetailObject jobDetail = new JobDetailObject();
String[] names = new String[] {"test1", "test2"};
jobDetail.JobListenerNames = (names);
ArrayList result = new ArrayList(jobDetail.JobListenerNames);
Assert.AreEqual(names, result);
}
/// <summary>
/// </summary>
[Test]
public void TestCronTriggerObjectWithListenerNames()
{
CronTriggerObject trigger = new CronTriggerObject();
String[] names = new String[] {"test1", "test2"};
trigger.TriggerListenerNames = (names);
ArrayList result = new ArrayList(trigger.TriggerListenerNames);
Assert.AreEqual(names, result);
}
/// <summary>
/// </summary>
[Test]
public void TestSimpleTriggerObjectWithListenerNames()
{
SimpleTriggerObject trigger = new SimpleTriggerObject();
String[] names = new String[] {"test1", "test2"};
trigger.TriggerListenerNames = (names);
ArrayList result = new ArrayList(trigger.TriggerListenerNames);
Assert.AreEqual(names, result);
}
#endif
/// <summary>
/// </summary>
[Test]
@@ -682,9 +538,8 @@ namespace Spring.Scheduling.Quartz
CountingTaskExecutor taskExecutor = new CountingTaskExecutor();
DummyJob.count = 0;
JobDetail jobDetail = new JobDetail();
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.JobType = typeof (DummyJob);
;
jobDetail.Name = ("myJob");
SimpleTriggerObject trigger = new SimpleTriggerObject();
@@ -697,8 +552,8 @@ namespace Spring.Scheduling.Quartz
SchedulerFactoryObject factoryObject = new SchedulerFactoryObject();
factoryObject.TaskExecutor = (taskExecutor);
factoryObject.Triggers = (new Trigger[] {trigger});
factoryObject.JobDetails = (new JobDetail[] {jobDetail});
factoryObject.Triggers = (new ITrigger[] {trigger});
factoryObject.JobDetails = (new IJobDetail[] {jobDetail});
factoryObject.AfterPropertiesSet();
factoryObject.Start();
@@ -716,7 +571,7 @@ namespace Spring.Scheduling.Quartz
{
DummyRunnable.count = 0;
JobDetail jobDetail = new JobDetailObject();
JobDetailImpl jobDetail = new JobDetailObject();
jobDetail.JobType = typeof (DummyRunnable);
jobDetail.Name = "myJob";
@@ -729,8 +584,8 @@ namespace Spring.Scheduling.Quartz
trigger.AfterPropertiesSet();
SchedulerFactoryObject factoryObject = new SchedulerFactoryObject();
factoryObject.Triggers = new Trigger[] {trigger};
factoryObject.JobDetails = new JobDetail[] {jobDetail};
factoryObject.Triggers = new ITrigger[] {trigger};
factoryObject.JobDetails = new IJobDetail[] {jobDetail};
factoryObject.AfterPropertiesSet();
factoryObject.Start();
@@ -748,7 +603,7 @@ namespace Spring.Scheduling.Quartz
DummyJob.param = 0;
DummyJob.count = 0;
JobDetail jobDetail = new JobDetail();
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.JobType = (typeof (DummyJobObject));
jobDetail.Name = ("myJob");
jobDetail.JobDataMap.Put("param", "10");
@@ -762,8 +617,8 @@ namespace Spring.Scheduling.Quartz
trigger.AfterPropertiesSet();
SchedulerFactoryObject factoryObject = new SchedulerFactoryObject();
factoryObject.Triggers = (new Trigger[] {trigger});
factoryObject.JobDetails = (new JobDetail[] {jobDetail});
factoryObject.Triggers = (new ITrigger[] {trigger});
factoryObject.JobDetails = (new IJobDetail[] {jobDetail});
factoryObject.AfterPropertiesSet();
factoryObject.Start();
@@ -782,7 +637,7 @@ namespace Spring.Scheduling.Quartz
DummyJob.param = 0;
DummyJob.count = 0;
JobDetail jobDetail = new JobDetail();
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.JobType = typeof(DummyJob);
jobDetail.Name = ("myJob");
jobDetail.JobDataMap.Add("param", "10");
@@ -798,8 +653,8 @@ namespace Spring.Scheduling.Quartz
SchedulerFactoryObject factoryObject = new SchedulerFactoryObject();
factoryObject.JobFactory = (new SpringObjectJobFactory());
factoryObject.Triggers = (new Trigger[] {trigger});
factoryObject.JobDetails = (new JobDetail[] {jobDetail});
factoryObject.Triggers = (new ITrigger[] {trigger});
factoryObject.JobDetails = (new IJobDetail[] {jobDetail});
factoryObject.AfterPropertiesSet();
factoryObject.Start();
@@ -818,7 +673,7 @@ namespace Spring.Scheduling.Quartz
DummyJob.param = 0;
DummyJob.count = 0;
JobDetail jobDetail = new JobDetail();
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.JobType = typeof(DummyJob);
jobDetail.Name = ("myJob");
jobDetail.JobDataMap.Add("para", "10");
@@ -836,8 +691,8 @@ namespace Spring.Scheduling.Quartz
SpringObjectJobFactory jobFactory = new SpringObjectJobFactory();
jobFactory.IgnoredUnknownProperties = (new String[] {"ignoredParam"});
bean.JobFactory = (jobFactory);
bean.Triggers = (new Trigger[] {trigger});
bean.JobDetails = (new JobDetail[] {jobDetail});
bean.Triggers = (new ITrigger[] {trigger});
bean.JobDetails = (new IJobDetail[] {jobDetail});
bean.AfterPropertiesSet();
Thread.Sleep(500);
@@ -855,7 +710,7 @@ namespace Spring.Scheduling.Quartz
DummyRunnable.param = 0;
DummyRunnable.count = 0;
JobDetail jobDetail = new JobDetailObject();
JobDetailObject jobDetail = new JobDetailObject();
jobDetail.JobType = typeof (DummyRunnable);
jobDetail.Name = ("myJob");
jobDetail.JobDataMap.Add("param", "10");
@@ -870,8 +725,8 @@ namespace Spring.Scheduling.Quartz
SchedulerFactoryObject factoryObject = new SchedulerFactoryObject();
factoryObject.JobFactory = (new SpringObjectJobFactory());
factoryObject.Triggers = (new Trigger[] {trigger});
factoryObject.JobDetails = (new JobDetail[] {jobDetail});
factoryObject.Triggers = (new ITrigger[] {trigger});
factoryObject.JobDetails = (new IJobDetail[] {jobDetail});
factoryObject.AfterPropertiesSet();
factoryObject.Start();
@@ -890,7 +745,7 @@ namespace Spring.Scheduling.Quartz
DummyJobObject.param = 0;
DummyJobObject.count = 0;
JobDetail jobDetail = new JobDetail();
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.JobType = typeof (DummyJobObject);
jobDetail.Name = ("myJob");
jobDetail.JobDataMap.Add("param", "10");
@@ -905,8 +760,8 @@ namespace Spring.Scheduling.Quartz
SchedulerFactoryObject factoryObject = new SchedulerFactoryObject();
factoryObject.JobFactory = (new SpringObjectJobFactory());
factoryObject.Triggers = (new Trigger[] {trigger});
factoryObject.JobDetails = (new JobDetail[] {jobDetail});
factoryObject.Triggers = (new ITrigger[] {trigger});
factoryObject.JobDetails = (new IJobDetail[] {jobDetail});
factoryObject.AfterPropertiesSet();
factoryObject.Start();
@@ -1064,8 +919,6 @@ namespace Spring.Scheduling.Quartz
ctx.Dispose();
}
#if QUARTZ_2_0
private class TestSchedulerListener : ISchedulerListener
{
public void JobScheduled(ITrigger trigger)
@@ -1145,47 +998,6 @@ namespace Spring.Scheduling.Quartz
}
}
#else
private class TestSchedulerListener : ISchedulerListener
{
public void JobScheduled(Trigger trigger)
{
}
public void JobUnscheduled(String triggerName, String triggerGroup)
{
}
public void TriggerFinalized(Trigger trigger)
{
}
public void TriggersPaused(String triggerName, String triggerGroup)
{
}
public void TriggersResumed(String triggerName, String triggerGroup)
{
}
public void JobsPaused(String jobName, String jobGroup)
{
}
public void JobsResumed(String jobName, String jobGroup)
{
}
public void SchedulerError(String msg, SchedulerException cause)
{
}
public void SchedulerShutdown()
{
}
}
#endif
private class TestJobListener : IJobListener
{
public string Name
@@ -1193,15 +1005,15 @@ namespace Spring.Scheduling.Quartz
get { return null; }
}
public void JobToBeExecuted(JobExecutionContext context)
public void JobToBeExecuted(IJobExecutionContext context)
{
}
public void JobExecutionVetoed(JobExecutionContext context)
public void JobExecutionVetoed(IJobExecutionContext context)
{
}
public void JobWasExecuted(JobExecutionContext context, JobExecutionException jobException)
public void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException)
{
}
}
@@ -1214,20 +1026,20 @@ namespace Spring.Scheduling.Quartz
get { return null; }
}
public void TriggerFired(Trigger trigger, JobExecutionContext context)
public void TriggerFired(ITrigger trigger, IJobExecutionContext context)
{
}
public bool VetoJobExecution(Trigger trigger, JobExecutionContext context)
public bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context)
{
return false;
}
public void TriggerMisfired(Trigger trigger)
public void TriggerMisfired(ITrigger trigger)
{
}
public void TriggerComplete(Trigger trigger, JobExecutionContext context,
public void TriggerComplete(ITrigger trigger, IJobExecutionContext context,
SchedulerInstruction triggerInstructionCode)
{
}
@@ -1278,7 +1090,7 @@ namespace Spring.Scheduling.Quartz
/// applied as object property values by execute. The contract is
/// exactly the same as for the standard Quartz execute method.
/// </summary>
protected override void ExecuteInternal(JobExecutionContext jobExecutionContext)
protected override void ExecuteInternal(IJobExecutionContext jobExecutionContext)
{
count++;
}
@@ -1329,7 +1141,7 @@ namespace Spring.Scheduling.Quartz
/// Executes this job instance.
///</summary>
///<param name="jobExecutionContext"></param>
public void Execute(JobExecutionContext jobExecutionContext)
public void Execute(IJobExecutionContext jobExecutionContext)
{
count++;
}

View File

@@ -25,18 +25,12 @@ using NUnit.Framework;
using Quartz;
using Quartz.Impl;
using Quartz.Impl.Triggers;
using Quartz.Spi;
using Rhino.Mocks;
using Spring.Core.IO;
#if QUARTZ_2_0
using Trigger = Quartz.ITrigger;
using JobExecutionContext = Quartz.IJobExecutionContext;
using JobDetail = Quartz.IJobDetail;
using SimpleTrigger = Quartz.Impl.Triggers.SimpleTriggerImpl;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -97,34 +91,6 @@ namespace Spring.Scheduling.Quartz
TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.JobFactory = null);
}
#if !QUARTZ_2_0
/// <summary>
/// Tests AfterPropertiesSet behavior.
/// </summary>
[Test]
public void TestAfterPropertiesSet_AddListeners()
{
InitForAfterPropertiesSetTest();
factory.SchedulerListeners = new ISchedulerListener[] { MockRepository.GenerateMock<ISchedulerListener>() };
factory.GlobalJobListeners = new IJobListener[] { MockRepository.GenerateMock<IJobListener>() };
factory.JobListeners = new IJobListener[] { MockRepository.GenerateMock<IJobListener>() };
factory.GlobalTriggerListeners = new ITriggerListener[] { MockRepository.GenerateMock<ITriggerListener>() };
factory.TriggerListeners = new ITriggerListener[] { MockRepository.GenerateMock<ITriggerListener>() };
factory.AfterPropertiesSet();
TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.AddSchedulerListener(Arg<ISchedulerListener>.Is.NotNull));
TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.AddGlobalJobListener(Arg<IJobListener>.Is.NotNull));
TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.AddJobListener(Arg<IJobListener>.Is.NotNull));
TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.AddGlobalTriggerListener(Arg<ITriggerListener>.Is.NotNull));
TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.AddTriggerListener(Arg<ITriggerListener>.Is.NotNull));
}
#endif
/// <summary>
/// Tests AfterPropertiesSet behavior.
/// </summary>
@@ -154,14 +120,10 @@ namespace Spring.Scheduling.Quartz
const string TRIGGER_NAME = "trigName";
const string TRIGGER_GROUP = "trigGroup";
SimpleTrigger trigger = new SimpleTrigger(TRIGGER_NAME, TRIGGER_GROUP);
factory.Triggers = new Trigger[] { trigger };
SimpleTriggerImpl trigger = new SimpleTriggerImpl(TRIGGER_NAME, TRIGGER_GROUP);
factory.Triggers = new ITrigger[] { trigger };
#if QUARTZ_2_0
TestSchedulerFactory.MockScheduler.Stub(x => x.GetTrigger(new TriggerKey(TRIGGER_NAME, TRIGGER_GROUP))).Return(trigger);
#else
TestSchedulerFactory.MockScheduler.Stub(x => x.GetTrigger(TRIGGER_NAME, TRIGGER_GROUP)).Return(trigger);
#endif
factory.AfterPropertiesSet();
}
@@ -176,8 +138,8 @@ namespace Spring.Scheduling.Quartz
const string TRIGGER_NAME = "trigName";
const string TRIGGER_GROUP = "trigGroup";
SimpleTrigger trigger = new SimpleTrigger(TRIGGER_NAME, TRIGGER_GROUP);
factory.Triggers = new Trigger[] { trigger };
SimpleTriggerImpl trigger = new SimpleTriggerImpl(TRIGGER_NAME, TRIGGER_GROUP);
factory.Triggers = new ITrigger[] { trigger };
factory.AfterPropertiesSet();
@@ -337,21 +299,12 @@ ConnectionStringKey+ " = " + ConnectionStringValue + Environment.NewLine +
return mockScheduler;
}
#if QUARTZ_2_0
///<summary>
///</summary>
public ICollection<IScheduler> AllSchedulers
{
get { return new List<IScheduler>(); }
}
#else
///<summary>
///</summary>
public ICollection AllSchedulers
{
get { return new ArrayList(); }
}
#endif
public static void Initialize()
{

View File

@@ -17,16 +17,12 @@
using System;
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using Quartz;
using Quartz.Impl;
using Quartz.Job;
#if QUARTZ_2_0
using JobDetail = Quartz.Impl.JobDetailImpl;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -105,7 +101,7 @@ namespace Spring.Scheduling.Quartz
{
const string jobName = "jobName";
const string jobGroup = "jobGroup";
JobDetail jd = new JobDetail(jobName, jobGroup, typeof(NoOpJob));
JobDetailImpl jd = new JobDetailImpl(jobName, jobGroup, typeof(NoOpJob));
simpleTrigger.JobDetail = jd;
simpleTrigger.AfterPropertiesSet();
base.TestAfterPropertiesSet_JobDetailGiven();
@@ -118,17 +114,11 @@ namespace Spring.Scheduling.Quartz
[Test]
public void TestJobDataAsMap()
{
#if QUARTZ_2_0
IDictionary data = new Dictionary<string, object>();
#else
Hashtable data = new Hashtable();
#endif
data["foo"] = "bar";
data["number"] = 123;
simpleTrigger.JobDataAsMap = data;
CollectionAssert.AreEquivalent(data, simpleTrigger.JobDataMap, "Data differed");
}
}
}

View File

@@ -16,19 +16,14 @@
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using Quartz;
using Quartz.Impl.Triggers;
using Quartz.Job;
using Quartz.Spi;
#if QUARTZ_2_0
using Trigger = Quartz.Spi.IOperableTrigger;
using JobExecutionContext = Quartz.IJobExecutionContext;
using JobDetail = Quartz.IJobDetail;
using SimpleTrigger = Quartz.Impl.Triggers.SimpleTriggerImpl;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -55,14 +50,10 @@ namespace Spring.Scheduling.Quartz
[Test]
public void TestCreateJobInstance_SimpleDefaults()
{
Trigger trigger = new SimpleTrigger();
IOperableTrigger trigger = new SimpleTriggerImpl();
TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof (NoOpJob), trigger);
#if QUARTZ_2_0
IJob job = factory.NewJob(bundle, null);
#else
IJob job = factory.NewJob(bundle);
#endif
Assert.IsNotNull(job, "Created job was null");
}
@@ -72,22 +63,14 @@ namespace Spring.Scheduling.Quartz
[Test]
public void TestCreateJobInstance_SchedulerContextGiven()
{
Trigger trigger = new SimpleTrigger();
IOperableTrigger trigger = new SimpleTriggerImpl();
TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof(InjectableJob), trigger);
#if QUARTZ_2_0
IDictionary<string, object> items = new Dictionary<string, object>();
items["foo"] = "bar";
items["number"] = 123;
factory.SchedulerContext = new SchedulerContext(items);
InjectableJob job = (InjectableJob)factory.NewJob(bundle, null);
#else
IDictionary items = new Hashtable();
items["foo"] = "bar";
items["number"] = 123;
factory.SchedulerContext = new SchedulerContext(items);
InjectableJob job = (InjectableJob) factory.NewJob(bundle);
#endif
Assert.IsNotNull(job, "Created job was null");
Assert.AreEqual("bar", job.Foo, "string injection failed");
@@ -101,16 +84,12 @@ namespace Spring.Scheduling.Quartz
public void TestCreateJobInstance_IgnoredProperties()
{
factory.IgnoredUnknownProperties = new string[] {"foo", "baz"};
Trigger trigger = new SimpleTrigger();
IOperableTrigger trigger = new SimpleTriggerImpl();
trigger.JobDataMap["foo"] = "should not be injected";
trigger.JobDataMap["number"] = 123;
TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof(InjectableJob), trigger);
#if QUARTZ_2_0
InjectableJob job = (InjectableJob)factory.NewJob(bundle, null);
#else
InjectableJob job = (InjectableJob)factory.NewJob(bundle);
#endif
Assert.IsNotNull(job, "Created job was null");
Assert.AreEqual(123, job.Number, "integer injection failed");
Assert.IsNull(job.Foo, "foo was injected when it was not supposed to ");

View File

@@ -17,13 +17,9 @@
using System;
using Quartz;
using Quartz.Impl;
using Quartz.Spi;
#if QUARTZ_2_0
using JobDetail = Quartz.Impl.JobDetailImpl;
using Trigger = Quartz.Spi.IOperableTrigger;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -50,9 +46,9 @@ namespace Spring.Scheduling.Quartz
/// <param name="jobType">Type of the job.</param>
/// <param name="trigger">The trigger.</param>
/// <returns>Minimal TriggerFiredBundle</returns>
public static TriggerFiredBundle CreateMinimalFiredBundleWithTypedJobDetail(Type jobType, Trigger trigger)
public static TriggerFiredBundle CreateMinimalFiredBundleWithTypedJobDetail(Type jobType, IOperableTrigger trigger)
{
JobDetail jd = new JobDetail("jobName", "jobGroup", jobType);
IJobDetail jd = new JobDetailImpl("jobName", "jobGroup", jobType);
TriggerFiredBundle bundle = new TriggerFiredBundle(jd, trigger, null, false, null, null, null, null);
return bundle;
}

View File

@@ -19,13 +19,10 @@ using System;
using NUnit.Framework;
using Quartz;
using Quartz.Spi;
using Spring.Objects.Factory;
#if QUARTZ_2_0
using Trigger = Quartz.Spi.IOperableTrigger;
#endif
namespace Spring.Scheduling.Quartz
{
/// <summary>
@@ -34,7 +31,7 @@ namespace Spring.Scheduling.Quartz
[TestFixture]
public abstract class TriggerObjectTest
{
private Trigger trigger;
private IOperableTrigger trigger;
/// <summary>
/// Constant name for tested triggers.
@@ -44,7 +41,7 @@ namespace Spring.Scheduling.Quartz
/// <summary>
/// TriggerObject under test.
/// </summary>
protected Trigger Trigger
protected IOperableTrigger Trigger
{
set { trigger = value; }
}
@@ -57,16 +54,9 @@ namespace Spring.Scheduling.Quartz
{
((IInitializingObject) trigger).AfterPropertiesSet();
#if QUARTZ_2_0
Assert.AreEqual(TRIGGER_NAME, trigger.Key.Name, "trigger name mismatch");
Assert.AreEqual(SchedulerConstants.DefaultGroup, trigger.Key.Group, "trigger group name mismatch");
Assert.IsNull(trigger.JobKey, "trigger job name not null");
#else
Assert.AreEqual(TRIGGER_NAME, trigger.Name, "trigger name mismatch");
Assert.AreEqual(SchedulerConstants.DefaultGroup, trigger.Group, "trigger group name mismatch");
Assert.IsNull(trigger.JobName, "trigger job name not null");
Assert.AreEqual(SchedulerConstants.DefaultGroup, trigger.JobGroup, "trigger job group was not default");
#endif
AssertDateTimesEqualityWithAllowedDelta(DateTime.UtcNow, trigger.StartTimeUtc, 1000);
}
@@ -82,16 +72,9 @@ namespace Spring.Scheduling.Quartz
const string GROUP = "newGroup";
DateTime START_TIME = new DateTime(1982, 6, 28, 13, 10, 0);
trigger.StartTimeUtc = START_TIME;
#if QUARTZ_2_0
trigger.Key = new TriggerKey(NAME, GROUP);
Assert.AreEqual(NAME, trigger.Key.Name, "trigger name mismatch");
Assert.AreEqual(GROUP, trigger.Key.Group, "trigger group name mismatch");
#else
trigger.Name = NAME;
trigger.Group = GROUP;
Assert.AreEqual(NAME, trigger.Name, "trigger name mismatch");
Assert.AreEqual(GROUP, trigger.Group, "trigger group name mismatch");
#endif
AssertDateTimesEqualityWithAllowedDelta(START_TIME, trigger.StartTimeUtc, 1000);
}
@@ -105,16 +88,11 @@ namespace Spring.Scheduling.Quartz
const string jobName = "jobName";
const string jobGroup = "jobGroup";
#if QUARTZ_2_0
Assert.AreEqual(jobName, trigger.JobKey.Name, "trigger job name was not from job detail");
Assert.AreEqual(jobGroup, trigger.JobKey.Group, "trigger job group was not from job detail");
#else
Assert.AreEqual(jobName, trigger.JobName, "trigger job name was not from job detail");
Assert.AreEqual(jobGroup, trigger.JobGroup, "trigger job group was not from job detail");
#endif
}
#if QUARTZ_2_0
/// <summary>
/// Tests whether two datetimes are close enough.
/// </summary>
@@ -126,34 +104,5 @@ namespace Spring.Scheduling.Quartz
int diffInMillis = (int) Math.Abs((d1 - d2).TotalMilliseconds);
Assert.LessOrEqual(diffInMillis, allowedDeltaInMilliseconds, "too much difference in times");
}
#else
/// <summary>
/// Tests whether two datetimes are close enough.
/// </summary>
/// <param name="d1"></param>
/// <param name="d2"></param>
/// <param name="allowedDeltaInMilliseconds"></param>
protected static void AssertDateTimesEqualityWithAllowedDelta(DateTime d1, DateTime d2, int allowedDeltaInMilliseconds)
{
int diffInMillis = (int)Math.Abs((d1 - d2).TotalMilliseconds);
Assert.LessOrEqual(diffInMillis, allowedDeltaInMilliseconds, "too much difference in times");
}
/// <summary>
/// Tests that TriggerObject defaults values as expected in AfterPropertiesSet.
/// </summary>
[Test]
public virtual void TestTriggerListenerNames_Valid()
{
((IInitializingObject)trigger).AfterPropertiesSet();
string[] LISTENER_NAMES = new string[] { "Foo", "Bar", "Baz" };
trigger.TriggerListenerNames = LISTENER_NAMES;
CollectionAssert.AreEqual(LISTENER_NAMES, trigger.TriggerListenerNames, "Trigger listeners were not equal");
}
#endif
}
}

View File

@@ -16,7 +16,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz20.Tests\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET_2_0,NET_3_0,NET_3_5,QUARTZ_2_0</DefineConstants>
<DefineConstants>TRACE;DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
@@ -27,7 +27,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz20.Tests\Release\</OutputPath>
<DefineConstants>TRACE;NET_2_0,QUARTZ_2_0</DefineConstants>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>

View File

@@ -22,7 +22,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\build\VS.NET.2010\Spring.Scheduling.Quartz20.Tests\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET_4_0,QUARTZ_2_0</DefineConstants>
<DefineConstants>TRACE;DEBUG;NET_4_0</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>