aboutsummaryrefslogtreecommitdiffstats
path: root/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java
diff options
context:
space:
mode:
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.java18
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()));
}