Looks fine to me. Thanks, Joe! Xuelei
On 3/6/2014 9:35 AM, Joe Darcy wrote: > Hello, > > Please review the patch below which addresses > > JDK-8036747: Fix unchecked lint warnings in java.security.Provider > > In brief, java.security.Provider extends Properties which in extends > Hashtable<Object, Object> even though morally Properties are a > Map<String, String>. > > The implementations of new-in-JDK-8 methods like > > replaceAll(BiFunction<? super K, ? super V, ? extends V> function) > > need to have a public signature where K and V are replaced with > "Object", but the actual function needs to operate over "String". > > The patch suppresses warnings related to several unchecked casts from > Object-based functions to String-based functions. > > Thanks, > > -Joe > > diff -r 07d78a5dd853 src/share/classes/java/security/Provider.java > --- a/src/share/classes/java/security/Provider.java Wed Mar 05 > 17:08:37 2014 -0800 > +++ b/src/share/classes/java/security/Provider.java Wed Mar 05 > 17:30:04 2014 -0800 > @@ -769,6 +769,7 @@ > return super.replace(key, value); > } > > + @SuppressWarnings("unchecked") // Function must actually operate > over strings > private void implReplaceAll(BiFunction<? super Object, ? super > Object, ? extends Object> function) { > legacyChanged = true; > if (legacyStrings == null) { > @@ -779,7 +780,7 @@ > super.replaceAll(function); > } > > - > + @SuppressWarnings("unchecked") // Function must actually operate > over strings > private Object implMerge(Object key, Object value, BiFunction<? > super Object, ? super Object, ? extends Object> remappingFunction) { > if ((key instanceof String) && (value instanceof String)) { > if (!checkLegacy(key)) { > @@ -791,6 +792,7 @@ > return super.merge(key, value, remappingFunction); > } > > + @SuppressWarnings("unchecked") // Function must actually operate > over strings > private Object implCompute(Object key, BiFunction<? super Object, ? > super Object, ? extends Object> remappingFunction) { > if (key instanceof String) { > if (!checkLegacy(key)) { > @@ -802,6 +804,7 @@ > return super.compute(key, remappingFunction); > } > > + @SuppressWarnings("unchecked") // Function must actually operate > over strings > private Object implComputeIfAbsent(Object key, Function<? super > Object, ? extends Object> mappingFunction) { > if (key instanceof String) { > if (!checkLegacy(key)) { > @@ -813,6 +816,7 @@ > return super.computeIfAbsent(key, mappingFunction); > } > > + @SuppressWarnings("unchecked") // Function must actually operate > over strings > private Object implComputeIfPresent(Object key, BiFunction<? super > Object, ? super Object, ? extends Object> remappingFunction) { > if (key instanceof String) { > if (!checkLegacy(key)) { >