SUGGESTED FIX
------- Date.java -------
*** /tmp/sccs.fraqIi Tue Nov 10 11:09:19 2009
--- Date.java Tue Nov 10 10:37:47 2009
***************
*** 85,109 ****
* JDBC date escape format (yyyy-mm-dd)
*/
public static Date valueOf(String s) {
! int year;
! int month;
! int day;
! int firstDash;
! int secondDash;
! if (s == null) throw new java.lang.IllegalArgumentException();
! firstDash = s.indexOf('-');
! secondDash = s.indexOf('-', firstDash+1);
! if ((firstDash > 0) & (secondDash > 0) & (secondDash < s.length()-1)) {
! year = Integer.parseInt(s.substring(0, firstDash)) - 1900;
! month = Integer.parseInt(s.substring(firstDash+1, secondDash)) - 1;
! day = Integer.parseInt(s.substring(secondDash+1));
! } else {
! throw new java.lang.IllegalArgumentException();
! }
!
! return new Date(year, month, day);
}
/**
--- 85,126 ----
* JDBC date escape format (yyyy-mm-dd)
*/
public static Date valueOf(String s) {
! final int YEAR_LENGTH = 4;
! final int MONTH_LENGTH = 2;
! final int DAY_LENGTH = 2;
! int year = 0;
! int month = 0;
! int day = 0;
! int firstDash;
! int secondDash;
! String mm;
! String dd;
! String yyyy;
! boolean parsedDate = false;
! if (s == null) {
! throw new java.lang.IllegalArgumentException();
! }
! firstDash = s.indexOf('-');
! secondDash = s.indexOf('-', firstDash+1);
! if ((firstDash > 0) && (secondDash > 0) && (secondDash < s.length()-1)) {
! yyyy = s.substring(0, firstDash);
! mm = s.substring(firstDash + 1, secondDash);
! dd = s.substring(secondDash + 1);
! if (yyyy.length() == YEAR_LENGTH && mm.length() == MONTH_LENGTH &&
! dd.length() == DAY_LENGTH) {
! year = Integer.parseInt(yyyy)- 1900;
! month = Integer.parseInt(mm) - 1;
! day = Integer.parseInt(dd);
! parsedDate = true;
! }
! }
!
! if (!parsedDate)
! throw new java.lang.IllegalArgumentException();
! else
! return new Date(year, month, day);
}
Diff from Lance.
|