JAL-3878 Move common poll method to upper class AbstractWorker
authorMateusz Warowny <mmzwarowny@dundee.ac.uk>
Tue, 23 Nov 2021 13:53:00 +0000 (14:53 +0100)
committerMateusz Warowny <mmzwarowny@dundee.ac.uk>
Tue, 23 Nov 2021 13:53:00 +0000 (14:53 +0100)
src/jalview/ws2/operations/AbstractPollableWorker.java
src/jalview/ws2/operations/AbstractWorker.java

index 973199e..b4311b9 100644 (file)
@@ -14,51 +14,6 @@ import jalview.ws2.WSJobStatus;
 public abstract class AbstractPollableWorker
     extends AbstractWorker implements PollableTaskI
 {
-
-  private Map<Long, Integer> exceptionCount = new HashMap<>();
-
-  private static final int MAX_RETRY = 5;
-
-  @Override
-  public boolean poll()
-  {
-    boolean done = true;
-    for (WSJob job : getJobs())
-    {
-      if (!job.getStatus().isDone() && !job.getStatus().isFailed())
-      {
-        Cache.log.debug(format("Polling job %s.", job));
-        try
-        {
-          getOperation().getWebService().updateProgress(job);
-          exceptionCount.remove(job.getUid());
-        } catch (IOException e)
-        {
-          Cache.log.error(format("Polling job %s failed.", job), e);
-          listeners.firePollException(job, e);
-          int count = exceptionCount.getOrDefault(job.getUid(),
-              MAX_RETRY);
-          if (--count <= 0)
-          {
-            job.setStatus(WSJobStatus.SERVER_ERROR);
-            Cache.log.warn(format(
-                "Attempts limit exceeded. Droping job %s.", job));
-          }
-          exceptionCount.put(job.getUid(), count);
-        } catch (OutOfMemoryError e)
-        {
-          job.setStatus(WSJobStatus.BROKEN);
-          Cache.log.error(
-              format("Out of memory when retrieving job %s", job), e);
-        }
-        Cache.log.debug(
-            format("Job %s status is %s", job, job.getStatus()));
-      }
-      done &= job.getStatus().isDone() || job.getStatus().isFailed();
-    }
-    return done;
-  }
-
   @Override
   public boolean isDone()
   {
index 926b7ce..5186849 100644 (file)
@@ -1,7 +1,15 @@
 package jalview.ws2.operations;
 
+import static java.lang.String.format;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import jalview.bin.Cache;
 import jalview.util.MathUtils;
 import jalview.ws2.WSJob;
+import jalview.ws2.WSJobStatus;
 
 public abstract class AbstractWorker implements WebServiceWorkerI
 {
@@ -17,4 +25,48 @@ public abstract class AbstractWorker implements WebServiceWorkerI
   {
     listeners.addListener(listener);
   }
+
+
+  private Map<Long, Integer> exceptionCount = new HashMap<>();
+
+  private static final int MAX_RETRY = 5;
+
+  public boolean poll()
+  {
+    boolean done = true;
+    for (WSJob job : getJobs())
+    {
+      if (!job.getStatus().isDone() && !job.getStatus().isFailed())
+      {
+        Cache.log.debug(format("Polling job %s.", job));
+        try
+        {
+          getOperation().getWebService().updateProgress(job);
+          exceptionCount.remove(job.getUid());
+        } catch (IOException e)
+        {
+          Cache.log.error(format("Polling job %s failed.", job), e);
+          listeners.firePollException(job, e);
+          int count = exceptionCount.getOrDefault(job.getUid(),
+              MAX_RETRY);
+          if (--count <= 0)
+          {
+            job.setStatus(WSJobStatus.SERVER_ERROR);
+            Cache.log.warn(format(
+                "Attempts limit exceeded. Droping job %s.", job));
+          }
+          exceptionCount.put(job.getUid(), count);
+        } catch (OutOfMemoryError e)
+        {
+          job.setStatus(WSJobStatus.BROKEN);
+          Cache.log.error(
+              format("Out of memory when retrieving job %s", job), e);
+        }
+        Cache.log.debug(
+            format("Job %s status is %s", job, job.getStatus()));
+      }
+      done &= job.getStatus().isDone() || job.getStatus().isFailed();
+    }
+    return done;
+  }
 }