test/java/util/prefs/RemoveNullKeyCheck.java

Print this page

        

*** 20,44 **** * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 7160242 * @summary Check if NullPointerException is thrown if the key passed * to remove() is null. */ import java.util.prefs.Preferences; public class RemoveNullKeyCheck { public static void main(String[] args) throws Exception { try { Preferences node = Preferences.userRoot().node("N1"); node.remove(null); ! throw new RuntimeException("Expected NullPointerException " + ! "not thrown"); } catch (NullPointerException npe) { - System.out.println("NullPointerException thrown"); } } } --- 20,98 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 7160242 7165118 * @summary Check if NullPointerException is thrown if the key passed * to remove() is null. */ import java.util.prefs.Preferences; + import java.util.prefs.AbstractPreferences; + import java.util.prefs.BackingStoreException; public class RemoveNullKeyCheck { + private static boolean failed = false; + public static void main(String[] args) throws Exception { + checkPreferencesRemove(); + checkAbstractPreferencesRemove(); + if (failed) { + throw new RuntimeException("Expected NullPointerException " + + "not thrown"); + } + } + + public static void checkPreferencesRemove() { try { Preferences node = Preferences.userRoot().node("N1"); node.remove(null); ! failed = true; } catch (NullPointerException npe) { } } + + public static void checkAbstractPreferencesRemove() { + + Preferences abstrPrefs = new AbstractPreferences(null, "") { + @Override + protected void putSpi(String key, String value) { + } + @Override + protected String getSpi(String key) { + return null; + } + @Override + protected void removeSpi(String key) { + } + @Override + protected void removeNodeSpi() throws BackingStoreException { + } + @Override + protected String[] keysSpi() throws BackingStoreException { + return new String[0]; + } + @Override + protected String[] childrenNamesSpi() throws BackingStoreException { + return new String[0]; + } + @Override + protected AbstractPreferences childSpi(String name) { + return null; + } + @Override + protected void syncSpi() throws BackingStoreException { + } + @Override + protected void flushSpi() throws BackingStoreException { + } + }; + + try { + abstrPrefs.remove(null); + failed = true; + } catch(NullPointerException npe) { + } + } }