180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson/* Licensed to the Apache Software Foundation (ASF) under one or more 280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * contributor license agreements. See the NOTICE file distributed with 380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * this work for additional information regarding copyright ownership. 480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * (the "License"); you may not use this file except in compliance with 680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * the License. You may obtain a copy of the License at 780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * 880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * 1080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * Unless required by applicable law or agreed to in writing, software 1180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 1280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * See the License for the specific language governing permissions and 1480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * limitations under the License. 1580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson */ 1680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 1780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpackage libcore.java.util.prefs; 1880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 19b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamathimport java.io.File; 2080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.io.IOException; 2180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.io.OutputStream; 2280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.Arrays; 2380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.BackingStoreException; 2480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.NodeChangeEvent; 2580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.NodeChangeListener; 2680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.PreferenceChangeEvent; 2780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.PreferenceChangeListener; 2880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.Preferences; 29b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamathimport java.util.prefs.PreferencesFactory; 3080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport junit.framework.TestCase; 31b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamathimport libcore.io.IoUtils; 3280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 3380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpublic final class OldPreferencesTest extends TestCase { 3480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 35cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes private static final boolean ENCOURAGE_RACES = false; 36cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes 37cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes private static final String longKey; 38cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes private static final String longValue; 3980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 4080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson static { 41a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson StringBuilder key = new StringBuilder(Preferences.MAX_KEY_LENGTH); 4280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < Preferences.MAX_KEY_LENGTH; i++) { 4380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson key.append('a'); 4480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 4580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson longKey = key.toString(); 4680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 47a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson StringBuilder value = new StringBuilder(Preferences.MAX_VALUE_LENGTH); 4880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < Preferences.MAX_VALUE_LENGTH; i++) { 4980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson value.append('a'); 5080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 5180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson longValue = value.toString(); 5280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 5380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 54b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath private PreferencesFactory defaultFactory; 55b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath 56b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath @Override 57b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath protected void setUp() throws Exception { 58a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson super.setUp(); 59b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath final File tmpDir = IoUtils.createTemporaryDirectory("OldPreferenceTest"); 60b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath defaultFactory = Preferences.setPreferencesFactory( 61b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath new PreferencesTest.TestPreferencesFactory(tmpDir.getAbsolutePath())); 62a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson 63a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 64a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson for (String child : pref.childrenNames()) { 65a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node(child).removeNode(); 66a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } 67a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.clear(); 68a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } 69a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson 70b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath @Override 71b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath protected void tearDown() throws Exception { 72b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath Preferences.setPreferencesFactory(defaultFactory); 73b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath } 74b27fd46c694f8ee4118d6b9bdd61741472ee92b5Narayan Kamath 75a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson public void testAbstractMethods() throws IOException, BackingStoreException { 7680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p = new MockPreferences(); 7780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.absolutePath(); 78a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.childrenNames(); 79a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.clear(); 80a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.exportNode(null); 81a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.exportSubtree(null); 82a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.flush(); 8380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.get(null, null); 8480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getBoolean(null, false); 8580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getByteArray(null, null); 8680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getFloat(null, 0.1f); 8780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getDouble(null, 0.1); 8880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getInt(null, 1); 8980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getLong(null, 1l); 9080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.isUserNode(); 91a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.keys(); 9280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.name(); 9380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.node(null); 94a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.nodeExists(null); 9580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.parent(); 9680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.put(null, null); 9780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putBoolean(null, false); 9880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putByteArray(null, null); 9980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putDouble(null, 1); 10080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putFloat(null, 1f); 10180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putInt(null, 1); 10280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putLong(null, 1l); 10380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.remove(null); 104a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.removeNode(); 10580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.addNodeChangeListener(null); 10680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.addPreferenceChangeListener(null); 10780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.removeNodeChangeListener(null); 10880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.removePreferenceChangeListener(null); 109a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.sync(); 11080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.toString(); 11180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 11280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 11380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testConstructor() { 11480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferences mp = new MockPreferences(); 11580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(mp.getClass(), MockPreferences.class); 11680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 11780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 11880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testToString() { 11980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p1 = Preferences.userNodeForPackage(Preferences.class); 12080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(p1.toString()); 12180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 12280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p2 = Preferences.systemRoot(); 12380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(p2.toString()); 12480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 12580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p3 = Preferences.userRoot(); 12680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(p3.toString()); 12780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 12880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 12980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testAbsolutePath() { 13080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p = Preferences.userNodeForPackage(Preferences.class); 13180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("/java/util/prefs", p.absolutePath()); 13280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 13380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 13480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 13580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testChildrenNames() throws BackingStoreException { 13680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 13780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 13880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child1 = pref.node("child1"); 13980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 14080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("child2"); 14180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("child3"); 14280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.node("subchild1"); 14380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 14480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(pref, child1.parent()); 14580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pref.childrenNames().length); 14680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("child1", pref.childrenNames()[0]); 14780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, child1.childrenNames().length); 14880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("subchild1", child1.childrenNames()[0]); 14980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 15080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 15180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testClear() throws BackingStoreException { 15280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 15380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testClearKey", "testClearValue"); 15480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testClearKey1", "testClearValue1"); 15580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("testClearValue", pref.get("testClearKey", null)); 15680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("testClearValue1", pref.get("testClearKey1", null)); 15780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 15880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("testClearKey", null)); 15980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("testClearKey1", null)); 16080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 16180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 16280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGet() throws BackingStoreException { 16380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences root = Preferences.userNodeForPackage(Preferences.class); 16480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = root.node("mock"); 16580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("", null)); 16680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("default", pref.get("key", "default")); 16780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("key", null)); 16880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetkey", "value"); 16980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("testGetKey", null)); 17080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value", pref.get("testGetkey", null)); 17180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 17280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 17380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get(null, "abc"); 17480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 175a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 17680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 17780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("", "abc"); 17880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("key", null); 17980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("key", ""); 18080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat("floatKey", 1.0f); 18180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("1.0", pref.get("floatKey", null)); 18280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 18380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 18480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 18580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("key", "abc"); 18680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 187a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalStateException expected) { 18880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 18980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 19080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get(null, "abc"); 19180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 192a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 19380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 19480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 19580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 19680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetBoolean() { 19780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 19880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 19980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getBoolean(null, false); 20080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 201a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 20280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 20380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 20480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetBooleanKey", "false"); 20580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetBooleanKey2", "value"); 20680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.getBoolean("testGetBooleanKey", true)); 20780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.getBoolean("testGetBooleanKey2", true)); 20880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 20980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 21080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetByteArray() { 21180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 21280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 21380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getByteArray(null, new byte[0]); 21480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 215a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 21680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 21780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64 21880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 21980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetByteArrayKey", "abc="); 22080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetByteArrayKey2", new String(b64Array)); 22180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("invalidKey", "<>?"); 22280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[] { 105, -73 }, pref.getByteArray( 22380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testGetByteArrayKey", new byte[0]))); 22480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref 22580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .getByteArray("testGetByteArrayKey2", new byte[0]))); 22680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[0], pref.getByteArray("invalidKey", 22780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson new byte[0]))); 22880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 22980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testGetByteArrayKey3", b64Array); 23080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testGetByteArrayKey4", "abc".getBytes()); 23180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(b64Array, pref.getByteArray( 23280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testGetByteArrayKey3", new byte[0]))); 23380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals("abc".getBytes(), pref.getByteArray( 23480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testGetByteArrayKey4", new byte[0]))); 23580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 23680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 23780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetDouble() { 23880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 23980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 24080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getDouble(null, 0); 24180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 242a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 24380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 24480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 24580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetDoubleKey", "1"); 24680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetDoubleKey2", "value"); 24780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble("testGetDoubleKey3", 1); 24880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt("testGetDoubleKey4", 1); 24980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1.0, pref.getDouble("testGetDoubleKey", 0.0), 0); 25080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0.0, pref.getDouble("testGetDoubleKey2", 0.0), 0); 25180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1.0, pref.getDouble("testGetDoubleKey3", 0.0), 0); 25280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1.0, pref.getDouble("testGetDoubleKey4", 0.0), 0); 25380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 25480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 25580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetFloat() { 25680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 25780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 25880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getFloat(null, 0f); 25980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 260a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 26180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 26280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetFloatKey", "1"); 26380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetFloatKey2", "value"); 26480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0); 26580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0); 26680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 26780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 26880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetInt() { 26980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 27080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 27180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getInt(null, 0); 27280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 273a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 27480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 27580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 27680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetIntKey", "1"); 27780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetIntKey2", "value"); 27880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pref.getInt("testGetIntKey", 0)); 27980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, pref.getInt("testGetIntKey2", 0)); 28080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 28180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 28280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetLong() { 28380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 28480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 28580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getLong(null, 0); 28680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 287a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 28880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 28980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 29080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetLongKey", "1"); 29180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetLongKey2", "value"); 29280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pref.getInt("testGetLongKey", 0)); 29380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, pref.getInt("testGetLongKey2", 0)); 29480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 29580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 29680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testIsUserNode() { 29780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref1 = Preferences.userNodeForPackage(Preferences.class); 29880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref1.isUserNode()); 29980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 30080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref2 = Preferences.systemNodeForPackage(Preferences.class); 30180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref2.isUserNode()); 30280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 30380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 30480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testKeys() throws BackingStoreException { 30580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 30680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 30780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 30880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key0", "value"); 30980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key1", "value1"); 31080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key2", "value2"); 31180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key3", "value3"); 31280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 31380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson String[] keys = pref.keys(); 31480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(4, keys.length); 315a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson for (String key : keys) { 316a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson assertEquals(0, key.indexOf("key")); 317a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson assertEquals(4, key.length()); 31880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 31980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 32080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 32180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testName() { 32280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 32380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child = pref.node("mock"); 32480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("mock", child.name()); 32580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 32680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 32780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testNode() throws BackingStoreException { 328a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson StringBuilder name = new StringBuilder(Preferences.MAX_NAME_LENGTH); 32980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) { 33080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson name.append('a'); 33180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 33280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson String longName = name.toString(); 33380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 33480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences root = Preferences.userRoot(); 335cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences parent = Preferences.userNodeForPackage(Preferences.class); 33680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = parent.node("mock"); 33780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 33880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 33980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node(null); 34080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 341a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 34280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 34380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 34480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("/java/util/prefs/"); 34580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 346a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 34780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 34880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 34980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("/java//util/prefs"); 35080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 351a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 35280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 35380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 35480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node(longName + "a"); 35580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 356a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 35780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 35880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(pref.node(longName)); 35980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 36080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(root, pref.node("/")); 36180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 36280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences prefs = pref.node("/java/util/prefs"); 36380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(prefs, parent); 36480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 36580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(pref, pref.node("")); 36680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 36780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 36880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testNodeExists() throws BackingStoreException { 36980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 370cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences parent = Preferences.userNodeForPackage(Preferences.class); 37180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = parent.node("mock"); 37280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 37380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 37480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.nodeExists(null); 37580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 376a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 37780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 37880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 37980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.nodeExists("/java/util/prefs/"); 38080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 381a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 38280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 38380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 38480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.nodeExists("/java//util/prefs"); 38580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 386a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 38780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 38880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 38980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("/")); 39080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 39180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("/java/util/prefs")); 39280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 39380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("")); 39480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 39580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("child")); 39680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences grandchild = pref.node("child/grandchild"); 39780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child")); 39880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child/grandchild")); 39980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson grandchild.removeNode(); 40080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child")); 40180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("child/grandchild")); 40280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(grandchild.nodeExists("")); 40380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 40480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("child2/grandchild")); 40580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("child2/grandchild"); 40680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child2/grandchild")); 40780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 40880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 40980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testParent() { 410cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences parent = Preferences.userNodeForPackage(Preferences.class); 41180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = parent.node("mock"); 41280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 41380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(parent, pref.parent()); 41480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 41580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 41680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPut() throws BackingStoreException { 417cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences pref = Preferences.userNodeForPackage(Preferences.class); 41880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("", "emptyvalue"); 41980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("emptyvalue", pref.get("", null)); 42080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testPutkey", "value1"); 42180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value1", pref.get("testPutkey", null)); 42280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testPutkey", "value2"); 42380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value2", pref.get("testPutkey", null)); 42480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 42580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("", "emptyvalue"); 42680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("emptyvalue", pref.get("", null)); 42780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 42880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 42980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(null, "value"); 43080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 431a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 43280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 43380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 43480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key", null); 43580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 436a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 43780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 43880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue); 43980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 44080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey + 1, longValue); 44180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 442a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 44380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 44480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 44580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue + 1); 44680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 447a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 44880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 44980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 45080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 45180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 45280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue + 1); 45380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 454a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 45580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 45680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 45780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 45880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue); 45980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 460a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalStateException expected) { 46180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 46280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 46380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 46480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutBoolean() { 465a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 46680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 46780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean(null, false); 46880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 469a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 47080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 47180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean(longKey, false); 47280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 47380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean(longKey + "a", false); 47480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 475a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 47680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 47780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean("testPutBooleanKey", false); 47880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("false", pref.get("testPutBooleanKey", null)); 47980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.getBoolean("testPutBooleanKey", true)); 48080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 48180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 48280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutDouble() { 483cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences pref = Preferences.userNodeForPackage(Preferences.class); 48480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 48580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble(null, 3); 48680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 487a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 48880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 48980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble(longKey, 3); 49080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 49180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble(longKey + "a", 3); 49280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 493a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 49480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 49580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble("testPutDoubleKey", 3); 49680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3.0", pref.get("testPutDoubleKey", null)); 49780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pref.getDouble("testPutDoubleKey", 0), 0); 49880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 49980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 50080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutFloat() { 501a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 50280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 50380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat(null, 3f); 50480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 505a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 50680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 50780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat(longKey, 3f); 50880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 50980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat(longKey + "a", 3f); 51080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 511a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 51280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 51380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat("testPutFloatKey", 3f); 51480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3.0", pref.get("testPutFloatKey", null)); 51580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3f, pref.getFloat("testPutFloatKey", 0), 0); 51680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 51780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 51880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutInt() { 519a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 52080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 52180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt(null, 3); 52280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 523a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 52480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 52580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt(longKey, 3); 52680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 52780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt(longKey + "a", 3); 52880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 529a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 53080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 53180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt("testPutIntKey", 3); 53280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3", pref.get("testPutIntKey", null)); 53380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pref.getInt("testPutIntKey", 0)); 53480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 53580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 53680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutLong() { 537a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 53880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 53980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong(null, 3L); 54080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 541a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 54280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 54380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong(longKey, 3L); 54480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 54580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong(longKey + "a", 3L); 54680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 547a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 54880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 54980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong("testPutLongKey", 3L); 55080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3", pref.get("testPutLongKey", null)); 55180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3L, pref.getLong("testPutLongKey", 0)); 55280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 55380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 55480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutByteArray() { 555a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 55680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 55780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(null, new byte[0]); 55880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 559a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 56080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 56180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 56280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testPutByteArrayKey4", null); 56380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 564a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 56580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 56680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 56780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey, new byte[0]); 56880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 56980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey + "a", new byte[0]); 57080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 571a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 57280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 57380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson byte[] longArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.74)]; 57480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson byte[] longerArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.75) + 1]; 57580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey, longArray); 57680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 57780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey, longerArray); 57880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 579a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 58080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 58180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 58280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testPutByteArrayKey", new byte[0]); 58380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("", pref.get("testPutByteArrayKey", null)); 58480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[0], pref.getByteArray( 58580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testPutByteArrayKey", null))); 58680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 58780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testPutByteArrayKey3", new byte[] { 'a', 'b', 'c' }); 58880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("YWJj", pref.get("testPutByteArrayKey3", null)); 58980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref 59080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .getByteArray("testPutByteArrayKey3", null))); 59180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 59280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 59380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemove() throws BackingStoreException { 594cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences pref = Preferences.userNodeForPackage(Preferences.class); 59580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 59680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 59780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key", "value"); 59880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value", pref.get("key", null)); 59980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 60080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("key", null)); 60180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 60280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 60380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 60480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 60580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove(null); 60680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 607a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 60880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 60980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 61080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 61180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 61280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 61380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 614a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalStateException expected) { 61580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 61680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 61780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 61880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemoveNode() throws BackingStoreException { 619cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes Preferences pref = Preferences.userNodeForPackage(Preferences.class); 62080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child = pref.node("child"); 62180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child1 = pref.node("child1"); 62280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences grandchild = child.node("grandchild"); 62380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 62480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 62580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 62680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(child.nodeExists("")); 62780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(child1.nodeExists("")); 62880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(grandchild.nodeExists("")); 62980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("")); 63080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 63180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 63280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testAddNodeChangeListener() throws BackingStoreException { 63380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 63480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 63580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(null); 63680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 637a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 63880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 63980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 64080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child1 = null; 64180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 64280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockNodeChangeListener nl = null; 64380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // To get existed node doesn't create the change event 64480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 64580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 64680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 64780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock1"); 648cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(1); 64980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getAdded()); 65080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 651a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node("mock1"); 652cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes // There shouldn't be an event, but wait in case one arrives... 653cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes try { Thread.sleep(1000); } catch (InterruptedException ignored) {} 65480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, nl.getAdded()); 65580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 65680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 65780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 65880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 65980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 66080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // same listener can be added twice, and must be removed twice 66180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 66280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 66380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 66480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 66580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock2"); 666cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(2); 66780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, nl.getAdded()); 66880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 66980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 67080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 67180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 67280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 67380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 67480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event 67580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 67680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 67780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 67880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock3"); 67980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 680cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(2); 68180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getRemoved()); 68280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 68380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 68480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 68580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 68680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event with two listeners 68780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 68880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 68980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 69080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 69180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock6"); 69280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 693cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(4); 69480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, nl.getRemoved()); 69580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 69680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 69780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 69880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 69980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 70080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test add/remove indirect children, or remove several children at the 70180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // same time 702a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences child3; 70380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 70480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 70580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock4"); 70680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.addNodeChangeListener(nl); 707a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node("mock4/mock5"); 708cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(1); 70980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getAdded()); 71080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 71180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child3 = pref.node("mock4/mock5/mock6"); 712cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes // There shouldn't be an event, but wait in case one arrives... 713cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes try { Thread.sleep(1000); } catch (InterruptedException ignored) {} 71480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, nl.getAdded()); 71580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 71680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 71780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child3.removeNode(); 718cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes // There shouldn't be an event, but wait in case one arrives... 719cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes try { Thread.sleep(1000); } catch (InterruptedException ignored) {} 72080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, nl.getRemoved()); 72180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 72280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 723a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node("mock4/mock7"); 724cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(1); 72580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getAdded()); 72680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 72780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 72880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 729cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes nl.waitForEvent(2); 730cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes assertEquals(2, nl.getRemoved()); 73180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 73280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 73380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 73480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 735a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (Exception ignored) { 73680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 73780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 73880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 73980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 740a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson public void testAddPreferenceChangeListener() throws Exception { 74180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 74280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferenceChangeListener pl = null; 74380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 74480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 74580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(null); 74680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 747a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 74880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 74980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 75080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // To get existed node doesn't create the change event 75180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 75280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 75380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 75480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt("mock1", 123); 75580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(1); 75680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pl.getChanged()); 75780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong("long_key", Long.MAX_VALUE); 75880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(2); 75980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, pl.getChanged()); 76080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 76180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 76280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 76380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(2); 764cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes assertEquals(2, pl.getChanged()); 76580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } catch(BackingStoreException bse) { 76680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 76780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail("BackingStoreException is thrown"); 76880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 76980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 77080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 77180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 77280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson //child1.removeNode(); 77380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 77480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 77580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // same listener can be added twice, and must be removed twice 77680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 77780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 77880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 77980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 78080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat("float_key", Float.MIN_VALUE); 78180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(2); 78280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, pl.getChanged()); 78380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 78480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 78580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 78680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 78780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 78880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 78980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event 79080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 79180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 79280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 79380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble("double_key", Double.MAX_VALUE); 79480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(1); 79580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pl.getChanged()); 79680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 79780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 79880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(3); 799cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes assertEquals(3, pl.getChanged()); 80080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } catch(BackingStoreException bse) { 80180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail("BackingStoreException is thrown"); 80280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 80380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 80480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 80580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 80680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 80780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event with two listeners 80880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 80980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 81080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 81180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 81280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("byte_array_key", new byte [] {1 ,2 , 3}); 81380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 81480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 81580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(4); 81680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(4, pl.getChanged()); 81780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } catch(BackingStoreException bse) { 81880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail("BackingStoreException is thrown"); 81980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 82080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 82180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 82280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 82380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 82480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 82580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 82680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 82780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 82880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemoveNodeChangeListener() { 82980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 83080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 83180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(null); 83280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 833a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 83480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 83580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockNodeChangeListener l1 = new MockNodeChangeListener(); 83680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockNodeChangeListener l2 = new MockNodeChangeListener(); 83780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(l1); 83880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(l1); 83980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 84080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l1); 84180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l1); 84280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 84380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l1); 84480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 845a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 84680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 84780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 84880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l2); 84980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 850a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 85180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 85280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 85380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 85480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemovePreferenceChangeListener() { 85580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 85680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 85780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(null); 85880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 859a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 86080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 86180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferenceChangeListener l1 = new MockPreferenceChangeListener(); 86280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferenceChangeListener l2 = new MockPreferenceChangeListener(); 86380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(l1); 86480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(l1); 86580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 86680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l2); 86780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 868a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 86980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 87080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l1); 87180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l1); 87280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 87380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l1); 87480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 875a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 87680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 87780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 87880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 87980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 88080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson static class MockNodeChangeListener implements NodeChangeListener { 88180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private int added = 0; 88280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private int removed = 0; 883cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes private int eventCount = 0; 88480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 885cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public void waitForEvent(int count) { 886cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes synchronized (this) { 887cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes while (eventCount < count) { 888cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes try { 889cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes wait(); 890cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes } catch (InterruptedException ignored) { 891cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes } 892cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes } 89380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 89480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 89580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 896cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public void childAdded(NodeChangeEvent e) { 897cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes if (ENCOURAGE_RACES) try { Thread.sleep(1000); } catch (InterruptedException ignored) { } 898cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes synchronized (this) { 899cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes ++eventCount; 900cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes ++added; 901cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes notifyAll(); 902cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes } 90380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 90480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 905cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public void childRemoved(NodeChangeEvent e) { 906cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes if (ENCOURAGE_RACES) try { Thread.sleep(1000); } catch (InterruptedException ignored) { } 907cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes synchronized (this) { 908cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes ++eventCount; 909cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes ++removed; 910cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes notifyAll(); 911cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes } 91280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 91380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 914cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public synchronized int getAdded() { 91580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return added; 91680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 91780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 91880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized int getRemoved() { 91980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return removed; 92080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 92180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 922cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public synchronized void reset() { 923cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes eventCount = 0; 92480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson added = 0; 92580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson removed = 0; 92680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 92780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 92880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 92980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private static class MockPreferenceChangeListener implements PreferenceChangeListener { 93080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private int changed = 0; 931cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes private int eventCount = 0; 93280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 93380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void waitForEvent(int count) { 934cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes synchronized (this) { 935cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes while (eventCount < count) { 936cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes try { 937cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes wait(); 938cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes } catch (InterruptedException ignored) { 93980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 944cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public void preferenceChange(PreferenceChangeEvent pce) { 945cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes if (ENCOURAGE_RACES) try { Thread.sleep(1000); } catch (InterruptedException ignored) { } 946cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes synchronized (this) { 947cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes ++eventCount; 948cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes ++changed; 949cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes notifyAll(); 95080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 95180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 95280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 953cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public synchronized int getChanged() { 95480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return changed; 95580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 95680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 957cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes public synchronized void reset() { 958cc5d0071987b9cacd58750e53ede3fd3b53fb2c9Elliott Hughes eventCount = 0; 95980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson changed = 0; 96080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 96180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 96280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 96380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @SuppressWarnings("unused") 96480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson static class MockPreferences extends Preferences { 96580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 96680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 96780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String absolutePath() { 96880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 96980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 97080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 97180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 97280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String[] childrenNames() throws BackingStoreException { 97380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 97480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 97580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 97680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 97780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void clear() throws BackingStoreException { 97880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 97980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 98080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 98180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void exportNode(OutputStream ostream) throws IOException, BackingStoreException { 98280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 98380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 98480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 98580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void exportSubtree(OutputStream ostream) throws IOException, BackingStoreException { 98680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 98780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 98880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 98980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void flush() throws BackingStoreException { 99080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 99180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 99280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 99380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String get(String key, String deflt) { 99480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 99580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 99680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 99780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 99880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public boolean getBoolean(String key, boolean deflt) { 99980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return false; 100080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 100180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 100280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 100380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public byte[] getByteArray(String key, byte[] deflt) { 100480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 100580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 100680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 100780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 100880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public double getDouble(String key, double deflt) { 100980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 101080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 101180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 101280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 101380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public float getFloat(String key, float deflt) { 101480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 101580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 101680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 101780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 101880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public int getInt(String key, int deflt) { 101980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 102080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 102180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 102280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 102380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public long getLong(String key, long deflt) { 102480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 102580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 102680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 102780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 102880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public boolean isUserNode() { 102980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return false; 103080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 103180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 103280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 103380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String[] keys() throws BackingStoreException { 103480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 103580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 103680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 103780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 103880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String name() { 103980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 104080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 104180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 104280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 104380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public Preferences node(String name) { 104480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 104580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 104680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 104780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 104880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public boolean nodeExists(String name) throws BackingStoreException { 104980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return false; 105080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 105180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 105280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 105380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public Preferences parent() { 105480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 105580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 105680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 105780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 105880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void put(String key, String value) { 105980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 106080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 106180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 106280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putBoolean(String key, boolean value) { 106380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 106480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 106580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 106680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putByteArray(String key, byte[] value) { 106780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 106880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 106980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 107080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putDouble(String key, double value) { 107180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 107280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 107380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 107480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putFloat(String key, float value) { 107580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 107680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 107780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 107880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putInt(String key, int value) { 107980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 108080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 108180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 108280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putLong(String key, long value) { 108380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 108480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 108580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 108680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void remove(String key) { 108780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 108880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 108980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 109080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void removeNode() throws BackingStoreException { 109180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 109280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 109380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 109480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void addNodeChangeListener(NodeChangeListener ncl) { 109580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 109680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 109780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 109880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void addPreferenceChangeListener(PreferenceChangeListener pcl) { 109980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 110080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 110180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 110280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void removeNodeChangeListener(NodeChangeListener ncl) { 110380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 110480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 110580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 110680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void removePreferenceChangeListener(PreferenceChangeListener pcl) { 110780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 110880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 110980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 111080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void sync() throws BackingStoreException { 111180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 111280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 111380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 111480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String toString() { 111580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 111680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 111780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 111880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson} 1119