<AWT Dev> [9] Review request for 8058473: "Comparison method violates its general contract" when using Clipboard
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Fri Sep 19 13:27:41 UTC 2014
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.
>>>>
>>>>
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list