in src/main/java/com/googlesource/gerrit/plugins/manager/repository/JenkinsCiPluginsRepository.java [118:161]
private Optional<PluginInfo> getPluginArtifactInfo(String url) {
Optional<SmartJson> buildExecution = tryGetJson(url + "/api/json");
Optional<JsonArray> artifacts =
buildExecution.map(json -> json.get("artifacts").get().getAsJsonArray());
if (artifacts.orElse(new JsonArray()).size() == 0) {
return Optional.empty();
}
Optional<SmartJson> artifactJson = artifacts.flatMap(a -> findArtifact(a, ".jar"));
if (!artifactJson.isPresent()) {
return Optional.empty();
}
String pluginPath = artifactJson.get().getString("relativePath");
String[] pluginPathParts = pluginPath.split("/");
String pluginName =
isMavenBuild(pluginPathParts)
? fixPluginNameForMavenBuilds(pluginPathParts)
: pluginNameOfJar(pluginPathParts);
String pluginUrl =
String.format("%s/artifact/%s", buildExecution.get().getString("url"), pluginPath);
Optional<String> pluginVersion =
fetchArtifact(buildExecution.get(), artifacts.get(), ".jar-version");
Optional<String> pluginDescription =
fetchArtifactJson(buildExecution.get(), artifacts.get(), ".json")
.flatMap(json -> json.getOptionalString("description"));
for (JsonElement elem : buildExecution.get().get("actions").get().getAsJsonArray()) {
SmartJson elemJson = SmartJson.of(elem);
Optional<SmartJson> lastBuildRevision = elemJson.getOptional("lastBuiltRevision");
if (lastBuildRevision.isPresent()) {
String sha1 = lastBuildRevision.get().getString("SHA1").substring(0, 8);
return pluginVersion.map(
version ->
new PluginInfo(pluginName, pluginDescription.orElse(""), version, sha1, pluginUrl));
}
}
return Optional.empty();
}