Repository: wicket
Updated Branches:
  refs/heads/WICKET-6105-java.time 3dc016119 -> 06655a6b0


More tests are added some issues are fixed


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

Branch: refs/heads/WICKET-6105-java.time
Commit: 06655a6b0b7f5eca53499a8f7f5c9bd4c2c9d83b
Parents: 3dc01611
Author: Maxim Solodovnik <[email protected]>
Authored: Fri Oct 6 12:15:28 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Fri Oct 6 12:15:28 2017 +0700

----------------------------------------------------------------------
 .../form/datetime/AbstractDateTimeField.java    | 22 ++++---
 .../html/form/datetime/DateTimeField.java       | 12 +---
 .../html/form/datetime/ZonedDateTimeField.java  | 10 +--
 .../html/form/datetime/DateTimeFieldTest.java   | 64 ++++++++++++++++++++
 4 files changed, 81 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/06655a6b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/AbstractDateTimeField.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/AbstractDateTimeField.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/AbstractDateTimeField.java
index 5ec27a6..8b6f85d 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/AbstractDateTimeField.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/AbstractDateTimeField.java
@@ -137,18 +137,18 @@ abstract class AbstractDateTimeField<T extends Temporal> 
extends FormComponentPa
                try
                {
                        // Get the converted input values
-                       LocalDate localDate = dateField.getConvertedInput();
+                       LocalDate date = dateField.getConvertedInput();
+                       LocalTime time = timeField.getConvertedInput();
 
-                       if (localDate == null)
+                       if (date == null || time == null)
                        {
-                               return;
+                               setConvertedInput(null);
+                       }
+                       else
+                       {
+                               // Use the input to create proper date-time
+                               setConvertedInput(performConvert(date, time));
                        }
-
-                       // Use the input to create a date object with proper 
timezone
-                       LocalTime localTime = timeField.getConvertedInput();
-
-                       // The date will be in the server's timezone
-                       setConvertedInput(performConvert(localDate, localTime));
                }
                catch (RuntimeException e)
                {
@@ -159,7 +159,9 @@ abstract class AbstractDateTimeField<T extends Temporal> 
extends FormComponentPa
 
        abstract T performConvert(LocalDate date, LocalTime time);
 
-       abstract void prepareObject();
+       void prepareObject() {
+               // no-op by default
+       }
 
        /**
         * create a new {@link DateField} instance to be added to this panel.

http://git-wip-us.apache.org/repos/asf/wicket/blob/06655a6b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
index 8ff825a..bc4801c 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeField.java
@@ -90,17 +90,9 @@ public class DateTimeField extends 
AbstractDateTimeField<LocalDateTime>
                return LocalDateTime.of(date, time);
        }
 
-       @Override
-       void prepareObject() {
-               if (getModelObject() == null)
-               {
-                       dateTime = null;
-               }
-       }
-
        LocalDate getLocalDate()
        {
-               return dateTime.toLocalDate();
+               return getModelObject() == null ? null : dateTime.toLocalDate();
        }
 
        void setLocalDate(LocalDate date)
@@ -112,7 +104,7 @@ public class DateTimeField extends 
AbstractDateTimeField<LocalDateTime>
 
        LocalTime getLocalTime()
        {
-               return dateTime.toLocalTime();
+               return getModelObject() == null ? null : dateTime.toLocalTime();
        }
 
        void setLocalTime(LocalTime time)

http://git-wip-us.apache.org/repos/asf/wicket/blob/06655a6b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeField.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeField.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeField.java
index a6814f8..eb70e12 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeField.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/datetime/ZonedDateTimeField.java
@@ -114,11 +114,7 @@ public class ZonedDateTimeField extends 
AbstractDateTimeField<ZonedDateTime>
        @Override
        void prepareObject() {
                ZonedDateTime modelObject = getModelObject();
-               if (modelObject == null)
-               {
-                       dateTime = null;
-               }
-               else
+               if (modelObject != null)
                {
                        // convert date to the client's time zone if we have 
that info
                        ZoneId zone = getClientTimeZone();
@@ -131,7 +127,7 @@ public class ZonedDateTimeField extends 
AbstractDateTimeField<ZonedDateTime>
 
        LocalDate getLocalDate()
        {
-               return dateTime.toLocalDate();
+               return getModelObject() == null ? null : dateTime.toLocalDate();
        }
 
        void setLocalDate(LocalDate date)
@@ -143,7 +139,7 @@ public class ZonedDateTimeField extends 
AbstractDateTimeField<ZonedDateTime>
 
        LocalTime getLocalTime()
        {
-               return dateTime.toLocalTime();
+               return getModelObject() == null ? null : dateTime.toLocalTime();
        }
 
        void setLocalTime(LocalTime time)

http://git-wip-us.apache.org/repos/asf/wicket/blob/06655a6b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeFieldTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeFieldTest.java
 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeFieldTest.java
index 3b167e4..753e98e 100644
--- 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeFieldTest.java
+++ 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/datetime/DateTimeFieldTest.java
@@ -18,6 +18,7 @@ package 
org.apache.wicket.extensions.markup.html.form.datetime;
 
 import java.io.Serializable;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.Locale;
 
@@ -104,6 +105,69 @@ public class DateTimeFieldTest extends WicketTestCase {
                assertEquals(date, d);
        }
 
+       @Test
+       public void dateTimeNullTest() {
+               TestDateTimePage page = new TestDateTimePage(null);
+               tester.startPage(page);
+               FormTester formTester = tester.newFormTester("form", false);
+               formTester.submit();
+               assertNull(page.field.getModelObject());
+       }
+
+       @Test
+       public void dateTimeNullTest1() {
+               LocalDate date = LocalDate.of(2017, 02, 13);
+               TestDateTimePage page = new TestDateTimePage(null);
+               tester.startPage(page);
+               FormTester formTester = tester.newFormTester("form", false);
+               formTester.setValue("field:date", new 
StyleDateConverter("F").convertToString(date, Locale.forLanguageTag("en-US")));
+               formTester.submit();
+               assertNull(page.field.getModelObject());
+       }
+
+       @Test
+       public void dateTimeNullTest2() {
+               TestDateTimePage page = new TestDateTimePage(null);
+               tester.startPage(page);
+               FormTester formTester = tester.newFormTester("form", false);
+               formTester.setValue("field:time:hours", "6");
+               formTester.setValue("field:time:minutes", "15");
+               formTester.select("field:time:amOrPmChoice", 0);
+               formTester.submit();
+               assertNull(page.field.getModelObject());
+       }
+
+       @Test
+       public void dateTimeNotNullTest() {
+               LocalDate date = LocalDate.of(2017, 02, 13);
+               TestDateTimePage page = new TestDateTimePage(null);
+               tester.startPage(page);
+               FormTester formTester = tester.newFormTester("form", false);
+               formTester.setValue("field:date", new 
StyleDateConverter("S").convertToString(date, Locale.forLanguageTag("en-US")));
+               formTester.setValue("field:time:hours", "6");
+               formTester.setValue("field:time:minutes", "15");
+               formTester.select("field:time:amOrPmChoice", 0);
+               formTester.submit();
+               assertNotNull(page.field.getModelObject());
+               assertEquals(LocalDateTime.of(date, LocalTime.of(6,  15)), 
page.field.getModelObject());
+       }
+
+       public static class TestDateTimePage extends TestPage<LocalDateTime>
+       {
+               private static final long serialVersionUID = 1L;
+
+               TestDateTimePage(LocalDateTime val)
+               {
+                       super(val);
+               }
+
+               @Override
+               FormComponent<LocalDateTime> newComponent()
+               {
+                       return new DateTimeField("field", model);
+               }
+       }
+
        public static class TestDatePage extends TestPage<LocalDate>
        {
                private static final long serialVersionUID = 1L;

Reply via email to