X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws2%2FWebServiceExecutor.java;h=9306020491850cf4f35323f2af9185bae0fd4967;hb=05aa2f3418a9425fba206d2f445d9d58ce93aabf;hp=453e6ce145736fddf3afba8c46e9e8e4e028a973;hpb=12513d239162ffe5d3e8ece01545634c09bd5050;p=jalview.git diff --git a/src/jalview/ws2/WebServiceExecutor.java b/src/jalview/ws2/WebServiceExecutor.java index 453e6ce..9306020 100644 --- a/src/jalview/ws2/WebServiceExecutor.java +++ b/src/jalview/ws2/WebServiceExecutor.java @@ -13,44 +13,48 @@ import jalview.bin.Cache; public class WebServiceExecutor { - private ScheduledExecutorService executor = - Executors.newSingleThreadScheduledExecutor(); + private ScheduledExecutorService executor = Executors + .newSingleThreadScheduledExecutor(); public void submit(final WebServiceWorkerI worker) { executor.submit(() -> { - try { - worker.startJobs(); - wsThreadSupport.submitted(worker); - } - catch (Exception e) { - Cache.log.error("Failed to submit web service jobs.", e); - wsThreadSupport.submissionFailed(worker, e); - return; - } - executor.schedule(() -> pollJobs(worker), 1, TimeUnit.SECONDS); + try + { + worker.startJobs(); + wsThreadSupport.submitted(worker); + } catch (Exception e) + { + Cache.log.error("Failed to submit web service jobs.", e); + wsThreadSupport.submissionFailed(worker, e); + return; } - ); + executor.schedule(() -> pollJobs(worker), 1, TimeUnit.SECONDS); + }); executor.schedule(() -> pollJobs(worker), 1, TimeUnit.SECONDS); -} - + } - private void pollJobs(WebServiceWorkerI worker) { - try { + private void pollJobs(WebServiceWorkerI worker) + { + try + { worker.pollJobs(); - } - catch (Exception e) { + } catch (Exception e) + { Cache.log.error("Failed to poll web service jobs.", e); - for (WSJob job : worker.getJobs()) { + for (WSJob job : worker.getJobs()) + { job.setStatus(WSJobStatus.SERVER_ERROR); } wsThreadSupport.pollFailed(worker, e); return; } - if (!worker.isDone()) { + if (!worker.isDone()) + { executor.schedule(() -> pollJobs(worker), 1, TimeUnit.SECONDS); } - else { + else + { worker.done(); wsThreadSupport.done(worker); } @@ -68,7 +72,6 @@ public class WebServiceExecutor wsThreadSupport.removeListener(listener); } - public void shutdown() { executor.shutdownNow(); @@ -76,46 +79,55 @@ public class WebServiceExecutor } - -class WebServiceThreadSupport implements WebServiceThreadListenerI { +class WebServiceThreadSupport implements WebServiceThreadListenerI +{ List listeners = new CopyOnWriteArrayList<>(); @Override public void submitted(WebServiceWorkerI thread) { - for (var listener : listeners) listener.submitted(thread); + for (var listener : listeners) + listener.submitted(thread); } @Override public void submissionFailed(WebServiceWorkerI thread, Exception e) { - for (var listener : listeners) listener.submissionFailed(thread, e); + for (var listener : listeners) + listener.submissionFailed(thread, e); } @Override - public void pollFailed(WebServiceWorkerI thread, Exception e) { - for (var listener : listeners) listener.pollFailed(thread, e); + public void pollFailed(WebServiceWorkerI thread, Exception e) + { + for (var listener : listeners) + listener.pollFailed(thread, e); } @Override public void cancelled(WebServiceWorkerI thread) { - for (var listener : listeners) listener.cancelled(thread); + for (var listener : listeners) + listener.cancelled(thread); } @Override public void done(WebServiceWorkerI thread) { - for (var listener : listeners) listener.done(thread); + for (var listener : listeners) + listener.done(thread); } - public void addListener(WebServiceThreadListenerI listener) { - if (!listeners.contains(listener)) { + public void addListener(WebServiceThreadListenerI listener) + { + if (!listeners.contains(listener)) + { listeners.add(listener); } } - public void removeListener(WebServiceThreadListenerI listener) { + public void removeListener(WebServiceThreadListenerI listener) + { listeners.remove(listener); } }