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 >