package cz.cuni.mff.d3s.been.persistence; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.annotate.JsonSubTypes; import org.codehaus.jackson.annotate.JsonTypeInfo; import java.util.Collection; /** * A skeletal implementation of {@link QueryAnswer} * * @author darklight */ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class") @JsonSubTypes({ @JsonSubTypes.Type(value = DataQueryAnswer.class), @JsonSubTypes.Type(value = SimpleQueryAnswer.class) }) @JsonIgnoreProperties({"data", "carryingData"}) abstract class SkeletalQueryAnswer implements QueryAnswer { private QueryStatus status; /** * Only Jackson should use this constructor */ SkeletalQueryAnswer() { this.status = null; } SkeletalQueryAnswer(QueryStatus status) { this.status = status; } @Override public QueryStatus getStatus() { return status; } void setStatus(QueryStatus status) { this.status = status; } @Override public boolean isCarryingData() { return false; } @Override public Collection<String> getData() { throw new UnsupportedOperationException(String.format("%s does not carry any data.", getClass().getSimpleName())); } }