Author: djencks Date: Mon Jan 31 11:16:33 2005 New Revision: 149290 URL: http://svn.apache.org/viewcvs?view=rev&rev=149290 Log: add a smidgen of validation
Modified: geronimo/trunk/modules/timer/src/java/org/apache/geronimo/timer/ThreadPooledTimer.java Modified: geronimo/trunk/modules/timer/src/java/org/apache/geronimo/timer/ThreadPooledTimer.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/timer/src/java/org/apache/geronimo/timer/ThreadPooledTimer.java?view=diff&r1=149289&r2=149290 ============================================================================== --- geronimo/trunk/modules/timer/src/java/org/apache/geronimo/timer/ThreadPooledTimer.java (original) +++ geronimo/trunk/modules/timer/src/java/org/apache/geronimo/timer/ThreadPooledTimer.java Mon Jan 31 11:16:33 2005 @@ -84,11 +84,20 @@ } public WorkInfo schedule(UserTaskFactory userTaskFactory, String key, Object userId, Object userInfo, long delay) throws PersistenceException, RollbackException, SystemException { + if (delay < 0) { + throw new IllegalArgumentException("Negative delay: " + delay); + } Date time = new Date(System.currentTimeMillis() + delay); return schedule(key, userTaskFactory, userId, userInfo, time); } public WorkInfo schedule(String key, UserTaskFactory userTaskFactory, Object userId, Object userInfo, Date time) throws PersistenceException, RollbackException, SystemException { + if (time ==null) { + throw new IllegalArgumentException("No time supplied"); + } + if (time.getTime() < 0) { + throw new IllegalArgumentException("Negative time: " + time.getTime()); + } WorkInfo worker = createWorker(key, userTaskFactory, executorTaskFactory, userId, userInfo, time, null, false); registerSynchronization(new ScheduleSynchronization(worker.getExecutorFeedingTimerTask(), time)); addWorkInfo(worker); @@ -96,11 +105,26 @@ } public WorkInfo schedule(String key, UserTaskFactory userTaskFactory, Object userInfo, long delay, long period, Object userId) throws PersistenceException, RollbackException, SystemException { + if (delay < 0) { + throw new IllegalArgumentException("Negative delay: " + delay); + } + if (period < 0) { + throw new IllegalArgumentException("Negative period: " + period); + } Date time = new Date(System.currentTimeMillis() + delay); return schedule(key, userTaskFactory, userId, userInfo, time, period); } public WorkInfo schedule(String key, UserTaskFactory userTaskFactory, Object userId, Object userInfo, Date firstTime, long period) throws PersistenceException, RollbackException, SystemException { + if (firstTime ==null) { + throw new IllegalArgumentException("No time supplied"); + } + if (firstTime.getTime() < 0) { + throw new IllegalArgumentException("Negative time: " + firstTime.getTime()); + } + if (period < 0) { + throw new IllegalArgumentException("Negative period: " + period); + } WorkInfo worker = createWorker(key, userTaskFactory, executorTaskFactory, userId, userInfo, firstTime, new Long(period), false); registerSynchronization(new ScheduleRepeatedSynchronization(worker.getExecutorFeedingTimerTask(), firstTime, period)); addWorkInfo(worker); @@ -108,11 +132,26 @@ } public WorkInfo scheduleAtFixedRate(String key, UserTaskFactory userTaskFactory, Object userId, Object userInfo, long delay, long period) throws PersistenceException, RollbackException, SystemException { + if (delay < 0) { + throw new IllegalArgumentException("Negative delay: " + delay); + } + if (period < 0) { + throw new IllegalArgumentException("Negative period: " + period); + } Date time = new Date(System.currentTimeMillis() + delay); return scheduleAtFixedRate(key, userTaskFactory, userId, userInfo, time, period); } public WorkInfo scheduleAtFixedRate(String key, UserTaskFactory userTaskFactory, Object userId, Object userInfo, Date firstTime, long period) throws PersistenceException, RollbackException, SystemException { + if (firstTime ==null) { + throw new IllegalArgumentException("No time supplied"); + } + if (firstTime.getTime() < 0) { + throw new IllegalArgumentException("Negative time: " + firstTime.getTime()); + } + if (period < 0) { + throw new IllegalArgumentException("Negative period: " + period); + } WorkInfo worker = createWorker(key, userTaskFactory, executorTaskFactory, userId, userInfo, firstTime, new Long(period), true); registerSynchronization(new ScheduleAtFixedRateSynchronization(worker.getExecutorFeedingTimerTask(), firstTime, period)); addWorkInfo(worker); @@ -185,6 +224,9 @@ } private WorkInfo createWorker(String key, UserTaskFactory userTaskFactory, ExecutorTaskFactory executorTaskFactory, Object userId, Object userInfo, Date time, Long period, boolean atFixedRate) throws PersistenceException { + if (time == null) { + throw new IllegalArgumentException("Null initial time"); + } WorkInfo workInfo = new WorkInfo(key, userId, userInfo, time, period, atFixedRate); //save and assign id workerPersistence.save(workInfo);