diff options
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java | 1 | ||||
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/ZoneId.java | 63 |
2 files changed, 48 insertions, 16 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java index 1868db8fe7f..56bbd82c761 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java @@ -118,3 +118,4 @@ public class Zone extends ZoneId { } } + diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ZoneId.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ZoneId.java index 07a4b8c4d79..169c5133130 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ZoneId.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ZoneId.java @@ -1,37 +1,68 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; +import java.util.Objects; + +/** + * Unique identifier for a Zone; use when referencing them. + * + * Serialised form is 'environment.region'. + * + * @author jvenstad + */ public class ZoneId { protected final Environment environment; protected final RegionName region; public ZoneId(Environment environment, RegionName region) { - this.environment = environment; - this.region = region; + this.environment = Objects.requireNonNull(environment); + this.region = Objects.requireNonNull(region); } - /** Returns the current environment */ - public Environment environment() { return environment; } + public static ZoneId from(Environment environment, RegionName region) { + return new ZoneId(environment, region); + } - /** Returns the current region */ - public RegionName region() { return region; } + public static ZoneId from(String environment, String region) { + return from(Environment.from(environment), RegionName.from(region)); + } - @Override - public String toString() { - return "zone " + environment + "." + region; + public static ZoneId from(String value) { + String[] parts = value.split("\\."); + return from(parts[0], parts[1]); + } + + public Environment environment() { + return environment; + } + + public RegionName region() { + return region; + } + + public String value() { + return environment + "." + region; } @Override - public int hashCode() { return environment().hashCode() + 7 * region.hashCode();} + public String toString() { + return "zone " + value(); + } @Override public boolean equals(Object o) { - if (o == this) return true; - if ( ! (o instanceof Zone)) return false; + if (this == o) return true; + if ( ! (o instanceof ZoneId)) return false; + ZoneId id = (ZoneId) o; + return environment == id.environment && + Objects.equals(region, id.region); + } - ZoneId other = (ZoneId)o; - if ( this.environment() != other.environment()) return false; - if ( ! this.region.equals(other.region)) return false; - return true; + @Override + public int hashCode() { + return Objects.hash(environment, region); } + } + |