+++ /dev/null
-package jalview.ws2;
-
-import java.io.IOException;
-import java.util.EventObject;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import jalview.bin.Cache;
-
-public class WebServiceExecutor
-{
- 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);
- });
- }
-
- private void pollJobs(WebServiceWorkerI worker)
- {
- boolean done;
- try
- {
- done = worker.pollJobs();
- } catch (Exception e)
- {
- Cache.log.error("Failed to poll web service jobs.", e);
- for (WSJob job : worker.getJobs())
- {
- job.setStatus(WSJobStatus.SERVER_ERROR);
- }
- wsThreadSupport.pollFailed(worker, e);
- return;
- }
- if (!done)
- {
- executor.schedule(() -> pollJobs(worker), 1, TimeUnit.SECONDS);
- }
- else
- {
- worker.done();
- wsThreadSupport.done(worker);
- }
- }
-
- private WebServiceThreadSupport wsThreadSupport = new WebServiceThreadSupport();
-
- public void addThreadListener(WebServiceThreadListenerI listener)
- {
- wsThreadSupport.addListener(listener);
- }
-
- public void removeThreadListener(WebServiceThreadListenerI listener)
- {
- wsThreadSupport.removeListener(listener);
- }
-
- public void shutdown()
- {
- executor.shutdownNow();
- }
-
-}
-
-class WebServiceThreadSupport implements WebServiceThreadListenerI
-{
- List<WebServiceThreadListenerI> listeners = new CopyOnWriteArrayList<>();
-
- @Override
- public void submitted(WebServiceWorkerI thread)
- {
- for (var listener : listeners)
- listener.submitted(thread);
- }
-
- @Override
- public void submissionFailed(WebServiceWorkerI thread, Exception 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);
- }
-
- @Override
- public void cancelled(WebServiceWorkerI thread)
- {
- for (var listener : listeners)
- listener.cancelled(thread);
- }
-
- @Override
- public void done(WebServiceWorkerI thread)
- {
- for (var listener : listeners)
- listener.done(thread);
- }
-
- public void addListener(WebServiceThreadListenerI listener)
- {
- if (!listeners.contains(listener))
- {
- listeners.add(listener);
- }
- }
-
- public void removeListener(WebServiceThreadListenerI listener)
- {
- listeners.remove(listener);
- }
-}