jdk1.4 build46
java.util.prefs.Preferences
removePreferenceChangeListener(PreferenceChangeListener pcl)
IllegalArgumentException not thrown when pcl was not a registered preference
change listener on the node.
Instead NegativeArraySizeException thrown
--------------------Test Program-----------------------
import java.util.prefs.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
try {
Preferences userRoot = Preferences.userRoot();
Preferences N1 = userRoot.node("N1");
userRoot.flush();
PreferenceChangeListenerTestClass11 pcl = new PreferenceChangeListenerTestClass11();
N1.removePreferenceChangeListener(pcl);
System.out.println("Test Fail");
} catch(IllegalArgumentException iae) {
System.out.println("Expected IllegalArgumentException thrown = " + iae + " Test Pass");
} catch (Exception e) {
System.out.println("Exception thrown = " + e);
System.out.println("Test Fail");
e.printStackTrace();
}
}
}
class PreferenceChangeListenerTestClass11 implements PreferenceChangeListener {
private int totalPreferenceCount = 0;
String keyGot = null;
String valueGot = null;
Preferences preferenceGot = null;
public void preferenceChange(PreferenceChangeEvent evt) {
totalPreferenceCount++;
keyGot = evt.getKey();//old evt.getName();
valueGot = evt.getNewValue();
preferenceGot = evt.getNode();
}
public int getTotalPreferenceCount() {
return totalPreferenceCount;
}
public String getKey(){
return keyGot;
}
public String getValue(){
return valueGot;
}
public Preferences getPreference() {
return preferenceGot;
}
}
---------------------------------output--------------------------------
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemovePreferenceChangeListener>javac Test.java
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemovePreferenceChangeListener>java Test
Exception thrown = java.lang.NegativeArraySizeException
Test Fail
java.lang.NegativeArraySizeException
at java.util.prefs.AbstractPreferences.removePreferenceChangeListener(../../../src/share/classes/java/util/prefs/AbstractPreferences.java:915)
at Test.main(Test.java:14)
java.util.prefs.Preferences
removePreferenceChangeListener(PreferenceChangeListener pcl)
IllegalArgumentException not thrown when pcl was not a registered preference
change listener on the node.
Instead NegativeArraySizeException thrown
--------------------Test Program-----------------------
import java.util.prefs.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
try {
Preferences userRoot = Preferences.userRoot();
Preferences N1 = userRoot.node("N1");
userRoot.flush();
PreferenceChangeListenerTestClass11 pcl = new PreferenceChangeListenerTestClass11();
N1.removePreferenceChangeListener(pcl);
System.out.println("Test Fail");
} catch(IllegalArgumentException iae) {
System.out.println("Expected IllegalArgumentException thrown = " + iae + " Test Pass");
} catch (Exception e) {
System.out.println("Exception thrown = " + e);
System.out.println("Test Fail");
e.printStackTrace();
}
}
}
class PreferenceChangeListenerTestClass11 implements PreferenceChangeListener {
private int totalPreferenceCount = 0;
String keyGot = null;
String valueGot = null;
Preferences preferenceGot = null;
public void preferenceChange(PreferenceChangeEvent evt) {
totalPreferenceCount++;
keyGot = evt.getKey();//old evt.getName();
valueGot = evt.getNewValue();
preferenceGot = evt.getNode();
}
public int getTotalPreferenceCount() {
return totalPreferenceCount;
}
public String getKey(){
return keyGot;
}
public String getValue(){
return valueGot;
}
public Preferences getPreference() {
return preferenceGot;
}
}
---------------------------------output--------------------------------
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemovePreferenceChangeListener>javac Test.java
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemovePreferenceChangeListener>java Test
Exception thrown = java.lang.NegativeArraySizeException
Test Fail
java.lang.NegativeArraySizeException
at java.util.prefs.AbstractPreferences.removePreferenceChangeListener(../../../src/share/classes/java/util/prefs/AbstractPreferences.java:915)
at Test.main(Test.java:14)