You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2016/05/20 11:00:36 UTC
svn commit: r1744704 - in /sling/trunk/bundles/extensions/i18n/src:
main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java
Author: kwin
Date: Fri May 20 11:00:36 2016
New Revision: 1744704
URL: http://svn.apache.org/viewvc?rev=1744704&view=rev
Log:
SLING-5740 fix generating a locale from a string
provide additional test cases for that
This closes #142
Added:
sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java (with props)
Modified:
sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
Modified: sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?rev=1744704&r1=1744703&r2=1744704&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java (original)
+++ sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java Fri May 20 11:00:36 2016
@@ -577,55 +577,57 @@ public class JcrResourceBundleProvider i
* language or country is replaced by the platform default language and
* country.
*/
- private Locale toLocale(String localeString) {
+ static Locale toLocale(String localeString) {
if (localeString == null || localeString.length() == 0) {
return Locale.getDefault();
}
// check language and country
- String[] parts = localeString.split("_");
+ final String[] parts = localeString.split("_");
if (parts.length == 0) {
return Locale.getDefault();
}
// at least language is available
String lang = parts[0];
+ boolean isValidLanguageCode = false;
String[] langs = Locale.getISOLanguages();
for (int i = 0; i < langs.length; i++) {
if (langs[i].equals(lang)) {
- lang = null; // signal ok
+ isValidLanguageCode = true;
break;
}
}
- if (lang != null) {
- parts[0] = Locale.getDefault().getLanguage();
+ if (!isValidLanguageCode) {
+ lang = Locale.getDefault().getLanguage();
}
// only language
if (parts.length == 1) {
- return new Locale(parts[0]);
+ return new Locale(lang);
}
// country is also available
String country = parts[1];
+ boolean isValidCountryCode = false;
String[] countries = Locale.getISOCountries();
for (int i = 0; i < countries.length; i++) {
- if (countries[i].equals(lang)) {
- country = null; // signal ok
+ if (countries[i].equals(country)) {
+ isValidCountryCode = true; // signal ok
break;
}
}
- if (country != null) {
- parts[1] = Locale.getDefault().getCountry();
+ if (!isValidCountryCode) {
+ country = Locale.getDefault().getCountry();
}
// language and country
if (parts.length == 2) {
- return new Locale(parts[0], parts[1]);
+ return new Locale(lang, country);
}
// language, country and variant
- return new Locale(parts[0], parts[1], parts[2]);
+ return new Locale(lang, country, parts[2]);
}
//---------- internal class
Added: sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java?rev=1744704&view=auto
==============================================================================
--- sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java (added)
+++ sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java Fri May 20 11:00:36 2016
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.sling.i18n.impl;
+
+import java.util.Locale;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+
+public class JcrResourceBundleProviderTest {
+
+ @Test
+ public void testToLocale() {
+ // empty string must return default locale
+ Assert.assertEquals(Locale.getDefault(), JcrResourceBundleProvider.toLocale(""));
+
+ // only language part being set
+ Assert.assertEquals(Locale.ENGLISH, JcrResourceBundleProvider.toLocale("en"));
+ Assert.assertEquals(Locale.GERMAN, JcrResourceBundleProvider.toLocale("de"));
+ // for invalid languages assume default language
+ Assert.assertEquals(new Locale(Locale.getDefault().getLanguage()), JcrResourceBundleProvider.toLocale("-"));
+
+ // both language and country being set
+ Assert.assertEquals(Locale.GERMANY, JcrResourceBundleProvider.toLocale("de_DE"));
+ Assert.assertEquals(Locale.UK, JcrResourceBundleProvider.toLocale("en_GB"));
+ // for invalid languages assume default language
+ Assert.assertEquals(new Locale(Locale.getDefault().getLanguage(), "GB"), JcrResourceBundleProvider.toLocale("-_GB"));
+ // for invalid countries assume default country
+ Assert.assertEquals(new Locale("en", Locale.getDefault().getCountry()), JcrResourceBundleProvider.toLocale("en_-"));
+
+ // language, country and variant being set
+ Assert.assertEquals(new Locale(Locale.UK.getLanguage(), Locale.UK.getCountry(), "variant1"), JcrResourceBundleProvider.toLocale("en_GB_variant1"));
+
+ // parts after the variant are just ignored
+ Assert.assertEquals(new Locale(Locale.UK.getLanguage(), Locale.UK.getCountry(), "variant1"), JcrResourceBundleProvider.toLocale("en_GB_variant1_something"));
+ }
+}
Propchange: sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleProviderTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain