Hello all; I've posted a webrev for review which corrects the problem and adds appropriate tests.
http://cr.openjdk.java.net/~mduigou/JDK-8029795/0/webrev/ I also updated the documentation to mention that getOrDefault as well as the replace methods generate access events. Mike On Dec 9 2013, at 02:11 , Paul Sandoz <paul.san...@oracle.com> wrote: > Hi Roman, > > On Dec 8, 2013, at 10:29 PM, Roman Leventov <leven...@ya.ru> wrote: >> Especially getDefault(). Doesn't this violate principle of least >> astonishment? Details and proof: >> http://stackoverflow.com/questions/20440136/why-doesnt-new-map-methods-generate-entry-accesses-on-linkedhashmap >> > > Thanks. I believe that all the new (default) Map methods but getOrDefault > behave correctly. So i think it is a bug, we need to add something like the > following to LinkedHashMap: > > public V getOrDefault(Object key, V defaultValue) { > Node<K,V> e; > if ((e = getNode(hash(key), key)) == null) > return defaultValue; > if (accessOrder) > afterNodeAccess(e); > return e.value; > } > > and also update the documentation to clarify (via the implementation > specification of the default methods it can be inferred what the behaviour > is, but that ain't obvious). > > I have logged this bug: > > https://bugs.openjdk.java.net/browse/JDK-8029795 > > Paul. > > >