Hello,
Looks like DefaultQuartzScheduler doesn't support SimpleTrigger.
I don't know is there any way to use SimpleTrigger using current
DefaultQuartzScheduler implementation.
Here is a patch for SimpleTrigger.
Index: src/java/org/apache/fulcrum/quartz/impl/DefaultQuartzScheduler.java
===================================================================
--- src/java/org/apache/fulcrum/quartz/impl/DefaultQuartzScheduler.java
(revision 682229)
+++ src/java/org/apache/fulcrum/quartz/impl/DefaultQuartzScheduler.java
(working copy)
@@ -20,6 +20,7 @@
package org.apache.fulcrum.quartz.impl;
//JDK
+import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -40,6 +41,7 @@
import org.apache.fulcrum.quartz.listener.ServiceableJobListener;
import org.apache.fulcrum.quartz.listener.impl.ServiceableJobListenerWrapper;
import org.quartz.CronTrigger;
+import org.quartz.SimpleTrigger;
import org.quartz.JobDetail;
import org.quartz.JobListener;
import org.quartz.Scheduler;
@@ -174,7 +176,21 @@
scheduler.scheduleJob(rightNow);*/
}
- }
+ }
+ else if(trigger instanceof SimpleTrigger) {
+ if (trigger.getJobGroup() != null & trigger.getJobName() !=
null) {
+ Date startDate = ((SimpleTrigger)trigger).getStartTime();
+ if(startDate == null){
+ startDate = new Date();
+ }
+ Trigger rightNow = new
SimpleTrigger(trigger.getName(),trigger.getGroup(),trigger.getJobName(),trigger.getJobGroup(),
+ startDate, ((SimpleTrigger)trigger).getEndTime(),
((SimpleTrigger)trigger).getRepeatCount(),
((SimpleTrigger)trigger).getRepeatInterval());
+ rightNow.setDescription(trigger.getDescription());
+ this.getLogger().debug("Scheduling Simple trigger [" +
rightNow.getFullName() + "] for job ["
+ + rightNow.getFullJobName() + "]");
+ scheduler.scheduleJob(rightNow);
+ }
+ }
}
scheduler.start();
Index: src/test/org/apache/fulcrum/quartz/DefaultQuartzSchedulerImplTest.java
===================================================================
--- src/test/org/apache/fulcrum/quartz/DefaultQuartzSchedulerImplTest.java
(revision 682229)
+++ src/test/org/apache/fulcrum/quartz/DefaultQuartzSchedulerImplTest.java
(working copy)
@@ -41,7 +41,7 @@
Scheduler sched = quartz.getScheduler();
assertNotNull(sched);
String[] jobNames = sched.getJobNames("DEFAULT_GROUP");
- assertEquals(2, jobNames.length);
+ assertEquals(3, jobNames.length);
}
public void testJobListener() throws Exception {
@@ -87,23 +87,31 @@
public void testJobDetailMap() {
Map map = quartz.getJobDetailsMap();
- assertEquals(2, map.size());
+ assertEquals(3, map.size());
assertTrue(map.containsKey("DEFAULT_GROUP.simpleJob"));
assertTrue(map.containsKey("DEFAULT_GROUP.notSoSimpleJob"));
}
- public void testTriggerMap() {
+ public void testTriggerMap() throws Exception {
Map map = quartz.getTriggersMap();
assertEquals(2, map.size());
- assertTrue(map.containsKey("DEFAULT_GROUP.simpleTrigger"));
+ assertTrue(map.containsKey("SIMPLE_GROUP.simpleTrigger"));
- SimpleTrigger simpleTrigger = (SimpleTrigger)
map.get("DEFAULT_GROUP.simpleTrigger");
- assertEquals("DEFAULT_GROUP", simpleTrigger.getGroup());
+ // simple trigger
+ SimpleTrigger simpleTrigger = (SimpleTrigger)
map.get("SIMPLE_GROUP.simpleTrigger");
+ assertEquals("SIMPLE_GROUP", simpleTrigger.getGroup());
assertEquals("simpleTrigger", simpleTrigger.getName());
-
+
+ Trigger trigger = quartz.getScheduler().getTrigger("simpleTrigger",
"SIMPLE_GROUP");
+ assertNotNull(trigger);
+
+ // cron trigger
assertTrue(map.containsKey("OTHER_GROUP.cron"));
CronTrigger cronTrigger = (CronTrigger) map.get("OTHER_GROUP.cron");
assertEquals("0 0 12 * * ?", cronTrigger.getCronExpression());
+
+ trigger = quartz.getScheduler().getTrigger("cron", "OTHER_GROUP");
+ assertNotNull(trigger);
}
public void testPreScheduled() throws Exception {
Index: src/test/TestComponentConfig.xml
===================================================================
--- src/test/TestComponentConfig.xml (revision 682229)
+++ src/test/TestComponentConfig.xml (working copy)
@@ -22,6 +22,7 @@
<quartz>
<globalJobListener
className="org.apache.fulcrum.quartz.listener.FooListener" />
<scheduled jobName="simpleJob" jobGroup="DEFAULT_GROUP"
triggerName="cron" triggerGroup="OTHER_GROUP"/>
+ <scheduled jobName="simpleJob1" jobGroup="DEFAULT_GROUP"
triggerName="simpleTrigger" triggerGroup="SIMPLE_GROUP"/>
<jobDetails>
<list>
<org.quartz.JobDetail>
@@ -34,6 +35,15 @@
<jobListeners/>
</org.quartz.JobDetail>
<org.quartz.JobDetail>
+ <name>simpleJob1</name>
+ <group>DEFAULT_GROUP</group>
+ <jobClass>org.apache.fulcrum.quartz.test.SimpleJob</jobClass>
+ <volatility>false</volatility>
+ <durability>false</durability>
+ <shouldRecover>false</shouldRecover>
+ <jobListeners/>
+ </org.quartz.JobDetail>
+ <org.quartz.JobDetail>
<name>notSoSimpleJob</name>
<group>DEFAULT_GROUP</group>
<jobClass>org.apache.fulcrum.quartz.test.NotSoSimpleJob</jobClass>
@@ -64,9 +74,13 @@
</cronEx>
</org.quartz.CronTrigger>
<org.quartz.SimpleTrigger>
- <name>simpleTrigger</name>
- <group>DEFAULT_GROUP</group>
+ <group>SIMPLE_GROUP</group>
+ <jobGroup>DEFAULT_GROUP</jobGroup>
+ <jobName>simpleJob1</jobName>
+ <name>simpleTrigger</name>
<description>test</description>
+ <repeatCount>-1</repeatCount>
+ <repeatInterval>300000</repeatInterval>
</org.quartz.SimpleTrigger>
</list>
</triggers>
Thanks,
Youngho