summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-11-28 16:49:26 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-11-28 16:49:26 +0100
commit03a9d5e03b13015a5dc2680f21f9f9b00a862b6a (patch)
treeb979020d0d67f17dee58fc8d69ba7088a341037f /config-model
parentc53520c4c8419d10d3e6c94aa70e15cbf2ae799f (diff)
Handle optional version
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/AbstractBundleValidator.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ImportPackageInfo.java27
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java10
3 files changed, 41 insertions, 7 deletions
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 c6b8ca981e7..1089d36dda1 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
@@ -78,14 +78,11 @@ public abstract class AbstractBundleValidator extends Validator {
protected final void forEachImportPackage(Manifest mf, Consumer<String> consumer) {
String importPackage = mf.getMainAttributes().getValue("Import-Package");
+ ImportPackageInfo importPackages = new ImportPackageInfo(importPackage);
List<String> tokens = new TokenizeAndDeQuote(";,=", "\"'").tokenize(importPackage);
- if (tokens.size() % 3 != 0) {
- throw new IllegalArgumentException("Number of tokens " + tokens.size() + " must be divisible by 3.\n" +
- "Import-Package = '" + importPackage + "'\n" +
- "Token = " + tokens);
- }
- for (int packageNum = 0; packageNum < tokens.size()/3; packageNum++) {
- consumer.accept(tokens.get(packageNum*3));
+
+ for (String packageName : importPackages.packages()) {
+ consumer.accept(packageName);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ImportPackageInfo.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ImportPackageInfo.java
new file mode 100644
index 00000000000..2565239910b
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ImportPackageInfo.java
@@ -0,0 +1,27 @@
+package com.yahoo.vespa.model.application.validation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author baldersheim
+ */
+public class ImportPackageInfo {
+ private static final String VERSION = "version";
+ private final List<String> packages;
+ public ImportPackageInfo(String importPackage) {
+ List<String> packages = new ArrayList<>();
+ List<String> tokens = new TokenizeAndDeQuote(";,=", "\"'").tokenize(importPackage);
+ for (int i = 0; i < tokens.size(); ++i) {
+ String token = tokens.get(i);
+ if (VERSION.equals(token)) {
+ ++i; // skip the optional version
+ } else {
+ packages.add(token);
+ }
+ }
+ this.packages = List.copyOf(packages);
+ }
+ Collection<String> packages() { return packages; }
+}
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 5cd7880e22d..2d4211c693b 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
@@ -107,10 +107,20 @@ public class BundleValidatorTest {
@Test
void testImportPackagesParsing() {
+ assertEquals(new ImportPackageInfo("com.yahoo.config;version=\"[1.0.0,2)\",com.yahoo.filedistribution.fileacquirer;version=\"[1.0.0,2)\"," +
+ "com.yahoo.jdisc,com.yahoo.jdisc.handler,java.io;version=\"[0.0.0,1)\",java.lang;version=\"[0.0.0,1)\"," +
+ "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"));
+ }
+
+ @Test
+ void testQuotedTokenizer() {
verifyParsing("org.json;version=\"[0.0.0,1)\",org.eclipse.jetty.client.api;version=\"[9.4.46,10)\"",
List.of("org.json", "version", "[0.0.0,1)", "org.eclipse.jetty.client.api", "version", "[9.4.46,10)"));
verifyParsing("org.json;version='[0.0.0,1)',org.eclipse.jetty.client.api;version='[9.4.46,10)'",
List.of("org.json", "version", "[0.0.0,1)", "org.eclipse.jetty.client.api", "version", "[9.4.46,10)"));
}
+
}