[PING] RE: [PING] RE: 8250678: ModuleDescriptor.Version parsing treats empty segments inconsistently
yano-masanori at fujitsu.com
yano-masanori at fujitsu.com
Wed Mar 3 07:24:33 UTC 2021
Hello,
Please reply if anyone can be a sponsor.
Regards,
Masanori Yano
> -----Original Message-----
> From: Yano, Masanori
> Sent: Tuesday, January 12, 2021 4:32 PM
> To: 'core-libs-dev at openjdk.java.net' <core-libs-dev at openjdk.java.net>
> Subject: RE: [PING] RE: 8250678: ModuleDescriptor.Version parsing treats empty
> segments inconsistently
>
> Hello,
>
> Please reply if anyone can be a sponsor.
>
> Regards,
> Masanori Yano
>
> > -----Original Message-----
> > From: Yano, Masanori
> > Sent: Wednesday, December 23, 2020 5:01 PM
> > To: 'core-libs-dev at openjdk.java.net' <core-libs-dev at openjdk.java.net>
> > Subject: [PING] RE: 8250678: ModuleDescriptor.Version parsing treats
> > empty segments inconsistently
> >
> > Hello,
> >
> > Please reply if anyone can be a sponsor.
> >
> > Regards,
> > Masanori Yano
> >
> > > -----Original Message-----
> > > From: Yano, Masanori
> > > Sent: Wednesday, November 4, 2020 6:03 PM
> > > To: 'core-libs-dev at openjdk.java.net'
> > > <core-libs-dev at openjdk.java.net>
> > > Subject: 8250678: ModuleDescriptor.Version parsing treats empty
> > > segments inconsistently
> > >
> > > Hello.
> > >
> > > I would like to contribute for JDK-8250678.
> > >
> > > The 'parse' method of ModuleDescriptor.Version class behaves
> > > incorrectly when the input string contains consecutive delimiters.
> > >
> > > The 'parse' method treats strings as three sections, but the parsing
> > > method differs between the method for the version sections and the ones for
> others.
> > > In version sections, the 'parse' method takes a single character in
> > > a loop and determines whether it is a delimiter. In pre and build
> > > sections, the parse method takes two characters in a loop and
> > > determines whether
> > the second character is the delimiter.
> > > Therefore, if the string contains a sequence of delimiters in pre or
> > > build section, the 'parse' method treats character at the
> > > odd-numbered position as a token and the one at even-numbered as a
> > > delimiter
> > >
> > > A string containing consecutive delimiters is an incorrect version
> > > string, but this behavior does not follow the API specification.
> > > https://download.java.net/java/early_access/jdk16/docs/api/java.base
> > > /j
> > > ava/lang/
> > > module/ModuleDescriptor.Version.html
> > >
> > > Therefore, I propose to fix the parsing method of the pre section
> > > and the build section in the same way as the version.
> > >
> > > Please sponsor the following change.
> > >
> > > diff -r bdc20ee1a68d
> > > src/java.base/share/classes/java/lang/module/ModuleDescriptor.java
> > > --- a/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java
> > > Fri Sep 04 23:51:26 2020 -0400
> > > +++ b/src/java.base/share/classes/java/lang/module/ModuleDescriptor.
> > > +++ ja
> > > +++ va
> > > Wed Oct 28 17:06:47 2020 +0900
> > > @@ -1053,13 +1053,6 @@
> > >
> > > while (i < n) {
> > > c = v.charAt(i);
> > > - if (c >= '0' && c <= '9')
> > > - i = takeNumber(v, i, pre);
> > > - else
> > > - i = takeString(v, i, pre);
> > > - if (i >= n)
> > > - break;
> > > - c = v.charAt(i);
> > > if (c == '.' || c == '-') {
> > > i++;
> > > continue;
> > > @@ -1068,6 +1061,10 @@
> > > i++;
> > > break;
> > > }
> > > + if (c >= '0' && c <= '9')
> > > + i = takeNumber(v, i, pre);
> > > + else
> > > + i = takeString(v, i, pre);
> > > }
> > >
> > > if (c == '+' && i >= n) @@ -1075,17 +1072,14 @@
> > >
> > > while (i < n) {
> > > c = v.charAt(i);
> > > + if (c == '.' || c == '-' || c == '+') {
> > > + i++;
> > > + continue;
> > > + }
> > > if (c >= '0' && c <= '9')
> > > i = takeNumber(v, i, build);
> > > else
> > > i = takeString(v, i, build);
> > > - if (i >= n)
> > > - break;
> > > - c = v.charAt(i);
> > > - if (c == '.' || c == '-' || c == '+') {
> > > - i++;
> > > - continue;
> > > - }
> > > }
> > >
> > > this.version = v;
> > > diff -r bdc20ee1a68d test/jdk/java/lang/module/VersionTest.java
> > > --- a/test/jdk/java/lang/module/VersionTest.java Fri Sep 04 23:51:26 2020
> > > -0400
> > > +++ b/test/jdk/java/lang/module/VersionTest.java Wed Oct 28 17:06:47
> > > 2020 +0900
> > > @@ -148,6 +148,8 @@
> > > { "1", "1.0.0" },
> > > { "1.0", "1.0.0" },
> > > { "1.0-beta", "1.0.0-beta" },
> > > + { "1.0-1.1", "1.0-1..1" },
> > > + { "1.0-1+1", "1.0-1.+1" },
> > >
> > > };
> > > }
> > >
> > > Regards,
> > > Masanori Yano
More information about the core-libs-dev
mailing list