diff options
Diffstat (limited to 'bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java')
-rw-r--r-- | bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java index 72d2adae13e..ade8a4984e8 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java @@ -3,6 +3,9 @@ package com.yahoo.container.plugin.util; import java.io.File; import java.io.InputStream; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.Optional; import java.util.jar.JarFile; import java.util.jar.Manifest; @@ -14,6 +17,17 @@ import java.util.zip.ZipFile; * @author ollivir */ public class JarFiles { + + public static List<ProvidedArtifact> providedArtifactsFromClassPath(File jarFile) { + return getManifest(jarFile).map(mf -> getMainAttributeValue(mf, "Class-Path") + .map(s -> Arrays.stream(s.split(" ")) + .map(ProvidedArtifact::fromStringValue) + .toList()) + .orElse(Collections.emptyList())) + .orElse(Collections.emptyList()); + + } + public static <T> T withJarFile(File file, ThrowingFunction<JarFile, T> action) { try (JarFile jar = new JarFile(file)) { return action.apply(jar); @@ -30,6 +44,10 @@ public class JarFiles { } } + public static Optional<String> getMainAttributeValue(Manifest manifest, String attributeName) { + return Optional.ofNullable(manifest.getMainAttributes().getValue(attributeName)); + } + public static Optional<Manifest> getManifest(File jarFile) { return withJarFile(jarFile, jar -> Optional.ofNullable(jar.getManifest())); } |