Skip to content

Commit 7e9690a

Browse files
committed
cleanup
1 parent c64e813 commit 7e9690a

File tree

2 files changed

+21
-44
lines changed

2 files changed

+21
-44
lines changed

server/src/main/java/org/elasticsearch/TransportVersion.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
import java.lang.reflect.Field;
1717
import java.util.HashMap;
1818
import java.util.Map;
19+
import java.util.NavigableSet;
1920
import java.util.Set;
21+
import java.util.TreeSet;
22+
import java.util.stream.Collectors;
2023

2124
/**
2225
* Represents the version of the wire protocol used to communicate between ES nodes.
@@ -149,6 +152,8 @@ public class TransportVersion implements Comparable<TransportVersion> {
149152

150153
private static final Map<Integer, TransportVersion> idToVersion;
151154

155+
private static final TreeSet<TransportVersion> declaredVersions;
156+
152157
static {
153158
Map<Integer, TransportVersion> builder = new HashMap<>();
154159
Map<String, TransportVersion> uniqueIds = new HashMap<>();
@@ -181,6 +186,7 @@ public class TransportVersion implements Comparable<TransportVersion> {
181186
}
182187
}
183188
idToVersion = Map.copyOf(builder);
189+
declaredVersions = idToVersion.values().stream().collect(Collectors.toCollection(() -> new TreeSet<>()));
184190
}
185191

186192
public static TransportVersion readVersion(StreamInput in) throws IOException {
@@ -244,6 +250,13 @@ public int compareTo(TransportVersion other) {
244250
return Integer.compare(this.id, other.id);
245251
}
246252

253+
/**
254+
* returns a sorted list of declared transport version constants
255+
*/
256+
public static NavigableSet<TransportVersion> getDeclaredVersions() {
257+
return declaredVersions;
258+
}
259+
247260
@Override
248261
public String toString() {
249262
return Integer.toString(id);
@@ -271,4 +284,5 @@ public boolean equals(Object o) {
271284
public int hashCode() {
272285
return id;
273286
}
287+
274288
}

test/framework/src/main/java/org/elasticsearch/test/TransportVersionUtils.java

Lines changed: 7 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,15 @@
1010

1111
import org.elasticsearch.TransportVersion;
1212

13-
import java.lang.reflect.Field;
14-
import java.lang.reflect.Modifier;
15-
import java.util.ArrayList;
16-
import java.util.Collections;
17-
import java.util.List;
13+
import java.util.NavigableSet;
1814
import java.util.Set;
1915
import java.util.stream.Collectors;
2016

2117
public class TransportVersionUtils {
22-
private static final List<TransportVersion> ALL_VERSIONS;
18+
private static final NavigableSet<TransportVersion> ALL_VERSIONS;
2319

2420
static {
25-
ALL_VERSIONS = getDeclaredVersions();
21+
ALL_VERSIONS = TransportVersion.getDeclaredVersions();
2622
}
2723

2824
/** Returns a random {@link TransportVersion} from all available versions. */
@@ -35,50 +31,17 @@ public static TransportVersion randomVersion(Set<TransportVersion> ignore) {
3531
return ESTestCase.randomFrom(ALL_VERSIONS.stream().filter(v -> ignore.contains(v) == false).collect(Collectors.toList()));
3632
}
3733

38-
/**
39-
* Extracts a sorted list of declared transport version constants from a class.
40-
*/
41-
public static List<TransportVersion> getDeclaredVersions() {
42-
final Field[] fields = TransportVersion.class.getFields();
43-
final List<TransportVersion> versions = new ArrayList<>(fields.length);
44-
for (final Field field : fields) {
45-
final int mod = field.getModifiers();
46-
if (false == Modifier.isStatic(mod) && Modifier.isFinal(mod) && Modifier.isPublic(mod)) {
47-
continue;
48-
}
49-
if (field.getType() != TransportVersion.class) {
50-
continue;
51-
}
52-
switch (field.getName()) {
53-
case "CURRENT":
54-
case "V_EMPTY":
55-
continue;
56-
}
57-
assert field.getName().matches("V(_\\d+){3}?") || field.getName().equals("ZERO") || field.getName().equals("MINIMUM_COMPATIBLE")
58-
: field.getName();
59-
try {
60-
versions.add(((TransportVersion) field.get(null)));
61-
} catch (final IllegalAccessException e) {
62-
throw new RuntimeException(e);
63-
}
64-
}
65-
Collections.sort(versions);
66-
return versions;
67-
}
68-
6934
public static TransportVersion getPreviousVersion() {
7035
TransportVersion version = getPreviousVersion(TransportVersion.CURRENT);
7136
assert version.before(TransportVersion.CURRENT);
7237
return version;
7338
}
7439

7540
public static TransportVersion getPreviousVersion(TransportVersion version) {
76-
for (int i = ALL_VERSIONS.size() - 1; i >= 0; i--) {// TODO should be RELEASED_VERSIONS
77-
TransportVersion v = ALL_VERSIONS.get(i);
78-
if (v.before(version)) {
79-
return v;
80-
}
41+
TransportVersion prev = ALL_VERSIONS.lower(version);
42+
if (prev == null) {
43+
throw new IllegalArgumentException("couldn't find any released versions before [" + version + "]");
8144
}
82-
throw new IllegalArgumentException("couldn't find any released versions before [" + version + "]");
45+
return prev;
8346
}
8447
}

0 commit comments

Comments
 (0)