JAL-3066 Move common web service methods to abstract SlivkaWSInstance
[jalview.git] / src / jalview / ws / jws2 / SequenceAnnotationWSClient.java
index fda9ab5..bf5dc23 100644 (file)
@@ -83,9 +83,24 @@ public class SequenceAnnotationWSClient extends Jws2Client
       // columns
 
       List<AlignCalcWorkerI> clnts = alignFrame.getViewport()
-              .getCalcManager().getRegisteredWorkersOfClass(clientClass);
-      AbstractJabaCalcWorker worker;
-      if (clnts == null || clnts.size() == 0)
+              .getCalcManager()
+              .getRegisteredWorkersOfClass(SeqAnnotationServiceCalcWorker.class);
+
+      SeqAnnotationServiceCalcWorker worker = null;
+      if (clnts != null)
+      {
+        for (AlignCalcWorkerI _worker : clnts)
+        {
+          worker = (SeqAnnotationServiceCalcWorker) _worker;
+          if (worker.hasService()
+                  && worker.getService().getClass().equals(clientClass))
+          {
+            break;
+          }
+          worker = null;
+        }
+      }
+      if (worker == null)
       {
         if (!processParams(sh, editParams))
         {
@@ -93,12 +108,8 @@ public class SequenceAnnotationWSClient extends Jws2Client
         }
         try
         {
-          worker = (AbstractJabaCalcWorker) (clientClass
-                  .getConstructor(new Class[]
-                  { Jws2Instance.class, AlignFrame.class, WsParamSetI.class,
-                      List.class })
-                  .newInstance(new Object[]
-                  { sh, alignFrame, this.preset, paramset }));
+          worker = new SeqAnnotationServiceCalcWorker(sh, alignFrame, this.preset,
+                  paramset);
         } catch (Exception x)
         {
           x.printStackTrace();
@@ -112,7 +123,6 @@ public class SequenceAnnotationWSClient extends Jws2Client
       }
       else
       {
-        worker = (AbstractJabaCalcWorker) clnts.get(0);
         if (editParams)
         {
           paramset = worker.getArguments();
@@ -139,7 +149,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
       }
 
       alignFrame.getViewport().getCalcManager().startWorker(
-              new AADisorderClient(sh, alignFrame, preset, paramset));
+              new SeqAnnotationServiceCalcWorker(sh, alignFrame, preset, paramset));
     }
   }
 
@@ -162,7 +172,8 @@ public class SequenceAnnotationWSClient extends Jws2Client
           final ServiceWithParameters service,
           final AlignFrame alignFrame)
   {
-    if (registerAAConWSInstance(wsmenu, service, alignFrame))
+    if (Jws2ClientFactory.registerAAConWSInstance(wsmenu, service,
+            alignFrame))
     {
       // Alignment dependent analysis calculation WS gui
       return;