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