Comprehensive update to the framework's TimeZone handling, including a new TimeZoneAwareLocaleContext and a LocaleContextResolver for Spring MVC

A few noteworthy minor changes: LocaleContext.getLocale() may return null in special cases (not by default), which our own accessing classes are able to handle now. If there is a non-null TimeZone user setting, we're exposing it to all collaborating libraries, in particular to JSTL, Velocity and JasperReports. Our JSR-310 and Joda-Time support falls back to checking the general LocaleContext TimeZone now, adapting it to their time zone types, if no more specific setting has been provided. Our DefaultConversionService has TimeZone<->ZoneId converters registered. And finally, we're using a custom parseTimeZoneString method now that doesn't accept the TimeZone.getTimeZone(String) GMT fallback for an invalid time zone id anymore.

Issue: SPR-1528
This commit is contained in:
Juergen Hoeller
2013-10-04 23:14:08 +02:00
parent 52cca48f40
commit 4574528a27
35 changed files with 1570 additions and 270 deletions

View File

@@ -0,0 +1,63 @@
/*
* Copyright 2002-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.beans.propertyeditors;
import java.time.ZoneId;
import junit.framework.TestCase;
/**
* @author Nicholas Williams
*/
public class ZoneIdEditorTests extends TestCase {
public void testAmericaChicago() {
ZoneIdEditor editor = new ZoneIdEditor();
editor.setAsText("America/Chicago");
ZoneId zoneId = (ZoneId) editor.getValue();
assertNotNull("The zone ID should not be null.", zoneId);
assertEquals("The zone ID is not correct.", ZoneId.of("America/Chicago"), zoneId);
assertEquals("The text version is not correct.", "America/Chicago", editor.getAsText());
}
public void testAmericaLosAngeles() {
ZoneIdEditor editor = new ZoneIdEditor();
editor.setAsText("America/Los_Angeles");
ZoneId zoneId = (ZoneId) editor.getValue();
assertNotNull("The zone ID should not be null.", zoneId);
assertEquals("The zone ID is not correct.", ZoneId.of("America/Los_Angeles"), zoneId);
assertEquals("The text version is not correct.", "America/Los_Angeles", editor.getAsText());
}
public void testGetNullAsText() {
ZoneIdEditor editor = new ZoneIdEditor();
assertEquals("The returned value is not correct.", "", editor.getAsText());
}
public void testGetValueAsText() {
ZoneIdEditor editor = new ZoneIdEditor();
editor.setValue(ZoneId.of("America/New_York"));
assertEquals("The text version is not correct.", "America/New_York", editor.getAsText());
}
}