diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-05-30 16:31:05 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-05-30 16:31:45 +0200 |
commit | 8e3d49401f0a8d24690cd29522eca1414f659263 (patch) | |
tree | 6a3f3af46236a1dd3e90517edc5d8c9e503c05d0 /config-provisioning | |
parent | 35e6dd6e6bb9785d2e701cd9312d90203ca6370b (diff) |
Create singleton CloudNames for known clouds
Diffstat (limited to 'config-provisioning')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java | 17 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java | 22 |
2 files changed, 33 insertions, 6 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java index ba262136abe..e1d7afdc9f0 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java @@ -3,7 +3,6 @@ package com.yahoo.config.provision; import ai.vespa.validation.PatternedStringWrapper; -import java.util.Objects; import java.util.regex.Pattern; /** @@ -14,17 +13,23 @@ import java.util.regex.Pattern; public class CloudName extends PatternedStringWrapper<CloudName> { private static final Pattern pattern = Pattern.compile("[a-z]([a-z0-9-]*[a-z0-9])*"); - public static final CloudName AWS = from("aws"); - public static final CloudName GCP = from("gcp"); - public static final CloudName DEFAULT = from("default"); - public static final CloudName YAHOO = from("yahoo"); + public static final CloudName AWS = new CloudName("aws"); + public static final CloudName GCP = new CloudName("gcp"); + public static final CloudName DEFAULT = new CloudName("default"); + public static final CloudName YAHOO = new CloudName("yahoo"); private CloudName(String cloud) { super(cloud, pattern, "cloud name"); } public static CloudName from(String cloud) { - return new CloudName(cloud); + return switch (cloud) { + case "aws" -> AWS; + case "gcp" -> GCP; + case "default" -> DEFAULT; + case "yahoo" -> YAHOO; + default -> new CloudName(cloud); + }; } } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java new file mode 100644 index 00000000000..b030233d459 --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java @@ -0,0 +1,22 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * @author freva + */ +class CloudNameTest { + + @Test + void returns_same_instance_for_known_clouds() { + assertSame(CloudName.from("aws"), CloudName.AWS); + assertSame(CloudName.from("gcp"), CloudName.GCP); + assertSame(CloudName.from("default"), CloudName.DEFAULT); + assertSame(CloudName.from("yahoo"), CloudName.YAHOO); + assertThrows(IllegalArgumentException.class, () -> CloudName.from("aWs")); // Must be lower case + } +} |