public ApiException(Status status, Throwable cause) { super(status.toString(), cause); this.status = status; } }
public String superString() { return super.toString(); } }
public FrameworkException(Status status, Throwable cause) { super(status.toString(), cause); this.status = status; }
public ApiException(Status status) { super(status.toString()); this.status = status; }
public FrameworkException(Status status) { super(status.toString()); this.status = status; }
@Override public String toString() { return String.format("Failure[%s]", error.toString()); } }
/** * There are situations that the downstream service returns an error status response and we just * want to bubble up to the caller and eventually to the original caller. * * @param exchange HttpServerExchange * @param status error status */ default void setExchangeStatus(HttpServerExchange exchange, Status status) { exchange.setStatusCode(status.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); StackTraceElement[] elements = Thread.currentThread().getStackTrace(); logger.error(status.toString() + " at " + elements[2].getClassName() + "." + elements[2].getMethodName() + "(" + elements[2].getFileName() + ":" + elements[2].getLineNumber() + ")"); } }
/** * This method is used to construct a standard error status in JSON format from an error code. * * @param exchange HttpServerExchange * @param code error code * @param args arguments for error description */ default void setExchangeStatus(HttpServerExchange exchange, String code, final Object... args) { Status status = new Status(code, args); if(status.getStatusCode() == 0) { // There is no entry in status.yml for this particular error code. status = new Status(ERROR_NOT_DEFINED, code); } exchange.setStatusCode(status.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); StackTraceElement[] elements = Thread.currentThread().getStackTrace(); logger.error(status.toString() + " at " + elements[2].getClassName() + "." + elements[2].getMethodName() + "(" + elements[2].getFileName() + ":" + elements[2].getLineNumber() + ")"); }
exchange.setStatusCode(fe.getStatus().getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); exchange.getResponseSender().send(fe.getStatus().toString()); logger.error(fe.getStatus().toString(), e); } else { setExchangeStatus(exchange, STATUS_RUNTIME_EXCEPTION); exchange.setStatusCode(ae.getStatus().getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); exchange.getResponseSender().send(ae.getStatus().toString()); logger.error(ae.getStatus().toString(), e); } else { setExchangeStatus(exchange, STATUS_UNCAUGHT_EXCEPTION);
public ApiException(Status status, Throwable cause) { super(status.toString(), cause); this.status = status; } }
public FrameworkException(Status status, Throwable cause) { super(status.toString(), cause); this.status = status; }
public String superString() { return super.toString(); } }
public ApiException(Status status) { super(status.toString()); this.status = status; }
public FrameworkException(Status status) { super(status.toString()); this.status = status; }
/** * There are situations that the downstream service returns an error status response and we just * want to bubble up to the caller and eventually to the original caller. * * @param exchange HttpServerExchange * @param status error status */ default void setExchangeStatus(HttpServerExchange exchange, Status status) { exchange.setStatusCode(status.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); StackTraceElement[] elements = Thread.currentThread().getStackTrace(); logger.error(status.toString() + " at " + elements[2].getClassName() + "." + elements[2].getMethodName() + "(" + elements[2].getFileName() + ":" + elements[2].getLineNumber() + ")"); } }
/** * This method is used to construct a standard error status in JSON format from an error code. * * @param exchange HttpServerExchange * @param code error code * @param args arguments for error description */ default void setExchangeStatus(HttpServerExchange exchange, String code, final Object... args) { Status status = new Status(code, args); if(status.getStatusCode() == 0) { // There is no entry in status.yml for this particular error code. status = new Status(ERROR_NOT_DEFINED, code); } exchange.setStatusCode(status.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); StackTraceElement[] elements = Thread.currentThread().getStackTrace(); logger.error(status.toString() + " at " + elements[2].getClassName() + "." + elements[2].getMethodName() + "(" + elements[2].getFileName() + ":" + elements[2].getLineNumber() + ")"); }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { final NormalisedPath requestPath = new ApiNormalisedPath(exchange.getRequestURI()); OpenApiOperation openApiOperation = null; Map<String, Object> auditInfo = exchange.getAttachment(AuditHandler.AUDIT_INFO); if(auditInfo != null) { openApiOperation = (OpenApiOperation)auditInfo.get(Constants.OPENAPI_OPERATION_STRING); } if(openApiOperation == null) { setExchangeStatus(exchange, STATUS_MISSING_OPENAPI_OPERATION); return; } Status status = requestValidator.validateRequest(requestPath, exchange, openApiOperation); if(status != null) { exchange.setStatusCode(status.getStatusCode()); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); if(config.logError) logger.error("ValidationError:" + status.toString()); return; } Handler.next(exchange, next); }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { final NormalisedPath requestPath = new ApiNormalisedPath(exchange.getRequestURI()); SwaggerOperation swaggerOperation = null; Map<String, Object> auditInfo = exchange.getAttachment(AuditHandler.AUDIT_INFO); if(auditInfo != null) { swaggerOperation = (SwaggerOperation)auditInfo.get(Constants.SWAGGER_OPERATION_STRING); } if(swaggerOperation == null) { setExchangeStatus(exchange, STATUS_MISSING_SWAGGER_OPERATION); return; } Status status = requestValidator.validateRequest(requestPath, exchange, swaggerOperation); if(status != null) { exchange.setStatusCode(status.getStatusCode()); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); if(config.isLogError()) logger.error("ValidationError:" + status.toString()); return; } Handler.next(exchange, next); }
exchange.setStatusCode(fe.getStatus().getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); exchange.getResponseSender().send(fe.getStatus().toString()); logger.error(fe.getStatus().toString(), e); } else { setExchangeStatus(exchange, STATUS_RUNTIME_EXCEPTION); exchange.setStatusCode(ae.getStatus().getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); exchange.getResponseSender().send(ae.getStatus().toString()); logger.error(ae.getStatus().toString(), e); } else { setExchangeStatus(exchange, STATUS_UNCAUGHT_EXCEPTION);
Status status = new Status(USER_NOT_FOUND, ownerId); exchange.setStatusCode(status.getStatusCode()); exchange.getResponseSender().send(status.toString()); processAudit(exchange); return;