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