private PluginInfo extractPluginInfoFromJarEntry()

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;
    }
  }