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);
}
wsThreadSupport.removeListener(listener);
}
-
public void shutdown()
{
executor.shutdownNow();
}
-
-class WebServiceThreadSupport implements WebServiceThreadListenerI {
+class WebServiceThreadSupport implements WebServiceThreadListenerI
+{
List<WebServiceThreadListenerI> 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);
}
}