You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by so...@apache.org on 2017/10/06 05:15:37 UTC

wicket git commit: More tests are added some issues are fixed

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 <so...@gmail.com>
Authored: Fri Oct 6 12:15:28 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
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;