Author: drobiazko Date: Sun Oct 3 20:56:45 2010 New Revision: 1004048 URL: http://svn.apache.org/viewvc?rev=1004048&view=rev Log: TAP5-1293: Whitespaces in SymbolConstants.SUPPORTED_LOCALES cause that locales are not persised
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java?rev=1004048&r1=1004047&r2=1004048&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java Sun Oct 3 20:56:45 2010 @@ -25,6 +25,7 @@ import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.SymbolConstants; import org.apache.tapestry5.internal.OptionModelImpl; import org.apache.tapestry5.internal.SelectModelImpl; +import org.apache.tapestry5.internal.TapestryInternalUtils; import org.apache.tapestry5.ioc.annotations.Symbol; import org.apache.tapestry5.ioc.internal.util.CollectionFactory; import org.apache.tapestry5.ioc.services.ThreadLocale; @@ -59,23 +60,26 @@ public class LocalizationSetterImpl impl ThreadLocale threadLocale, @Symbol(SymbolConstants.SUPPORTED_LOCALES) - String supportedLocaleNames) + String localeNames) { this.request = request; this.persistentLocale = persistentLocale; this.threadLocale = threadLocale; - String[] names = supportedLocaleNames.split(","); - - this.supportedLocaleNames = CollectionFactory.newSet(names); + this.supportedLocaleNames = CollectionFactory.newSet(); + + for (String name : TapestryInternalUtils.splitAtCommas(localeNames)) + { + supportedLocaleNames.add(name.toLowerCase()); + } - supportedLocales = parseNames(names); + supportedLocales = parseNames(supportedLocaleNames); defaultLocale = supportedLocales.get(0); } - private List<Locale> parseNames(String[] localeNames) + private List<Locale> parseNames(Set<String> localeNames) { List<Locale> list = CollectionFactory.newList(); Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java?rev=1004048&r1=1004047&r2=1004048&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java Sun Oct 3 20:56:45 2010 @@ -14,6 +14,8 @@ package org.apache.tapestry5.internal.services; +import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet; + import java.util.List; import java.util.Locale; @@ -21,6 +23,7 @@ import org.apache.tapestry5.OptionModel; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.internal.test.InternalBaseTestCase; import org.apache.tapestry5.ioc.services.ThreadLocale; +import org.apache.tapestry5.ioc.test.TestBase; import org.apache.tapestry5.services.LocalizationSetter; import org.apache.tapestry5.services.PersistentLocale; import org.apache.tapestry5.services.Request; @@ -94,6 +97,26 @@ public class LocalizationSetterImplTest assertListsEquals(setter.getSupportedLocales(), Locale.ENGLISH, Locale.FRENCH); } + + @Test + public void get_selected_locale_names() + { + LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en,fr"); + + Object localeNames = TestBase.get(setter, "supportedLocaleNames"); + + assertTrue(newSet("en", "fr").equals(localeNames)); + } + + @Test + public void get_selected_locale_names_with_whitespaces() + { + LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en, fr, de"); + + Object localeNames = TestBase.get(setter, "supportedLocaleNames"); + + assertTrue(newSet("en", "fr", "de").equals(localeNames)); + } @Test public void get_locale_model()