Skip to content

Commit 0105d73

Browse files
committed
Add sorted() value for JavaHomeFinder
1 parent f38bce7 commit 0105d73

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

src/main/java/com/fizzed/jne/JavaHomeFinder.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,28 @@ public class JavaHomeFinder {
3434
JavaDistribution.CORRETTO
3535
};
3636

37+
private boolean sorted;
3738
private JavaImageType imageType;
3839
private HardwareArchitecture hardwareArchitecture;
3940
private Integer minVersion;
4041
private Integer maxVersion;
4142
private JavaDistribution distribution;
4243
private JavaDistribution[] preferredDistributions;
4344

45+
public boolean isSorted() {
46+
return sorted;
47+
}
48+
49+
public JavaHomeFinder sorted() {
50+
this.sorted = true;
51+
return this;
52+
}
53+
54+
public JavaHomeFinder sorted(boolean sorted) {
55+
this.sorted = sorted;
56+
return this;
57+
}
58+
4459
public JavaImageType getImageType() {
4560
return imageType;
4661
}
@@ -123,7 +138,8 @@ public JavaHomeFinder preferredDistributions(JavaDistribution... preferredDistri
123138

124139
@Override
125140
public String toString() {
126-
return "imageType=" + imageType +
141+
return "sorted=" + sorted +
142+
", imageType=" + imageType +
127143
", minVersion=" + minVersion +
128144
", maxVersion=" + maxVersion +
129145
", hwArch=" + hardwareArchitecture +
@@ -162,17 +178,23 @@ public Optional<JavaHome> tryFind(List<JavaHome> javaHomes) {
162178
return Optional.empty();
163179
}
164180

181+
// the first java home is important (it should be the one running this JVM)
182+
final JavaHome firstJavaHome = javaHomes.get(0);
183+
165184
// filter our list down by image type, version, etc. (concrete criteria)
166185
final List<JavaHome> filteredJavaHomes = javaHomes.stream()
167186
.filter(v -> this.minVersion == null || v.getVersion().getMajor() >= this.minVersion)
168187
.filter(v -> this.maxVersion == null || v.getVersion().getMajor() <= this.maxVersion)
169188
.filter(v -> this.imageType == null || v.getImageType() == this.imageType)
170189
.filter(v -> this.hardwareArchitecture == null || v.getHardwareArchitecture() == this.hardwareArchitecture)
171190
.filter(v -> this.distribution == null || v.getDistribution() == this.distribution)
172-
// sort what's left by the most recent version (descending)
173-
.sorted((a, b) -> b.getVersion().compareTo(a.getVersion()))
174191
.collect(Collectors.toList());
175192

193+
if (this.sorted) {
194+
// sort what's left by the most recent version (descending)
195+
filteredJavaHomes.sort((a, b) -> b.getVersion().compareTo(a.getVersion()));
196+
}
197+
176198
// by preferred distribution?
177199
if (this.preferredDistributions != null) {
178200
for (JavaDistribution d : this.preferredDistributions) {

0 commit comments

Comments
 (0)