1
1
/*
2
- * Copyright 2002-2008 the original author or authors.
2
+ * Copyright 2002-2009 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
17
17
package org .springframework .scheduling .quartz ;
18
18
19
19
import static org .junit .Assert .assertEquals ;
20
+ import static org .junit .Assert .assertFalse ;
20
21
import static org .junit .Assert .assertNotSame ;
21
22
import static org .junit .Assert .assertSame ;
22
23
import static org .junit .Assert .assertTrue ;
29
30
30
31
import javax .sql .DataSource ;
31
32
32
- import junit .framework .TestCase ;
33
33
import org .easymock .MockControl ;
34
34
import org .junit .Test ;
35
35
import org .quartz .CronTrigger ;
51
51
import org .quartz .spi .JobFactory ;
52
52
53
53
import org .springframework .beans .TestBean ;
54
+ import org .springframework .beans .factory .config .BeanDefinition ;
55
+ import org .springframework .beans .factory .support .BeanDefinitionBuilder ;
56
+ import org .springframework .beans .factory .support .RootBeanDefinition ;
54
57
import org .springframework .beans .factory .support .StaticListableBeanFactory ;
55
58
import org .springframework .context .support .ClassPathXmlApplicationContext ;
56
59
import org .springframework .context .support .StaticApplicationContext ;
64
67
* @author Alef Arendsen
65
68
* @author Rob Harrop
66
69
* @author Dave Syer
70
+ * @author Mark Fisher
67
71
* @since 20.02.2004
68
72
*/
69
73
public class QuartzSupportTests {
@@ -164,6 +168,7 @@ protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String sc
164
168
schedulerFactoryBean .setTriggers (new Trigger [] {trigger0 , trigger1 });
165
169
try {
166
170
schedulerFactoryBean .afterPropertiesSet ();
171
+ schedulerFactoryBean .start ();
167
172
}
168
173
finally {
169
174
schedulerFactoryBean .destroy ();
@@ -257,6 +262,7 @@ protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String sc
257
262
}
258
263
try {
259
264
schedulerFactoryBean .afterPropertiesSet ();
265
+ schedulerFactoryBean .start ();
260
266
}
261
267
finally {
262
268
schedulerFactoryBean .destroy ();
@@ -354,6 +360,7 @@ protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String sc
354
360
}
355
361
try {
356
362
schedulerFactoryBean .afterPropertiesSet ();
363
+ schedulerFactoryBean .start ();
357
364
}
358
365
finally {
359
366
schedulerFactoryBean .destroy ();
@@ -406,6 +413,7 @@ protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String sc
406
413
schedulerFactoryBean .setTriggerListeners (new TriggerListener [] {triggerListener });
407
414
try {
408
415
schedulerFactoryBean .afterPropertiesSet ();
416
+ schedulerFactoryBean .start ();
409
417
}
410
418
finally {
411
419
schedulerFactoryBean .destroy ();
@@ -571,6 +579,7 @@ protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String sc
571
579
schedulerFactoryBean .setTriggers (new Trigger [] {trigger0 , trigger1 });
572
580
try {
573
581
schedulerFactoryBean .afterPropertiesSet ();
582
+ schedulerFactoryBean .start ();
574
583
}
575
584
finally {
576
585
schedulerFactoryBean .destroy ();
@@ -608,6 +617,7 @@ protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String sc
608
617
schedulerFactoryBean .setApplicationContextSchedulerContextKey ("appCtx" );
609
618
try {
610
619
schedulerFactoryBean .afterPropertiesSet ();
620
+ schedulerFactoryBean .start ();
611
621
Scheduler returnedScheduler = (Scheduler ) schedulerFactoryBean .getObject ();
612
622
assertEquals (tb , returnedScheduler .getContext ().get ("testBean" ));
613
623
assertEquals (ac , returnedScheduler .getContext ().get ("appCtx" ));
@@ -703,6 +713,7 @@ public void testSchedulerWithTaskExecutor() throws Exception {
703
713
bean .setTriggers (new Trigger [] {trigger });
704
714
bean .setJobDetails (new JobDetail [] {jobDetail });
705
715
bean .afterPropertiesSet ();
716
+ bean .start ();
706
717
707
718
Thread .sleep (500 );
708
719
assertTrue (DummyJob .count > 0 );
@@ -731,6 +742,7 @@ public void testSchedulerWithRunnable() throws Exception {
731
742
bean .setTriggers (new Trigger [] {trigger });
732
743
bean .setJobDetails (new JobDetail [] {jobDetail });
733
744
bean .afterPropertiesSet ();
745
+ bean .start ();
734
746
735
747
Thread .sleep (500 );
736
748
assertTrue (DummyRunnable .count > 0 );
@@ -760,6 +772,7 @@ public void testSchedulerWithQuartzJobBean() throws Exception {
760
772
bean .setTriggers (new Trigger [] {trigger });
761
773
bean .setJobDetails (new JobDetail [] {jobDetail });
762
774
bean .afterPropertiesSet ();
775
+ bean .start ();
763
776
764
777
Thread .sleep (500 );
765
778
assertEquals (10 , DummyJobBean .param );
@@ -792,6 +805,7 @@ public void testSchedulerWithSpringBeanJobFactory() throws Exception {
792
805
bean .setTriggers (new Trigger [] {trigger });
793
806
bean .setJobDetails (new JobDetail [] {jobDetail });
794
807
bean .afterPropertiesSet ();
808
+ bean .start ();
795
809
796
810
Thread .sleep (500 );
797
811
assertEquals (10 , DummyJob .param );
@@ -857,6 +871,7 @@ public void testSchedulerWithSpringBeanJobFactoryAndRunnable() throws Exception
857
871
bean .setTriggers (new Trigger [] {trigger });
858
872
bean .setJobDetails (new JobDetail [] {jobDetail });
859
873
bean .afterPropertiesSet ();
874
+ bean .start ();
860
875
861
876
Thread .sleep (500 );
862
877
assertEquals (10 , DummyRunnable .param );
@@ -888,6 +903,7 @@ public void testSchedulerWithSpringBeanJobFactoryAndQuartzJobBean() throws Excep
888
903
bean .setTriggers (new Trigger [] {trigger });
889
904
bean .setJobDetails (new JobDetail [] {jobDetail });
890
905
bean .afterPropertiesSet ();
906
+ bean .start ();
891
907
892
908
Thread .sleep (500 );
893
909
assertEquals (10 , DummyJobBean .param );
@@ -906,6 +922,7 @@ public void testSchedulerWithSpringBeanJobFactoryAndJobSchedulingData() throws E
906
922
bean .setJobSchedulingDataLocation ("org/springframework/scheduling/quartz/job-scheduling-data.xml" );
907
923
bean .setResourceLoader (new FileSystemResourceLoader ());
908
924
bean .afterPropertiesSet ();
925
+ bean .start ();
909
926
910
927
Thread .sleep (500 );
911
928
assertEquals (10 , DummyJob .param );
@@ -971,6 +988,28 @@ public void testSchedulerAccessorBean() throws InterruptedException {
971
988
}
972
989
}
973
990
991
+ @ Test
992
+ public void testSchedulerAutoStartsOnContextRefreshedEventByDefault () throws Exception {
993
+ StaticApplicationContext context = new StaticApplicationContext ();
994
+ context .registerBeanDefinition ("scheduler" , new RootBeanDefinition (SchedulerFactoryBean .class ));
995
+ Scheduler bean = context .getBean ("scheduler" , Scheduler .class );
996
+ assertFalse (bean .isStarted ());
997
+ context .refresh ();
998
+ assertTrue (bean .isStarted ());
999
+ }
1000
+
1001
+ @ Test
1002
+ public void testSchedulerAutoStartupFalse () throws Exception {
1003
+ StaticApplicationContext context = new StaticApplicationContext ();
1004
+ BeanDefinition beanDefinition = BeanDefinitionBuilder .genericBeanDefinition (
1005
+ SchedulerFactoryBean .class ).addPropertyValue ("autoStartup" , false ).getBeanDefinition ();
1006
+ context .registerBeanDefinition ("scheduler" , beanDefinition );
1007
+ Scheduler bean = context .getBean ("scheduler" , Scheduler .class );
1008
+ assertFalse (bean .isStarted ());
1009
+ context .refresh ();
1010
+ assertFalse (bean .isStarted ());
1011
+ }
1012
+
974
1013
@ Test
975
1014
public void testSchedulerRepositoryExposure () throws InterruptedException {
976
1015
ClassPathXmlApplicationContext ctx =
0 commit comments