Hi Vipin,

making containsKey("key") return true without also ensuring the
other Map operations like get, put, .. work consistently and
transparently with String keys seem like a partial fix that will subtly
break operations like getOrDefault.

And why not "if (name instanceof String)"?

Thanks!

/Claes

On 2020-05-11 13:30, Vipin Mv1 wrote:
Hi,

Please review the fix for the following issue.

https://bugs.openjdk.java.net/browse/JDK-6470126


diff -r 53568400fec3 src/java.base/share/classes/java/util/jar/Attributes.java
--- a/src/java.base/share/classes/java/util/jar/Attributes.java Thu Mar 26 
15:26:51 2020 +0000
+++ b/src/java.base/share/classes/java/util/jar/Attributes.java Mon May 11 
15:00:01 2020 +0530
@@ -205,7 +205,10 @@
       * @return true if this Map contains the specified attribute name
       */
      public boolean containsKey(Object name) {
-        return map.containsKey(name);
+        if(String.class.isInstance(name))
+            return map.containsKey(Name.of((String)name));
+        else
+            return map.containsKey(name);
      }
/**

Thanks & Regards
Vipin Menon

Reply via email to