package com.hubspot.baragon.models;
import java.util.Collection;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
@JsonIgnoreProperties( ignoreUnknown = true )
public class BaragonResponse {
private final String loadBalancerRequestId;
private final BaragonRequestState loadBalancerState;
private final Optional<String> message;
private final Optional<Map<String, Collection<AgentResponse>>> agentResponses;
private final Optional<BaragonRequest> request;
public static BaragonResponse failure(String requestId, String message) {
return new BaragonResponse(requestId, BaragonRequestState.FAILED, Optional.fromNullable(message), Optional.<Map<String, Collection<AgentResponse>>>absent(), Optional.<BaragonRequest>absent());
}
public static BaragonResponse requestDoesNotExist(String requestId) {
return new BaragonResponse(requestId, BaragonRequestState.CANCELED, Optional.<String>of(String.format("Request %s does not exist", requestId)), Optional.<Map<String, Collection<AgentResponse>>>absent(), Optional.<BaragonRequest>absent());
}
public static BaragonResponse serviceNotFound(String requestId, String serviceId) {
return new BaragonResponse(requestId, BaragonRequestState.INVALID_REQUEST_NOOP, Optional.<String>of(String.format("Service %s not found", serviceId)), Optional.<Map<String, Collection<AgentResponse>>>absent(), Optional.<BaragonRequest>absent());
}
@JsonCreator
public BaragonResponse(@JsonProperty("loadBalancerRequestId") String loadBalancerRequestId,
@JsonProperty("loadBalancerState") BaragonRequestState loadBalancerState,
@JsonProperty("message") Optional<String> message,
@JsonProperty("agentResponses") Optional<Map<String, Collection<AgentResponse>>> agentResponses,
@JsonProperty("request") Optional<BaragonRequest> request) {
this.loadBalancerRequestId = loadBalancerRequestId;
this.loadBalancerState = loadBalancerState;
this.message = message;
this.agentResponses = agentResponses;
this.request = request;
}
public String getLoadBalancerRequestId() {
return loadBalancerRequestId;
}
public BaragonRequestState getLoadBalancerState() {
return loadBalancerState;
}
public Optional<String> getMessage() {
return message;
}
public Optional<Map<String, Collection<AgentResponse>>> getAgentResponses() {
return agentResponses;
}
public Optional<BaragonRequest> getRequest() {
return request;
}
@Override
public String toString() {
return "BaragonResponse{" +
"loadBalancerRequestId='" + loadBalancerRequestId + '\'' +
", loadBalancerState=" + loadBalancerState +
", message=" + message +
", agentResponses=" + agentResponses +
", request=" + request +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
BaragonResponse that = (BaragonResponse) o;
if (!agentResponses.equals(that.agentResponses)) {
return false;
}
if (!loadBalancerRequestId.equals(that.loadBalancerRequestId)) {
return false;
}
if (loadBalancerState != that.loadBalancerState) {
return false;
}
if (!message.equals(that.message)) {
return false;
}
if (!request.equals(that.request)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = loadBalancerRequestId.hashCode();
result = 31 * result + loadBalancerState.hashCode();
result = 31 * result + message.hashCode();
result = 31 * result + agentResponses.hashCode();
result = 31 * result + request.hashCode();
return result;
}
}