package com.jasonclawson.dropwizardry.jersey.errors;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import lombok.Getter;
import com.google.common.base.Optional;
/**
* we need to be able to have a generic error bean which has exception class, message, stack
* and be able to hold some kind of "data" which could be a list of errors, or other kind of failure
*
* @author jclawson
*/
@Getter
public abstract class BaseWebApplicationException extends RuntimeException {
private static final long serialVersionUID = 1L;
private final Status status;
private final Optional<Object> data;
public BaseWebApplicationException(String message, Status status) {
this(message, status, (Throwable) null);
}
public BaseWebApplicationException(String message, Status status, Throwable cause) {
this(message, null, status, cause);
}
public BaseWebApplicationException(String message, Object data, Status status) {
this(message, data, status, null);
}
public BaseWebApplicationException(String message, Object data, Status status, Throwable cause) {
super(message, cause);
this.data = Optional.fromNullable(data);
this.status = status;
}
protected ResponseBuilder createResponseBuilder() {
return Response.status(status)
.entity(getMessage());
}
}