Update of /cvsroot/springframework/spring/test/org/springframework/scheduling/quartz In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4699/test/org/springframework/scheduling/quartz Modified Files: QuartzSupportTests.java multipleSchedulers.xml Added Files: schedulerRepositoryExposure.xml schedulerAccessorBean.xml Log Message: use bean name as default scheduler name (when "schedulerName" property not explicitly specified); do not accept a pre-registered Scheduler instance in the Quartz SchedulerRepository anymore; do not expose the Spring-created/managed Scheduler to the Quartz SchedulerRepository anymore; added "exposeSchedulerInRepository" flag for explicit exposure to the SchedulerRepository; introduced SchedulerAccessorBean for registering jobs/triggers/listeners on an existing Quartz Scheduler instance --- NEW FILE: schedulerAccessorBean.xml --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"/> <bean class="org.springframework.scheduling.quartz.SchedulerAccessorBean"> <property name="scheduler" ref="scheduler"/> <property name="triggers"> <list> <ref local="exportTrigger"/> <ref local="importTrigger"/> </list> </property> </bean> <bean id="exportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="exportService"/> <property name="targetMethod" value="doExport"/> </bean> </property> <property name="repeatInterval" value="1000"/> <property name="repeatCount" value="1"/> </bean> <bean id="importTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="importService"/> <property name="targetMethod" value="doImport"/> </bean> </property> <property name="repeatInterval" value="1000"/> <property name="repeatCount" value="1"/> </bean> <bean id="exportService" class="org.springframework.scheduling.quartz.QuartzTestBean"/> <bean id="importService" class="org.springframework.scheduling.quartz.QuartzTestBean"/> </beans> --- NEW FILE: schedulerRepositoryExposure.xml --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="schedulerName" value="myScheduler"/> <property name="exposeSchedulerInRepository" value="true"/> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerAccessorBean"> <property name="schedulerName" value="myScheduler"/> <property name="triggers"> <list> <ref local="exportTrigger"/> <ref local="importTrigger"/> </list> </property> </bean> <bean id="exportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="exportService"/> <property name="targetMethod" value="doExport"/> </bean> </property> <property name="repeatInterval" value="1000"/> <property name="repeatCount" value="1"/> </bean> <bean id="importTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="importService"/> <property name="targetMethod" value="doImport"/> </bean> </property> <property name="repeatInterval" value="1000"/> <property name="repeatCount" value="1"/> </bean> <bean id="exportService" class="org.springframework.scheduling.quartz.QuartzTestBean"/> <bean id="importService" class="org.springframework.scheduling.quartz.QuartzTestBean"/> </beans> Index: QuartzSupportTests.java =================================================================== RCS file: /cvsroot/springframework/spring/test/org/springframework/scheduling/quartz/QuartzSupportTests.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** QuartzSupportTests.java 7 May 2008 22:43:59 -0000 1.16 --- QuartzSupportTests.java 20 Oct 2008 14:00:46 -0000 1.17 *************** *** 40,43 **** --- 40,44 ---- import org.quartz.Trigger; import org.quartz.TriggerListener; + import org.quartz.impl.SchedulerRepository; import org.quartz.spi.JobFactory; *************** *** 891,895 **** Scheduler scheduler2 = (Scheduler) ctx.getBean("scheduler2"); assertNotSame(scheduler1, scheduler2); ! assertFalse(scheduler1.getSchedulerName().equals(scheduler2.getSchedulerName())); } finally { --- 892,897 ---- Scheduler scheduler2 = (Scheduler) ctx.getBean("scheduler2"); assertNotSame(scheduler1, scheduler2); ! assertEquals("quartz1", scheduler1.getSchedulerName()); ! assertEquals("quartz2", scheduler2.getSchedulerName()); } finally { *************** *** 916,919 **** --- 918,946 ---- } + public void testSchedulerAccessorBean() throws InterruptedException { + ClassPathXmlApplicationContext ctx = + new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/schedulerAccessorBean.xml"); + Thread.sleep(3000); + try { + QuartzTestBean exportService = (QuartzTestBean) ctx.getBean("exportService"); + QuartzTestBean importService = (QuartzTestBean) ctx.getBean("importService"); + + assertEquals("doImport called exportService", 0, exportService.getImportCount()); + assertEquals("doExport not called on exportService", 2, exportService.getExportCount()); + assertEquals("doImport not called on importService", 2, importService.getImportCount()); + assertEquals("doExport called on importService", 0, importService.getExportCount()); + } + finally { + ctx.close(); + } + } + + public void testSchedulerRepositoryExposure() throws InterruptedException { + ClassPathXmlApplicationContext ctx = + new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/schedulerRepositoryExposure.xml"); + assertSame(SchedulerRepository.getInstance().lookup("myScheduler"), ctx.getBean("scheduler")); + ctx.close(); + } + private static class TestSchedulerListener implements SchedulerListener { Index: multipleSchedulers.xml =================================================================== RCS file: /cvsroot/springframework/spring/test/org/springframework/scheduling/quartz/multipleSchedulers.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** multipleSchedulers.xml 20 Aug 2006 19:08:42 -0000 1.3 --- multipleSchedulers.xml 20 Oct 2008 14:00:46 -0000 1.4 *************** *** 5,13 **** <bean id="scheduler1" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ! <property name="schedulerName"><value>quartz1</value></property> </bean> <bean id="scheduler2" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ! <property name="schedulerName"><value>quartz2</value></property> </bean> --- 5,13 ---- <bean id="scheduler1" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ! <property name="schedulerName" value="quartz1"/> </bean> <bean id="scheduler2" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ! <property name="schedulerName" value="quartz2"/> </bean> |