summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-06-15 14:24:10 +0200
committerHarald Musum <musum@yahooinc.com>2023-06-15 14:24:10 +0200
commita3b3a2f7813e418c3dfaa06105b07f178c0592df (patch)
tree490cf43c33144f1c188fb49b228a33a46388de9c /config-provisioning
parent37761206b87ec3dad92ce9b418817016e89c842d (diff)
Stricter validation when creating ApplicationId from a string
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java
index c8712064cc0..c13f41a8f28 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java
@@ -5,8 +5,11 @@ import com.yahoo.cloud.config.ApplicationIdConfig;
import java.util.Comparator;
import java.util.Objects;
+import java.util.logging.Logger;
import java.util.regex.Pattern;
+import static java.util.logging.Level.SEVERE;
+
/**
* A complete, immutable identification of an application instance.
*
@@ -16,6 +19,8 @@ import java.util.regex.Pattern;
*/
public class ApplicationId implements Comparable<ApplicationId> {
+ private static final Logger log = Logger.getLogger(ApplicationId.class.getName());
+
static final Pattern namePattern = Pattern.compile("[a-zA-Z0-9_-]{1,256}");
private static final ApplicationId global = new ApplicationId(TenantName.from("hosted-vespa"),
@@ -54,18 +59,22 @@ public class ApplicationId implements Comparable<ApplicationId> {
}
public static ApplicationId fromSerializedForm(String idString) {
- String[] parts = idString.split(":");
- if (parts.length < 3)
- throw new IllegalArgumentException("Application ids must be on the form tenant:application:instance, but was " + idString);
-
- return from(parts[0], parts[1], parts[2]);
+ return fromIdString(idString, ":");
}
public static ApplicationId fromFullString(String idString) {
- String[] parts = idString.split("\\.");
- if (parts.length < 3)
- throw new IllegalArgumentException("Application ids must be on the form tenant.application.instance, but was " + idString);
+ return fromIdString(idString, "\\.");
+ }
+ private static ApplicationId fromIdString(String idString, String splitCharacter) {
+ String[] parts = idString.split(splitCharacter);
+ String errorMessage = "Application ids must be on the form tenant " +
+ splitCharacter + "application" + splitCharacter + "instance, but was " + idString;
+ if (parts.length < 3)
+ throw new IllegalArgumentException(errorMessage);
+ // TODO: Throw exception when we have verified no-one is abusing this with more than 3 parts in id string
+ if (parts.length > 3)
+ log.log(SEVERE, errorMessage);
return from(parts[0], parts[1], parts[2]);
}