1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport static java.util.ResourceBundle.Control.FORMAT_CLASS; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport static java.util.ResourceBundle.Control.FORMAT_DEFAULT; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport static java.util.ResourceBundle.Control.FORMAT_PROPERTIES; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLClassLoader; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashSet; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Locale; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.MissingResourceException; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ResourceBundle; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.StringTokenizer; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Vector; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ResourceBundle.Control; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.resource.Support_Resources; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.luni.tests.support.B; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test cases for java.util.ResourceBundle. 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ResourceBundleTest extends junit.framework.TestCase { 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String PROPERTIES_NAME = Support_Resources.RESOURCE_PACKAGE_NAME 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ".hyts_resource"; //$NON-NLS-1$ 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String SUBFOLDER_PROPERTIES_NAME = "tests.resources.subfolder.tests.resources.hyts_resource"; //$NON-NLS-1$ 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String SUBFOLDER_NOROOT_NAME = "tests.resources.subfolder.tests.norootresources.hyts_resource"; //$NON-NLS-1$ 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String CLASS_NAME = "tests.support.Support_TestResource"; //$NON-NLS-1$ 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String PROPERTIES_NAME_COPY = "hyts_resource_copy"; //$NON-NLS-1$ 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final ClassLoader URL_LOADER = getURLClassLoader(); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final ClassLoader SYSTEM_LOADER = ClassLoader 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSystemClassLoader(); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Control CLASS_CONTROL = Control 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getControl(FORMAT_CLASS); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Control PROPERTIES_CONTROL = Control 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getControl(FORMAT_PROPERTIES); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Control DEFAULT_CONTROL = Control 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getControl(FORMAT_DEFAULT); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.ResourceBundle#getString(java.lang.String) 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getStringLjava_lang_String() { 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle bundle; 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = "tests.support.Support_TestResource"; 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(new Locale("en", "US")); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "VAR")); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value parent4", "frFRVARValue4", bundle 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value parent3", "frFRValue3", bundle 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent3")); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value parent2", "frValue2", bundle 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent2")); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value parent1", "parentValue1", bundle 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent1")); 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value child3", "frFRVARChildValue3", bundle 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("child3")); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value child2", "frFRVARChildValue2", bundle 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("child2")); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value child1", "frFRVARChildValue1", bundle 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("child1")); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-5698 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle("Does not exist"); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(e.getLocalizedMessage()); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Locale LOCALE_FRFR = new Locale("fr", "FR"); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Locale LOCALE_FR = new Locale("fr"); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Locale LOCALE_EN = new Locale("en"); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Locale LOCALE_ENUSVAR = new Locale("en", "US", "VAR"); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private ResourceBundle bundle; 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Locale defLocale = null; 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.ResourceBundle#getBundle(java.lang.String, 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.util.Locale) 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundleLjava_lang_StringLjava_util_Locale() { 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, new Locale("fr", "FR", 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "VAR")); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong bundle fr_FR_VAR", "frFRVARValue4", bundle 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, new Locale("fr", "FR", 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "v1")); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong bundle fr_FR_v1", "frFRValue4", bundle 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, new Locale("fr", "US", 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "VAR")); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong bundle fr_US_var", "frValue4", bundle 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, new Locale("de", "FR", 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "VAR")); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong bundle de_FR_var", "enUSValue4", bundle 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(new Locale("fr", "FR", "VAR")); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, new Locale("de", "FR", 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "v1")); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong bundle de_FR_var 2", "frFRVARValue4", bundle 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(new Locale("de", "US")); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, new Locale("de", "FR", 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "var")); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong bundle de_FR_var 2", "parentValue4", bundle 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("parent4")); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-5698 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle("Does not exist", Locale.getDefault()); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(e.getLocalizedMessage()); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.ResourceBundle#getBundle(java.lang.String, 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.util.Locale, java.lang.ClassLoader) 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundleLjava_lang_StringLjava_util_LocaleLjava_lang_ClassLoader() { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_EN); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_EN, 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL_LOADER); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong cached value", "en_resource", bundle 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("property")); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String classPath = System.getProperty("java.class.path"); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringTokenizer tok = new StringTokenizer(classPath, File.pathSeparator); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Vector urlVec = new Vector(); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String resPackage = Support_Resources.RESOURCE_PACKAGE; 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (tok.hasMoreTokens()) { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String path = (String) tok.nextToken(); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String url; 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (new File(path).isDirectory()) 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url = "file:" + path + resPackage + "subfolder/"; 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes else 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url = "jar:file:" + path + "!" + resPackage + "subfolder/"; 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlVec.addElement(new URL(url)); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MalformedURLException e) { 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL[] urls = new URL[urlVec.size()]; 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < urlVec.size(); i++) 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urls[i] = (URL) urlVec.elementAt(i); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLClassLoader loader = new URLClassLoader(urls, null); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = Support_Resources.RESOURCE_PACKAGE_NAME 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ".hyts_resource"; 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle bundle = ResourceBundle.getBundle(name, Locale 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getDefault()); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong value read", "parent", bundle.getString("property")); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(name, Locale.getDefault(), loader); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong cached value", "en_US_resource", bundle 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("property")); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-3823 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes B bb = new B(); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String s = bb.find("nonexistent"); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = bb.find("name"); 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong property got", "Name", s); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-5698 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle("Does not exist", Locale.getDefault(), 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes loader); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(e.getLocalizedMessage()); 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static URLClassLoader getURLClassLoader() { 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String classPath = System.getProperty("java.class.path"); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringTokenizer tok = new StringTokenizer(classPath, File.pathSeparator); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Vector<URL> urlVec = new Vector<URL>(); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String resPackage = Support_Resources.RESOURCE_PACKAGE; 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (tok.hasMoreTokens()) { 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String path = tok.nextToken(); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String url; 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (new File(path).isDirectory()) { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url = "file:" + path + resPackage + "subfolder/"; 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url = "jar:file:" + path + "!" + resPackage + "subfolder/"; 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlVec.addElement(new URL(url)); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MalformedURLException e) { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ignore 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // add temp path if possible 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String tmpdir = System.getProperty("java.io.tmpdir"); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (null != tmpdir) { 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlVec.add(new URL("file:" + tmpdir)); 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MalformedURLException e) { 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ignore 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL[] urls = new URL[urlVec.size()]; 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < urlVec.size(); i++) { 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urls[i] = urlVec.elementAt(i); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLClassLoader loader = new URLClassLoader(urls, null); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return loader; 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.ResourceBundle#getObject(java.lang.String) 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getObjectLjava_lang_String() { 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-5698 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle bundle; 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = "tests.support.Support_TestResource"; 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(new Locale("en", "US")); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "VAR")); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle.getObject("not exist"); 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(e.getLocalizedMessage()); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundle_getClassName() { 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-1759 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale locale = Locale.GERMAN; 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String nonExistentBundle = "Non-ExistentBundle"; 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(nonExistentBundle, locale, this.getClass() 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getClassLoader()); 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("MissingResourceException expected!"); 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(nonExistentBundle + "_" + locale, e.getClassName()); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(nonExistentBundle, locale); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("MissingResourceException expected!"); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(nonExistentBundle + "_" + locale, e.getClassName()); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes locale = Locale.getDefault(); 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(nonExistentBundle); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("MissingResourceException expected!"); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(nonExistentBundle + "_" + locale, e.getClassName()); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Can cause {@link IllegalArgumentException} in getBundle method 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class NullCandidateLocalesControl extends Control { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see java.util.ResourceBundle.Control#getCandidateLocales(java.lang.String, 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.util.Locale) 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public List<Locale> getCandidateLocales(@SuppressWarnings("unused") 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String baseName, @SuppressWarnings("unused") 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale locale) { 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the class and constructor must be public so ResourceBundle has the 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * possibility to instantiate 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class GetBundleTest { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public GetBundleTest() { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Try to load a resource with the same name as the class. 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // getBundle() should not try to instantiate the class since 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // its not a ResourceBundle. If a .properties file exists it 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // would be loaded. 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getBundle("org.apache.harmony.luni.tests.java.util.ResourceBundleTest$GetBundleTest"); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.ResourceBundle#getBundle(java.lang.String) 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundleLjava_lang_String() { 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* ResourceBundle.getBundle recursion loading class name */ 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new GetBundleTest(); 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The control with given formats. 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class GivenFormatsControl extends Control { 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List<String> formats; 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GivenFormatsControl(List<String> theFormats) { 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes formats = theFormats; 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see java.util.ResourceBundle.Control#getFormats(java.lang.String) 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public List<String> getFormats(@SuppressWarnings("unused") 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String baseName) { 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return formats; 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The control with reverse formats with default Control and no fallback 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * locale. 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class ReverseNoFallbackLocaleControl extends Control { 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see java.util.ResourceBundle.Control#getFormats(java.lang.String) 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public List<String> getFormats(@SuppressWarnings("unused") 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String baseName) { 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return Arrays 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .asList(new String[] { "java.properties", "java.class" }); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see java.util.ResourceBundle.Control#getFallbackLocale(java.lang.String, 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.util.Locale) 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Locale getFallbackLocale(@SuppressWarnings("unused") 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String baseName, @SuppressWarnings("unused") 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale locale) { 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#getBundle(String, java.util.ResourceBundle.Control)} 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundle_LStringLControl() { 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(LOCALE_FRFR); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL); 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle("wrongName", DEFAULT_CONTROL); 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(null, DEFAULT_CONTROL); 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, (Control) null); 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal control causes IllegalArgumentException 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Control otherControl = new NullCandidateLocalesControl(); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, otherControl); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#getBundle(String, Locale, java.util.ResourceBundle.Control)} 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundle_LStringLLocaleLControl() { 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, DEFAULT_CONTROL); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle("wrongName", LOCALE_FRFR, DEFAULT_CONTROL); 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(null, LOCALE_FRFR, DEFAULT_CONTROL); 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, null, 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL); 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (Control) null); 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal control causes IllegalArgumentException 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Control otherControl = new NullCandidateLocalesControl(); 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes otherControl); 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#getBundle(String, Locale, ClassLoader, java.util.ResourceBundle.Control)} 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getBundle_LStringLLocaleLClassLoaderLControl() { 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes getBundleWithControlTester(); 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void getBundleWithControlTester() { 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1. cache feature: is tested in other methods 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2. Formats/Locale 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the "reverse" control that take java.properties first 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Control reverseControl = new GivenFormatsControl(Arrays 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .asList(new String[] { "java.properties", "java.class" })); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // locale that has both class file and properties file support. 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, DEFAULT_CONTROL); 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, CLASS_CONTROL); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, PROPERTIES_CONTROL); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subParent1")); 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, reverseControl); 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subParent1")); 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // locale that has only properties file support. 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_EN, 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, bundle.keySet().size()); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("en_resource", bundle.getString("property")); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue4", bundle.getString("subParent4")); 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subChild1")); 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_EN, 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, CLASS_CONTROL); 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue2", bundle.getString("subParent2")); 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSValue3", bundle.getString("subParent3")); 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSValue4", bundle.getString("subParent4")); 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSChildValue1", bundle.getString("subChild1")); 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSChildValue2", bundle.getString("subChild2")); 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_EN, 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, PROPERTIES_CONTROL); 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("en_resource", bundle.getString("property")); 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_EN, 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, reverseControl); 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("en_resource", bundle.getString("property")); 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // locale that has only class file support. 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_ENUSVAR, SYSTEM_LOADER, DEFAULT_CONTROL); 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(8, bundle.keySet().size()); 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARChildValue3", bundle.getString("subChild3")); 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("en_resource", bundle.getString("property")); 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARValue4", bundle.getString("subParent4")); 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSValue3", bundle.getString("subParent3")); 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue2", bundle.getString("subParent2")); 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_ENUSVAR, SYSTEM_LOADER, CLASS_CONTROL); 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(7, bundle.keySet().size()); 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARChildValue3", bundle.getString("subChild3")); 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARValue4", bundle.getString("subParent4")); 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSValue3", bundle.getString("subParent3")); 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue2", bundle.getString("subParent2")); 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_ENUSVAR, SYSTEM_LOADER, PROPERTIES_CONTROL); 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("en_US_resource", bundle.getString("property")); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_ENUSVAR, SYSTEM_LOADER, reverseControl); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("en_US_resource", bundle.getString("property")); 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARChildValue1", bundle.getString("subChild1")); 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARChildValue2", bundle.getString("subChild2")); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARChildValue3", bundle.getString("subChild3")); 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("enUSVARValue4", bundle.getString("subParent4")); 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // root locale 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ROOT, SYSTEM_LOADER, DEFAULT_CONTROL); 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue4", bundle.getString("subParent4")); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subChild1")); 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ROOT, SYSTEM_LOADER, CLASS_CONTROL); 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue4", bundle.getString("subParent4")); 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subChild1")); 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ROOT, SYSTEM_LOADER, PROPERTIES_CONTROL); 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("resource", bundle.getString("property")); 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ROOT, SYSTEM_LOADER, reverseControl); 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("resource", bundle.getString("property")); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3.use the FallbackLocale 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(LOCALE_FRFR); 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no resource for Locale.ITALY 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, DEFAULT_CONTROL); 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue1", bundle.getString("subChild1")); 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, CLASS_CONTROL); 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue1", bundle.getString("subChild1")); 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, PROPERTIES_CONTROL); 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, reverseControl); 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // with NoFallbackControl 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Control noFallbackControl = Control 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getNoFallbackControl(FORMAT_DEFAULT); 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, noFallbackControl); 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue4", bundle.getString("subParent4")); 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = Control.getNoFallbackControl(FORMAT_CLASS); 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, noFallbackControl); 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue4", bundle.getString("subParent4")); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = Control.getNoFallbackControl(FORMAT_PROPERTIES); 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, noFallbackControl); 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("resource", bundle.getString("property")); 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = new ReverseNoFallbackLocaleControl(); 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, noFallbackControl); 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, bundle.keySet().size()); 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("resource", bundle.getString("property")); 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // locale is equal to the default locale 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(Locale.ITALY); 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.ITALY, SYSTEM_LOADER, DEFAULT_CONTROL); 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue4", bundle.getString("subParent4")); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subChild1")); 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4.test the resources without a root resource 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // locale that has both class file and properties file support. 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, LOCALE_FRFR, 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, bundle.keySet().size()); 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subParent1")); 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, LOCALE_FRFR, 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, CLASS_CONTROL); 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, bundle.keySet().size()); 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subParent1")); 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, LOCALE_FRFR, 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, PROPERTIES_CONTROL); 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, bundle.keySet().size()); 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, LOCALE_FRFR, 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, reverseControl); 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, bundle.keySet().size()); 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // root locale 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ROOT, 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ROOT, 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, CLASS_CONTROL); 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ROOT, 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, PROPERTIES_CONTROL); 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ROOT, 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, reverseControl); 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // fall back locale 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(LOCALE_FRFR); 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no resource for Locale.ITALY 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, bundle.keySet().size()); 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue1", bundle.getString("subChild1")); 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frValue2", bundle.getString("subParent2")); 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue3", bundle.getString("subParent3")); 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, CLASS_CONTROL); 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, bundle.keySet().size()); 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue1", bundle.getString("subChild1")); 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frValue2", bundle.getString("subParent2")); 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue3", bundle.getString("subParent3")); 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, PROPERTIES_CONTROL); 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, bundle.keySet().size()); 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, reverseControl); 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, bundle.keySet().size()); 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // with NoFallbackControl 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = Control.getNoFallbackControl(FORMAT_DEFAULT); 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, noFallbackControl); 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = Control.getNoFallbackControl(FORMAT_CLASS); 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, noFallbackControl); 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = Control.getNoFallbackControl(FORMAT_PROPERTIES); 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, noFallbackControl); 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes noFallbackControl = new ReverseNoFallbackLocaleControl(); 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, noFallbackControl); 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // locale is equal to the default locale 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(Locale.ITALY); 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_NOROOT_NAME, Locale.ITALY, 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, noFallbackControl); 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 5.simple exceptions 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle("wrongName", LOCALE_FRFR, SYSTEM_LOADER, 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL); 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL_LOADER, DEFAULT_CONTROL); 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(null, LOCALE_FRFR, SYSTEM_LOADER, 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL); 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, null, 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, DEFAULT_CONTROL); 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, null); 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 6. exceptions caused by control 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal control causes IllegalArgumentException 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Control otherControl = new NullCandidateLocalesControl(); 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, otherControl); 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal control with illegal format 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes otherControl = new GivenFormatsControl(Arrays 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .asList(new String[] { "java.test" })); 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes illegalFormatControlTester(otherControl); 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal control with other format 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes otherControl = new GivenFormatsControl(Arrays 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .asList(new String[] { "other.format" })); 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes illegalFormatControlTester(otherControl); 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void illegalFormatControlTester(Control otherControl) { 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cache can ignore the illegal control 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, otherControl); 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, otherControl); 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cache can also ignore the legal control 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FRFR, 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw MissingResourceException"); 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MissingResourceException e) { 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, DEFAULT_CONTROL); 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#clearCache()} 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_clearCache() { 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, DEFAULT_CONTROL); 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the cache used 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, PROPERTIES_CONTROL); 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(URL_LOADER); 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // system loader's cache is still there 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, PROPERTIES_CONTROL); 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, bundle.keySet().size()); 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRChildValue2", bundle.getString("subChild2")); 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("subParentValue1", bundle.getString("subParent1")); 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("frFRValue4", bundle.getString("subParent4")); 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("property")); 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, SYSTEM_LOADER, PROPERTIES_CONTROL); 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, bundle.keySet().size()); 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFRFR", bundle.getString("propertyInFRFR")); 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInURLParent", bundle 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getString("propertyInURLParent")); 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("valueInFR", bundle.getString("propertyInFR")); 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subParent1")); 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#clearCache(ClassLoader)} 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_clearCacheLjava_lang_ClassLoader() throws IOException { 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // copy the file to test 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL srcFile = URL_LOADER.getResource(DEFAULT_CONTROL.toResourceName( 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL.toBundleName(PROPERTIES_NAME, LOCALE_FRFR), 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "properties")); 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File copyFile = ControlTest.copyFile(srcFile); 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (null != URL_LOADER 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getResourceAsStream("hyts_resource_copy_fr_FR.properties")) { 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // load first time 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME_COPY, 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, URL_LOADER, DEFAULT_CONTROL); 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ControlTest.changeProperties(copyFile); 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME_COPY, 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, URL_LOADER, DEFAULT_CONTROL); 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value from cache, unchanged 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME_COPY, 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, URL_LOADER, DEFAULT_CONTROL); 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value from cache, unchanged 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("fr_FR_resource", bundle.getString("property")); 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(URL_LOADER); 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME_COPY, 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LOCALE_FRFR, URL_LOADER, DEFAULT_CONTROL); 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value changed 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("changedValue", bundle.getString("property")); 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.err 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .println("Can not find the test file, some code of this test 'test_clearCacheLjava_lang_ClassLoader' did not run."); 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(null); 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#containsKey(String)} 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_containsKeyLjava_lang_String() { 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(URL_LOADER); 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_FRFR, 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL_LOADER, DEFAULT_CONTROL); 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("property")); 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("propertyInFRFR")); 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("propertyInURLParent")); 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("propertyInSystemParent")); 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("propertyInFR")); 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(URL_LOADER); 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_FR, 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL_LOADER, DEFAULT_CONTROL); 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("property")); 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("propertyInFRFR")); 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("propertyInFR")); 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("propertyInURLParent")); 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("propertyInSystemParent")); 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_FR, 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("property")); 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("propertyInURLParent")); 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("propertyInSystemParent")); 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, LOCALE_FR, SYSTEM_LOADER, 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL); 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("parent2")); 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("parent1")); 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("child1")); 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("child2")); 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FR, 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("subParent1")); 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("subParent2")); 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("subParent3")); 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("subParent4")); 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(bundle.containsKey("subChild1")); 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subChild2")); 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(bundle.containsKey("subChild3")); 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(bundle); 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle.containsKey(null); 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#keySet()} 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keySet() { 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(URL_LOADER); 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_FRFR, 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL_LOADER, DEFAULT_CONTROL); 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set<String> keys = bundle.keySet(); 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, keys.size()); 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(keys, bundle.keySet()); 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys.add("wrongKey"); 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys = bundle.keySet(); 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, keys.size()); 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.getClass() == HashSet.class); 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("propertyInFRFR")); 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("propertyInURLParent")); 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("propertyInFR")); 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("property")); 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(URL_LOADER); 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_FR, 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL_LOADER, DEFAULT_CONTROL); 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys = bundle.keySet(); 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, keys.size()); 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("propertyInURLParent")); 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("propertyInFR")); 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("property")); 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(PROPERTIES_NAME, LOCALE_FR, 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys = bundle.keySet(); 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, keys.size()); 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("propertyInSystemParent")); 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("property")); 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(CLASS_NAME, LOCALE_FR, SYSTEM_LOADER, 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DEFAULT_CONTROL); 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys = bundle.keySet(); 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, keys.size()); 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("parent1")); 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("parent2")); 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("parent3")); 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("parent4")); 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("child1")); 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ResourceBundle.clearCache(); 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bundle = ResourceBundle.getBundle(SUBFOLDER_PROPERTIES_NAME, LOCALE_FR, 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SYSTEM_LOADER, DEFAULT_CONTROL); 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys = bundle.keySet(); 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, keys.size()); 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("subParent1")); 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("subParent2")); 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("subParent3")); 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("subParent4")); 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("subChild1")); 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.util.ResourceBundle#handleKeySet()} 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_handleKeySet() { 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes class SubBundle extends ResourceBundle { 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SubBundle() { 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Set<String> handleKeySet() { 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.handleKeySet(); 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Enumeration<String> getKeys() { 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Vector<String> keys = new Vector<String>(); 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys.add("key1InThis"); 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys.add("key2InThis"); 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys.add("key1InParent"); 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keys.add("key2InParent"); 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return keys.elements(); 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected Object handleGetObject(String key) { 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (key.equals("key1InParent") || key.equals("key2InParent")) { 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new Object(); 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SubBundle subBundle = new SubBundle(); 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set<String> keys = subBundle.handleKeySet(); 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, keys.size()); 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("key1InThis")); 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(keys.contains("key2InThis")); 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see junit.framework.TestCase#setUp() 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("nls") 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() { 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes defLocale = Locale.getDefault(); 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(new Locale("en", "US")); 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see junit.framework.TestCase#tearDown() 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() { 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Locale.setDefault(defLocale); 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1293