public Response badRequestResponse(Exception e) { if (logger.isDebugEnabled()) { logger.debug("Client sent a bad request. {}", e.getMessage()); } TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.ABORT.getCode()); entity.setMessage(e.getMessage()); entity.setFlowFileSent(0); return Response.status(Response.Status.BAD_REQUEST).type(MediaType.APPLICATION_JSON_TYPE).entity(entity).build(); }
private Response cancelTransaction(String transactionId, TransactionResultEntity entity) { transactionManager.cancelTransaction(transactionId); entity.setMessage("Transaction has been canceled."); entity.setResponseCode(ResponseCode.CANCEL_TRANSACTION.getCode()); return Response.ok(entity).build(); }
public Response unexpectedErrorResponse(String portId, Exception e) { logger.error("Unexpected exception occurred. portId={}", portId); logger.error("Exception detail:", e); TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.ABORT.getCode()); entity.setMessage("Server encountered an exception."); entity.setFlowFileSent(0); return Response.serverError().entity(entity).type(MediaType.APPLICATION_JSON_TYPE).build(); }
public Response unexpectedErrorResponse(String portId, String transactionId, Exception e) { logger.error("Unexpected exception occurred. portId={}, transactionId={}", portId, transactionId); logger.error("Exception detail:", e); TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.ABORT.getCode()); entity.setMessage("Server encountered an exception."); entity.setFlowFileSent(0); return Response.serverError().entity(entity).type(MediaType.APPLICATION_JSON_TYPE).build(); }
public Response wrongPortTypeResponse(String portType, String portId) { logger.debug("Port type was wrong. portType={}, portId={}", portType, portId); TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.ABORT.getCode()); entity.setMessage("Port was not found."); entity.setFlowFileSent(0); return Response.status(NOT_FOUND).entity(entity).type(MediaType.APPLICATION_JSON_TYPE).build(); }
public Response transactionNotFoundResponse(String portId, String transactionId) { logger.debug("Transaction was not found. portId={}, transactionId={}", portId, transactionId); TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.ABORT.getCode()); entity.setMessage("Transaction was not found."); entity.setFlowFileSent(0); return Response.status(NOT_FOUND).entity(entity).type(MediaType.APPLICATION_JSON_TYPE).build(); }
private TransactionResultEntity readResponse(final InputStream inputStream) throws IOException { final ByteArrayOutputStream bos = new ByteArrayOutputStream(); StreamUtils.copy(inputStream, bos); String responseMessage = null; try { responseMessage = new String(bos.toByteArray(), "UTF-8"); logger.debug("readResponse responseMessage={}", responseMessage); final ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(responseMessage, TransactionResultEntity.class); } catch (JsonParseException | JsonMappingException e) { if (logger.isDebugEnabled()) { logger.debug("Failed to parse JSON.", e); } final TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.ABORT.getCode()); entity.setMessage(responseMessage); return entity; } }
public Response unauthorizedResponse(NotAuthorizedException e) { if (logger.isDebugEnabled()) { logger.debug("Client request was not authorized. {}", e.getMessage()); } TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(ResponseCode.UNAUTHORIZED.getCode()); entity.setMessage(e.getMessage()); entity.setFlowFileSent(0); return Response.status(Response.Status.UNAUTHORIZED).type(MediaType.APPLICATION_JSON_TYPE).entity(e.getMessage()).build(); }
public Response handshakeExceptionResponse(HandshakeException e) { if (logger.isDebugEnabled()) { logger.debug("Handshake failed, {}", e.getMessage()); } ResponseCode handshakeRes = e.getResponseCode(); Response.Status statusCd; TransactionResultEntity entity = new TransactionResultEntity(); entity.setResponseCode(handshakeRes != null ? handshakeRes.getCode() : ResponseCode.ABORT.getCode()); entity.setMessage(e.getMessage()); entity.setFlowFileSent(0); switch (handshakeRes) { case PORT_NOT_IN_VALID_STATE: case PORTS_DESTINATION_FULL: return Response.status(Response.Status.SERVICE_UNAVAILABLE).type(MediaType.APPLICATION_JSON_TYPE).entity(entity).build(); case UNAUTHORIZED: statusCd = Response.Status.UNAUTHORIZED; break; case UNKNOWN_PORT: statusCd = NOT_FOUND; break; default: statusCd = Response.Status.BAD_REQUEST; } return Response.status(statusCd).type(MediaType.APPLICATION_JSON_TYPE).entity(entity).build(); }
public TransactionResultEntity commitReceivingFlowFiles(final String transactionUrl, final ResponseCode clientResponse, final String checksum) throws IOException { logger.debug("Sending commitReceivingFlowFiles request to transactionUrl: {}, clientResponse={}, checksum={}", transactionUrl, clientResponse, checksum); stopExtendingTtl(); final StringBuilder urlBuilder = new StringBuilder(transactionUrl).append("?responseCode=").append(clientResponse.getCode()); if (ResponseCode.CONFIRM_TRANSACTION.equals(clientResponse)) { urlBuilder.append("&checksum=").append(checksum); } final HttpDelete delete = createDelete(urlBuilder.toString()); delete.setHeader("Accept", "application/json"); delete.setHeader(HttpHeaders.PROTOCOL_VERSION, String.valueOf(transportProtocolVersionNegotiator.getVersion())); setHandshakeProperties(delete); try (CloseableHttpResponse response = getHttpClient().execute(delete)) { final int responseCode = response.getStatusLine().getStatusCode(); logger.debug("commitReceivingFlowFiles responseCode={}", responseCode); try (InputStream content = response.getEntity().getContent()) { switch (responseCode) { case RESPONSE_CODE_OK: return readResponse(content); case RESPONSE_CODE_BAD_REQUEST: return readResponse(content); default: throw handleErrResponse(responseCode, content); } } } }
public TransactionResultEntity commitTransferFlowFiles(final String transactionUrl, final ResponseCode clientResponse) throws IOException { final String requestUrl = transactionUrl + "?responseCode=" + clientResponse.getCode(); logger.debug("Sending commitTransferFlowFiles request to transactionUrl: {}", requestUrl); final HttpDelete delete = createDelete(requestUrl); delete.setHeader("Accept", "application/json"); delete.setHeader(HttpHeaders.PROTOCOL_VERSION, String.valueOf(transportProtocolVersionNegotiator.getVersion())); setHandshakeProperties(delete); try (CloseableHttpResponse response = getHttpClient().execute(delete)) { final int responseCode = response.getStatusLine().getStatusCode(); logger.debug("commitTransferFlowFiles responseCode={}", responseCode); try (InputStream content = response.getEntity().getContent()) { switch (responseCode) { case RESPONSE_CODE_OK: return readResponse(content); case RESPONSE_CODE_BAD_REQUEST: return readResponse(content); default: throw handleErrResponse(responseCode, content); } } } }
if (responseCode == null) { inputErrMessage = "responseCode is required."; } else if (ResponseCode.BAD_CHECKSUM.getCode() != responseCode && ResponseCode.CONFIRM_TRANSACTION.getCode() != responseCode && ResponseCode.CANCEL_TRANSACTION.getCode() != responseCode) { inputErrMessage = "responseCode " + responseCode + " is invalid. "; entity.setResponseCode(ResponseCode.ABORT.getCode()); return Response.status(Response.Status.BAD_REQUEST).entity(entity).build(); if (ResponseCode.CANCEL_TRANSACTION.getCode() == responseCode) { return cancelTransaction(transactionId, entity); entity.setResponseCode(commsSession.getResponseCode().getCode()); entity.setFlowFileSent(flowFileSent); if (ResponseCode.BAD_CHECKSUM.getCode() == responseCode && e.getMessage().contains("Received a BadChecksum response")) { entity.setResponseCode(ResponseCode.CANCEL_TRANSACTION.getCode()); return noCache(Response.ok(entity)).build(); } else {
if (responseCode == null) { inputErrMessage = "responseCode is required."; } else if (ResponseCode.CONFIRM_TRANSACTION.getCode() != responseCode && ResponseCode.CANCEL_TRANSACTION.getCode() != responseCode) { inputErrMessage = "responseCode " + responseCode + " is invalid. "; entity.setResponseCode(ResponseCode.ABORT.getCode()); return Response.status(Response.Status.BAD_REQUEST).entity(entity).build(); if (ResponseCode.CANCEL_TRANSACTION.getCode() == responseCode) { return cancelTransaction(transactionId, entity); entity.setResponseCode(ResponseCode.CONFIRM_TRANSACTION.getCode()); entity.setFlowFileSent(flowFileSent); logger.error("Failed to process the request", e); if (ResponseCode.BAD_CHECKSUM.equals(commsSession.getResponseCode())) { entity.setResponseCode(commsSession.getResponseCode().getCode()); entity.setMessage(e.getMessage());
entity.setResponseCode(ResponseCode.PROPERTIES_OK.getCode()); entity.setMessage("Handshake properties are valid, and port is running. A transaction is created:" + transactionId);
entity.setResponseCode(ResponseCode.CONTINUE_TRANSACTION.getCode()); entity.setMessage("Extended TTL."); return noCache(setCommonHeaders(Response.ok(entity), transportProtocolVersion, transactionManager)).build();