@Override public IConversionJobWithSourceUnspecified convert(InputStream source, boolean close) { return new FailureAwareConversionWithSourceUnspecified(converter.convert(source, close)); }
@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 run() { for (IConverter converter : converters) { if (!converter.isOperational()) { if (converters.remove(converter)) { try { converter.shutDown(); } catch (RuntimeException e) { LOGGER.warn("Could not shut down {} during deregistration", converter, e); } finally { converterFailureCallback.onFailure(converter); } } } } }
Logger logger = LoggerFactory.getLogger(StandaloneClient.class); sayHello(converter, logger, console); DocumentType[] documentTypes = configureConversion(console, converter.getSupportedConversions()); console.printf("Enter '<source> [-> <target>]' for converting a file. Enter '\\q' for exiting this application.%n"); String argument; break; } else if (argument.equals("\\f")) { documentTypes = configureConversion(console, converter.getSupportedConversions()); } else if (argument.trim().equals("")) { continue; converter.convert(sourceFile).as(documentTypes[0]) .to(targetFile, new LoggingFileConsumer(sourceFile, logger)).as(documentTypes[1]) .schedule(); sayGoodbye(converter, logger); } finally { converter.shutDown();
@Override public void shutDown() { converter.shutDown(); }
@Override public Map<DocumentType, Set<DocumentType>> getSupportedConversions() { return converter.getSupportedConversions(); }
@Override public boolean isOperational() { for (IConverter converter : converters) { if (converter.isOperational()) { return true; } } return false; }
@Override public void kill() { converter.kill(); }
@Override public void onShutdown(Container container) { LOGGER.info("Standalone conversion server is shutting down: shutting local converter down"); converter.shutDown(); LOGGER.info("Standalone conversion server is shutting down: local converter was shut down"); }
@Override public Map<DocumentType, Set<DocumentType>> getSupportedConversions() { Map<DocumentType, Set<DocumentType>> supportedConversions = new HashMap<DocumentType, Set<DocumentType>>(); for (IConverter converter : converters) { for (Map.Entry<DocumentType, Set<DocumentType>> entry : converter.getSupportedConversions().entrySet()) { Set<DocumentType> targetTypes = supportedConversions.get(entry.getKey()); if (targetTypes == null) { targetTypes = new HashSet<DocumentType>(); supportedConversions.put(entry.getKey(), targetTypes); } targetTypes.addAll(entry.getValue()); } } return supportedConversions; }
@Override public boolean isOperational() { return converter.isOperational(); }
@Override public void kill() { if (selfCheck != null) { selfCheck.cancel(true); } try { if (propagateShutDown) { List<RuntimeException> exceptions = new ArrayList<RuntimeException>(); for (IConverter converter : converters) { try { converter.kill(); } catch (RuntimeException e) { exceptions.add(e); } } if (!exceptions.isEmpty()) { throw new ConverterAccessException("Shutting down aggregated converters caused at least one exception", exceptions.get(0)); } } } finally { converters.clear(); } }
@Override public IConversionJobWithSourceUnspecified convert(File source) { return new FailureAwareConversionWithSourceUnspecified(converter.convert(source)); }
@Override public void onFailure(IConverter converter) { if (converters.remove(converter)) { try { converter.shutDown(); } catch (RuntimeException exception) { LOGGER.error("Could not shut down {}", converter, exception); } finally { converterFailureCallback.onFailure(converter); } } }
protected IConverter nextConverter(DocumentType sourceFormat, DocumentType targetFormat) { List<IConverter> supportingConverters = new ArrayList<IConverter>(converters.size()); for (IConverter converter : converters) { Set<DocumentType> documentTypes = converter.getSupportedConversions().get(sourceFormat); if (documentTypes != null && documentTypes.contains(targetFormat)) { supportingConverters.add(converter); } } if (supportingConverters.isEmpty()) { LOGGER.trace("No converter available for conversion of {} to {}", sourceFormat, targetFormat); return new ImpossibleConverter(); } IConverter converter = selectionStrategy.select(supportingConverters); LOGGER.trace("Selected {} for conversion of {} to {}", converter, sourceFormat, targetFormat); return new FailureAwareConverter(converter, this); }
private static void sayHello(IConverter converter, Logger logger, Console console) { console.printf("Welcome to the documents4j client!%n"); boolean operational = converter.isOperational(); if (operational) { logger.info("Converter {} is operational", converter); } else { logger.warn("Converter {} is not operational", converter); } }
@Override public IConversionJobWithSourceUnspecified convert(InputStream source) { return new FailureAwareConversionWithSourceUnspecified(converter.convert(source)); }
@Override public void shutDown() { if (selfCheck != null) { selfCheck.cancel(true); } try { if (propagateShutDown) { List<RuntimeException> exceptions = new ArrayList<RuntimeException>(); for (IConverter converter : converters) { try { converter.shutDown(); } catch (RuntimeException e) { exceptions.add(e); } } if (!exceptions.isEmpty()) { throw new ConverterAccessException("Shutting down aggregated converters caused at least one exception", exceptions.get(0)); } } } finally { converters.clear(); } }
@Override public IConversionJobWithSourceUnspecified convert(IInputStreamSource source) { return new FailureAwareConversionWithSourceUnspecified(converter.convert(source)); }
@Override public IConversionJobWithSourceUnspecified convert(IFileSource source) { return new FailureAwareConversionWithSourceUnspecified(converter.convert(source)); }