You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Matthias Weßendorf (JIRA)" <de...@myfaces.apache.org> on 2005/12/19 20:20:31 UTC

[jira] Resolved: (MYFACES-934) Parsing UserData in org.apache.myfaces.custom.date.HtmlInputDate.UserData throws java.lang.NumberFormatException, not java.text.ParseException

     [ http://issues.apache.org/jira/browse/MYFACES-934?page=all ]
     
Matthias Weßendorf resolved MYFACES-934:
----------------------------------------

    Resolution: Fixed

fixed nbuild

> Parsing UserData in org.apache.myfaces.custom.date.HtmlInputDate.UserData throws java.lang.NumberFormatException, not java.text.ParseException
> ----------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: MYFACES-934
>          URL: http://issues.apache.org/jira/browse/MYFACES-934
>      Project: MyFaces
>         Type: Bug
>   Components: Tomahawk
>     Versions: 1.1.1, Nightly
>  Environment: windows, java 1.5.0_05, tomcat 5.5
>     Reporter: Ulf Helmke
>     Priority: Minor

>
> Hello,
> The UserData.parse method declares to throw aParseException. But it never throws a ParseException, the Integer.parseInt throws a NumberFormatException instead:
>         public Date parse() throws ParseException{
>             Calendar tempCalendar=Calendar.getInstance();
>             if (timeZone != null)
>                    tempCalendar.setTimeZone(timeZone);
>             
>             tempCalendar.set(Calendar.DAY_OF_MONTH,Integer.parseInt(day));
>             tempCalendar.set(Calendar.MONTH,Integer.parseInt(month)-1);
>             tempCalendar.set(Calendar.YEAR,Integer.parseInt(year));
>             if (uses_ampm) {
>             	int int_hours = Integer.parseInt(hours);
>             	// ampm hours must be in range 0-11 to be handled right; we have to handle "12" specially
>             	if (int_hours == 12) {
>         			int_hours = 0;
>             	}
>             	tempCalendar.set(Calendar.HOUR,int_hours);
>                 tempCalendar.set(Calendar.AM_PM,Integer.parseInt(ampm));
>             } else {
>             	tempCalendar.set(Calendar.HOUR_OF_DAY,Integer.parseInt(hours));
>             }
>             tempCalendar.set(Calendar.MINUTE,Integer.parseInt(minutes));
>             tempCalendar.set(Calendar.SECOND,Integer.parseInt(seconds));
>             tempCalendar.set(Calendar.MILLISECOND, 0);
>             
>             return tempCalendar.getTime();
>         }
>  The most simple approach to solve it: Catch the NumberFormatException inside the parse method and throw a new ParseException:
>         public Date parse() throws ParseException{
>             Calendar tempCalendar=Calendar.getInstance();
>             if (timeZone != null)
>                    tempCalendar.setTimeZone(timeZone);
>             
>             try {
> 				tempCalendar.set(Calendar.DAY_OF_MONTH,Integer.parseInt(day));
> 				tempCalendar.set(Calendar.MONTH,Integer.parseInt(month)-1);
> 				tempCalendar.set(Calendar.YEAR,Integer.parseInt(year));
> 				if (uses_ampm) {
> 					int int_hours = Integer.parseInt(hours);
> 					// ampm hours must be in range 0-11 to be handled right; we have to handle "12" specially
> 					if (int_hours == 12) {
> 						int_hours = 0;
> 					}
> 					tempCalendar.set(Calendar.HOUR,int_hours);
> 				    tempCalendar.set(Calendar.AM_PM,Integer.parseInt(ampm));
> 				} else {
> 					tempCalendar.set(Calendar.HOUR_OF_DAY,Integer.parseInt(hours));
> 				}
> 				tempCalendar.set(Calendar.MINUTE,Integer.parseInt(minutes));
> 				tempCalendar.set(Calendar.SECOND,Integer.parseInt(seconds));
> 				tempCalendar.set(Calendar.MILLISECOND, 0);
> 			} catch (NumberFormatException e) {
> 				throw new ParseException(e.getMessage(),0);
> 			}
>             
>             return tempCalendar.getTime();
>         }
> It would be a good idea to write some new tests. The existing Tests do not deal with invalid form data.
> Greetings Ulf

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira