diff options
Diffstat (limited to 'application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java')
-rw-r--r-- | application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java new file mode 100644 index 00000000000..93b16b98d47 --- /dev/null +++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java @@ -0,0 +1,43 @@ +package com.yahoo.vespa.applicationmodel; + +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Objects; + +/** + * @author bjorncs + */ +// TODO: Remove this and use ApplicationName/InstanceName instead (if you need it for the JSON stuff move it to that layer and don't let it leak) +public class ApplicationInstanceId { + public final String id; + + public ApplicationInstanceId(String id) { + this.id = id; + } + + // Jackson's StdKeySerializer uses toString() (and ignores annotations) for objects used as Map keys. + // Therefore, we use toString() as the JSON-producing method, which is really sad. + @Override + @JsonValue + public String toString() { + return id; + } + + // For compatibility with original Scala case class + public String s() { + return id; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ApplicationInstanceId that = (ApplicationInstanceId) o; + return Objects.equals(id, that.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } +} |