summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-01-26 22:42:16 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2023-01-27 08:51:28 +0100
commit73d5e088e87c35b5e30c4fc59f2923a0f7bf70e9 (patch)
treed63e8a389926f0f35ffb145d51c6d9b8890192d6 /config-model
parentd4b26ebeaece0b61c1fcf726104485950f1efc98 (diff)
Avoid pulling large aQute.bndlib just for parsing Import-Package in manifest
Diffstat (limited to 'config-model')
-rw-r--r--config-model/pom.xml16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/AbstractBundleValidator.java21
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java14
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java2
4 files changed, 12 insertions, 41 deletions
diff --git a/config-model/pom.xml b/config-model/pom.xml
index e5ccfbcc51b..79e892903fa 100644
--- a/config-model/pom.xml
+++ b/config-model/pom.xml
@@ -289,22 +289,6 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>biz.aQute.bnd</groupId>
- <artifactId>biz.aQute.bndlib</artifactId>
- <version>6.1.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
- <exclusion>
- <!-- These are not needed for our use of bndlib -->
- <groupId>org.osgi</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>org.lz4</groupId>
<artifactId>lz4-java</artifactId>
</dependency>
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AbstractBundleValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AbstractBundleValidator.java
index 9c0e7be452a..63ee5b06dfb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AbstractBundleValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AbstractBundleValidator.java
@@ -1,9 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
-import aQute.bnd.header.Parameters;
-import aQute.bnd.osgi.Domain;
-import aQute.bnd.version.VersionRange;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.ComponentInfo;
import com.yahoo.config.application.api.DeployLogger;
@@ -23,7 +20,6 @@ import java.io.IOException;
import java.io.StringReader;
import java.nio.file.Paths;
import java.util.Optional;
-import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
@@ -31,7 +27,7 @@ import java.util.logging.Level;
import java.util.regex.Pattern;
/**
- * Base class for OSGi bundle validator. Uses BND library for some of the validation.
+ * Base class for OSGi bundle validator.
*
* @author bjorncs
*/
@@ -79,14 +75,13 @@ public abstract class AbstractBundleValidator extends Validator {
}
}
- protected final void forEachImportPackage(Manifest mf, BiConsumer<String, VersionRange> consumer) {
- Parameters importPackage = Domain.domain(mf).getImportPackage();
- importPackage.forEach((packageName, attrs) -> {
- VersionRange versionRange = attrs.getVersion() != null
- ? VersionRange.parseOSGiVersionRange(attrs.getVersion())
- : null;
- consumer.accept(packageName, versionRange);
- });
+ protected final void forEachImportPackage(Manifest mf, Consumer<String> consumer) {
+ String importPackage = mf.getMainAttributes().getValue("Import-Package");
+ ImportPackageInfo importPackages = new ImportPackageInfo(importPackage);
+
+ for (String packageName : importPackages.packages()) {
+ consumer.accept(packageName);
+ }
}
protected final void log(DeployState state, Level level, String fmt, Object... args) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java
index c8a8df18f98..eed88a5fab0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
-import aQute.bnd.version.VersionRange;
import com.yahoo.config.model.deploy.DeployState;
import org.w3c.dom.Document;
@@ -19,7 +18,6 @@ import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.logging.Level;
import java.util.regex.Pattern;
-import java.util.stream.Collectors;
/**
* A validator for bundles.
@@ -63,11 +61,10 @@ public class BundleValidator extends AbstractBundleValidator {
private void validateImportedPackages(DeployState state, JarFile jar, Manifest manifest) {
Map<DeprecatedProvidedBundle, List<String>> deprecatedPackagesInUse = new HashMap<>();
- forEachImportPackage(manifest, (packageName, versionRange) -> {
+ forEachImportPackage(manifest, (packageName) -> {
for (DeprecatedProvidedBundle deprecatedBundle : DeprecatedProvidedBundle.values()) {
for (Predicate<String> matcher : deprecatedBundle.javaPackageMatchers) {
- if (matcher.test(packageName)
- && (versionRange == null || deprecatedBundle.versionDiscriminator.test(versionRange))) {
+ if (matcher.test(packageName)) {
deprecatedPackagesInUse.computeIfAbsent(deprecatedBundle, __ -> new ArrayList<>())
.add(packageName);
}
@@ -91,22 +88,15 @@ public class BundleValidator extends AbstractBundleValidator {
final String name;
final Collection<Predicate<String>> javaPackageMatchers;
- final Predicate<VersionRange> versionDiscriminator;
final String description;
- DeprecatedProvidedBundle(String name, String description, Collection<String> javaPackagePatterns) {
- this(name, description, __ -> true, javaPackagePatterns);
- }
-
DeprecatedProvidedBundle(String name,
String description,
- Predicate<VersionRange> versionDiscriminator,
Collection<String> javaPackagePatterns) {
this.name = name;
this.javaPackageMatchers = javaPackagePatterns.stream()
.map(s -> Pattern.compile(s).asMatchPredicate())
.toList();
- this.versionDiscriminator = versionDiscriminator;
this.description = description;
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
index 2d4211c693b..5a0f0a589fd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
@@ -112,6 +112,8 @@ public class BundleValidatorTest {
"java.nio;version=\"[0.0.0,1)\",java.util.concurrent;version=\"[0.0.0,1)\",java.util;version=\"[0.0.0,1)\"").packages(),
List.of("com.yahoo.config", "com.yahoo.filedistribution.fileacquirer", "com.yahoo.jdisc",
"com.yahoo.jdisc.handler", "java.io", "java.lang", "java.nio", "java.util.concurrent", "java.util"));
+ assertEquals(new ImportPackageInfo("org.json;version=\"[0.0.0,1)\",org.eclipse.jetty.client.api;version=\"[9.4.46,10)").packages(),
+ List.of("org.json", "org.eclipse.jetty.client.api"));
}
@Test