harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivanov, Alexey A" <alexey.a.iva...@intel.com>
Subject RE: [classlib][swing] compatibility: j.s.text.GapContent.replace() behaviour
Date Thu, 02 Nov 2006 14:44:33 GMT
>-----Original Message-----
>From: Geir Magnusson Jr. [mailto:geir@pobox.com]
>Sent: Thursday, November 02, 2006 5:03 PM
>To: harmony-dev@incubator.apache.org
>Subject: Re: [classlib][swing] compatibility:
j.s.text.GapContent.replace()
>behaviour
>
>Why not?

It was decided to resolve the issue with GapContent in issue:
HARMONY-1809.

Regards,
Alexey.

>
>
>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
>>


--
Alexey A. Ivanov
Intel Middleware Product Division

Mime
View raw message