@Override public AdaptedDocumentType marshal(DocumentType original) throws Exception { return new AdaptedDocumentType(original); } }
public static Status from(int statusCode) { for (Status status : Status.values()) { if (Objects.equal(statusCode, status.getStatusCode())) { return status; } } return UNKNOWN; }
private ConverterServerInformation logConverterServerInformation(ConverterServerInformation converterServerInformation) { LOGGER.info("Currently operational @ conversion server: {}", converterServerInformation.isOperational()); LOGGER.info("Request timeout @ conversion server: {}", converterServerInformation.getTimeout()); LOGGER.info("Protocol version @ conversion server: {}", converterServerInformation.getProtocolVersion()); if (converterServerInformation.getProtocolVersion() != ConverterNetworkProtocol.CURRENT_PROTOCOL_VERSION) { LOGGER.warn("Server protocol version ({}) does not match client protocol version ({})", converterServerInformation.getProtocolVersion(), ConverterNetworkProtocol.CURRENT_PROTOCOL_VERSION); } return converterServerInformation; }
@GET @Produces(MediaType.APPLICATION_XML) public Response serverInformation() { return Response .status(ConverterNetworkProtocol.Status.OK.getStatusCode()) .entity(new ConverterServerInformation( webConverterConfiguration.getConverter().isOperational(), webConverterConfiguration.getTimeout(), ConverterNetworkProtocol.CURRENT_PROTOCOL_VERSION, webConverterConfiguration.getConverter().getSupportedConversions())) .type(MediaType.APPLICATION_XML_TYPE) .build(); }
@Override public void onException(Exception e) { if (asyncResponse.isDone()) { return; } synchronized (answerLock) { if (asyncResponse.isDone()) { return; } LOGGER.info("Sending exceptional response for {}", asyncResponse, e); asyncResponse.resume(Response .status(ConverterNetworkProtocol.Status.describe(e).getStatusCode()) .build()); } }
private void onCancel(ConverterNetworkProtocol.Status status) { if (asyncResponse.isDone()) { return; } synchronized (answerLock) { if (asyncResponse.isDone()) { return; } LOGGER.info("Sending cancellation response for {}", asyncResponse); asyncResponse.resume(Response .status(status.getStatusCode()) .build()); } } }
@Override public DocumentType unmarshal(AdaptedDocumentType adapted) throws Exception { return new DocumentType(adapted.getType(), adapted.getSubtype()); }
public Element[] marshal(Map<DocumentType, Set<DocumentType>> original) throws Exception { Element[] elements = new Element[original.size()]; int index = 0; for (Map.Entry<DocumentType, Set<DocumentType>> entry : original.entrySet()) { elements[index++] = new Element(entry.getKey(), entry.getValue()); } return elements; }
@Override public Map<DocumentType, Set<DocumentType>> getSupportedConversions() { return fetchConverterServerInformation().getSupportedConversions(); }
@Override public boolean isOperational() { try { return !executorService.isShutdown() && fetchConverterServerInformation().isOperational(); } catch (Exception e) { LOGGER.warn("Could not connect to conversion server @ {}", baseUri, e); return false; } }
@Override public void onComplete(InputStream inputStream) { if (asyncResponse.isDone()) { return; } synchronized (answerLock) { if (asyncResponse.isDone()) { return; } LOGGER.info("Sending successful response for {}", asyncResponse); asyncResponse.resume(Response .status(ConverterNetworkProtocol.Status.OK.getStatusCode()) .entity(inputStream) .type(targetType.toString()) .build()); } }