You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by li...@apache.org on 2007/01/31 08:50:41 UTC
svn commit: r501757 - in /harmony/enhanced/classlib/trunk/modules/luni/src:
main/java/java/util/GregorianCalendar.java
test/java/tests/api/java/util/GregorianCalendarTest.java
Author: liangyx
Date: Tue Jan 30 23:50:40 2007
New Revision: 501757
URL: http://svn.apache.org/viewvc?view=rev&rev=501757
Log:
Apply patch for HARMONY-2947([classlib][luni]GregorianCalendar.getLeastMaximum(Calendar.WEEK_OF_YEAR) always return 50)
Modified:
harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/GregorianCalendar.java
harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java
Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/GregorianCalendar.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/GregorianCalendar.java?view=diff&rev=501757&r1=501756&r2=501757
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/GregorianCalendar.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/GregorianCalendar.java Tue Jan 30 23:50:40 2007
@@ -43,8 +43,10 @@
* Value for the AD era.
*/
public static final int AD = 1;
+
+ private static final long defaultGregorianCutover = -12219292800000l;
- private long gregorianCutover = -12219292800000l;
+ private long gregorianCutover = defaultGregorianCutover;
private transient int changeYear = 1582;
@@ -860,7 +862,7 @@
@Override
public int getActualMaximum(int field) {
int value;
- if ((value = getMaximum(field)) == getLeastMaximum(field)) {
+ if ((value = maximums[field]) == leastMaximums[field]) {
return value;
}
@@ -963,6 +965,16 @@
*/
@Override
public int getLeastMaximum(int field) {
+ // return value for WEEK_OF_YEAR should make corresponding changes when
+ // the gregorian change date have been reset.
+ if (gregorianCutover != defaultGregorianCutover
+ && field == WEEK_OF_YEAR) {
+ long currentTimeInMillis = time;
+ setTimeInMillis(gregorianCutover);
+ int actual = getActualMaximum(field);
+ setTimeInMillis(currentTimeInMillis);
+ return actual;
+ }
return leastMaximums[field];
}
Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java?view=diff&rev=501757&r1=501756&r2=501757
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java Tue Jan 30 23:50:40 2007
@@ -408,6 +408,14 @@
}
assertTrue("Wrong least max for " + result + " = " + values, result
.length() == 0);
+
+ // Regression test for harmony-2947
+ Date date = new Date(Date.parse("Jan 1 00:00:01 GMT 2000"));
+ gc = new GregorianCalendar();
+ gc.setGregorianChange(date);
+ gc.setTime(date);
+ assertEquals(gc.getActualMaximum(Calendar.WEEK_OF_YEAR), gc
+ .getLeastMaximum(Calendar.WEEK_OF_YEAR));
}
/**