diff --git a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ResourceBundleEditor.java b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ResourceBundleEditor.java index 7a827c9481..3a95ef51ef 100644 --- a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ResourceBundleEditor.java +++ b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ResourceBundleEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -24,14 +24,13 @@ import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** - * {@link java.beans.PropertyEditor} implementation for + * {@link java.beans.PropertyEditor} implementation for standard JDK * {@link java.util.ResourceBundle ResourceBundles}. * - *
Only supports conversion from a String, but not - * to a String. + *
Only supports conversion from a String, but not to a String. * - * Find below some examples of using this class in a - * (properly configured) Spring container using XML-based metadata: + * Find below some examples of using this class in a (properly configured) + * Spring container using XML-based metadata: * *
<bean id="errorDialog" class="..."> * <!-- @@ -68,13 +67,14 @@ import org.springframework.util.StringUtils; *Thanks to David Leal Valmana for the suggestion and initial prototype. * * @author Rick Evans + * @author Juergen Hoeller * @since 2.0 */ public class ResourceBundleEditor extends PropertyEditorSupport { /** - * The separator used to distinguish between the base name and the - * locale (if any) when {@link #setAsText(String) converting from a String}. + * The separator used to distinguish between the base name and the locale + * (if any) when {@link #setAsText(String) converting from a String}. */ public static final String BASE_NAME_SEPARATOR = "_"; @@ -82,25 +82,23 @@ public class ResourceBundleEditor extends PropertyEditorSupport { @Override public void setAsText(String text) throws IllegalArgumentException { Assert.hasText(text, "'text' must not be empty"); - ResourceBundle bundle; - String rawBaseName = text.trim(); - int indexOfBaseNameSeparator = rawBaseName.indexOf(BASE_NAME_SEPARATOR); - if (indexOfBaseNameSeparator == -1) { - bundle = ResourceBundle.getBundle(rawBaseName); + String name = text.trim(); + + int separator = name.indexOf(BASE_NAME_SEPARATOR); + if (separator == -1) { + setValue(ResourceBundle.getBundle(name)); } else { - // it potentially has locale information - String baseName = rawBaseName.substring(0, indexOfBaseNameSeparator); + // Tge basename potentially has locale information + String baseName = name.substring(0, separator); if (!StringUtils.hasText(baseName)) { - throw new IllegalArgumentException("Bad ResourceBundle name : received '" + text + "' as argument to 'setAsText(String value)'."); + throw new IllegalArgumentException("Invalid ResourceBundle name: '" + text + "'"); } - String localeString = rawBaseName.substring(indexOfBaseNameSeparator + 1); + String localeString = name.substring(separator + 1); Locale locale = StringUtils.parseLocaleString(localeString); - bundle = (StringUtils.hasText(localeString)) - ? ResourceBundle.getBundle(baseName, locale) - : ResourceBundle.getBundle(baseName); + setValue((StringUtils.hasText(localeString)) ? ResourceBundle.getBundle(baseName, locale) : + ResourceBundle.getBundle(baseName)); } - setValue(bundle); } } diff --git a/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ResourceBundleEditorTests.java b/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ResourceBundleEditorTests.java index c6659d113e..20b688fad4 100644 --- a/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ResourceBundleEditorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ResourceBundleEditorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 the original author or authors. + * Copyright 2002-2015 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. @@ -28,9 +28,10 @@ import static org.junit.Assert.*; * @author Rick Evans * @author Chris Beams */ -public final class ResourceBundleEditorTests { +public class ResourceBundleEditorTests { private static final String BASE_NAME = ResourceBundleEditorTests.class.getName(); + private static final String MESSAGE_KEY = "punk"; @@ -94,25 +95,25 @@ public final class ResourceBundleEditorTests { assertEquals("ned", string); } - @Test(expected=IllegalArgumentException.class) + @Test(expected = IllegalArgumentException.class) public void testSetAsTextWithNull() throws Exception { ResourceBundleEditor editor = new ResourceBundleEditor(); editor.setAsText(null); } - @Test(expected=IllegalArgumentException.class) + @Test(expected = IllegalArgumentException.class) public void testSetAsTextWithEmptyString() throws Exception { ResourceBundleEditor editor = new ResourceBundleEditor(); editor.setAsText(""); } - @Test(expected=IllegalArgumentException.class) + @Test(expected = IllegalArgumentException.class) public void testSetAsTextWithWhiteSpaceString() throws Exception { ResourceBundleEditor editor = new ResourceBundleEditor(); editor.setAsText(" "); } - @Test(expected=IllegalArgumentException.class) + @Test(expected = IllegalArgumentException.class) public void testSetAsTextWithJustSeparatorString() throws Exception { ResourceBundleEditor editor = new ResourceBundleEditor(); editor.setAsText("_");