package geniusweb.references; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; /** * Container holding a partyref with parameters */ @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE) public class PartyWithParameters { private final PartyRef partyref; private final Parameters parameters; @JsonCreator public PartyWithParameters(@JsonProperty("partyref") PartyRef partyref, @JsonProperty("parameters") Parameters parameters) { this.partyref = partyref; this.parameters = parameters; } public PartyRef getPartyRef() { return partyref; } public Parameters getParameters() { return parameters; } @Override public String toString() { if (parameters.isEmpty()) return partyref.toString(); return partyref.toString() + parameters.toString(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((parameters == null) ? 0 : parameters.hashCode()); result = prime * result + ((partyref == null) ? 0 : partyref.hashCode()); return result; } /** * * @param parameters2 the additional parameters * @return this party but with the given parameters added to our parameters */ public PartyWithParameters with(Parameters parameters2) { return new PartyWithParameters(partyref, parameters.with(parameters2)); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; PartyWithParameters other = (PartyWithParameters) obj; if (parameters == null) { if (other.parameters != null) return false; } else if (!parameters.equals(other.parameters)) return false; if (partyref == null) { if (other.partyref != null) return false; } else if (!partyref.equals(other.partyref)) return false; return true; } }