summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2007-04-13 13:05:39 +0000
committerGary Benson <gbenson@redhat.com>2007-04-13 13:05:39 +0000
commitcfa2da67d8f8895f68d19423d5d379cf72038a93 (patch)
tree08df523e5bfaac3ae123c5577b23adab1ee81b69
parent277ab50eee16c2b33bee4c1f203ed9ba13da5a73 (diff)
downloadclasspath-cfa2da67d8f8895f68d19423d5d379cf72038a93.tar.gz
2007-04-13 Gary Benson <gbenson@redhat.com>
* java/util/GregorianCalendar.java (defaults): Moved from within setDefaultFields. (setDefaultFields): Only set fields that are undefined.
-rw-r--r--ChangeLog6
-rw-r--r--java/util/GregorianCalendar.java26
2 files changed, 25 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 94c219149..e6f621912 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2007-04-13 Gary Benson <gbenson@redhat.com>
+ * java/util/GregorianCalendar.java
+ (defaults): Moved from within setDefaultFields.
+ (setDefaultFields): Only set fields that are undefined.
+
+2007-04-13 Gary Benson <gbenson@redhat.com>
+
* java/util/Calendar.java
(clear): Do not call complete.
diff --git a/java/util/GregorianCalendar.java b/java/util/GregorianCalendar.java
index 8cfadc3d4..bd5e6897b 100644
--- a/java/util/GregorianCalendar.java
+++ b/java/util/GregorianCalendar.java
@@ -495,18 +495,30 @@ public class GregorianCalendar extends Calendar
throw new IllegalArgumentException("Illegal DST_OFFSET.");
}
+ // Default values for all fields, except DAY_OF_WEEK which
+ // defaults to getFirstDayOfWeek(). Note that according to
+ // the spec DAY_OF_WEEK_IN_MONTH defaults to 1, but Sun set
+ // it to 0 so we do too.
+ private int[] defaults = {
+ AD, 1970, JANUARY, 0, 0, 1, 0, -1, 0, AM, 0, 0, 0, 0, 0, 0, 0
+ };
+
/**
* Set all fields to their default values.
*/
private void setDefaultFields()
{
- // According to the spec DAY_OF_WEEK_IN_MONTH defaults to 1,
- // but Sun set it to 0 so we do too.
- int[] defaults = {
- AD, 1970, JANUARY, 0, 0, 1, 0, -1, 0, AM, 0, 0, 0, 0, 0, 0, 0
- };
- System.arraycopy(defaults, 0, fields, 0, FIELD_COUNT);
- fields[DAY_OF_WEEK] = getFirstDayOfWeek();
+ for (int i = 0; i < FIELD_COUNT; i++)
+ {
+ if (isSet[i])
+ continue;
+
+ if (i == DAY_OF_WEEK)
+ fields[i] = getFirstDayOfWeek();
+ else
+ fields[i] = defaults[i];
+ }
+
// It seems odd that a call to computeTime() should cause
// areFieldsSet to become true, but that's what Sun do...
areFieldsSet = true;