<AWT Dev> [9] Review request for 8058473: "Comparison method violates its general contract" when using Clipboard
Andrew Brygin
andrew.brygin at oracle.com
Wed Sep 24 14:15:16 UTC 2014
Hello Anton,
the fix looks fine to me.
Thanks,
Andrew
On 9/24/2014 1:51 PM, anton nashatyrev wrote:
> Sergey, thanks for review!
>
> Any other volunteer?
>
> On 19.09.2014 17:27, Sergey Bylokhov wrote:
>> Hi, Anton.
>> Then the fix looks good, thanks for clarification.
>>
>> On 19.09.2014 17:25, anton nashatyrev wrote:
>>> We don't treat the 'text/plain; class=java.lang.Object' as TextType
>>> (DataFlavor.isFlavorTextType()) since it has unknown representation
>>> class. Such flavors fall into 'other' category.
>>>
>>> On 19.09.2014 17:16, Sergey Bylokhov wrote:
>>>> Hi, Anton.
>>>> Why "unknown/flavor" is before "text/plain" in the fixed version?
>>>>
>>>> text/plain; class=java.io.Serializable; charset=unicode
>>>> text/html; class=java.io.Serializable; charset=unicode
>>>> unknown/flavor; class=java.io.InputStream
>>>> unknown/flavor; class=java.lang.Object
>>>> text/unknown; class=java.lang.Object; charset=unicode
>>>> text/unknown; class=java.lang.Object
>>>> text/plain; class=java.lang.Object; charset=unicode
>>>> text/plain; class=java.lang.Object
>>>>
>>>>
>>>>
>>>> On 19.09.2014 15:58, anton nashatyrev wrote:
>>>>> Hi Sergey,
>>>>>
>>>>> On 18.09.2014 17:30, Sergey Bylokhov wrote:
>>>>>> - Can you try to change sort TimSort algorithm to mergerSort.
>>>>>> What the order will be in this case ?(see JDK-8048887).
>>>>>
>>>>> The mergeSort seems to be more relaxed regarding the Comparator
>>>>> correctness (BTW TimSort also doesn't fail each time - this
>>>>> depends on initial elements positions). The order of course is not
>>>>> correct with the incorrect comparator:
>>>>>
>>>>>
>>>>> MergeSort with current comparator Merge/TimSort with fixed
>>>>> Comparator
>>>>> --------------------------------- -----------------------------------
>>>>> application/unknown; class=java.io.InputStream
>>>>> application/unknown; class=java.io.InputStream
>>>>> application/unknown; class=java.io.InputStream
>>>>> application/unknown; class=java.io.InputStream
>>>>> application/unknown; class=java.lang.Object application/unknown;
>>>>> class=java.lang.Object
>>>>> application/x-java-jvm-local-objectref;
>>>>> class=java.io.InputStream application/x-java-jvm-local-objectref;
>>>>> class=java.io.InputStream
>>>>> application/x-java-jvm-local-objectref;
>>>>> class=java.io.InputStream application/x-java-jvm-local-objectref;
>>>>> class=java.io.InputStream
>>>>> application/x-java-jvm-local-objectref; class=java.lang.Object
>>>>> application/x-java-jvm-local-objectref; class=java.lang.Object
>>>>> text/unknown; class=java.io.Serializable;
>>>>> charset=unicode text/html; class=java.io.Reader
>>>>> text/plain; class=java.io.Serializable;
>>>>> charset=unicode text/html; class=java.lang.String
>>>>> text/html; class=java.io.Serializable;
>>>>> charset=unicode text/html;
>>>>> class=java.io.InputStream; charset=unicode
>>>>> unknown/flavor; class=java.io.InputStream text/html;
>>>>> class=java.io.InputStream; charset=unicode
>>>>> unknown/flavor; class=java.io.InputStream text/html;
>>>>> class=java.io.InputStream
>>>>> text/html; class=java.io.Reader text/html;
>>>>> class=java.io.InputStream; charset=cp1251
>>>>> text/html; class=java.lang.String text/plain; class=java.io.Reader
>>>>> text/html; class=java.io.InputStream;
>>>>> charset=unicode text/plain; class=java.lang.String
>>>>> text/html; class=java.io.InputStream;
>>>>> charset=unicode text/plain;
>>>>> class=java.io.InputStream; charset=unicode
>>>>> text/html; class=java.io.InputStream text/plain;
>>>>> class=java.io.InputStream; charset=unicode
>>>>> text/html; class=java.io.InputStream;
>>>>> charset=cp1251 text/plain; class=java.io.InputStream
>>>>> text/plain; class=java.io.InputStream;
>>>>> charset=unicode text/plain;
>>>>> class=java.io.InputStream; charset=cp1251
>>>>> text/plain; class=java.io.InputStream;
>>>>> charset=unicode text/unknown; class=java.io.Reader
>>>>> text/plain; class=java.io.InputStream text/unknown;
>>>>> class=java.lang.String
>>>>> text/plain; class=java.io.InputStream;
>>>>> charset=cp1251 text/unknown;
>>>>> class=java.io.InputStream; charset=unicode
>>>>> text/unknown; class=java.io.InputStream;
>>>>> charset=unicode text/unknown;
>>>>> class=java.io.InputStream; charset=unicode
>>>>> text/unknown; class=java.io.InputStream;
>>>>> charset=cp1251 text/unknown; class=java.io.InputStream
>>>>> unknown/flavor; class=java.lang.Object text/unknown;
>>>>> class=java.io.InputStream; charset=cp1251
>>>>> text/unknown; class=java.lang.Object;
>>>>> charset=unicode text/unknown;
>>>>> class=java.io.Serializable; charset=unicode
>>>>> text/unknown; class=java.io.Reader text/plain;
>>>>> class=java.io.Serializable; charset=unicode
>>>>> text/unknown; class=java.lang.String text/html;
>>>>> class=java.io.Serializable; charset=unicode
>>>>> text/unknown; class=java.io.InputStream;
>>>>> charset=unicode unknown/flavor; class=java.io.InputStream
>>>>> text/unknown; class=java.io.InputStream unknown/flavor;
>>>>> class=java.io.InputStream
>>>>> text/unknown; class=java.lang.Object unknown/flavor;
>>>>> class=java.lang.Object
>>>>> text/plain; class=java.lang.String text/unknown;
>>>>> class=java.lang.Object; charset=unicode
>>>>> text/plain; class=java.lang.Object;
>>>>> charset=unicode text/unknown; class=java.lang.Object
>>>>> text/plain; class=java.lang.Object text/plain;
>>>>> class=java.lang.Object; charset=unicode
>>>>> text/plain; class=java.io.Reader text/plain; class=java.lang.Object
>>>>> text/html; class=java.lang.Object;
>>>>> charset=unicode text/html;
>>>>> class=java.lang.Object; charset=unicode
>>>>> text/html; class=java.lang.Object text/html; class=java.lang.Object
>>>>>
>>>>>
>>>>>> - Can you run all related regression and jck tests.
>>>>>
>>>>> Executed all 'datatransfer' regression and JCK tests - no
>>>>> regressions detected.
>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> On 18.09.2014 17:04, anton nashatyrev wrote:
>>>>>>> Hello,
>>>>>>> could you please review the following fix:
>>>>>>>
>>>>>>> fix: http://cr.openjdk.java.net/~anashaty/8058473/9/webrev.00/
>>>>>>> <http://cr.openjdk.java.net/%7Eanashaty/8058473/9/webrev.00/>
>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8058473
>>>>>>>
>>>>>>> Problem: DataFlavorComparator violates Comparator contract.
>>>>>>>
>>>>>>> Fix: make the DataFlavorComparator transitive conformant
>>>>>>> (please see the bug comment for details)
>>>>>>>
>>>>>>> Thanks!
>>>>>>> Anton.
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
More information about the awt-dev
mailing list