diff options
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java | 25 |
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]); } |