Fixed day offset for the while loop instead of only modifying the original value before passing it into the next day method.
This commit is contained in:
@@ -94,9 +94,7 @@ public class CronSequenceGenerator {
|
||||
int minute = calendar.get(Calendar.MINUTE);
|
||||
int hour = calendar.get(Calendar.HOUR_OF_DAY);
|
||||
|
||||
// the DAY_OF_WEEK values in java.util.Calendar start with 1 (Sunday),
|
||||
// but in the cron pattern, they start with 0, so we subtract 1 here
|
||||
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
|
||||
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
|
||||
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
|
||||
int month = calendar.get(Calendar.MONTH);
|
||||
|
||||
@@ -118,7 +116,9 @@ public class CronSequenceGenerator {
|
||||
private int findNextDay(Calendar calendar, BitSet daysOfMonth, int dayOfMonth, BitSet daysOfWeek, int dayOfWeek,
|
||||
int max) {
|
||||
int count = 0;
|
||||
while ((!daysOfMonth.get(dayOfMonth) || !daysOfWeek.get(dayOfWeek)) && count++ < max) {
|
||||
// the DAY_OF_WEEK values in java.util.Calendar start with 1 (Sunday),
|
||||
// but in the cron pattern, they start with 0, so we subtract 1 here
|
||||
while ((!daysOfMonth.get(dayOfMonth) || !daysOfWeek.get(dayOfWeek - 1)) && count++ < max) {
|
||||
calendar.add(Calendar.DAY_OF_MONTH, 1);
|
||||
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
|
||||
dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
|
||||
|
||||
@@ -148,7 +148,7 @@ public class CronTriggerTests {
|
||||
@Test
|
||||
public void testIncrementDayOfWeekByOne() throws Exception {
|
||||
CronTrigger trigger = new CronTrigger("* * * * * 2");
|
||||
calendar.set(Calendar.DAY_OF_WEEK, 1);
|
||||
calendar.set(Calendar.DAY_OF_WEEK, 2);
|
||||
Date date = calendar.getTime();
|
||||
calendar.add(Calendar.DAY_OF_WEEK, 1);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
@@ -160,7 +160,7 @@ public class CronTriggerTests {
|
||||
@Test
|
||||
public void testIncrementDayOfWeekAndRollover() throws Exception {
|
||||
CronTrigger trigger = new CronTrigger("* * * * * 2");
|
||||
calendar.set(Calendar.DAY_OF_WEEK, 3);
|
||||
calendar.set(Calendar.DAY_OF_WEEK, 4);
|
||||
Date date = calendar.getTime();
|
||||
calendar.add(Calendar.DAY_OF_MONTH, 6);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
||||
Reference in New Issue
Block a user