RFR: 8047795: Collections.checkedList checking bypassed by List.replaceAll

Mike Duigou mike.duigou at oracle.com
Tue Jun 24 18:06:03 UTC 2014


On Jun 24 2014, at 01:46 , Chris Hegarty <chris.hegarty at oracle.com> wrote:

> Looks good to me Mike.
> 
> I agree with Paul’s comment that the javadoc change will never be seen in the public docs, but I still think it is a reasonable addition for future maintainers.
> 
> Trivially, you should probably add @SuppressWarnings("unchecked”) to typeCheck(Object).

Done.


> 
> -Chris.
> 
> On 24 Jun 2014, at 01:42, Mike Duigou <mike.duigou at oracle.com> wrote:
> 
>> Hello all;
>> 
>> This changeset corrects a reported problem with the lists returned by Collections.checkedList(). Since Java 8 the replaceAll() method on checked lists has erroneously allowed the operator providing replacements to provide illegal replacement values which are then stored, unchecked into the wrapped list.
>> 
>> This changeset adds a check on the proposed replacement value and throws a ClassCastException if the replacement value is incompatible with the list. Additionally the javadoc is updated to inform users that a ClassCastException may result if the proposed replacement is unacceptable.
>> 
>> Note that this changeset takes the strategy of failing when the illegal value is encountered. Replacements of earlier items in the list are retained.
>> 
>> jbsbug: https://bugs.openjdk.java.net/browse/JDK-8047795
>> webrev: http://cr.openjdk.java.net/~mduigou/JDK-8047795/0/webrev/
>> 
>> This change will be backported to Java 8.
>> 
>> Mike
> 




More information about the core-libs-dev mailing list