Repository: wicket
Updated Branches:
  refs/heads/WICKET-6105-java.time 11ef5c489 -> 9ab8f47a9


Date-time tests are fixed


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/9ab8f47a
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/9ab8f47a
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/9ab8f47a

Branch: refs/heads/WICKET-6105-java.time
Commit: 9ab8f47a980e9cd472bf731bb6496d276ee8db7a
Parents: 11ef5c4
Author: Maxim Solodovnik <[email protected]>
Authored: Sat Sep 23 12:38:05 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Sat Sep 23 12:38:05 2017 +0700

----------------------------------------------------------------------
 .../html/form/datetime/DateConverter.java       | 35 +++++++--------
 .../html/form/datetime/StyleDateConverter.java  | 47 ++++++++++++++++++--
 2 files changed, 59 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/9ab8f47a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateConverter.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateConverter.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateConverter.java
index ce9f6f2..e667b9e 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateConverter.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateConverter.java
@@ -65,6 +65,18 @@ public abstract class DateConverter implements 
IConverter<ZonedDateTime>
                this.applyTimeZoneDifference = applyTimeZoneDifference;
        }
 
+       protected ZonedDateTime convertToObject(String value, DateTimeFormatter 
format, Locale locale) {
+               try
+               {
+                       // parse date retaining the time of the submission
+                       return ZonedDateTime.parse(value, format);
+               }
+               catch (RuntimeException e)
+               {
+                       throw newConversionException(e, locale);
+               }
+       }
+
        @Override
        public ZonedDateTime convertToObject(String value, Locale locale)
        {
@@ -79,20 +91,11 @@ public abstract class DateConverter implements 
IConverter<ZonedDateTime>
                if (applyTimeZoneDifference)
                {
                        ZoneId zoneId = getClientTimeZone();
-                       ZonedDateTime dateTime;
 
                        // set time zone for client
                        format = format.withZone(getTimeZone());
 
-                       try
-                       {
-                               // parse date retaining the time of the 
submission
-                               dateTime = ZonedDateTime.parse(value, format);
-                       }
-                       catch (RuntimeException e)
-                       {
-                               throw newConversionException(e, locale);
-                       }
+                       ZonedDateTime dateTime = convertToObject(value, format, 
locale);
                        // apply the server time zone to the parsed value
                        if (zoneId != null)
                        {
@@ -103,15 +106,7 @@ public abstract class DateConverter implements 
IConverter<ZonedDateTime>
                }
                else
                {
-                       try
-                       {
-                               ZonedDateTime dateTime = 
ZonedDateTime.parse(value);
-                               return dateTime;
-                       }
-                       catch (RuntimeException e)
-                       {
-                               throw newConversionException(e, locale);
-                       }
+                       return convertToObject(value, format, locale);
                }
        }
 
@@ -124,7 +119,7 @@ public abstract class DateConverter implements 
IConverter<ZonedDateTime>
         *            - {@link Locale} used to set 'format' variable with 
localized pattern
         * @return {@link ConversionException}
         */
-       private ConversionException newConversionException(RuntimeException 
cause, Locale locale)
+       ConversionException newConversionException(RuntimeException cause, 
Locale locale)
        {
                return new ConversionException(cause)
                                .setVariable("format", getDatePattern(locale));

http://git-wip-us.apache.org/repos/asf/wicket/blob/9ab8f47a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleDateConverter.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleDateConverter.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleDateConverter.java
index 4e6a754..574eaf2 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleDateConverter.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/StyleDateConverter.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.extensions.markup.html.form.datetime;
 
+import java.time.LocalDate;
+import java.time.ZonedDateTime;
 import java.time.chrono.IsoChronology;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatterBuilder;
@@ -115,13 +117,52 @@ public class StyleDateConverter extends DateConverter
        @Override
        public DateTimeFormatter getFormat(Locale locale)
        {
-               return (timeStyle == null 
-                               ? 
DateTimeFormatter.ofLocalizedDateTime(dateStyle) 
-                               : 
DateTimeFormatter.ofLocalizedDateTime(dateStyle, timeStyle)).withLocale(locale);
+               DateTimeFormatter df = null;
+               if (dateStyle == null && timeStyle == null) {
+                       return df;
+               }
+               if (timeStyle == null)
+               {
+                       df = DateTimeFormatter.ofLocalizedDate(dateStyle);
+               }
+               else if (dateStyle == null)
+               {
+                       df = DateTimeFormatter.ofLocalizedTime(timeStyle);
+               }
+               else
+               {
+                       df = DateTimeFormatter.ofLocalizedDateTime(dateStyle, 
timeStyle);
+               }
+               return df.withLocale(locale);
        }
 
        public static FormatStyle parseFormatStyle(char style)
        {
                return DateTextField.parseFormatStyle(style);
        }
+
+       @Override
+       protected ZonedDateTime convertToObject(String value, DateTimeFormatter 
format, Locale locale) {
+               if (format == null) {
+                       return null;
+               }
+               try
+               {
+                       if (timeStyle == null)
+                       {
+                               LocalDate d = LocalDate.parse(value, format);
+                               return ZonedDateTime.of(d.atStartOfDay(), 
getTimeZone());
+                       }
+                       else if (dateStyle == null)
+                       {
+                               // not sure how we can get ZonedDateTime from 
time
+                               return null;
+                       }
+                       return super.convertToObject(value, format, locale);
+               }
+               catch (RuntimeException e)
+               {
+                       throw newConversionException(e, locale);
+               }
+       }
 }

Reply via email to