jdk1.4 build46 windows NT testing.
java.util.prefs.Preferences
removeNodeChangeListener(NodeChangeListener ncl)
IllegalArgumentException - not thrown when ncl is not a registered
NodeChangeListener
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();
NodeChangeListenerTestAdd ncl = new NodeChangeListenerTestAdd();
//removenodeListener
N1.removeNodeChangeListener(ncl);
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 NodeChangeListenerTestAdd implements NodeChangeListener {
private Preferences nodeAdded = null;
private Preferences parentNode = null;
private Preferences nodeRemoved = null;
private int nodeAddedCount = 0;
private int nodeRemovedCount = 0;
public void childAdded(NodeChangeEvent evt) {
nodeAdded = evt.getChild();
parentNode = evt.getParent();
nodeAddedCount++;
}
public Preferences getNodeAdded() {
return nodeAdded;
}
public Preferences getParentNode() {
return parentNode;
}
public int getNodeAddedCount(){
return nodeAddedCount;
}
public void childRemoved(NodeChangeEvent evt) {
nodeRemoved = evt.getChild();
nodeRemovedCount++;
}
public Preferences getNodeRemoved() {
return nodeRemoved;
}
public int getNodeRemoveCount(){
return nodeRemovedCount;
}
}
----------------------output---------------------------------------
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemoveNodeChangeListener>java -version
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b46)
Java HotSpot(TM) Client VM (build B45, mixed mode)
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemoveNodeChangeListener>javac Test.java
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemoveNodeChangeListener>java Test
Exception thrown = java.lang.NegativeArraySizeException
Test Fail
java.lang.NegativeArraySizeException
at java.util.prefs.AbstractPreferences.removeNodeChangeListener(../../../src/share/classes/java/util/prefs/AbstractPreferences.java:958)
at Test.main(Test.java:16)
java.util.prefs.Preferences
removeNodeChangeListener(NodeChangeListener ncl)
IllegalArgumentException - not thrown when ncl is not a registered
NodeChangeListener
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();
NodeChangeListenerTestAdd ncl = new NodeChangeListenerTestAdd();
//removenodeListener
N1.removeNodeChangeListener(ncl);
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 NodeChangeListenerTestAdd implements NodeChangeListener {
private Preferences nodeAdded = null;
private Preferences parentNode = null;
private Preferences nodeRemoved = null;
private int nodeAddedCount = 0;
private int nodeRemovedCount = 0;
public void childAdded(NodeChangeEvent evt) {
nodeAdded = evt.getChild();
parentNode = evt.getParent();
nodeAddedCount++;
}
public Preferences getNodeAdded() {
return nodeAdded;
}
public Preferences getParentNode() {
return parentNode;
}
public int getNodeAddedCount(){
return nodeAddedCount;
}
public void childRemoved(NodeChangeEvent evt) {
nodeRemoved = evt.getChild();
nodeRemovedCount++;
}
public Preferences getNodeRemoved() {
return nodeRemoved;
}
public int getNodeRemoveCount(){
return nodeRemovedCount;
}
}
----------------------output---------------------------------------
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemoveNodeChangeListener>java -version
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b46)
Java HotSpot(TM) Client VM (build B45, mixed mode)
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemoveNodeChangeListener>javac Test.java
I:\merlin\dev\testbase\src\libs_api_tests\common\java_util\prefs\Preferences\SJvmSThread\userRoot\RemoveNodeChangeListener>java Test
Exception thrown = java.lang.NegativeArraySizeException
Test Fail
java.lang.NegativeArraySizeException
at java.util.prefs.AbstractPreferences.removeNodeChangeListener(../../../src/share/classes/java/util/prefs/AbstractPreferences.java:958)
at Test.main(Test.java:16)