PreferencesTest.java revision b0b81dfb681cf401b3fc108b9abe432ee6736164
1b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath/* Licensed to the Apache Software Foundation (ASF) under one or more 2b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * contributor license agreements. See the NOTICE file distributed with 3b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * this work for additional information regarding copyright ownership. 4b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 5b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * (the "License"); you may not use this file except in compliance with 6b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * the License. You may obtain a copy of the License at 7b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * 8b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * 10b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * Unless required by applicable law or agreed to in writing, software 11b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * See the License for the specific language governing permissions and 14b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * limitations under the License. 15b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath */ 16b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 17b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathpackage org.apache.harmony.tests.java.util.prefs; 18b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 19b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.ByteArrayInputStream; 20b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.File; 21b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.IOException; 22b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.InputStream; 23b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.OutputStream; 24b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.net.MalformedURLException; 25b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.nio.charset.StandardCharsets; 26b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.AbstractPreferences; 27b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.BackingStoreException; 28b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.InvalidPreferencesFormatException; 29b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.NodeChangeListener; 30b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.PreferenceChangeListener; 31b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.Preferences; 32b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.PreferencesFactory; 33b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport junit.framework.TestCase; 34b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport libcore.io.IoUtils; 35b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 36b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath/** 37b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * 38b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath */ 39b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathpublic class PreferencesTest extends TestCase { 40b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 41b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private static final String PREFS = 42b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "<!DOCTYPE preferences SYSTEM \"http://java.sun.com/dtd/preferences.dtd\">" + 43b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "<preferences>" + 44b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "<root type=\"user\">" + 45b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "<map></map>" + 46b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "</root>" + 47b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "</preferences>"; 48b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 49b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 50b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private MockInputStream stream ; 51b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private InputStream in; 52b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private PreferencesFactory defaultFactory; 53b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 54b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 55b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath protected void setUp() throws Exception { 56b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath File tmpDir = IoUtils.createTemporaryDirectory("OldAbstractPreferencesTest"); 57b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath defaultFactory = Preferences.setPreferencesFactory( 58b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new AbstractPreferencesTest.TestPreferencesFactory(tmpDir.getAbsolutePath())); 59b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 60b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath in = new ByteArrayInputStream(PREFS.getBytes(StandardCharsets.US_ASCII)); 61b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath stream = new MockInputStream(in); 62b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 63b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 64b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 65b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath protected void tearDown() throws Exception { 66b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.setPreferencesFactory(defaultFactory); 67b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath stream.close(); 68b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 69b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 70b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testSystemNodeForPackage() throws Exception { 71b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences p = Preferences.systemNodeForPackage(Object.class); 72b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 73b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("/java/lang", p.absolutePath()); 74b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p instanceof AbstractPreferences); 75b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences root = Preferences.systemRoot(); 76b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences parent = root.node("java"); 77b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(parent, p.parent()); 78b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(p.isUserNode()); 79b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("lang", p.name()); 80b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("System Preference Node: " + p.absolutePath(), p 81b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .toString()); 82b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 83b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.childrenNames().length); 84b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.keys().length); 85b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath parent.removeNode(); 86b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 87b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.userNodeForPackage(null); 88b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 89b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException e) { 90b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // Expected 91b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 92b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 93b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 94b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testSystemRoot() throws BackingStoreException { 95b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences p = Preferences.systemRoot(); 96b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p instanceof AbstractPreferences); 97b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("/", p.absolutePath()); 98b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(null, p.parent()); 99b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(p.isUserNode()); 100b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("", p.name()); 101b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("System Preference Node: " + p.absolutePath(), p 102b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .toString()); 103b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 104b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 105b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testConsts() { 106b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(80, Preferences.MAX_KEY_LENGTH); 107b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(80, Preferences.MAX_NAME_LENGTH); 108b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(8192, Preferences.MAX_VALUE_LENGTH); 109b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 110b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 111b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testUserNodeForPackage() throws BackingStoreException { 112b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences p = Preferences.userNodeForPackage(Object.class); 113b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("/java/lang", p.absolutePath()); 114b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p instanceof AbstractPreferences); 115b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences root = Preferences.userRoot(); 116b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences parent = root.node("java"); 117b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(parent, p.parent()); 118b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p.isUserNode()); 119b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("lang", p.name()); 120b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("User Preference Node: " + p.absolutePath(), p.toString()); 121b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.childrenNames().length); 122b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.keys().length); 123b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 124b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 125b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.userNodeForPackage(null); 126b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 127b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException e) { 128b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // Expected 129b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 130b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 131b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 132b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testUserRoot() throws BackingStoreException { 133b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences p = Preferences.userRoot(); 134b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p instanceof AbstractPreferences); 135b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("/", p.absolutePath()); 136b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(null, p.parent()); 137b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p.isUserNode()); 138b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("", p.name()); 139b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("User Preference Node: " + p.absolutePath(), p.toString()); 140b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 141b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 142b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testImportPreferences() throws Exception { 143b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences prefs = null; 144b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 145b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath prefs = Preferences.userNodeForPackage(PreferencesTest.class); 146b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 147b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath prefs.put("prefskey", "oldvalue"); 148b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath prefs.put("prefskey2", "oldvalue2"); 149b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath in = PreferencesTest.class 150b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .getResourceAsStream("/resources/prefs/java/util/prefs/userprefs.xml"); 151b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.importPreferences(in); 152b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 153b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath prefs = Preferences.userNodeForPackage(PreferencesTest.class); 154b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, prefs.childrenNames().length); 155b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(prefs.nodeExists("mock/child/grandson")); 156b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("newvalue", prefs.get("prefskey", null)); 157b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("oldvalue2", prefs.get("prefskey2", null)); 158b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("newvalue3", prefs.get("prefskey3", null)); 159b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 160b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath in = PreferencesTest.class.getResourceAsStream( 161b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "/prefs/java/util/prefs/userprefs-badform.xml"); 162b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 163b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.importPreferences(in); 164b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw InvalidPreferencesFormatException"); 165b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (InvalidPreferencesFormatException expected) { 166b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 167b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } finally { 168b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 169b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath prefs = Preferences.userNodeForPackage(PreferencesTest.class); 170b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath prefs.removeNode(); 171b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (Exception e) { 172b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 173b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 174b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 175b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 176b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testImportPreferencesException() throws Exception { 177b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 178b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.importPreferences(null); 179b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MalformedURLException"); 180b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MalformedURLException expected) { 181b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 182b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 183b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath byte[] source = new byte[0]; 184b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath InputStream in = new ByteArrayInputStream(source); 185b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 186b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.importPreferences(in); 187b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw InvalidPreferencesFormatException"); 188b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (InvalidPreferencesFormatException expected) { 189b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 190b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 191b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath stream.setResult(MockInputStream.exception); 192b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 193b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.importPreferences(stream); 194b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IOException"); 195b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IOException expected) { 196b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 197b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 198b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath stream.setResult(MockInputStream.runtimeException); 199b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 200b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.importPreferences(stream); 201b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw RuntimeException"); 202b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (RuntimeException expected) { 203b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 204b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 205b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 206b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath static class MockInputStream extends InputStream { 207b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 208b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath static final int normal = 0; 209b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 210b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath static final int exception = 1; 211b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 212b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath static final int runtimeException = 2; 213b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 214b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath int result = normal; 215b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 216b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath InputStream wrapper; 217b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 218b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void setResult(int i) { 219b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath result = i; 220b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 221b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 222b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private void checkException() throws IOException { 223b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath switch (result) { 224b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath case normal: 225b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 226b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath case exception: 227b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath throw new IOException("test"); 228b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath case runtimeException: 229b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath throw new RuntimeException("test"); 230b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 231b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 232b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 233b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public MockInputStream(InputStream in) { 234b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath wrapper = in; 235b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 236b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 237b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 238b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public int read() throws IOException { 239b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath checkException(); 240b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return wrapper.read(); 241b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 242b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 243b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 244b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath static class MockPreferences extends Preferences { 245b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 246b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public MockPreferences() { 247b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath super(); 248b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 249b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 250b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 251b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public String absolutePath() { 252b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 253b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 254b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 255b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 256b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public String[] childrenNames() throws BackingStoreException { 257b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 258b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 259b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 260b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 261b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void clear() throws BackingStoreException { 262b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 263b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 264b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 265b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void exportNode(OutputStream ostream) throws IOException, 266b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath BackingStoreException { 267b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 268b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 269b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 270b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void exportSubtree(OutputStream ostream) throws IOException, 271b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath BackingStoreException { 272b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 273b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 274b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 275b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void flush() throws BackingStoreException { 276b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 277b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 278b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 279b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public String get(String key, String deflt) { 280b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 281b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 282b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 283b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 284b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public boolean getBoolean(String key, boolean deflt) { 285b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return false; 286b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 287b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 288b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 289b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public byte[] getByteArray(String key, byte[] deflt) { 290b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 291b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 292b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 293b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 294b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public double getDouble(String key, double deflt) { 295b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return 0; 296b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 297b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 298b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 299b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public float getFloat(String key, float deflt) { 300b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return 0; 301b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 302b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 303b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 304b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public int getInt(String key, int deflt) { 305b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return 0; 306b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 307b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 308b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 309b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public long getLong(String key, long deflt) { 310b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return 0; 311b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 312b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 313b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 314b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public boolean isUserNode() { 315b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return false; 316b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 317b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 318b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 319b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public String[] keys() throws BackingStoreException { 320b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 321b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 322b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 323b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 324b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public String name() { 325b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 326b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 327b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 328b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 329b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public Preferences node(String name) { 330b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 331b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 332b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 333b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 334b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public boolean nodeExists(String name) throws BackingStoreException { 335b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return false; 336b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 337b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 338b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 339b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public Preferences parent() { 340b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 341b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 342b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 343b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 344b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void put(String key, String value) { 345b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 346b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 347b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 348b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 349b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void putBoolean(String key, boolean value) { 350b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 351b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 352b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 353b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 354b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void putByteArray(String key, byte[] value) { 355b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 356b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 357b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 358b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 359b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void putDouble(String key, double value) { 360b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 361b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 362b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 363b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 364b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void putFloat(String key, float value) { 365b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 366b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 367b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 368b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 369b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void putInt(String key, int value) { 370b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 371b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 372b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 373b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 374b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void putLong(String key, long value) { 375b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 376b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 377b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 378b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 379b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void remove(String key) { 380b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 381b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 382b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 383b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 384b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void removeNode() throws BackingStoreException { 385b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 386b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 387b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 388b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 389b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void addNodeChangeListener(NodeChangeListener ncl) { 390b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 391b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 392b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 393b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 394b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void addPreferenceChangeListener(PreferenceChangeListener pcl) { 395b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 396b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 397b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 398b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 399b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void removeNodeChangeListener(NodeChangeListener ncl) { 400b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 401b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 402b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 403b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 404b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void removePreferenceChangeListener(PreferenceChangeListener pcl) { 405b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 406b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 407b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 408b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 409b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void sync() throws BackingStoreException { 410b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 411b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 412b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 413b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 414b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public String toString() { 415b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return null; 416b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 417b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 418b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 419b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 420b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath} 421