You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/02/05 21:27:47 UTC

svn commit: r1240799 - in /openejb/trunk/openejb: ./ container/openejb-core/src/main/java/org/apache/openejb/core/timer/ container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/ examples/quartz-app/ examples/quartz-app/quartz-beans/src/...

Author: rmannibucau
Date: Sun Feb  5 20:27:46 2012
New Revision: 1240799

URL: http://svn.apache.org/viewvc?rev=1240799&view=rev
Log:
OPENEJB-1764 upgrading quartz to last major version.

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/IntervalTimerData.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/SingleActionTimerData.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/JobSpec.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java
    openejb/trunk/openejb/examples/quartz-app/pom.xml
    openejb/trunk/openejb/examples/quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java
    openejb/trunk/openejb/pom.xml

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java Sun Feb  5 20:27:46 2012
@@ -17,13 +17,12 @@
 
 package org.apache.openejb.core.timer;
 
-import java.lang.reflect.Method;
+import org.apache.openejb.core.timer.EJBCronTrigger.ParseException;
+import org.quartz.impl.triggers.AbstractTrigger;
 
 import javax.ejb.ScheduleExpression;
 import javax.ejb.TimerConfig;
-
-import org.apache.openejb.core.timer.EJBCronTrigger.ParseException;
-import org.quartz.Trigger;
+import java.lang.reflect.Method;
 
 /**
  * @version $Rev$ $Date$
@@ -47,7 +46,7 @@ public class CalendarTimerData extends T
     }
 
     @Override
-    public Trigger initializeTrigger() {
+    public AbstractTrigger<?> initializeTrigger() {
         try {
             return new EJBCronTrigger(scheduleExpression);
         } catch (ParseException e) {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java Sun Feb  5 20:27:46 2012
@@ -16,6 +16,11 @@
  */
 package org.apache.openejb.core.timer;
 
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+import org.quartz.impl.triggers.CronTriggerImpl;
+
+import javax.ejb.ScheduleExpression;
 import java.text.DateFormatSymbols;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -27,23 +32,14 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TimeZone;
-import java.util.Map.Entry;
 import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.ejb.ScheduleExpression;
-
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.quartz.Trigger;
-
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
-
-public class EJBCronTrigger extends Trigger {
+public class EJBCronTrigger extends CronTriggerImpl {
     
     private static final Logger log = Logger.getInstance(LogCategory.TIMER, EJBCronTrigger.class);
 
@@ -101,14 +97,6 @@ public class EJBCronTrigger extends Trig
 
 	private final FieldExpression[] expressions = new FieldExpression[7];
 
-	// Optional settings
-	private Date startTime;
-	private Date endTime;
-
-	// Internal variables
-	private Date nextFireTime;
-	private Date previousFireTime;
-
 	private TimeZone timezone;
 
 	public EJBCronTrigger(ScheduleExpression expr) throws ParseException {
@@ -123,8 +111,8 @@ public class EJBCronTrigger extends Trig
 		fieldValues.put(Calendar.SECOND, expr.getSecond());
 
 		timezone = expr.getTimezone() == null ? TimeZone.getDefault() : TimeZone.getTimeZone(expr.getTimezone());
-        startTime = expr.getStart() == null ? new Date() : expr.getStart();
-		endTime = expr.getEnd();
+        setStartTime(expr.getStart() == null ? new Date() : expr.getStart());
+		setEndTime(expr.getEnd());
 
 		// If parsing fails on a field, record the error and move to the next field
 		Map<Integer, ParseException> errors = new HashMap<Integer, ParseException>();
@@ -309,54 +297,6 @@ public class EJBCronTrigger extends Trig
         }
     
     }
-        
-
-	@Override
-	public Date computeFirstFireTime(org.quartz.Calendar calendar) {
-	    
-	    log.debug("computeFirstFireTime starts, , current nextFireTime :"+nextFireTime);
-	    
-		// Copied from org.quartz.CronTrigger
-        nextFireTime = getFireTimeAfter(new Date(getStartTime().getTime() - 1000l));
-
-        while (nextFireTime != null && calendar != null
-                && !calendar.isTimeIncluded(nextFireTime.getTime())) {
-            nextFireTime = getFireTimeAfter(nextFireTime);
-        }
-		
-		log.debug("computeFirstFireTime completed, current nextFireTime :"+nextFireTime);
-        return nextFireTime;
-	}
-
-	@Override
-	public int executionComplete(JobExecutionContext context,
-			JobExecutionException result) {
-	    log.debug("executionComplete");
-		// Copied from org.quartz.CronTrigger
-        if (result != null && result.refireImmediately()) {
-            return INSTRUCTION_RE_EXECUTE_JOB;
-        }
-
-        if (result != null && result.unscheduleFiringTrigger()) {
-            return INSTRUCTION_SET_TRIGGER_COMPLETE;
-        }
-
-        if (result != null && result.unscheduleAllTriggers()) {
-            return INSTRUCTION_SET_ALL_JOB_TRIGGERS_COMPLETE;
-        }
-
-        if (!mayFireAgain()) {
-            return INSTRUCTION_DELETE_TRIGGER;
-        }
-
-        return INSTRUCTION_NOOP;
-	}
-
-	@Override
-	public Date getEndTime() {
-		return endTime;
-	}
-
 	/**
 	 * Works similarly to getFireTimeAfter() but backwards.
 	 */
@@ -366,7 +306,7 @@ public class EJBCronTrigger extends Trig
         //calendar.setLenient(false);
 		calendar.setFirstDayOfWeek(Calendar.SUNDAY);
 
-		if (endTime == null) {
+		if (getEndTime() == null) {
 			// If the year field has been left default, there is no end time
             if (expressions[0] instanceof AsteriskExpression) {
                 return null;
@@ -374,13 +314,13 @@ public class EJBCronTrigger extends Trig
 			resetFields(calendar, 0, true);
 			calendar.set(Calendar.MILLISECOND, 0);
 		} else {
-			calendar.setTime(endTime);
+			calendar.setTime(getEndTime());
 		}
 
 		// Calculate time to give up scheduling
 		Calendar stopCalendar = new  GregorianCalendar(timezone);
-		if (startTime != null) {
-			stopCalendar.setTime(startTime);
+		if (getStartTime() != null) {
+			stopCalendar.setTime(getStartTime());
 		} else {
 			stopCalendar.setTimeInMillis(0);
 		}
@@ -430,8 +370,8 @@ public class EJBCronTrigger extends Trig
 		calendar.setFirstDayOfWeek(Calendar.SUNDAY);
 
 		// Calculate starting time
-		if (startTime != null && startTime.after(afterTime)) {
-			calendar.setTime(startTime);
+		if (getStartTime() != null && getStartTime().after(afterTime)) {
+			calendar.setTime(getStartTime());
 		} else {
 			calendar.setTime(afterTime);
 			calendar.add(Calendar.SECOND, 1);
@@ -439,8 +379,8 @@ public class EJBCronTrigger extends Trig
 
 		// Calculate time to give up scheduling
 		Calendar stopCalendar = new GregorianCalendar(timezone);
-		if (endTime != null) {
-			stopCalendar.setTime(endTime);
+		if (getEndTime() != null) {
+			stopCalendar.setTime(getEndTime());
 		} else {
 			int stopYear = calendar.get(Calendar.YEAR) + 100;
 			stopCalendar.set(Calendar.YEAR, stopYear);
@@ -558,26 +498,6 @@ public class EJBCronTrigger extends Trig
         return -1;
     }
 
-	@Override
-	public Date getNextFireTime() {
-		return nextFireTime;
-	}
-
-	@Override
-	public Date getPreviousFireTime() {
-		return previousFireTime;
-	}
-
-	@Override
-	public Date getStartTime() {
-		return startTime;
-	}
-
-	@Override
-	public boolean mayFireAgain() {
-		return getNextFireTime() != null;
-	}
-
     /**
      * reset those sub field values, we need to configure from the end to begin, as getActualMaximun consider other fields' values
      * @param calendar
@@ -596,72 +516,6 @@ public class EJBCronTrigger extends Trig
         }
     }
 
-	@Override
-	public void setEndTime(Date endTime) {
-		this.endTime = endTime;
-	}
-
-	@Override
-	public void setStartTime(Date startTime) {
-		this.startTime = startTime;
-	}
-
-	@Override
-	public void triggered(org.quartz.Calendar calendar) {
-		// Copied from org.quartz.CronTrigger
-		previousFireTime = nextFireTime;
-		
-        nextFireTime = getFireTimeAfter(nextFireTime);
-        
-        
-        while (nextFireTime != null && calendar != null
-                && !calendar.isTimeIncluded(nextFireTime.getTime())) {
-            nextFireTime = getFireTimeAfter(nextFireTime);
-        }
-        log.debug("EJBCronTrigger is triggered by quartz scheduler");
-	}
-
-	@Override
-	public void updateAfterMisfire(org.quartz.Calendar cal) {
-    	// TODO verify misfire policy
-        if (isVolatile()) {
-            Date newFireTime = getFireTimeAfter(new Date());
-            while (newFireTime != null && cal != null
-                    && !cal.isTimeIncluded(newFireTime.getTime())) {
-                newFireTime = getFireTimeAfter(newFireTime);
-            }
-            nextFireTime = newFireTime;
-        } else {
-            nextFireTime = new Date();
-        }
-        
-	}
-
-	@Override
-	public void updateWithNewCalendar(org.quartz.Calendar cal, long misfireThreshold) {
-        if (cal == null) {
-        	return;
-        }
-
-        Date now = new Date();
-        nextFireTime = getFireTimeAfter(previousFireTime);
-        while (nextFireTime != null && !cal.isTimeIncluded(nextFireTime.getTime())) {
-            nextFireTime = getFireTimeAfter(nextFireTime);
-            if (nextFireTime != null && nextFireTime.before(now)) {
-                long diff = now.getTime() - nextFireTime.getTime();
-                if (diff >= misfireThreshold) {
-                    nextFireTime = getFireTimeAfter(nextFireTime);
-                }
-            }
-        }
-        
-	}
-
-	@Override
-	protected boolean validateMisfireInstruction(int misfireInstruction) {
-		return misfireInstruction == MISFIRE_INSTRUCTION_SMART_POLICY;
-	}
-
 	public static class ParseException extends Exception {
 
 		private final Map<Integer, ParseException> children;

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Sun Feb  5 20:27:46 2012
@@ -16,21 +16,6 @@
  */
 package org.apache.openejb.core.timer;
 
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Properties;
-
-import javax.ejb.EJBContext;
-import javax.ejb.EJBException;
-import javax.ejb.ScheduleExpression;
-import javax.ejb.Timer;
-import javax.ejb.TimerConfig;
-import javax.transaction.Status;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
-
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.InterfaceType;
 import org.apache.openejb.OpenEJBException;
@@ -41,12 +26,28 @@ import org.apache.openejb.loader.SystemI
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.SetAccessible;
+import org.quartz.JobBuilder;
 import org.quartz.JobDataMap;
 import org.quartz.JobDetail;
 import org.quartz.Scheduler;
 import org.quartz.SchedulerException;
 import org.quartz.Trigger;
 import org.quartz.impl.StdSchedulerFactory;
+import org.quartz.impl.triggers.AbstractTrigger;
+
+import javax.ejb.EJBContext;
+import javax.ejb.EJBException;
+import javax.ejb.ScheduleExpression;
+import javax.ejb.Timer;
+import javax.ejb.TimerConfig;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
+import javax.transaction.TransactionManager;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Properties;
 
 
 public class EjbTimerServiceImpl implements EjbTimerService {
@@ -95,7 +96,12 @@ public class EjbTimerServiceImpl impleme
                 scheduler.start();
                 //durability is configured with true, which means that the job will be kept in the store even if no trigger is attached to it.
                 //Currently, all the EJB beans share with the same job instance
-                scheduler.addJob(new JobDetail(OPENEJB_TIMEOUT_JOB_NAME, OPENEJB_TIMEOUT_JOB_GROUP_NAME, EjbTimeoutJob.class, false, true, false), true);
+                JobDetail job = JobBuilder.newJob(EjbTimeoutJob.class)
+                        .withIdentity(OPENEJB_TIMEOUT_JOB_NAME, OPENEJB_TIMEOUT_JOB_GROUP_NAME)
+                        .storeDurably(true)
+                        .requestRecovery(false)
+                        .build();
+                scheduler.addJob(job, true);
             } catch (SchedulerException e) {
                 throw new RuntimeException("Fail to initialize the default scheduler", e);
             }
@@ -150,8 +156,13 @@ public class EjbTimerServiceImpl impleme
         timerData.setScheduler(scheduler);
         
         Trigger trigger = timerData.getTrigger();
-        trigger.setJobName(OPENEJB_TIMEOUT_JOB_NAME);
-        trigger.setJobGroup(OPENEJB_TIMEOUT_JOB_GROUP_NAME);
+        if (trigger instanceof AbstractTrigger) { // is the case
+            AbstractTrigger<?> atrigger = (AbstractTrigger<?>) trigger;
+            atrigger.setJobName(OPENEJB_TIMEOUT_JOB_NAME);
+            atrigger.setJobGroup(OPENEJB_TIMEOUT_JOB_GROUP_NAME);
+        } else {
+            throw new RuntimeException("the trigger was not an AbstractTrigger - it shouldn't be possible");
+        }
         JobDataMap triggerDataMap = trigger.getJobDataMap();
         triggerDataMap.put(EjbTimeoutJob.EJB_TIMERS_SERVICE, this);
         triggerDataMap.put(EjbTimeoutJob.TIMER_DATA,timerData);

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/IntervalTimerData.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/IntervalTimerData.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/IntervalTimerData.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/IntervalTimerData.java Sun Feb  5 20:27:46 2012
@@ -17,15 +17,15 @@
 
 package org.apache.openejb.core.timer;
 
+import org.quartz.SimpleTrigger;
+import org.quartz.impl.triggers.AbstractTrigger;
+import org.quartz.impl.triggers.SimpleTriggerImpl;
+
+import javax.ejb.TimerConfig;
 import java.lang.reflect.Method;
 import java.text.DateFormat;
 import java.util.Date;
 
-import javax.ejb.TimerConfig;
-
-import org.quartz.SimpleTrigger;
-import org.quartz.Trigger;
-
 /**
  * @version $Rev$ $Date$
  */
@@ -55,8 +55,8 @@ public class IntervalTimerData extends T
     }
 
     @Override
-    public Trigger initializeTrigger() {
-        SimpleTrigger simpleTrigger = new SimpleTrigger();
+    public AbstractTrigger<?> initializeTrigger() {
+        SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
         Date startTime = new Date(initialExpiration.getTime() - intervalDuration);
         simpleTrigger.setStartTime(startTime);
         simpleTrigger.setRepeatInterval(intervalDuration);

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/SingleActionTimerData.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/SingleActionTimerData.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/SingleActionTimerData.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/SingleActionTimerData.java Sun Feb  5 20:27:46 2012
@@ -17,15 +17,14 @@
 
 package org.apache.openejb.core.timer;
 
+import org.quartz.impl.triggers.AbstractTrigger;
+import org.quartz.impl.triggers.SimpleTriggerImpl;
+
+import javax.ejb.TimerConfig;
 import java.lang.reflect.Method;
 import java.text.DateFormat;
 import java.util.Date;
 
-import javax.ejb.TimerConfig;
-
-import org.quartz.SimpleTrigger;
-import org.quartz.Trigger;
-
 /**
  * @version $Rev$ $Date$
  */
@@ -48,8 +47,8 @@ public class SingleActionTimerData exten
     }
 
     @Override
-    public Trigger initializeTrigger() {
-    	final SimpleTrigger simpleTrigger = new SimpleTrigger();
+    public AbstractTrigger<?> initializeTrigger() {
+    	final SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
     	simpleTrigger.setStartTime(expiration);
         return simpleTrigger;
     }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java Sun Feb  5 20:27:46 2012
@@ -17,8 +17,13 @@
 
 package org.apache.openejb.core.timer;
 
-import java.lang.reflect.Method;
-import java.util.Date;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.quartz.TriggerKey;
+import org.quartz.impl.triggers.AbstractTrigger;
 
 import javax.ejb.EJBException;
 import javax.ejb.Timer;
@@ -26,12 +31,8 @@ import javax.ejb.TimerConfig;
 import javax.transaction.Status;
 import javax.transaction.Synchronization;
 import javax.transaction.Transaction;
-
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.Trigger;
+import java.lang.reflect.Method;
+import java.util.Date;
 
 public abstract class TimerData {
 
@@ -48,7 +49,7 @@ public abstract class TimerData {
     private final Object info;
     private boolean persistent;
 
-    protected Trigger trigger;
+    protected AbstractTrigger<?> trigger;
     
     protected Scheduler scheduler;
 
@@ -102,8 +103,8 @@ public abstract class TimerData {
             try {
                 final Scheduler s = timerService.getScheduler();
                 
-                if(!s.isShutdown()){                
-                    s.unscheduleJob(trigger.getName(), trigger.getGroup());
+                if(!s.isShutdown()) {
+                    s.unscheduleJob(trigger.getKey());
                 }
             } catch (SchedulerException e) {
                 throw new EJBException("fail to cancel the timer", e);
@@ -157,7 +158,7 @@ public abstract class TimerData {
                 final Scheduler s = timerService.getScheduler();
                 
                 if(!s.isShutdown()){
-                    s.unscheduleJob(trigger.getName(), trigger.getGroup());
+                    s.unscheduleJob(trigger.getKey());
                 }
             } catch (SchedulerException e) {
                 throw new EJBException("fail to cancel the timer", e);
@@ -232,8 +233,9 @@ public abstract class TimerData {
         
         if (scheduler != null) {
             try {
-                if (scheduler.getTrigger(trigger.getName(), trigger.getGroup()) != null) {
-                    return scheduler.getTrigger(trigger.getName(), trigger.getGroup());
+                final TriggerKey key = new TriggerKey(trigger.getName(), trigger.getGroup());
+                if (scheduler.checkExists(key)) {
+                    return scheduler.getTrigger(key);
                 }
             } catch (SchedulerException e) {
                 return null;
@@ -277,5 +279,5 @@ public abstract class TimerData {
 
     public abstract TimerType getType();
 
-    protected abstract Trigger initializeTrigger();
+    protected abstract AbstractTrigger<?> initializeTrigger();
 }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/JobSpec.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/JobSpec.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/JobSpec.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/JobSpec.java Sun Feb  5 20:27:46 2012
@@ -16,19 +16,25 @@
  */
 package org.apache.openejb.resource.quartz;
 
-import org.quartz.CronTrigger;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.JobBuilder;
 import org.quartz.JobDetail;
+import org.quartz.JobKey;
 import org.quartz.Scheduler;
 import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.quartz.TriggerBuilder;
+import org.quartz.TriggerKey;
+import org.quartz.impl.triggers.CronTriggerImpl;
 
 import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
 import javax.resource.spi.InvalidPropertyException;
+import javax.resource.spi.ResourceAdapter;
 import javax.resource.spi.endpoint.MessageEndpoint;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.TimeZone;
 import java.util.Date;
+import java.util.TimeZone;
 
 /**
  * @version $Rev$ $Date$
@@ -37,130 +43,110 @@ public final class JobSpec implements Ac
 
     private MessageEndpoint endpoint;
     private ResourceAdapter resourceAdapter;
-    private final CronTrigger trigger;
-    private final JobDetail detail;
+    private Trigger trigger;
+    private JobDetail detail;
     private InvalidPropertyException invalidProperty;
+    private String triggerName;
+    private String triggerGroup;
+    private String jobName;
+    private String jobGroup;
+    private String description;
+    private boolean recoverable;
+    private boolean durable;
+    private String calendarName;
+    private String cronExpression;
+    private String timeZone;
+    private String startTime;
+    private String endTime;
 
-    public JobSpec() {
-        int i = hashCode();
-
-        detail = new JobDetail();
-        trigger = new CronTrigger();
-
-        detail.setJobClass(QuartzResourceAdapter.JobEndpoint.class);
-        detail.getJobDataMap().setAllowsTransientData(true);
-
-        setVolatile(true);
-
-        setJobGroup(Scheduler.DEFAULT_GROUP);
-        setJobName("Job" + i);
-
-        setTriggerGroup(Scheduler.DEFAULT_GROUP);
-        setTriggerName("Trigger" + i);
+    public TriggerKey triggerKey() {
+        return trigger.getKey();
     }
 
     public String getTriggerName() {
-        return trigger.getName();
+        return triggerName;
     }
 
     public void setTriggerName(String s) {
-        trigger.setName(s);
+        triggerName = s;
     }
 
     public String getTriggerGroup() {
-        return trigger.getGroup();
+        return triggerGroup;
     }
 
     public void setTriggerGroup(String s) {
-        trigger.setGroup(s);
+        triggerGroup = s;
     }
 
     // -- Job Name
 
     public String getJobName() {
-        return detail.getName();
+        return jobName;
     }
 
     public void setJobName(String s) {
-        detail.setName(s);
-        trigger.setJobName(s);
+        jobName = s;
     }
 
     // -- Job Group
 
     public void setJobGroup(String s) {
-        detail.setGroup(s);
-        trigger.setJobGroup(s);
+        jobGroup = s;
     }
 
     public String getJobGroup() {
-        return trigger.getJobGroup();
+        return jobGroup;
     }
 
     // -- Description
 
     public String getDescription() {
-        return trigger.getDescription();
+        return description;
     }
 
     public void setDescription(String s) {
-        detail.setDescription(s);
-        trigger.setDescription(s);
-    }
-
-    // -- Volatility
-
-    public void setVolatile(boolean b) {
-        detail.setVolatility(b);
-        trigger.setVolatility(b);
-    }
-
-    public boolean isVolatile() {
-        return trigger.isVolatile();
+        description = s;
     }
 
     // -- Recoverable
 
     public void setRequestsRecovery(boolean b) {
-        detail.setRequestsRecovery(b);
+        recoverable = b;
     }
 
     public boolean isRequestsRecovery() {
-        return detail.requestsRecovery();
+        return recoverable;
     }
 
     // -- Durability
 
     public boolean isDurable() {
-        return detail.isDurable();
+        return durable;
     }
 
     public void setDurable(boolean b) {
-        detail.setDurability(b);
+        durable = b;
     }
 
     // -- Calendar name
 
     public void setCalendarName(String s) {
-        trigger.setCalendarName(s);
+        calendarName = s;
     }
 
     public String getCalendarName() {
-        return trigger.getCalendarName();
+        return calendarName;
     }
 
     // -- Expression
 
     public void setCronExpression(String s) {
-        try {
-            trigger.setCronExpression(s);
-        } catch (ParseException e) {
-            invalidProperty = new InvalidPropertyException("Invalid cron expression " + s, e);
-        }
+        cronExpression = s;
     }
 
     public String getCronExpression() {
-        return trigger.getCronExpression();
+        return cronExpression;
     }
 
     /**
@@ -175,7 +161,7 @@ public final class JobSpec implements Ac
     // --
 
     public void setTimeZone(String timeZone) {
-        trigger.setTimeZone(TimeZone.getTimeZone(timeZone));
+        this.timeZone = timeZone;
     }
 
     // --
@@ -183,14 +169,14 @@ public final class JobSpec implements Ac
     public void setStartTime(String startTime) {
         Date date = parse(startTime);
         if (date != null) {
-            trigger.setStartTime(date);
+            this.startTime = startTime;
         }
     }
 
     public void setEndTime(String endTime) {
         Date date = parse(endTime);
         if (date != null) {
-            trigger.setEndTime(date);
+            this.endTime = endTime;
         }
     }
 
@@ -235,9 +221,36 @@ public final class JobSpec implements Ac
     public void validate() throws InvalidPropertyException {
         if (invalidProperty != null) throw invalidProperty;
 
+        int i = hashCode();
+        detail = JobBuilder.newJob(QuartzResourceAdapter.JobEndpoint.class)
+                .withIdentity("Job" + i, Scheduler.DEFAULT_GROUP)
+                .withDescription(description)
+                .requestRecovery(recoverable)
+                .storeDurably(durable)
+                .build();
+        final TriggerBuilder tb = TriggerBuilder.newTrigger()
+                .forJob(detail)
+                .withIdentity("Trigger" + i, Scheduler.DEFAULT_GROUP)
+                .withDescription(description);
+        if (startTime != null) {
+                tb.startAt(parse(startTime));
+        }
+        if (endTime != null) {
+                tb.endAt(parse(endTime));
+        }
+        if (calendarName != null) {
+                tb.modifiedByCalendar(calendarName);
+        }
+        final CronScheduleBuilder csb = CronScheduleBuilder.cronSchedule(getCronExpression());
+        if (timeZone != null) {
+            csb.inTimeZone(TimeZone.getTimeZone(timeZone));
+        }
+        tb.withSchedule(CronScheduleBuilder.cronSchedule(getCronExpression()));
+        trigger = tb.build();
+        
+
         try {
-            detail.validate();
-            trigger.validate();
+            ((CronTriggerImpl) trigger).validate();
         } catch (SchedulerException e) {
             throw new InvalidPropertyException(e);
         }
@@ -259,11 +272,15 @@ public final class JobSpec implements Ac
         this.endpoint = endpoint;
     }
 
-    CronTrigger getTrigger() {
+    Trigger getTrigger() {
         return trigger;
     }
 
     JobDetail getDetail() {
         return detail;
     }
+
+    public JobKey jobKey() {
+        return detail.getKey();
+    }
 }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java Sun Feb  5 20:27:46 2012
@@ -16,23 +16,23 @@
  */
 package org.apache.openejb.resource.quartz;
 
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
+import org.apache.openejb.util.LogCategory;
 import org.quartz.Job;
 import org.quartz.JobDataMap;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
 import org.quartz.impl.StdSchedulerFactory;
 
+import javax.resource.ResourceException;
+import javax.resource.spi.ActivationSpec;
 import javax.resource.spi.BootstrapContext;
 import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
 import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.ResourceException;
+import javax.resource.spi.endpoint.MessageEndpointFactory;
 import javax.transaction.xa.XAResource;
 import java.lang.reflect.Method;
-import org.apache.openejb.util.LogCategory;
 
 /**
  * @version $Rev$ $Date$
@@ -182,7 +182,6 @@ public class QuartzResourceAdapter imple
             Job job = (Job) endpoint;
 
             JobDataMap jobDataMap = spec.getDetail().getJobDataMap();
-            jobDataMap.setAllowsTransientData(true);
             jobDataMap.put(Data.class.getName(), new Data(job));
 
             scheduler.scheduleJob(spec.getDetail(), spec.getTrigger());
@@ -201,7 +200,7 @@ public class QuartzResourceAdapter imple
 
         try {
             spec = (JobSpec) activationSpec;
-            scheduler.deleteJob(spec.getJobName(), spec.getJobGroup());
+            scheduler.deleteJob(spec.jobKey());
 
         } catch (SchedulerException e) {
             throw new IllegalStateException("Failed to delete job", e);

Modified: openejb/trunk/openejb/examples/quartz-app/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/quartz-app/pom.xml?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/quartz-app/pom.xml (original)
+++ openejb/trunk/openejb/examples/quartz-app/pom.xml Sun Feb  5 20:27:46 2012
@@ -63,7 +63,7 @@
       <dependency>
         <groupId>org.quartz-scheduler</groupId>
         <artifactId>quartz</artifactId>
-        <version>1.8.4</version>
+        <version>2.1.3</version>
       </dependency>
       <dependency>
         <groupId>org.apache.openejb</groupId>

Modified: openejb/trunk/openejb/examples/quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java (original)
+++ openejb/trunk/openejb/examples/quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java Sun Feb  5 20:27:46 2012
@@ -18,11 +18,14 @@ package org.superbiz.quartz;
 
 import org.apache.openejb.resource.quartz.QuartzResourceAdapter;
 import org.quartz.Job;
+import org.quartz.JobBuilder;
 import org.quartz.JobDetail;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.quartz.Scheduler;
+import org.quartz.SimpleScheduleBuilder;
 import org.quartz.SimpleTrigger;
+import org.quartz.TriggerBuilder;
 
 import javax.ejb.Stateless;
 import javax.naming.InitialContext;
@@ -38,11 +41,17 @@ public class JobBean implements JobSched
         final Scheduler s = ra.getScheduler();
 
         //Add a job type
-        final JobDetail jd = new JobDetail("job1", "group1", JobBean.MyTestJob.class);
+        final JobDetail jd = JobBuilder.newJob(MyTestJob.class).withIdentity("job1", "group1").build();
         jd.getJobDataMap().put("MyJobKey", "MyJobValue");
 
         //Schedule my 'test' job to run now
-        final SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1", new Date());
+        final SimpleTrigger trigger = TriggerBuilder.newTrigger()
+                .withIdentity("trigger1", "group1")
+                .forJob(jd)
+                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
+                        .withRepeatCount(0)
+                        .withIntervalInSeconds(0))
+                .build();
         return s.scheduleJob(jd, trigger);
     }
 

Modified: openejb/trunk/openejb/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/pom.xml?rev=1240799&r1=1240798&r2=1240799&view=diff
==============================================================================
--- openejb/trunk/openejb/pom.xml (original)
+++ openejb/trunk/openejb/pom.xml Sun Feb  5 20:27:46 2012
@@ -134,7 +134,7 @@
 
     <bval.version>0.4-incubating-SNAPSHOT</bval.version>
     <org.apache.activemq.version>5.5.1</org.apache.activemq.version>
-    <quartz.version>1.8.5</quartz.version>
+    <quartz.version>2.1.3</quartz.version>
     <org.springframework.version>3.1.0.RELEASE</org.springframework.version>
     <junit.version>4.9</junit.version>
     <org.apache.axis2.version>1.4.1</org.apache.axis2.version>