in src/main/java/com/googlesource/gerrit/plugins/manager/repository/CorePluginsRepository.java [64:96]
private PluginInfo extractPluginInfoFromJarEntry(JarEntry entry) {
try {
Path entryName = Paths.get(entry.getName());
URI pluginUrl = new URI("jar:" + gerritWarUri + "!/" + entry.getName());
try (JarInputStream pluginJar = new JarInputStream(pluginUrl.toURL().openStream())) {
return getManifestEntry(pluginJar)
.map(
m -> {
Attributes pluginAttributes = m.getMainAttributes();
String pluginName = pluginAttributes.getValue("Gerrit-PluginName");
return new PluginInfo(
pluginName,
pluginsDescriptions.get(pluginName).orElse(""),
pluginAttributes.getValue("Implementation-Version"),
"",
pluginUrl.toString());
})
.orElse(
new PluginInfo(
dropSuffix(entryName.getFileName().toString(), ".jar"),
"",
"",
"",
pluginUrl.toString()));
} catch (IOException e) {
logger.atSevere().withCause(e).log("Unable to open plugin %s", pluginUrl);
return null;
}
} catch (URISyntaxException e) {
logger.atSevere().withCause(e).log("Invalid plugin filename");
return null;
}
}