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