54 lines
1.6 KiB
Java
54 lines
1.6 KiB
Java
package tc.oc.api.exceptions;
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
import tc.oc.api.message.types.Reply;
|
|
import tc.oc.commons.core.util.ArrayUtils;
|
|
|
|
/**
|
|
* Thrown when an API call has an exceptional response. This abstracts away HTTP
|
|
* status codes so we can use other protocols for the API.
|
|
*/
|
|
public class ApiException extends Exception {
|
|
|
|
private @Nullable StackTraceElement[] originalTrace;
|
|
private @Nullable StackTraceElement[] callSite;
|
|
private final @Nullable Reply reply;
|
|
|
|
public ApiException(String message, @Nullable Reply reply) {
|
|
this(message, null, null, reply);
|
|
}
|
|
|
|
public ApiException(String message, @Nullable StackTraceElement[] callSite) {
|
|
this(message, null, callSite);
|
|
}
|
|
|
|
public ApiException(String message, @Nullable Throwable cause, @Nullable StackTraceElement[] callSite) {
|
|
this(message, cause, callSite, null);
|
|
}
|
|
|
|
public ApiException(String message, @Nullable Throwable cause, @Nullable StackTraceElement[] callSite, @Nullable Reply reply) {
|
|
super(message, cause);
|
|
this.reply = reply;
|
|
setCallSite(callSite);
|
|
}
|
|
|
|
public @Nullable Reply getReply() {
|
|
return reply;
|
|
}
|
|
|
|
public @Nullable StackTraceElement[] getCallSite() {
|
|
return callSite;
|
|
}
|
|
|
|
public void setCallSite(@Nullable StackTraceElement[] callSite) {
|
|
this.callSite = callSite;
|
|
if(callSite != null) {
|
|
if(originalTrace == null) {
|
|
originalTrace = getStackTrace();
|
|
}
|
|
setStackTrace(ArrayUtils.append(originalTrace, callSite));
|
|
}
|
|
}
|
|
}
|