8053938: Collections.checkedList(empty list).replaceAll((UnaryOperator)null) doesn't throw NPE after JDK-8047795

Reviewed-by: rriggs, mduigou
This commit is contained in:
Chris Hegarty 2014-07-30 17:42:18 +01:00
parent c5d6fb2678
commit 343fd87ea8
2 changed files with 13 additions and 1 deletions
jdk
src/share/classes/java/util
test/java/util/Collections

@ -3486,6 +3486,7 @@ public class Collections {
*/
@Override
public void replaceAll(UnaryOperator<E> operator) {
Objects.requireNonNull(operator);
list.replaceAll(e -> typeCheck(operator.apply(e)));
}

@ -23,7 +23,7 @@
/*
* @test
* @bug 8047795
* @bug 8047795 8053938
* @summary Ensure that replaceAll operator cannot add bad elements
* @author Mike Duigou
*/
@ -46,5 +46,16 @@ public class CheckedListReplaceAll {
thwarted.printStackTrace(System.out);
System.out.println("Curses! Foiled again!");
}
unwrapped = Arrays.asList(new Object[]{}); // Empty list
wrapped = Collections.checkedList(unwrapped, Integer.class);
try {
wrapped.replaceAll((UnaryOperator)null);
System.out.printf("Bwahaha! I have defeated you! %s\n", wrapped);
throw new RuntimeException("NPE not thrown when passed a null operator");
} catch (NullPointerException thwarted) {
thwarted.printStackTrace(System.out);
System.out.println("Curses! Foiled again!");
}
}
}