Skip to content

Commit a19a74e

Browse files
authored
Allow configuring resource root of transport versions (#133093)
This commit adds the manifest file name as an argument when loading transport versions from resource files. This allows multiple manifests to exist on the test classpath at once, eg in serverless.
1 parent 7c2a1fb commit a19a74e

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ public void apply(Project project) {
6161
t.getDefinitionsDirectory().set(getDefinitionsDirectory(getResourcesDirectory(project)));
6262
t.getManifestFile().set(project.getLayout().getBuildDirectory().file("generated-resources/manifest.txt"));
6363
});
64+
String resourceRoot = TransportVersionUtils.getResourceRoot(project);
6465
project.getTasks().named(JavaPlugin.PROCESS_RESOURCES_TASK_NAME, Copy.class).configure(t -> {
65-
t.into("transport/definitions", c -> c.from(generateManifestTask));
66+
t.into(resourceRoot + "/definitions", c -> c.from(generateManifestTask));
6667
});
6768
}
6869
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionUtils.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,16 @@ static Directory getResourcesDirectory(Project project) {
5050
if (projectName == null) {
5151
projectName = ":server";
5252
}
53+
var resourceRoot = getResourceRoot(project);
5354
Directory projectDir = project.project(projectName.toString()).getLayout().getProjectDirectory();
54-
return projectDir.dir("src/main/resources/transport");
55+
return projectDir.dir("src/main/resources/" + resourceRoot);
56+
}
57+
58+
static String getResourceRoot(Project project) {
59+
var resourceRoot = project.findProperty("org.elasticsearch.transport.resourceRoot");
60+
if (resourceRoot == null) {
61+
resourceRoot = "transport";
62+
}
63+
return resourceRoot.toString();
5564
}
5665
}

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -163,31 +163,32 @@ public static TransportVersion fromBufferedReader(
163163
}
164164
}
165165

166-
public static List<TransportVersion> collectFromInputStreams(
166+
public static List<TransportVersion> collectFromResources(
167167
String component,
168-
Function<String, InputStream> nameToStream,
168+
String resourceRoot,
169+
Function<String, InputStream> resourceLoader,
169170
String latestFileName
170171
) {
171172
TransportVersion latest = parseFromBufferedReader(
172173
component,
173-
"/transport/latest/" + latestFileName,
174-
nameToStream,
174+
resourceRoot + "/latest/" + latestFileName,
175+
resourceLoader,
175176
(c, p, br) -> fromBufferedReader(c, p, true, false, br, Integer.MAX_VALUE)
176177
);
177178
if (latest != null) {
178179
List<String> versionRelativePaths = parseFromBufferedReader(
179180
component,
180-
"/transport/definitions/manifest.txt",
181-
nameToStream,
181+
resourceRoot + "/definitions/manifest.txt",
182+
resourceLoader,
182183
(c, p, br) -> br.lines().filter(line -> line.isBlank() == false).toList()
183184
);
184185
if (versionRelativePaths != null) {
185186
List<TransportVersion> transportVersions = new ArrayList<>();
186187
for (String versionRelativePath : versionRelativePaths) {
187188
TransportVersion transportVersion = parseFromBufferedReader(
188189
component,
189-
"/transport/definitions/" + versionRelativePath,
190-
nameToStream,
190+
resourceRoot + "/definitions/" + versionRelativePath,
191+
resourceLoader,
191192
(c, p, br) -> fromBufferedReader(c, p, false, versionRelativePath.startsWith("named/"), br, latest.id())
192193
);
193194
if (transportVersion != null) {
@@ -426,8 +427,9 @@ private static class VersionsHolder {
426427
static {
427428
// collect all the transport versions from server and es modules/plugins (defined in server)
428429
List<TransportVersion> allVersions = new ArrayList<>(TransportVersions.DEFINED_VERSIONS);
429-
List<TransportVersion> streamVersions = collectFromInputStreams(
430+
List<TransportVersion> streamVersions = collectFromResources(
430431
"<server>",
432+
"/transport",
431433
TransportVersion.class::getResourceAsStream,
432434
Version.CURRENT.major + "." + Version.CURRENT.minor + ".csv"
433435
);

0 commit comments

Comments
 (0)