< prev index next > test/jdk/java/util/Collections/CheckedListReplaceAll.java
Print this page
/*
! * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
/*
! * Copyright (c) 2014, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
/*
* @test
* @bug 8047795 8053938
* @summary Ensure that replaceAll operator cannot add bad elements
* @author Mike Duigou
+ * @library /test/lib
*/
+ import jdk.test.lib.valueclass.VClass;
import java.util.*;
import java.util.function.UnaryOperator;
public class CheckedListReplaceAll {
+
public static void main(String[] args) {
List unwrapped = Arrays.asList(new Object[]{1, 2, 3});
List<Object> wrapped = Collections.checkedList(unwrapped, Integer.class);
UnaryOperator evil = e -> (((int) e) % 2 != 0) ? e : "evil";
throw new RuntimeException("NPE not thrown when passed a null operator");
} catch (NullPointerException thwarted) {
thwarted.printStackTrace(System.out);
System.out.println("Curses! Foiled again!");
}
+
+ List<VClass> vList = Collections.checkedList(new ArrayList<VClass>(Arrays.asList(new VClass(1, new int[] { 1 }))), VClass.class);
+ vList.replaceAll(v -> new VClass(v.x + 1, new int[] { v.x + 1 }));
+ if (!vList.get(0).equals(new VClass(2, new int[] { 2 })))
+ throw new RuntimeException("value checkedList replaceAll failed");
+
+ List raw = Collections.checkedList(new ArrayList<VClass>(Arrays.asList(new VClass(1, new int[] { 1 }))), VClass.class);
+ try {
+ raw.replaceAll(e -> "not a Tuple");
+ throw new RuntimeException("value checkedList replaceAll accepted wrong type");
+ } catch (ClassCastException expected) { }
}
}
< prev index next >