@JsonIgnoreProperties({ "cause", "stackTrace", "localizedMessage", "suppressed" })public class GwtException extends RuntimeException {
private static final long serialVersionUID = -2385815955673412683L;
public enum ErrorCode { GWT_EXCEPTION(500), ACCESS_DENIDED_REST_EXCEPTION(403), ANONYMOUS_USER_REST_EXCEPTION(600), //...oters EXPIRED_AUTH_TOKEN_EXCEPTION(609),
;
private final int code;
private ErrorCode(final int code) { this.code = code; }
public int getCode() { return code; }
public static ErrorCode find(final int code) { final ErrorCode[] values = ErrorCode.values(); for (final ErrorCode value : values) { if (value.getCode() == code) { return value; } } return GWT_EXCEPTION; }
}
private int code = 500; private String message;
public GwtException() { super(); }
public GwtException(final String message) { super(message); this.message = message; }
public GwtException(final Throwable cause) { super(cause); }
public GwtException(final String message, final Throwable cause) { super(message, cause); this.message = message; }
public int getCode() { return code; }
/** * @param code * the code to set */ public void setCode(final int code) { this.code = code; }
/** * @return the message */ @Override public String getMessage() { return message; }
/** * @param message * the message to set */ public void setMessage(final String message) { this.message = message; }
}
@ExceptionHandler(GwtException.class) public ResponseEntity<GwtException> setStatusException(final GwtException ex) { return ResponseEntity.status(ex.getCode()).body(ex); }
public class AdminModuleEntryPoint extends AbstractModuleEntryPoint { //....
public static interface AnonymousUserRestExceptionMapper extends ObjectMapper<AnonymousUserRestException> {}
private static final AnonymousUserRestExceptionMapper anonymousUserRestExceptionMapper = GWT.create(AnonymousUserRestExceptionMapper.class);
//.....
public void onModuleLoad() { // ... Defaults.setExceptionMapper(new ExceptionMapper() {
@Override public Throwable createFailedStatusException(final Method method, final Response response) { final int statusCode = response.getStatusCode(); final ErrorCode errorCode = GwtException.ErrorCode.find(statusCode); switch (errorCode) { case ANONYMOUS_USER_REST_EXCEPTION: return anonymousUserRestExceptionMapper.read(response.getText()); case NO_USER_REST_EXCEPTION: return noUserRestExceptionMapper.read(response.getText());
//..... default:
return new FailedResponseException(response); } } });
//...... }