<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hello, Alan.<div><br></div><div>Thank you for the review.</div><div>I've updated the fix according to your comments. The new version is here:</div><div><a href="http://cr.openjdk.java.net/~pchelko/9/8037485/webrev.02/">http://cr.openjdk.java.net/~pchelko/9/8037485/webrev.02/</a></div><div><br></div><div>Only the DataFlavorUtil file is updated. DesktopService now uses a lazy holder, the doc is fixed, the getFlavorTable method is fixed. </div><div>All the rest is the same as in the previous version.</div><div><br></div><div>Thank you.</div><div>With best regards. Petr.</div><div><br><div><div>On 22 июля 2014 г., at 19:08, Alan Bateman <<a href="mailto:Alan.Bateman@oracle.com">Alan.Bateman@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
  
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 22/07/2014 15:04, Petr Pchelko
      wrote:<br>
    </div>
    <blockquote cite="mid:357393F5-C72C-4122-B753-C8A515116616@oracle.com" type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Hello,
      <div><br>
      </div>
      <div>I've updated the fix. The new version is located here:</div>
      <div><a moz-do-not-send="true" href="http://cr.openjdk.java.net/%7Epchelko/9/8037485/webrev.01/">http://cr.openjdk.java.net/~pchelko/9/8037485/webrev.01/</a></div>
      <div><br>
      </div>
      <div>I've reverted RMI changes as they will be handled
        separately. </div>
      <div>Also I've changed package names, now the internal part of the
        datatransfer module is called sun.datatransfer. This allowed to
        make less renamings and leave sun.awt.datatransfer package as
        is. </div>
      <div><br>
      </div>
      <div>With best regards. Petr.</div>
      <br>
    </blockquote>
    I'm skimmed over the changes (not a detailed review, best for
    someone working in this area to do that). It looks much better to
    me. We can deal with the optional dependency on RMI separately.<br>
    <br>
    I've mostly focused on the ServiceLoader usage in this webrev.
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    The only concern is that getDesktopService
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    is "static synchronized" so that you cause contention.  You could
    replace this with a lazy holder idiom, or just make make
    desktopService volatile, it shouldn't matter if multiple threads
    cause desktopDatatransferService is set more than once. A suggestion
    for getFlavorMap is use "FlavorMap map = this.flavorMap" and check
    it for null to avoid doing two volatile reads.<br>
    <br>
    A minor type on the declaration of flavorMap, it reads "if there is
    not Desktop module", I think you mean "if there is not a desktop" or
    "if there isn't a desktop module".<br>
    <br>
    -Alan.<br>
  </div>

</blockquote></div><br></div></body></html>