Thanks for guiding through changes Alex. Hi All, I require one more review for this patch. Could you please review.
Many Thanks, Ambarish -----Original Message----- From: Alexander Scherbatiy Sent: Friday, November 20, 2015 3:08 PM To: Ambarish Rapte Cc: Prasanta Sadhukhan; Semyon Sadetsky; awt-dev@openjdk.java.net Subject: Re: <AWT Dev> Review Request for 8055197: TextField deletes multiline strings The fix looks good to me. Thanks, Alexandr. On 11/19/2015 11:43 AM, Ambarish Rapte wrote: > Dear Alex, > > Please take a look at updated webrev, > http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.03/ > > > Updated the test code for testing de-serialization. > > > Many Thanks > Ambarish > > -----Original Message----- > From: Alexander Scherbatiy > Sent: Friday, November 06, 2015 5:36 PM > To: Ambarish Rapte > Cc: awt-dev@openjdk.java.net > Subject: Re: <AWT Dev> Review Request for 8055197: TextField deletes > multiline strings > > On 11/5/2015 2:34 PM, Alexander Scherbatiy wrote: >> On 11/5/2015 1:33 PM, Ambarish Rapte wrote: >>> Hi Alex, >>> >>> I have updated the webrev with changes for deserialization, >>> >>> http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.02/ >>> >>> Please review. >>> Verified that serialization & de-serialization of text field >>> object works fine. >>> Also updated the test in this webrev to test de-serialization. > There is one thing to note that readObject() in the fix first > use > s.defaultReadObject() that can read a value with new lines into text > field so there would be a small time when the TextField has an > inconsistence state. It is recommended to read all fields by > fields.get(fieldName) to avoid this: > > ObjectInputStream.GetField fields = in.readFields(); > String name = (String) fields.get("name", DEFAULT); > > Thanks, > Alexandr. > >> It is true if a serialized file was created by TextField >> serialization. The text field does not contain new lines in this case >> because they were removed by constructor or set method. >> The question was about serialized files which were generated >> manually or changed after a serialization. In this case the text >> field can be rewritten with a value which contains new lines. >> >> Thanks, >> Alexandr. >> >>> Many Thanks, >>> Ambarish >>> >>> -----Original Message----- >>> From: Alexander Scherbatiy >>> Sent: Thursday, October 29, 2015 9:59 PM >>> To: Ambarish Rapte >>> Cc: Prasanta Sadhukhan; Semyon Sadetsky; awt-dev@openjdk.java.net; >>> Sergey Bylokhov >>> Subject: Re: Review Request for 8055197: TextField deletes multiline >>> strings >>> >>> On 10/29/2015 5:31 PM, Ambarish Rapte wrote: >>>> Hi Alexandr, >>>> >>>> Please review the updated webrev, with changes only in >>>> TextField.java. >>>> >>>> Webrev: >>>> http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.01/ >>>> >>>> >>>> replaceEOL() is declared static, as a class member method >>>> cannot be called before call to super from Constructor. >>>> Also made changes, as per Sergey's comment for, >>>> System.lineSeparator() >>> Thank you. >>> >>> Could you also check the TextField deserialization? It >>> always should be kept in mind that fields in a deserialized object >>> need to passe the same checks which are applied in constructors and set >>> methods. >>> >>> Thanks, >>> Alexandr. >>>> Many Thanks, >>>> Ambarish >>>> >>>> -----Original Message----- >>>> From: Alexander Scherbatiy >>>> Sent: Wednesday, October 28, 2015 8:48 PM >>>> To: Ambarish Rapte >>>> Cc: awt-dev@openjdk.java.net; Sergey Bylokhov >>>> Subject: Re: Review Request for 8055197: TextField deletes >>>> multiline strings >>>> >>>> On 10/26/2015 11:21 PM, Ambarish Rapte wrote: >>>>> Hi Alexandr, >>>>> Yes, This is windows specific issue. >>>>> Initially there was a native side fix, Please refer below >>>>> webrev for the earlier changes. >>>>> >>>>> http://cr.openjdk.java.net/~psadhukhan/ambarish/8055197/webrev.00/ >>>>> >>>>> But there was an issue pointed for this fix, and after >>>>> discussion with Phil, >>>>> We arrived at this new solution, of replacing on java side. >>>>> >>>>> http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.00/ >>>>> >>>>> >>>>> >>>>> A major review comment for this previous fix was, >>>>> >>>>> Sergey: >>>>> Note that the fix replace the eol char on the peer level. So >>>>> there will >>>>> be a difference in behavior of setText/GetText when the >>>>> peer exists or not >>>> I see the point now. >>>> >>>> Is it possible to add the 'String replaceEOL(String text)' >>>> method to the TextField? In this case TextField constructors can >>>> remove EOL from the given text and pass it to the super class. It >>>> could avoid the TextComponent class changing. >>>> >>>> Thanks, >>>> Alexandr. >>>> >>>>> However both the fix have no side effect, Have executed jtreg >>>>> on almost all tests which use or test TextField. >>>>> >>>>> There is confusion for most correct way to patch this. Please >>>>> guide >>>>> >>>>> Thanks >>>>> Ambarish >>>>> >>>>> >>>>> -----Original Message----- >>>>> From: Alexander Scherbatiy >>>>> Sent: Wednesday, October 21, 2015 7:29 PM >>>>> To: Ambarish Rapte >>>>> Cc: awt-dev@openjdk.java.net; Sergey Bylokhov >>>>> Subject: Re: Review Request for 8055197: TextField deletes >>>>> multiline strings >>>>> >>>>> >>>>> >>>>> Is this is Windows specific issue only? If so, it is better >>>>> to replace EOL on window text peer side or may be even better to >>>>> do it on the native side before setting a text to the single-line >>>>> RichEdit. May be there are methods that can remove EOL from a >>>>> string exactly in the same way as it is done by Edit control. >>>>> >>>>> Thanks, >>>>> Alexandr. >>>>> >>>>> On 10/19/2015 9:31 PM, Ambarish Rapte wrote: >>>>>> Hi Alexander, >>>>>> >>>>>> In single line mode , there is no rich edit control style to >>>>>> handle EOL. >>>>>> Referenced documentation: >>>>>> https://msdn.microsoft.com/en-us/library/windows/desktop/bb787605 >>>>>> ( >>>>>> v= >>>>>> v >>>>>> s >>>>>> .85).aspx >>>>>> >>>>>> Many Thanks >>>>>> Ambarish >>>>>> >>>>>> -----Original Message----- >>>>>> From: Alexander Scherbatiy >>>>>> Sent: Friday, October 16, 2015 4:45 PM >>>>>> To: Ambarish Rapte >>>>>> Cc: awt-dev@openjdk.java.net; Sergey Bylokhov >>>>>> Subject: Re: Review Request for 8055197: TextField deletes >>>>>> multiline strings >>>>>> >>>>>> >>>>>> The TextField is based on Rich Edit control on Windows. >>>>>> Does the Rich Edit control have properties to properly handle >>>>>> multiline strings in single-line mode? >>>>>> >>>>>> Thanks, >>>>>> Alexandr. >>>>>> >>>>>> On 10/14/2015 7:44 PM, Ambarish Rapte wrote: >>>>>>> Dear All, >>>>>>> >>>>>>> Please review the patch for jdk9. >>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8055197 >>>>>>> Webrev: >>>>>>> http://cr.openjdk.java.net/~rchamyal/ambarish/8055197/webrev.00/ >>>>>>> >>>>>>> >>>>>>> Issue: >>>>>>> - If text containing new line character is set to >>>>>>> TextField, Text after new line character was terminated. >>>>>>> - Issue occurs only on windows. >>>>>>> >>>>>>> Cause: >>>>>>> - For windows new line character is ā\r\nā. >>>>>>> - For windows code this new line character was not >>>>>>> replaced by space character. >>>>>>> - Other platforms replace the EOL character by space >>>>>>> character. >>>>>>> >>>>>>> Fix: >>>>>>> - Added code to TextComponent.java to remove EOL on >>>>>>> java side before passing to peer. >>>>>>> => Added a private method replaceEOL() , which >>>>>>> replaces EOL by space. >>>>>>> => removeEOL will be called by newly added >>>>>>> TextComponent construcotr and setText() >>>>>>> >>>>>>> - The text variable on in TextComponent.java & on >>>>>>> string displayed on native side will be same. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Many Thanks, >>>>>>> Ambarish