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

Reply via email to