Author: niallp
Date: Thu Jul 12 07:25:21 2007
New Revision: 555641
URL: http://svn.apache.org/viewvc?view=rev&rev=555641
Log:
BEANUTILS-271 - DateLocaleConverter does not always throw an Exception for
invalid dates - thanks to Nico Hoogervorst
Modified:
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/DateLocaleConverter.java
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/DateLocaleConverterTestCase.java
Modified:
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/DateLocaleConverter.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/DateLocaleConverter.java?view=diff&rev=555641&r1=555640&r2=555641
==============================================================================
---
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/DateLocaleConverter.java
(original)
+++
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/DateLocaleConverter.java
Thu Jul 12 07:25:21 2007
@@ -17,11 +17,13 @@
package org.apache.commons.beanutils.locale.converters;
+import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.locale.BaseLocaleConverter;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import java.text.ParseException;
+import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
@@ -268,7 +270,17 @@
// Parse the Date
- return formatter.parse((String) value);
+ ParsePosition pos = new ParsePosition(0);
+ String strValue = value.toString();
+ Object parsedValue = formatter.parseObject(strValue, pos);
+ if (pos.getErrorIndex() > -1) {
+ throw new ConversionException("Error parsing date '" + value + "'
at position="+ pos.getErrorIndex());
+ }
+ if (pos.getIndex() < strValue.length()) {
+ throw new ConversionException("Date '" + value + "' contains
unparsed characters from position=" + pos.getIndex());
+ }
+
+ return parsedValue;
}
/**
Modified:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/DateLocaleConverterTestCase.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/DateLocaleConverterTestCase.java?view=diff&rev=555641&r1=555640&r2=555641
==============================================================================
---
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/DateLocaleConverterTestCase.java
(original)
+++
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/DateLocaleConverterTestCase.java
Thu Jul 12 07:25:21 2007
@@ -409,5 +409,26 @@
}
+ /**
+ * Test invalid date
+ */
+ public void testInvalidDate() {
+
+ converter = new DateLocaleConverter(defaultLocale);
+
+ try {
+ converter.convert("01/10/2004", "dd-MM-yyyy");
+ } catch (ConversionException e) {
+ assertEquals("Parse Error", "Error parsing date '01/10/2004' at
position=2", e.getMessage());
+ }
+
+ try {
+ converter.convert("01-10-2004X", "dd-MM-yyyy");
+ } catch (ConversionException e) {
+ assertEquals("Parse Length", "Date '01-10-2004X' contains unparsed
characters from position=10", e.getMessage());
+ }
+
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]