2424import java .util .ArrayList ;
2525import java .util .Collection ;
2626import java .util .Collections ;
27- import java .util .HashMap ;
2827import java .util .List ;
2928import java .util .Map ;
3029import java .util .Objects ;
@@ -113,6 +112,7 @@ public static TransportVersion fromBufferedReader(
113112 String component ,
114113 String path ,
115114 boolean nameInFile ,
115+ boolean ignoreName ,
116116 BufferedReader bufferedReader ,
117117 Integer latest
118118 ) {
@@ -128,7 +128,14 @@ public static TransportVersion fromBufferedReader(
128128 if (parts .length < (nameInFile ? 2 : 1 )) {
129129 throw new IllegalStateException ("invalid transport version file format [" + toComponentPath (component , path ) + "]" );
130130 }
131- String name = nameInFile ? parts [0 ] : path .substring (path .lastIndexOf ('/' ) + 1 , path .length () - 4 );
131+ String name = null ;
132+ if (ignoreName == false ) {
133+ if (nameInFile ) {
134+ name = path .substring (path .lastIndexOf ('/' ) + 1 , path .length () - 4 );
135+ } else {
136+ name = parts [0 ];
137+ }
138+ }
132139 List <Integer > ids = new ArrayList <>();
133140 for (int i = nameInFile ? 1 : 0 ; i < parts .length ; ++i ) {
134141 try {
@@ -156,7 +163,7 @@ public static TransportVersion fromBufferedReader(
156163 }
157164 }
158165
159- public static Map < String , TransportVersion > collectFromInputStreams (
166+ public static List < TransportVersion > collectFromInputStreams (
160167 String component ,
161168 Function <String , InputStream > nameToStream ,
162169 String latestFileName
@@ -165,35 +172,32 @@ public static Map<String, TransportVersion> collectFromInputStreams(
165172 component ,
166173 "/transport/latest/" + latestFileName ,
167174 nameToStream ,
168- (c , p , br ) -> fromBufferedReader (c , p , true , br , Integer .MAX_VALUE )
175+ (c , p , br ) -> fromBufferedReader (c , p , true , false , br , Integer .MAX_VALUE )
169176 );
170177 if (latest != null ) {
171- List <String > versionFilesNames = parseFromBufferedReader (
178+ List <String > versionRelativePaths = parseFromBufferedReader (
172179 component ,
173180 "/transport/definitions/manifest.txt" ,
174181 nameToStream ,
175182 (c , p , br ) -> br .lines ().filter (line -> line .isBlank () == false ).toList ()
176183 );
177- if (versionFilesNames != null ) {
178- Map < String , TransportVersion > transportVersions = new HashMap <>();
179- for (String versionFileName : versionFilesNames ) {
184+ if (versionRelativePaths != null ) {
185+ List < TransportVersion > transportVersions = new ArrayList <>();
186+ for (String versionRelativePath : versionRelativePaths ) {
180187 TransportVersion transportVersion = parseFromBufferedReader (
181188 component ,
182- "/transport/definitions/" + versionFileName ,
189+ "/transport/definitions/" + versionRelativePath ,
183190 nameToStream ,
184- (c , p , br ) -> fromBufferedReader (c , p , false , br , latest .id ())
191+ (c , p , br ) -> fromBufferedReader (c , p , false , versionRelativePath . startsWith ( "initial/" ), br , latest .id ())
185192 );
186193 if (transportVersion != null ) {
187- transportVersions .put (
188- versionFileName .substring (versionFileName .lastIndexOf ("/" ) + 1 , versionFileName .length () - 4 ),
189- transportVersion
190- );
194+ transportVersions .add (transportVersion );
191195 }
192196 }
193197 return transportVersions ;
194198 }
195199 }
196- return Map .of ();
200+ return List .of ();
197201 }
198202
199203 private static String toComponentPath (String component , String path ) {
@@ -422,12 +426,15 @@ private static class VersionsHolder {
422426 static {
423427 // collect all the transport versions from server and es modules/plugins (defined in server)
424428 List <TransportVersion > allVersions = new ArrayList <>(TransportVersions .DEFINED_VERSIONS );
425- Map < String , TransportVersion > allVersionsByName = collectFromInputStreams (
429+ List < TransportVersion > streamVersions = collectFromInputStreams (
426430 "<server>" ,
427431 TransportVersion .class ::getResourceAsStream ,
428432 Version .CURRENT .major + "." + Version .CURRENT .minor + ".csv"
429433 );
430- addTransportVersions (allVersionsByName .values (), allVersions ).sort (TransportVersion ::compareTo );
434+ Map <String , TransportVersion > allVersionsByName = streamVersions .stream ()
435+ .filter (tv -> tv .name () != null )
436+ .collect (Collectors .toMap (TransportVersion ::name , v -> v ));
437+ addTransportVersions (streamVersions , allVersions ).sort (TransportVersion ::compareTo );
431438
432439 // set version lookup by release before adding serverless versions
433440 // serverless versions should not affect release version
0 commit comments