diff --git a/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToLocale.java b/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToLocale.java new file mode 100644 index 00000000..dffcd757 --- /dev/null +++ b/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToLocale.java @@ -0,0 +1,42 @@ +/* + * Copyright 2004-2008 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.binding.convert.converters; + +import java.util.Locale; + +import org.springframework.util.StringUtils; + +/** + * Converts a String to a Locale using {@link StringUtils#parseLocaleString(String)}. + * + * @author Keith Donald + */ +public class StringToLocale extends StringToObject { + + public StringToLocale() { + super(Locale.class); + } + + public Object toObject(String string, Class objectClass) throws Exception { + return StringUtils.parseLocaleString(string); + } + + public String toString(Object object) throws Exception { + Locale locale = (Locale) object; + return locale.toString(); + } + +} \ No newline at end of file diff --git a/spring-binding/src/main/java/org/springframework/binding/convert/service/DefaultConversionService.java b/spring-binding/src/main/java/org/springframework/binding/convert/service/DefaultConversionService.java index bce4f67b..21b22958 100644 --- a/spring-binding/src/main/java/org/springframework/binding/convert/service/DefaultConversionService.java +++ b/spring-binding/src/main/java/org/springframework/binding/convert/service/DefaultConversionService.java @@ -31,6 +31,7 @@ import org.springframework.binding.convert.converters.StringToDouble; import org.springframework.binding.convert.converters.StringToFloat; import org.springframework.binding.convert.converters.StringToInteger; import org.springframework.binding.convert.converters.StringToLabeledEnum; +import org.springframework.binding.convert.converters.StringToLocale; import org.springframework.binding.convert.converters.StringToLong; import org.springframework.binding.convert.converters.StringToShort; import org.springframework.core.enums.LabeledEnum; @@ -72,6 +73,7 @@ public class DefaultConversionService extends GenericConversionService { addConverter(new StringToBigDecimal()); addConverter(new StringToClass()); addConverter(new StringToLabeledEnum()); + addConverter(new StringToLocale()); addConverter(new StringToDate()); } diff --git a/spring-binding/src/test/java/org/springframework/binding/convert/service/StaticConversionExecutorImplTests.java b/spring-binding/src/test/java/org/springframework/binding/convert/service/StaticConversionExecutorImplTests.java index 8c6fa4ca..aca83925 100644 --- a/spring-binding/src/test/java/org/springframework/binding/convert/service/StaticConversionExecutorImplTests.java +++ b/spring-binding/src/test/java/org/springframework/binding/convert/service/StaticConversionExecutorImplTests.java @@ -27,11 +27,12 @@ public class StaticConversionExecutorImplTests extends TestCase { private StaticConversionExecutor conversionExecutor; protected void setUp() throws Exception { - conversionExecutor = new StaticConversionExecutor(String.class, Date.class, new StringToDate()); + StringToDate stringToDate = new StringToDate(); + conversionExecutor = new StaticConversionExecutor(String.class, Date.class, stringToDate); } public void testTypeConversion() { - assertTrue(conversionExecutor.execute("10-10-2008").getClass().equals(Date.class)); + assertTrue(conversionExecutor.execute("2008-10-10").getClass().equals(Date.class)); } public void testAssignmentCompatibleTypeConversion() {