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;
+       }
 }

Reply via email to