CorePluginsRepository: Simplify manifest attributes extraction Change-Id: Iedf986e6bf4448f4cf2eda40e4486a72c6001de8
diff --git a/src/main/java/com/googlesource/gerrit/plugins/manager/repository/CorePluginsRepository.java b/src/main/java/com/googlesource/gerrit/plugins/manager/repository/CorePluginsRepository.java index 5a3dc70..96947aa 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/manager/repository/CorePluginsRepository.java +++ b/src/main/java/com/googlesource/gerrit/plugins/manager/repository/CorePluginsRepository.java
@@ -29,6 +29,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Objects; +import java.util.Optional; import java.util.jar.Attributes; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -57,23 +58,25 @@ URI pluginUrl = new URI("jar:file:" + requireNonNull(site.gerrit_war) + "!/" + entry.getName()); try (JarInputStream pluginJar = new JarInputStream(pluginUrl.toURL().openStream())) { - Manifest manifestJarEntry = getManifestEntry(pluginJar); - if (manifestJarEntry != null) { - Attributes pluginAttributes = manifestJarEntry.getMainAttributes(); - String pluginName = pluginAttributes.getValue("Gerrit-PluginName"); - return new PluginInfo( - pluginName, - pluginsDescriptions.get(pluginName).orElse(""), - pluginAttributes.getValue("Implementation-Version"), - "", - pluginUrl.toString()); - } - return new PluginInfo( - dropSuffix(entryName.getFileName().toString(), ".jar"), - "", - "", - "", - pluginUrl.toString()); + 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) { log.error("Unable to open plugin " + pluginUrl, e); return null; @@ -91,15 +94,15 @@ } @Nullable - private static Manifest getManifestEntry(JarInputStream pluginJar) throws IOException { + private static Optional<Manifest> getManifestEntry(JarInputStream pluginJar) throws IOException { for (JarEntry entry = pluginJar.getNextJarEntry(); entry != null; entry = pluginJar.getNextJarEntry()) { - if (entry.getName().equals("META-INF/MANIFEST.MF")) { - return new Manifest(pluginJar); + if (entry.getName().equals(JarFile.MANIFEST_NAME)) { + return Optional.of(new Manifest(pluginJar)); } } - return null; + return Optional.empty(); } @Override