package com.gffny.ldrbrd.web.model;
import com.gffny.ldrbrd.web.model.JSONable;
/**
* @author John Gaffney (john@gffny.com) Dec 24, 2012
*
*/
public abstract class JsonResponse<RESPONSE_ENTITY extends JSONable> {
private enum Status {
SUCCESS, FAIL, ERROR;
}
public abstract Status getStatus();
public static class JsonSuccessResponse<RESPONSE_ENTITY extends JSONable>
extends JsonResponse<RESPONSE_ENTITY> {
private RESPONSE_ENTITY payload;
@Override
public Status getStatus() {
return Status.SUCCESS;
}
public JsonSuccessResponse() {
setPayload(null);
}
public JsonSuccessResponse(RESPONSE_ENTITY payload) {
setPayload(payload);
}
/**
* @return the payload
*/
public RESPONSE_ENTITY getPayload() {
return payload;
}
/**
* @param payload
* the payload to set
*/
public void setPayload(RESPONSE_ENTITY payload) {
this.payload = payload;
}
}
public static class JsonFailResponse<RESPONSE_ENTITY extends JSONable>
extends JsonResponse<RESPONSE_ENTITY> {
private String message;
/*
* (non-Javadoc)
*
* @see com.carat.services.core.ui.JsonResponse#getStatus()
*/
@Override
public Status getStatus() {
return Status.FAIL;
}
public JsonFailResponse(String failureMessage) {
setMessage(failureMessage);
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @param message
* the message to set
*/
public void setMessage(String failureMessage) {
this.message = failureMessage;
}
}
public static class JsonErrorResponse<RESPONSE_ENTITY extends JSONable>
extends JsonFailResponse<RESPONSE_ENTITY> {
/**
* @param errorMessage
*/
public JsonErrorResponse(String errorMessage) {
super(errorMessage);
}
}
}