X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2Fjws2%2Fjabaws2%2FJws2Instance.java;h=47fb9c6a0240c1ee7ebb070f014b1ea4ad9d7a35;hb=ab58313e7bb31264ddb2715a1c548cdc789d7fa6;hp=aa42ff70338489a018450ed7eafc620e9d7d7684;hpb=8364d3900ad4271d460ae15a245add45c66c2e89;p=jalview.git
diff --git a/src/jalview/ws/jws2/jabaws2/Jws2Instance.java b/src/jalview/ws/jws2/jabaws2/Jws2Instance.java
index aa42ff7..47fb9c6 100644
--- a/src/jalview/ws/jws2/jabaws2/Jws2Instance.java
+++ b/src/jalview/ws/jws2/jabaws2/Jws2Instance.java
@@ -1,32 +1,35 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
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 javax.swing.JMenu;
+import java.net.URL;
import compbio.data.msa.JABAService;
import compbio.data.msa.MsaWS;
@@ -34,37 +37,63 @@ 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
+ * Service endpoint
+ * @param serviceType
+ * Category for this service's analysis
+ * @param action
+ * text describing their action that service performs (eg 'aligning',
+ * 'analysing')
+ * @param description
+ * Description from JABAWS registry
+ * @param service
+ * JABAWS registry ID for service
+ */
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;
+ if (service instanceof MsaWS>)
+ {
+ style = ServiceClient.MSAWSCLIENT;
+ }
+ else if (service instanceof SequenceAnnotation>)
+ {
+ style = ServiceClient.SEQUENCEANNOTATIONWSCLIENT;
+ }
+
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)
+ {
+
+ }
+ }
}
}
@@ -97,32 +126,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
@@ -139,29 +148,29 @@ public class Jws2Instance
{
return ((SequenceAnnotation) service).getRunnerOptions();
}
- throw new Error(
- "Implementation Error: Runner Config not available for a JABAWS service of type "
- + serviceType + " (" + service.getClass() + ")");
+ throw new Error(MessageManager.formatMessage(
+ "error.implementation_error_runner_config_not_available",
+ new String[]
+ { getServiceType(), service.getClass().toString() }));
}
@Override
- protected void finalize() throws Throwable
+ public void close()
{
if (service != null)
{
try
{
- Closeable svc = (Closeable) service;
- service = null;
- svc.close();
- } catch (Exception e)
+ ((Closeable) service).close();
+ } catch (Throwable t)
{
+ // ignore
}
- ;
}
- super.finalize();
+ // super.finalize();
}
+ @Override
public ParamDatastoreI getParamStore()
{
if (paramStore == null)
@@ -169,7 +178,7 @@ public class Jws2Instance
try
{
paramStore = new JabaParamStore(this,
- (Desktop.instance != null ? Desktop.getUserParameterStore()
+ (Desktop.getInstance() != null ? Desktop.getUserParameterStore()
: null));
} catch (Exception ex)
{
@@ -181,16 +190,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)
@@ -207,21 +209,62 @@ public class Jws2Instance
return hasParams;
}
- public void attachWSMenuEntry(JMenu atpoint, AlignFrame alignFrame)
+ /**
+ * initialise a parameter store for this service
+ *
+ * @param userParameterStore
+ * - the user ParamManager (e.g. Desktop.getUserParameterStore() )
+ */
+ @Override
+ public void initParamStore(ParamManager userParameterStore)
{
- if (service instanceof MsaWS>)
- {
- new MsaWSClient().attachWSMenuEntry(atpoint, this, alignFrame);
- }
- else if (service instanceof SequenceAnnotation>)
+ if (paramStore == null)
{
- new SequenceAnnotationWSClient().attachWSMenuEntry(atpoint, this,
- alignFrame);
+ paramStore = new JabaParamStore(this, userParameterStore);
}
}
- public String getServiceTypeURI()
+ /**
+ * an object that implements one or more interfaces in jalview.ws.api
+ *
+ * @return
+ */
+ @Override
+ public Object getEndpoint()
{
- return "java:" + serviceType;
+ 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;
+ }
}
}