X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2Fjabaws2%2FJws2Instance.java;h=9f2d4aecb41211791a4a6645a50d47b2f0778838;hb=dbf124d82413368d7aba34f8e3d8e7ad25167dea;hp=2f3c2988feaf039185c224d9351e9109673fab5c;hpb=82b053436b1d354d5b09ab419cac65ca032aea94;p=jalview.git diff --git a/src/jalview/ws/jws2/jabaws2/Jws2Instance.java b/src/jalview/ws/jws2/jabaws2/Jws2Instance.java index 2f3c298..9f2d4ae 100644 --- a/src/jalview/ws/jws2/jabaws2/Jws2Instance.java +++ b/src/jalview/ws/jws2/jabaws2/Jws2Instance.java @@ -23,12 +23,16 @@ package jalview.ws.jws2.jabaws2; import jalview.gui.AlignFrame; import jalview.gui.Desktop; import jalview.util.MessageManager; +import jalview.ws.api.JalviewServiceEndpointProviderI; +import jalview.ws.api.ServiceWithParameters; import jalview.ws.jws2.JabaParamStore; import jalview.ws.jws2.MsaWSClient; import jalview.ws.jws2.SequenceAnnotationWSClient; import jalview.ws.params.ParamDatastoreI; +import jalview.ws.params.ParamManager; import java.io.Closeable; +import java.net.URL; import javax.swing.JMenu; @@ -38,20 +42,12 @@ import compbio.data.msa.SequenceAnnotation; import compbio.metadata.PresetManager; import compbio.metadata.RunnerConfig; -public class Jws2Instance +public class Jws2Instance extends ServiceWithParameters + implements JalviewServiceEndpointProviderI, AutoCloseable { - public String hosturl; - - public String serviceType; - - public String action; public JABAService service; - public String description; - - public String docUrl; - /** * * @param hosturl @@ -69,20 +65,31 @@ public class Jws2Instance public Jws2Instance(String hosturl, String serviceType, String action, String description, JABAService service) { - super(); - this.hosturl = hosturl; - this.serviceType = serviceType; + super(action, action, serviceType, description, hosturl); this.service = service; - this.action = action; - this.description = description; int p = description.indexOf("MORE INFORMATION:"); if (p > -1) { - docUrl = description.substring(description.indexOf("http", p)).trim(); + String docUrl = description.substring(description.indexOf("http", p)) + .trim(); if (docUrl.indexOf('\n') > -1) { docUrl = docUrl.substring(0, docUrl.indexOf("\n")).trim(); } + if (docUrl.length() > 0) + { + try + { + URL url = new URL(docUrl); + if (url != null) + { + setDocumentationUrl(docUrl); + } + } catch (Exception x) + { + + } + } } } @@ -115,32 +122,12 @@ public class Jws2Instance } catch (Exception ex) { System.err.println("Exception when retrieving presets for service " - + serviceType + " at " + hosturl); + + getServiceType() + " at " + getHostURL()); } } return presets; } - public String getHost() - { - return hosturl; - /* - * try { URL serviceurl = new URL(hosturl); if (serviceurl.getPort()!=80) { - * return serviceurl.getHost()+":"+serviceurl.getPort(); } return - * serviceurl.getHost(); } catch (Exception e) { - * System.err.println("Failed to parse service URL '" + hosturl + - * "' as a valid URL!"); } return null; - */ - } - - /** - * @return short description of what the service will do - */ - public String getActionText() - { - return action + " with " + serviceType; - } - /** * non-thread safe - blocks whilst accessing service to get complete set of * available options and parameters @@ -160,11 +147,11 @@ public class Jws2Instance throw new Error(MessageManager.formatMessage( "error.implementation_error_runner_config_not_available", new String[] - { serviceType, service.getClass().toString() })); + { getServiceType(), service.getClass().toString() })); } @Override - protected void finalize() throws Throwable + public void close() { if (service != null) { @@ -176,9 +163,10 @@ public class Jws2Instance // ignore } } - super.finalize(); + // super.finalize(); } + @Override public ParamDatastoreI getParamStore() { if (paramStore == null) @@ -198,17 +186,9 @@ public class Jws2Instance return paramStore; } - public String getUri() - { - // this is only valid for Jaba 1.0 - this formula might have to change! - return hosturl - + (hosturl.lastIndexOf("/") == (hosturl.length() - 1) ? "" - : "/") - + serviceType; - } - private boolean hasParams = false, lookedForParams = false; + @Override public boolean hasParameters() { if (!lookedForParams) @@ -238,15 +218,62 @@ public class Jws2Instance } } - public String getServiceTypeURI() + /** + * initialise a parameter store for this service + * + * @param userParameterStore + * - the user ParamManager (e.g. Desktop.getUserParameterStore() ) + */ + @Override + public void initParamStore(ParamManager userParameterStore) { - return "java:" + serviceType; + if (paramStore == null) + { + paramStore = new JabaParamStore(this, userParameterStore); + } } - jalview.ws.uimodel.AlignAnalysisUIText aaui; - - public jalview.ws.uimodel.AlignAnalysisUIText getAlignAnalysisUI() + /** + * an object that implements one or more interfaces in jalview.ws.api + * + * @return + */ + @Override + public Object getEndpoint() { - return aaui; + if (service instanceof MsaWS) + { + if (aaui != null) + { + throw new Error( + "JABAWS MsaWS based instant calculation not implemented."); + + } + else + { + return new JabawsMsaInstance(this); + } + } + else + { + if (service instanceof compbio.data.msa.SequenceAnnotation) + { + if (aaui != null) + { + try + { + // probably a factory would be nicer but.. + return aaui.getClient().getConstructor(getClass()) + .newInstance(this); + } catch (Throwable t) + { + throw new Error("Implementation Error in web service framework", + t); + } + } + return new AADisorderClient(this); + } + return null; + } } }