Hi, Roger. Thanks for the feedback.
>> http://cr.openjdk.java.net/~iris/verona/8072379/webrev.1/ > I see the JEP says JDK specific, but does that rule out putting the version > API in a Java.* package? For now, we should avoid including this API in java.*. If for no other reason but that we may need to evolve the API in an update release. > Version.java: > 229: The IAE("Terminal...") exception may not be that easily understood; can > it > say concisely > that the build and optional elements are missing I've changed it to this which is technically more accurate (but verbose): IAE("'+' found with neither build or optional components: ':" + s + "'"). If you have a more succinct suggestion, let me know. > 264: current() should cache the value from the parse; it is likely to be > called > more than once and parsing > an version string is a relatively expensive. Done. > 334: the naming of one of the version elements as 'optional' may be confusing > because optional is an adjective. > Especially when the element is optional and the method named optional > returns an Optional. > Can the name be a cogent noun. how about 'info' for informational string The term "optional" to refer to this portion of the string is used in quite a few places, both inside and outside of OpenJDK code. I don't think that it would be helpful to refer to this by two different names. If you feel strongly that the name should be changed, I can file an RFE to investigate the full impact to do so. > 396: I'm not sure why BigInteger is needed; other than perhaps because it > has a > constructor that takes a string. The components of $VNUM are constrained to be ints, hence if a string of numbers greater than Integer.MAX_VALUE is passed, construction of the Version will fail. $PRE is an arbitrary length String which may consist entirely of digits. As long as the string of digits may be represented as a String, there is no constraint on how many digits there are. The only time when the number of digits is a potential problem is during Version comparison. In the case when both of the Version objects contain $PRE consisting entirely of digits, we need to consider the case where the number of digits would result in a integer larger than Integer.MAX_VALUE. > 433: Optional has a .ifPresent(xxx) method that could be used to streamline > the > code. > pre.ifPresent( v -> sb.append("-").append(v)); Done. > OracleVersion.java: Can this be renamed more functionally to reflect > that the 4'th component is a patch number. > It might be useful to folks other than Oracle. > > 107: the constructor should be declared private since it is not needed > outside the class. OracleVersion.java is gone. The functionality it provided, access to the fourth element of the version number, is trivially accessed by existing methods in jdk.Version. jdk.Version is now final, with a private constructor. An updated webrev is forthcoming. Regards, iris -----Original Message----- From: Roger Riggs Sent: Wednesday, November 25, 2015 1:23 PM To: [email protected] Subject: Re: RFR: 8072379: Implement jdk.Version and jdk.OracleVersion Hi Iris, I see the JEP says JDK specific, but does that rule out putting the version API in a Java.* package? It would support the values found in the java.version, etc properties. Perhaps as an nested class of System or Runtime? Version.java: Line 213: Seems a bit wasteful to reparse the string after the matcher has done its work; but does not use the groups for the version components. 229: The IAE("Terminal...") exception may not be that easily understood; can it say concisely that the build and optional elements are missing 264: current() should cache the value from the parse; it is likely to be called more than once and parsing an version string is a relatively expensive. 334: the naming of one of the version elements as 'optional' may be confusing because optional is an adjective. Especially when the element is optional and the method named optional returns an Optional. Can the name be a cogent noun. how about 'info' for informational string 396: I'm not sure why BigInteger is needed; other than perhaps because it has a constructor that takes a string. 433: Optional has a .ifPresent(xxx) method that could be used to streamline the code. pre.ifPresent( v -> sb.append("-").append(v)); OracleVersion.java: Can this be renamed more functionally to reflect that the 4'th component is a patch number. It might be useful to folks other than Oracle. 107: the constructor should be declared private since it is not needed outside the class. I would have preferred the Tests to be written using TestNG. Thanks, Roger
