From b682ce4dfbf076342f77ae99f55cb3b25811d5c4 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Thu, 16 Apr 2009 15:13:59 +0000
Subject: [PATCH] - [Issues 3842/3770] validate recurring task day against the actual maximum of a given calendar instance.

---
 opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java                               |    4 +++-
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/task/TaskBackendTestCase.java |    6 +++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java
index bffe9db..7f8888c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java
@@ -640,7 +640,9 @@
           }
           day = getNextTimeSlice(daysArray,
             calendar.get(GregorianCalendar.DAY_OF_MONTH));
-          if (day == -1) {
+          if ((day == -1) || (day > calendar.getActualMaximum(
+                              GregorianCalendar.DAY_OF_MONTH)))
+          {
             calendar.set(GregorianCalendar.DAY_OF_MONTH, 1);
             calendar.add(GregorianCalendar.MONTH, 1);
           } else {
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/task/TaskBackendTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/task/TaskBackendTestCase.java
index 1a05f9f..9cd65d9 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/task/TaskBackendTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/task/TaskBackendTestCase.java
@@ -453,10 +453,10 @@
         { "* 0 * * *",     true },
         { "* 0-23 * * *",  true },
         { "* 0,23 * * *",  true },
-        // { "* * 31 * *",    true }, *** FIXME: this should work ***
+        { "* * 31 * *",    true },
         { "* * 1 * *",     true },
         { "* * 1-31 * *",  true },
-        // { "* * 1,31 * *",  true }, *** FIXME: this should work ***
+        { "* * 1,31 * *",  true },
         { "* * * 12 *",    true },
         { "* * * 1 *",     true },
         { "* * * 1-12 *",  true },
@@ -464,7 +464,7 @@
         { "* * * * 6",     true },
         { "* * * * 0",     true },
         { "* * * * 0-6",   true },
-        { "* * * * 0,6",   true },
+        { "* * * * 0,6",   true }
     };
   }
 

--
Gitblit v1.10.0