JDK 9 RFR of JDK-8036747: Fix unchecked lint warnings in java.security.Provider

Xuelei Fan xuelei.fan at oracle.com
Thu Mar 6 05:22:30 UTC 2014


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)) {
> 




More information about the security-dev mailing list