Skip to content

Commit 60611bb

Browse files
committed
U version utils refactored
1 parent fa02880 commit 60611bb

File tree

3 files changed

+38
-27
lines changed

3 files changed

+38
-27
lines changed

src/main/java/io/github/fvarrui/javapackager/packagers/BundleJre.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
import io.github.fvarrui.javapackager.utils.CommandUtils;
1414
import io.github.fvarrui.javapackager.utils.FileUtils;
1515
import io.github.fvarrui.javapackager.utils.JDKUtils;
16-
import io.github.fvarrui.javapackager.utils.JavaUtils;
1716
import io.github.fvarrui.javapackager.utils.Logger;
17+
import io.github.fvarrui.javapackager.utils.VersionUtils;
1818

1919
/**
2020
* Bundles a Java Runtime Enrironment (JRE) with the app
@@ -92,7 +92,7 @@ protected File doApply(Packager packager) throws Exception {
9292
jshFile.setExecutable(true, false);
9393
}
9494

95-
} else if (JavaUtils.getJavaMajorVersion() <= 8) {
95+
} else if (VersionUtils.getJavaMajorVersion() <= 8) {
9696

9797
throw new Exception("Could not create a customized JRE due to JDK version is " + SystemUtils.JAVA_VERSION + ". Must use jrePath property to specify JRE location to be embedded");
9898

@@ -198,13 +198,13 @@ protected String getRequiredModules(File libsFolder, boolean customizedJre, File
198198
.map(module -> module.trim())
199199
.collect(Collectors.toList());
200200

201-
} else if (customizedJre && JavaUtils.getJavaMajorVersion() >= 13) {
201+
} else if (customizedJre && VersionUtils.getJavaMajorVersion() >= 13) {
202202

203203
String modules =
204204
CommandUtils.execute(
205205
jdeps.getAbsolutePath(),
206206
"-q",
207-
"--multi-release", JavaUtils.getJavaMajorVersion(),
207+
"--multi-release", VersionUtils.getJavaMajorVersion(),
208208
"--ignore-missing-deps",
209209
"--print-module-deps",
210210
additionalModulePathsToParams(additionalModulePaths),
@@ -219,13 +219,13 @@ protected String getRequiredModules(File libsFolder, boolean customizedJre, File
219219
.filter(module -> !module.isEmpty())
220220
.collect(Collectors.toList());
221221

222-
} else if (customizedJre && JavaUtils.getJavaMajorVersion() >= 9) {
222+
} else if (customizedJre && VersionUtils.getJavaMajorVersion() >= 9) {
223223

224224
String modules =
225225
CommandUtils.execute(
226226
jdeps.getAbsolutePath(),
227227
"-q",
228-
"--multi-release", JavaUtils.getJavaMajorVersion(),
228+
"--multi-release", VersionUtils.getJavaMajorVersion(),
229229
"--ignore-missing-deps",
230230
"--list-deps",
231231
additionalModulePathsToParams(additionalModulePaths),

src/main/java/io/github/fvarrui/javapackager/utils/JavaUtils.java

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
package io.github.fvarrui.javapackager.utils;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
36
/**
47
* Java utils
58
*/
69
public class VersionUtils {
710

8-
private static int [] parseVersion(String version) {
11+
/**
12+
* Splits a version string like x.y.z in an array of integers. If a part
13+
* of the version is not a number, the parsing process breaks and returns
14+
* till this numnber.
15+
* @param version Version string like "x.y.z"
16+
* @return An integer array like [ x, y, z ]
17+
*/
18+
private static Integer [] parseVersion(String version) {
919
String [] splittedVersion = version.split("\\.");
10-
int [] parsedVersion = new int[splittedVersion.length];
20+
List<Integer> parsedVersion = new ArrayList<>();
1121
for (int i = 0; i < splittedVersion.length; i++) {
12-
parsedVersion[i] = Integer.parseInt(splittedVersion[i]);
22+
try {
23+
parsedVersion.add(Integer.parseInt(splittedVersion[i]));
24+
} catch (NumberFormatException e) {
25+
break;
26+
}
1327
}
14-
return parsedVersion;
28+
return parsedVersion.toArray(new Integer[0]);
1529
}
1630

1731
/**
@@ -21,14 +35,26 @@ public class VersionUtils {
2135
* @return 0 if equals, -1 if v1 less than v2, +1 if v1 greater than v2
2236
*/
2337
public static int compareVersions(String v1, String v2) {
24-
int [] parsed1 = parseVersion(v1);
25-
int [] parsed2 = parseVersion(v2);
38+
Integer [] parsed1 = parseVersion(v1);
39+
Integer [] parsed2 = parseVersion(v2);
2640
int size = Math.min(parsed1.length, parsed2.length);
2741
for (int i = 0; i < size; i++) {
2842
if (parsed1[i] > parsed2[i]) return -1;
2943
if (parsed1[i] < parsed2[i]) return 1;
3044
}
3145
return 0;
3246
}
47+
48+
/**
49+
* Returns Java runtime major version (e.g.: 7 for Java 1.7, 8 for Java 1.8,
50+
* 9 for Java 9, ..., and so on)
51+
* @return Java runtime major version
52+
*/
53+
public static int getJavaMajorVersion() {
54+
Integer [] parsed = parseVersion(System.getProperty("java.version"));
55+
int major = parsed[0];
56+
if (major >= 2) return major;
57+
return parsed[1];
58+
}
3359

3460
}

0 commit comments

Comments
 (0)