@@ -18,6 +18,8 @@ static final class VersionParseHelper {
18
18
private static final String JVMCI_BUILD_PREFIX = "jvmci-" ;
19
19
private static final String MANDREL_VERS_PREFIX = "Mandrel-" ;
20
20
21
+ private static final String LIBERICA_NIK_VERS_PREFIX = "Liberica-NIK-" ;
22
+
21
23
// Java version info (suitable for Runtime.Version.parse()). See java.lang.VersionProps
22
24
private static final String VNUM = "(?<VNUM>[1-9][0-9]*(?:(?:\\ .0)*\\ .[1-9][0-9]*)*)" ;
23
25
private static final String PRE = "(?:-(?<PRE>[a-zA-Z0-9]+))?" ;
@@ -68,19 +70,47 @@ static Version parse(List<String> lines) {
68
70
if (vendorVersion .contains ("-dev" )) {
69
71
graalVersion = graalVersion + "-dev" ;
70
72
}
71
- String mandrelVersion = mandrelVersion (vendorVersion );
72
- Distribution dist = isMandrel (vendorVersion ) ? Distribution .MANDREL : Distribution .GRAALVM ;
73
- String versNum = (dist == Distribution .MANDREL ? mandrelVersion : graalVersion );
73
+ String versNum ;
74
+ Distribution dist ;
75
+ if (isMandrel (vendorVersion )) {
76
+ dist = Distribution .MANDREL ;
77
+ versNum = mandrelVersion (vendorVersion );
78
+ } else if (isLiberica (vendorVersion )) {
79
+ dist = Distribution .LIBERICA ;
80
+ versNum = libericaVersion (vendorVersion );
81
+ } else {
82
+ dist = Distribution .GRAALVM ;
83
+ versNum = graalVersion ;
84
+ }
74
85
if (versNum == null ) {
75
86
return UNKNOWN_VERSION ;
76
87
}
77
- return new Version (lines . stream (). collect ( Collectors . joining ( "\n " ) ),
88
+ return new Version (String . join ( "\n " , lines ),
78
89
versNum , v , dist );
79
90
} else {
80
91
return UNKNOWN_VERSION ;
81
92
}
82
93
}
83
94
95
+ private static boolean isLiberica (String vendorVersion ) {
96
+ if (vendorVersion == null ) {
97
+ return false ;
98
+ }
99
+ return !vendorVersion .isBlank () && vendorVersion .startsWith (LIBERICA_NIK_VERS_PREFIX );
100
+ }
101
+
102
+ private static String libericaVersion (String vendorVersion ) {
103
+ if (vendorVersion == null ) {
104
+ return null ;
105
+ }
106
+ int idx = vendorVersion .indexOf (LIBERICA_NIK_VERS_PREFIX );
107
+ if (idx < 0 ) {
108
+ return null ;
109
+ }
110
+ String version = vendorVersion .substring (idx + LIBERICA_NIK_VERS_PREFIX .length ());
111
+ return matchVersion (version );
112
+ }
113
+
84
114
private static boolean isMandrel (String vendorVersion ) {
85
115
if (vendorVersion == null ) {
86
116
return false ;
@@ -244,7 +274,7 @@ public static Version of(Stream<String> output) {
244
274
String stringOutput = output .collect (Collectors .joining ("\n " ));
245
275
List <String > lines = stringOutput .lines ()
246
276
.dropWhile (l -> !l .startsWith ("GraalVM" ) && !l .startsWith ("native-image" ))
247
- .collect ( Collectors . toUnmodifiableList () );
277
+ .toList ( );
248
278
249
279
if (lines .size () == 3 ) {
250
280
// Attempt to parse the new 3-line version scheme first.
@@ -322,6 +352,7 @@ public boolean isJava17() {
322
352
323
353
enum Distribution {
324
354
GRAALVM ,
355
+ LIBERICA ,
325
356
MANDREL ;
326
357
}
327
358
}
0 commit comments