Updated Branches: refs/heads/wicket-1.5.x a8ab5a454 -> fae7d3ce5
WICKET-4694 ClassCastException in SqlDateConverter Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/fae7d3ce Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/fae7d3ce Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/fae7d3ce Branch: refs/heads/wicket-1.5.x Commit: fae7d3ce50b62d96e9d9e67d8e1c900ea60896ab Parents: a8ab5a4 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Aug 6 13:20:00 2012 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Aug 6 13:20:37 2012 +0300 ---------------------------------------------------------------------- .../util/convert/converter/SqlDateConverter.java | 33 ++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/fae7d3ce/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/SqlDateConverter.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/SqlDateConverter.java b/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/SqlDateConverter.java index e2d4ae6..bbc5d2f 100644 --- a/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/SqlDateConverter.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/SqlDateConverter.java @@ -18,6 +18,8 @@ package org.apache.wicket.util.convert.converter; import java.sql.Date; import java.text.DateFormat; +import java.text.Format; +import java.text.ParsePosition; import java.util.Locale; import org.apache.wicket.util.string.Strings; @@ -40,7 +42,8 @@ public class SqlDateConverter extends AbstractConverter<Date> } else { - return new Date(parse(getDateFormat(locale), value, locale).getTime()); + java.util.Date date = parseDate(getDateFormat(locale), value, locale); + return new Date(date.getTime()); } } @@ -79,4 +82,32 @@ public class SqlDateConverter extends AbstractConverter<Date> { return Date.class; } + + /** + * Parses a value using one of the java.util.text format classes. + * + * @param format + * The format to use + * @param value + * The object to parse + * @param locale + * The locale to use to parse. + * @return The object + * @throws org.apache.wicket.util.convert.ConversionException + * Thrown if parsing fails + */ + @SuppressWarnings("unchecked") + private java.util.Date parseDate(final Format format, final Object value, final Locale locale) + { + final ParsePosition position = new ParsePosition(0); + final String stringValue = value.toString(); + final java.util.Date result = (java.util.Date)format.parseObject(stringValue, position); + + if (position.getIndex() != stringValue.length()) + { + throw newConversionException("Cannot parse '" + value + "' using format " + format, + value, locale).setFormat(format); + } + return result; + } }
