harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Geir Magnusson Jr." <g...@pobox.com>
Subject Re: [classlib][swing] compatibility: j.s.text.GapContent.replace() behaviour
Date Thu, 02 Nov 2006 14:02:34 GMT
Why not?


Ivanov, Alexey A wrote:
>> -----Original Message-----
>> From: Alexey Petrenko [mailto:alexey.a.petrenko@gmail.com]
>> Sent: Thursday, November 02, 2006 3:50 PM
>> To: harmony-dev@incubator.apache.org
>> Subject: Re: [classlib][swing] compatibility:
> j.s.text.GapContent.replace()
>> behaviour
>>
>> HARMONY-1975is already applied and closed ;)
> 
> Yep, I know.
> But the section with GapContent modification is *not* applied as can be
> seen from comments in the issue.
> 
> Regards,
> Alexey.
> 
>> 2006/11/2, Alexey Petrenko <alexey.a.petrenko@gmail.com>:
>>> I'll take care of 1975.
>>>
>>> SY, Alexey
>>>
>>> 2006/11/2, Oleg Khaschansky <oleg.v.khaschansky@gmail.com>:
>>>> +1. Silently doing nothing if invalid parameters are passed seems
> to
>>>> me a right behavior in this case.
>>>>
>>>> Will someone apply changes to GapContent from the
> harmony-1975.patch
>>>> or we need to make a separate patch for this?
>>>>
>>>> On 11/2/06, Alexey Petrenko <alexey.a.petrenko@gmail.com> wrote:
>>>>> 2006/11/2, Ivanov, Alexey A <alexey.a.ivanov@intel.com>:
>>>>>> Hi all,
>>>>>>
>>>>>> I've started fixing HARMONY-1809. To remove throws clause from
> the
>>>>>> declaration of replace method, as it was proposed by Oleg in
>>>>>> HARMONY-1975, I placed removeItems() and insertItems() calls
> into
>>>>>> try-catch block. This would work OK for any valid arguments.
>>>>>>
>>>>>> I was going to handle invalid arguments by making adjustments
> so
>> that
>>>>>> the following removeItems() and insertItems() will not throw
> the
>>>>>> exception. After I wrote several tests, I faced strange
> behaviour
>> of RI
>>>>>> with regards to invalid arguments to replace.
>>>>>>
>>>>>> (The Javadoc say nothing about which valid ranges for replace()
>>>>>> parameters as well as any exceptions.)
>>>>>>
>>>>>> RI accepts invalid arguments but the result differs from what
> I'd
>>>>>> expect.
>>>>>> For example, if the content has "text" in it, I'd expect that
>>>>>> content.replace(-2, 4, null, 0) would give "xt" as the result.
> I
>> mean
>>>>>> the invalid start position is adjusted to 0, and the length of
>> remove is
>>>>>> adjusted to be 2 accordingly. But this is not the case. As the
>> result of
>>>>>> this call, all characters are removed leaving "" in the
> content.
>>>>>> Moreover the content object becomes unusable after that:
>>>>>> content.insertString(0, "1") throws
> ArrayIndexOutOfBoundsException.
>>>>>> Similarly if number of characters to be removed is greater than
> the
>>>>>> length of the content (content.replace(2, 4, null, 0) with
> "text"
>> in
>>>>>> it), the object will throw ArrayIndexOutOfBoundsException when
>> doing
>>>>>> insertString.
>>>>>>
>>>>>>
>>>>>> Considering the fact that GapContent is pretty low-level class
> in
>> text
>>>>>> representation model and that it is protected, I think that
> Harmony
>>>>>> implementation can silently ignore BadLocationException
> possible
>> thrown
>>>>>> from insertItems() and removeItems(). Taking into account
> erroneous
>>>>>> behaviour of RI's replace, we can do that until an application
> is
>>>>>> broken.
>>>>> +1 for this solution.
>>>>>
>>>>> SY, Alexey
>>>>>
>>>>>> As another option, we can throw an Error from catch block to
> make
>>>>>> application which depends on implementation of replace()
> fast-fail.
>>>>>>
>>>>>> Any objections, comments, opinions?
>>>>>>
>>>>>> Thanks,
>>>>>> Alexey.
>>>>>>
>>>>>>
>>>>>> P.S. The related JIRA issues:
>>>>>> https://issues.apache.org/jira/browse/HARMONY-1809
>>>>>> https://issues.apache.org/jira/browse/HARMONY-1975
>>>>>>
>>>>>> GapContent Javadoc:
>>>>>>
>> http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/GapContent.htm
> l
>>>>>> Description of GapContent.replace:
>>>>>>
>> http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/GapContent.htm
> l
>>>>>> #replace(int,%20int,%20java.lang.Object,%20int)
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Alexey A. Ivanov
>>>>>> Intel Middleware Product Division
>>>>>>
> 
> --
> Alexey A. Ivanov
> Intel Middleware Product Division
> 

Mime
View raw message