diff options
Diffstat (limited to 'application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java')
-rw-r--r-- | application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java new file mode 100644 index 00000000000..bb458ea7999 --- /dev/null +++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java @@ -0,0 +1,52 @@ +package com.yahoo.vespa.applicationmodel; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Objects; + +/** + * @author bjorncs + */ +// TODO: Remove this and use ApplicationId instead (if you need it for the JSON stuff move it to that layer and don't let it leak) +public class ApplicationInstanceReference { + private final TenantId tenantId; + private final ApplicationInstanceId applicationInstanceId; + + public ApplicationInstanceReference(TenantId tenantId, ApplicationInstanceId applicationInstanceId) { + this.tenantId = tenantId; + this.applicationInstanceId = applicationInstanceId; + } + + @JsonProperty("tenantId") + public TenantId tenantId() { + return tenantId; + } + + @JsonProperty("applicationInstanceId") + public ApplicationInstanceId applicationInstanceId() { + return applicationInstanceId; + } + + // 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. + @JsonValue + @Override + public String toString() { + return tenantId.id + ":" + applicationInstanceId.id; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ApplicationInstanceReference that = (ApplicationInstanceReference) o; + return Objects.equals(tenantId, that.tenantId) && + Objects.equals(applicationInstanceId, that.applicationInstanceId); + } + + @Override + public int hashCode() { + return Objects.hash(tenantId, applicationInstanceId); + } +} |