Hello, Anthony.

How about this:
> line = line.trim();
> if (line.startsWith("#") || line.isEmpty()) continue;
> while (line.endsWith("\\")) {
>     line = line.substring(0, line.length() - 1) + reader.readLine().trim();
> }
> int delimiterPosition = line.indexOf('=');
> String key = line.substring(0, delimiterPosition).replace("\\ ", " ");
> String[] values = line.substring(delimiterPosition + 1, 
> line.length()).split(",");

With best regards. Petr.

On 15 июля 2014 г., at 14:31, Anthony Petrov <anthony.pet...@oracle.com> wrote:

> Hi Petr,
> 
> I'm still a bit concerned about this line:
> 
>> 243                 String[] values = line.substring(delimiterPosition + 1, 
>> line.length())
>> 244                         .replace(",\\", ",")
>> 245                         .split(",");
> 
> This code now introduces another assumption, that every continuation slash is 
> preceded by a comma. Also it assumes that no such a sequence of characters 
> (",\") may occur anywhere else in the parsed lines.
> 
> I'm not okay with these assumption. I'll reiterate my suggestion once again: 
> would it make sense to only remove the actual continuation slashes?
> 
> --
> best regards,
> Anthony
> 
> On 7/15/2014 12:19 PM, Petr Pchelko wrote:
>> Hello, Anthony.
>> 
>> Thank you for the review.
>> The new version is here: 
>> http://cr.openjdk.java.net/~pchelko/9/8047336/webrev.03/
>> Only SystemFlavorMap is changed again.
>> 
>> I've fixed the parser according to your comments.
>> 
>>> Also, how about processing commas within string literals? There's not a 
>>> case yet, but I can imagine such a mime type definition (e.g. 
>>> ...;terminators=",\\\r\n";...) (for the fun of it, i've also added the 
>>> slash character in there.)
>> I don't think we should worry about it now. The properties file is internal 
>> and it's highly unlikely we would ever make such a mime-type. And we can 
>> update the parser when we need.
>> If I handle this situation now this would be just dead code and unneeded 
>> complexity.
>> 
>> With best regards. Petr.
>> 
>> On 14 июля 2014 г., at 21:00, Anthony Petrov <anthony.pet...@oracle.com> 
>> wrote:
>> 
>>> Hi Petr,
>>> 
>>> I realize that we're parsing our internal resource, however I have a few 
>>> comments regarding the reliability of the parser:
>>> 
>>>> 235                 if (line.startsWith("#") || line.isEmpty()) continue;
>>> 
>>> Can a line start with a bunch of spaces, and then start a comment with a 
>>> '#' character? Should we trim() ?
>>> 
>>> 
>>>> 236                 while (line.endsWith("\\")) {
>>>> 237                     line = line.trim() + reader.readLine().trim();
>>>> 238                 }
>>>> 239                 line = line.replace("\\", "");
>>> 
>>> The above code assumes that '\' characters are illegal in the middle of the 
>>> lines because it removes all of them. Would it make sense to only remove 
>>> the actual continuation slashes? For instance, take a look at:
>>> 
>>> src/windows/classes/sun/awt/datatransfer/flavormap.properties
>>>>  54 UNICODE\ TEXT=text/plain;charset=utf-16le;eoln="\r\n";terminators=2
>>> 
>>> Your parser will remove the escape slashes from the "\r\n" string.
>>> 
>>> However, note that we still should handle the '\ ' sequence in the key part 
>>> of each line.
>>> 
>>> Also, how about processing commas within string literals? There's not a 
>>> case yet, but I can imagine such a mime type definition (e.g. 
>>> ...;terminators=",\\\r\n";...) (for the fun of it, i've also added the 
>>> slash character in there.)
>>> 
>>> --
>>> best regards,
>>> Anthony
>>> 
>>> On 7/14/2014 6:23 PM, Petr Pchelko wrote:
>>>> Hello, AWT Team.
>>>> 
>>>> My apologies, but I've found a problem in the AWT part of this fix and so 
>>>> I need one more review iteration.
>>>> 
>>>> The new version is located here: 
>>>> http://cr.openjdk.java.net/~pchelko/9/8047336/webrev.02/
>>>> The only changes comparing to the previous approved version are in 
>>>> SystemFlavorMap.
>>>> 
>>>> I've realized that we cannot use Properties to load the 
>>>> flavormap.properties file because Properties doesn't preserve the original 
>>>> order of keys.
>>>> And it's important, because natives that are found in the file first are 
>>>> treated as more important than natives in the end of the file.
>>>> So I've implemented a custom parser for the properties file (see lines 
>>>> 233-243)
>>>> 
>>>> Thank you.
>>>> With best regards. Petr.
>>>> 
>>>> On 10 июля 2014 г., at 20:22, Mike Duigou <mike.dui...@oracle.com> wrote:
>>>> 
>>>>> The makefile changes look fine to me. (The use of OPENJDK as part of the 
>>>>> variable names seems excessive but that's not something your patch adds 
>>>>> or changes)
>>>>> 
>>>>> Mike
>>>>> 
>>>>> On Jul 9 2014, at 23:55 , Petr Pchelko <petr.pche...@oracle.com> wrote:
>>>>> 
>>>>>> Hello, Build Team.
>>>>>> 
>>>>>> This is a reminder. Could you please review the build part of the 
>>>>>> following fix:
>>>>>> http://cr.openjdk.java.net/~pchelko/9/8047336/webrev.01/
>>>>>> 
>>>>>> Thank you.
>>>>>> With best regards. Petr.
>>>>>> 
>>>>>> On 02 июля 2014 г., at 15:13, Anthony Petrov <anthony.pet...@oracle.com> 
>>>>>> wrote:
>>>>>> 
>>>>>>> Thanks. Note that your email editor messed up the HTML part of the 
>>>>>>> email (see below a text-only quote), so here's the correct link to the 
>>>>>>> webrev:
>>>>>>> 
>>>>>>> http://cr.openjdk.java.net/~pchelko/9/8047336/webrev.01/
>>>>>>> 
>>>>>>> The fix looks fine to me.
>>>>>>> 
>>>>>>> --
>>>>>>> best regards,
>>>>>>> Anthony
>>>>>>> 
>>>>>>> On 7/2/2014 3:10 PM, Petr Pchelko wrote:
>>>>>>>> Hello, Anthony, Alan.
>>>>>>>> 
>>>>>>>> Thank you for the review, the new version is located here:
>>>>>>>> http://cr.openjdk.java.net/~pchelko/9/8047336/webrev.01/
>>>>>>>> <http://cr.openjdk.java.net/%7Epchelko/9/8047336/webrev.00/>
>>>>>>>> 
>>>>>>>> I've changed the code to throw an InternalError if we cannot read
>>>>>>>> properties.
>>>>>>>> Once I get feedback from the build team - I'll push this fix.
>>>>>>>> 
>>>>>>>> With best regards. Petr.
>>>>>>>> 
>>>>>>>> On 02 июля 2014 г., at 13:52, Alan Bateman <alan.bate...@oracle.com
>>>>>>>> <mailto:alan.bate...@oracle.com>> wrote:
>>>>>>>> 
>>>>>>>>> On 01/07/2014 09:35, Petr Pchelko wrote:
>>>>>>>>>> Hello,
>>>>>>>>>> 
>>>>>>>>>> The changes in the public API have been approved, so let me continue
>>>>>>>>>> the review process.
>>>>>>>>>> 
>>>>>>>>>> For your convenience:
>>>>>>>>>> The bug: https://bugs.openjdk.java.net/browse/JDK-8047336
>>>>>>>>>> The fix: http://cr.openjdk.java.net/~pchelko/9/8047336/webrev.00/
>>>>>>>>>> <http://cr.openjdk.java.net/%7Epchelko/9/8047336/webrev.00/>
>>>>>>>>>> 
>>>>>>>>>> Until now we've been discussing an abstract question of moving the
>>>>>>>>>> properties to a different location and agreed that it's possible.
>>>>>>>>>> Now it's time for an official code review. Could someone please make 
>>>>>>>>>> one?
>>>>>>>>>> 
>>>>>>>>>> Also some feedback from the build team is still required. Could
>>>>>>>>>> someone from the build team review this fix please?
>>>>>>>>>> (The question is that I've made a separate explicit rule for
>>>>>>>>>> flavormap.properties file. If I add it to COPY_PATTERNS than the
>>>>>>>>>> solaris version get's copied on Mac. Is that a bug in the build
>>>>>>>>>> system? Is my current solution good enough?)
>>>>>>>>>> 
>>>>>>>>> I think this looks okay. I see Anthony's mail asking about the warning
>>>>>>>>> message and whether it should the print stack trace. I just wonder if
>>>>>>>>> it might be saner to just throw InternalError here. It throws
>>>>>>>>> InternalError if flavormap.properties is missing and it might be
>>>>>>>>> consistent to do the same when the file is corrupt or can't be parsed
>>>>>>>>> as a properties file.
>>>>>>>>> 
>>>>>>>>> -Alan.
>>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>> 

Reply via email to