>-----Original Message----- >From: Geir Magnusson Jr. [mailto:[EMAIL PROTECTED] >Sent: Thursday, November 02, 2006 5:03 PM >To: [email protected] >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:[EMAIL PROTECTED] >>> Sent: Thursday, November 02, 2006 3:50 PM >>> To: [email protected] >>> 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 <[EMAIL PROTECTED]>: >>>> I'll take care of 1975. >>>> >>>> SY, Alexey >>>> >>>> 2006/11/2, Oleg Khaschansky <[EMAIL PROTECTED]>: >>>>> +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 <[EMAIL PROTECTED]> wrote: >>>>>> 2006/11/2, Ivanov, Alexey A <[EMAIL PROTECTED]>: >>>>>>> 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
