use of org.folio.rest.jaxrs.model.Diagnostic in project raml-module-builder by folio-org.
the class PgUtil method streamGetResult.
private static <T> void streamGetResult(PostgresClientStreamResult<T> result, String element, HttpServerResponse response) {
response.setStatusCode(200);
response.setChunked(true);
response.putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
response.write("{\n");
response.write(String.format(" \"%s\": [%n", element));
AtomicBoolean first = new AtomicBoolean(true);
result.exceptionHandler(res -> {
String message = res.getMessage();
List<Diagnostic> diag = new ArrayList<>();
diag.add(new Diagnostic().withCode("500").withMessage(message));
result.resultInfo().setDiagnostics(diag);
streamTrailer(response, result.resultInfo());
});
result.endHandler(res -> streamTrailer(response, result.resultInfo()));
result.handler(res -> {
String itemString = null;
try {
itemString = OBJECT_MAPPER.writeValueAsString(res);
} catch (JsonProcessingException ex) {
logger.error(ex.getMessage(), ex);
throw new IllegalArgumentException(ex.getCause());
}
if (first.get()) {
first.set(false);
} else {
response.write(String.format(",%n"));
}
response.write(itemString);
});
}
Aggregations