X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws2%2Fclient%2Fslivka%2FSlivkaWSDiscoverer.java;h=2509a19c4ab79bddfdc843f1df5fe32c65566010;hb=df8e2545932852b0f257a3d67b33996afdfd259b;hp=70e1c94c11f5f5f4fbf144ed8bcbfb37ee2bffc8;hpb=7badfcf8cf7f860f0a652619fd49ac2453a45438;p=jalview.git diff --git a/src/jalview/ws2/client/slivka/SlivkaWSDiscoverer.java b/src/jalview/ws2/client/slivka/SlivkaWSDiscoverer.java index 70e1c94..2509a19 100644 --- a/src/jalview/ws2/client/slivka/SlivkaWSDiscoverer.java +++ b/src/jalview/ws2/client/slivka/SlivkaWSDiscoverer.java @@ -2,10 +2,12 @@ package jalview.ws2.client.slivka; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; import jalview.bin.Cache; import jalview.bin.Console; @@ -36,15 +38,18 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer private static SlivkaWSDiscoverer instance = null; private static ParamManager paramManager = null; + + private final Function clientFactory; - private SlivkaWSDiscoverer() + SlivkaWSDiscoverer(Function clientFactory) { + this.clientFactory = clientFactory; } public static SlivkaWSDiscoverer getInstance() { if (instance == null) - instance = new SlivkaWSDiscoverer(); + instance = new SlivkaWSDiscoverer(SlivkaClient::newInstance); return instance; } @@ -58,8 +63,12 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer { try { - List services = new SlivkaClient(url.toString()).getServices(); + List services = clientFactory.apply(url.toURI()).getServices(); return services.isEmpty() ? STATUS_NO_SERVICES : STATUS_OK; + } catch (URISyntaxException e) + { + Console.error("invalid URL " + url, e); + return STATUS_INVALID; } catch (IOException e) { Console.error("slivka could not retrieve services from " + url, e); @@ -86,7 +95,7 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer SlivkaClient slivkaClient; try { - slivkaClient = new SlivkaClient(url.toURI()); + slivkaClient = clientFactory.apply(url.toURI()); } catch (URISyntaxException e) { throw new MalformedURLException(e.getMessage()); @@ -97,14 +106,14 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer if (serviceClass == SERVICE_CLASS_MSA) { var wsb = WebService. newBuilder(); - initServiceBuilder(slivkaService, wsb); + initServiceBuilder(slivkaClient, slivkaService, wsb); wsb.category("Alignment"); wsb.interactive(false); wsb.actionClass(AlignmentAction.class); var msaService = wsb.build(); boolean canRealign = msaService.getName().contains("lustal"); - var client = new SlivkaAlignmentWSClient(slivkaService); + var client = new SlivkaAlignmentWSClient(slivkaClient, slivkaService); var actionBuilder = AlignmentAction.newBuilder(client); actionBuilder.name("Alignment"); actionBuilder.webService(msaService); @@ -124,12 +133,12 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer else if (serviceClass == SERVICE_CLASS_PROT_SEQ_ANALYSIS) { var wsb = WebService. newBuilder(); - initServiceBuilder(slivkaService, wsb); + initServiceBuilder(slivkaClient, slivkaService, wsb); wsb.category("Protein Disorder"); wsb.interactive(false); wsb.actionClass(AnnotationAction.class); var psaService = wsb.build(); - var client = new SlivkaAnnotationWSClient(slivkaService); + var client = new SlivkaAnnotationWSClient(slivkaClient, slivkaService); var actionBuilder = AnnotationAction.newBuilder(client); actionBuilder.webService(psaService); actionBuilder.name("Analysis"); @@ -139,12 +148,12 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer else if (serviceClass == SERVICE_CLASS_CONSERVATION) { var wsb = WebService. newBuilder(); - initServiceBuilder(slivkaService, wsb); + initServiceBuilder(slivkaClient, slivkaService, wsb); wsb.category("Conservation"); wsb.interactive(true); wsb.actionClass(AnnotationAction.class); var conService = wsb.build(); - var client = new SlivkaAnnotationWSClient(slivkaService); + var client = new SlivkaAnnotationWSClient(slivkaClient, slivkaService); var actionBuilder = AnnotationAction.newBuilder(client); actionBuilder.webService(conService); actionBuilder.name(""); @@ -157,12 +166,12 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer else if (serviceClass == SERVICE_CLASS_RNA_SEC_STR_PRED) { var wsb = WebService. newBuilder(); - initServiceBuilder(slivkaService, wsb); + initServiceBuilder(slivkaClient, slivkaService, wsb); wsb.category("Secondary Structure Prediction"); wsb.interactive(true); wsb.actionClass(AnnotationAction.class); var predService = wsb.build(); - var client = new SlivkaAnnotationWSClient(slivkaService); + var client = new SlivkaAnnotationWSClient(slivkaClient, slivkaService); var actionBuilder = AnnotationAction.newBuilder(client); actionBuilder.webService(predService); actionBuilder.name("Prediction"); @@ -183,11 +192,11 @@ public class SlivkaWSDiscoverer extends AbstractWebServiceDiscoverer return allServices; } - private void initServiceBuilder(SlivkaService service, WebService.Builder wsBuilder) + private void initServiceBuilder(SlivkaClient client, SlivkaService service, WebService.Builder wsBuilder) { try { - wsBuilder.url(service.getClient().getUrl().toURL()); + wsBuilder.url(client.getUrl().toURL()); } catch (MalformedURLException e) { e.printStackTrace();