You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/03/10 01:48:01 UTC
svn commit: r1080073 - in /wicket/trunk/wicket-datetime/src:
main/java/org/apache/wicket/datetime/DateConverter.java
test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
Author: ivaynberg
Date: Thu Mar 10 00:48:01 2011
New Revision: 1080073
URL: http://svn.apache.org/viewvc?rev=1080073&view=rev
Log:
WICKET-3510
Modified:
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
Modified: wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java?rev=1080073&r1=1080072&r2=1080073&view=diff
==============================================================================
--- wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java (original)
+++ wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java Thu Mar 10 00:48:01 2011
@@ -94,31 +94,27 @@ public abstract class DateConverter impl
if (applyTimeZoneDifference)
{
TimeZone zone = getClientTimeZone();
- // instantiate now/ current time
- MutableDateTime dt = new MutableDateTime(new DateMidnight());
- if (zone != null)
- {
- // set time zone for client
- format = format.withZone(DateTimeZone.forTimeZone(zone));
- dt.setZone(DateTimeZone.forTimeZone(zone));
- }
+ DateTime dateTime = null;
+
+ // set time zone for client
+ format = format.withZone(getTimeZone());
+
try
{
// parse date retaining the time of the submission
- int result = format.parseInto(dt, value, 0);
- if (result < 0)
- {
- throw new ConversionException(new ParseException("unable to parse date " +
- value, ~result));
- }
+ dateTime = format.parseDateTime(value);
}
catch (RuntimeException e)
{
throw new ConversionException(e);
}
// apply the server time zone to the parsed value
- dt.setZone(getTimeZone());
- return dt.toDate();
+ if (zone != null)
+ {
+ dateTime = dateTime.withZoneRetainFields(DateTimeZone.forTimeZone(zone));
+ }
+
+ return dateTime.toDate();
}
else
{
Modified: wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java?rev=1080073&r1=1080072&r2=1080073&view=diff
==============================================================================
--- wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java (original)
+++ wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java Thu Mar 10 00:48:01 2011
@@ -26,6 +26,7 @@ import java.util.TimeZone;
import org.apache.wicket.Page;
import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.datetime.StyleDateConverter;
import org.apache.wicket.extensions.yui.calendar.DateTimeField.AM_PM;
import org.apache.wicket.protocol.http.request.WebClientInfo;
import org.apache.wicket.util.tester.DiffUtil;
@@ -172,7 +173,13 @@ public class DatePickerTest extends Wick
// for more info see org.joda.time.DateTimeZone.getDefault()
assertSame(origJodaDef, newJodaDef);
}
-
+
+ /**
+ * Test date conversion with the server having a different current date than the client time
+ * zone.
+ *
+ * @throws ParseException
+ */
public void testDifferentDateTimeZoneConversion() throws ParseException
{
log.error("=========== testDifferentDateTimeZoneConversion() =================");
@@ -215,7 +222,35 @@ public class DatePickerTest extends Wick
DateTimeZone.setDefault(origJodaDef);
}
+ public void testStyleDateConverterTimeZoneDifference() throws ParseException
+ {
+ TimeZone origJvmDef = TimeZone.getDefault();
+ DateTimeZone origJodaDef = DateTimeZone.getDefault();
+ TimeZone tzClient = TimeZone.getTimeZone("Etc/GMT-14");
+ TimeZone tzServer = TimeZone.getTimeZone("Etc/GMT+12");
+
+ TimeZone.setDefault(tzServer);
+ DateTimeZone.setDefault(DateTimeZone.forTimeZone(tzServer));
+ Locale.setDefault(Locale.GERMAN);
+
+ WebClientInfo clientInfo = (WebClientInfo)tester.getSession().getClientInfo();
+ clientInfo.getProperties().setTimeZone(tzClient);
+
+ StyleDateConverter converter = new StyleDateConverter(true);
+
+ Calendar cal = Calendar.getInstance(tzClient);
+ cal.set(2011, 10, 5, 0, 0, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+
+ Date dateRef = cal.getTime();
+ Date date = converter.convertToObject("11/05/2011", Locale.GERMAN);
+ log.error("ref: " + dateRef.getTime() + "; converted: " + date.getTime());
+ log.error("ref: " + dateRef + "; date: " + date);
+ assertEquals(0, dateRef.compareTo(date));
+ TimeZone.setDefault(origJvmDef);
+ DateTimeZone.setDefault(origJodaDef);
+ }
/**
*
* @throws ParseException
@@ -544,4 +579,4 @@ public class DatePickerTest extends Wick
DiffUtil.validatePage(document, pageClass, filename, true);
}
-}
\ No newline at end of file
+}