You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/17 21:44:24 UTC

[04/16] incubator-taverna-plugin-bioinformatics git commit: temporarily empty repository

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java
deleted file mode 100644
index 7db539a..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.SocketTimeoutException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.List;
-
-import net.sf.taverna.t2.workflowmodel.Processor;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
-import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
-import net.sf.taverna.t2.visit.VisitReport;
-import net.sf.taverna.t2.visit.VisitReport.Status;
-
-import net.sf.taverna.t2.workflowmodel.health.RemoteHealthChecker;
-import net.sf.taverna.t2.workflowmodel.processor.activity.DisabledActivity;
-
-/**
- * A health checker for the Biomoby Object activity.
- * 
- * @author David Withers
- */
-public class BiomobyObjectActivityHealthChecker extends RemoteHealthChecker {
-	
-	public boolean canVisit(Object subject) {
-		if (subject == null) {
-			return false;
-		}
-		if (subject instanceof BiomobyObjectActivity) {
-			return true;
-		}
-		if (subject instanceof DisabledActivity) {
-			return (((DisabledActivity) subject).getActivity() instanceof BiomobyObjectActivity);
-		}
-		return false;
-	}
-
-	public VisitReport visit(Object o, List<Object> ancestors) {
-		Activity activity = (Activity) o;
-		BiomobyObjectActivityConfigurationBean configuration = null;
-		if (activity instanceof BiomobyObjectActivity) {
-			configuration = (BiomobyObjectActivityConfigurationBean) activity.getConfiguration();
-		} else if (activity instanceof DisabledActivity) {
-			configuration = (BiomobyObjectActivityConfigurationBean) ((DisabledActivity) activity).getActivityConfiguration();
-		}
-		return contactEndpoint(activity, configuration.getMobyEndpoint());
-
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java
deleted file mode 100644
index 552dd34..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.commons.httpclient.methods.StringRequestEntity;
-import org.apache.commons.httpclient.params.HttpMethodParams;
-import org.apache.log4j.Logger;
-import org.biomoby.shared.MobyException;
-import org.biomoby.shared.MobyPrefixResolver;
-import org.biomoby.shared.parser.MobyTags;
-import org.biomoby.w3c.addressing.EndpointReference;
-import org.jdom.Element;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-import org.omg.lsae.notifications.AnalysisEvent;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-/**
- * This class contains one method that is used to execute asynchronous HTTP POST
- * services
- * 
- * @author Edward Kawas
- * 
- */
-public class ExecuteAsyncCgiService {
-
-	private static final String GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION = "http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest";
-	private static final String DESTROY_RESOURCE_ACTION = "http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination/DestroyRequest";
-
-	private static final String RESOURCE_PROPERTIES_NS = "http://docs.oasis-open.org/wsrf/rp-2";
-	private static final String RESULT_PREFIX = "result_";
-	private static final String STATUS_PREFIX = "status_";
-	private static Logger logger = Logger
-			.getLogger(ExecuteAsyncCgiService.class);
-
-	/**
-	 * 
-	 * @param url
-	 * @param serviceName
-	 * @param xml
-	 * @return
-	 */
-	public static String executeMobyCgiAsyncService(String url,
-			String serviceName, String xml) throws MobyException {
-
-		// First, let's get the queryIds
-		org.w3c.dom.Document message = null;
-
-		try {
-			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-			dbf.setNamespaceAware(true);
-			dbf.setValidating(false);
-			DocumentBuilder db = dbf.newDocumentBuilder();
-
-			message = db.parse(new InputSource(new StringReader(xml)));
-		} catch (Throwable t) {
-			throw new MobyException("Error while parsing input query", t);
-		}
-
-		NodeList l_data = message.getElementsByTagNameNS(
-				MobyPrefixResolver.MOBY_XML_NAMESPACE, MobyTags.MOBYDATA);
-		if (l_data == null || l_data.getLength() == 0) {
-			l_data = message.getElementsByTagNameNS(
-					MobyPrefixResolver.MOBY_XML_NAMESPACE_INVALID,
-					MobyTags.MOBYDATA);
-		}
-
-		// Freeing resources
-		message = null;
-
-		if (l_data == null || l_data.getLength() == 0) {
-			throw new MobyException("Empty asynchronous MOBY query!");
-		}
-
-		int nnode = l_data.getLength();
-		String[] queryIds = new String[nnode];
-		String[] tmpQueryIds = new String[nnode];
-		String[] results = new String[nnode];
-		for (int inode = 0; inode < nnode; inode++) {
-			String queryId = null;
-
-			org.w3c.dom.Element mdata = (org.w3c.dom.Element) l_data
-					.item(inode);
-
-			queryId = mdata.getAttribute(MobyTags.QUERYID);
-			if (queryId == null || queryId.length() == 0)
-				queryId = mdata
-						.getAttributeNS(MobyPrefixResolver.MOBY_XML_NAMESPACE,
-								MobyTags.QUERYID);
-			if (queryId == null || queryId.length() == 0)
-				queryId = mdata.getAttributeNS(
-						MobyPrefixResolver.MOBY_XML_NAMESPACE_INVALID,
-						MobyTags.QUERYID);
-
-			if (queryId == null || queryId.length() == 0) {
-				throw new MobyException(
-						"Unable to extract queryId for outgoing MOBY message");
-			}
-
-			tmpQueryIds[inode] = queryIds[inode] = queryId;
-			results[inode] = null;
-		}
-
-		// Freeing resources
-		l_data = null;
-
-		// Second, let's launch
-		EndpointReference epr = launchCgiAsyncService(url, xml);
-
-		// Third, waiting for the results
-		try {
-			// FIXME - add appropriate values here
-			long pollingInterval = 1000L;
-			double backoff = 1.0;
-
-			// Max: one minute pollings
-			long maxPollingInterval = 60000L;
-
-			// Min: one second
-			if (pollingInterval <= 0L)
-				pollingInterval = 1000L;
-
-			// Backoff: must be bigger than 1.0
-			if (backoff <= 1.0)
-				backoff = 1.5;
-
-			do {
-				try {
-					Thread.sleep(pollingInterval);
-				} catch (InterruptedException ie) {
-					// DoNothing(R)
-				}
-
-				if (pollingInterval != maxPollingInterval) {
-					pollingInterval = (long) ((double) pollingInterval * backoff);
-					if (pollingInterval > maxPollingInterval) {
-						pollingInterval = maxPollingInterval;
-					}
-				}
-			} while (pollAsyncCgiService(serviceName, url, epr, tmpQueryIds,
-					results));
-		} finally {
-
-			// Call destroy on this service ....
-			freeCgiAsyncResources(url, epr);
-
-		}
-
-		// Fourth, assembling back the results
-
-		// Results array already contains mobyData
-		Element[] mobydatas = new Element[results.length];
-		for (int x = 0; x < results.length; x++) {
-			// TODO remove the extra wrapping from our result
-			try {
-				Element inputElement = XMLUtilities.getDOMDocument(results[x])
-						.getRootElement();
-				if (inputElement.getName().indexOf(
-						"GetMultipleResourcePropertiesResponse") >= 0)
-					if (inputElement.getChildren().size() > 0)
-						inputElement = (Element) inputElement.getChildren()
-								.get(0);
-				if (inputElement.getName().indexOf("result_") >= 0)
-					if (inputElement.getChildren().size() > 0)
-						inputElement = (Element) inputElement.getChildren()
-								.get(0);
-				// replace results[x]
-				mobydatas[x] = inputElement;
-			} catch (MobyException e) {
-				// TODO what should i do?
-			}
-		}
-		Element e = null;
-		try {
-			e = XMLUtilities.createMultipleInvokations(mobydatas);
-		} catch (Exception ex) {
-			logger
-					.error("There was a problem creating our XML message ...",
-							ex);
-		}
-		// Fifth, returning results
-		return e == null ? "" : new XMLOutputter(Format.getPrettyFormat())
-				.outputString(e);
-	}
-
-	private static void freeCgiAsyncResources(String endpoint,
-			EndpointReference epr) throws MobyException {
-		// construct the Httpclient
-		HttpClient client = new HttpClient();
-		client.getParams().setParameter("http.useragent", "jMoby/Taverna2");
-		// create the post method
-		PostMethod method = new PostMethod(endpoint + "/destroy");
-
-		// put our data in the request
-		RequestEntity entity;
-		try {
-			entity = new StringRequestEntity(
-					"<Destroy xmlns=\"http://docs.oasis-open.org/wsrf/rl-2\"/>",
-					"text/xml", null);
-		} catch (UnsupportedEncodingException e) {
-			throw new MobyException("Problem posting data to webservice", e);
-		}
-		method.setRequestEntity(entity);
-
-		// set the header
-		StringBuffer httpheader = new StringBuffer();
-		httpheader.append("<moby-wsrf>");
-		httpheader
-				.append("<wsa:Action xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">"
-						+ DESTROY_RESOURCE_ACTION + "</wsa:Action>");
-		httpheader
-				.append("<wsa:To xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" wsu:Id=\"To\">"
-						+ endpoint + "</wsa:To>");
-		httpheader
-				.append("<mobyws:ServiceInvocationId xmlns:mobyws=\"http://biomoby.org/\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" wsa:IsReferenceParameter=\"true\">"
-						+ epr.getServiceInvocationId()
-						+ "</mobyws:ServiceInvocationId>");
-		httpheader.append("</moby-wsrf>");
-		method.addRequestHeader("moby-wsrf", httpheader.toString().replaceAll(
-				"\r\n", ""));
-		// retry up to 10 times
-		client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
-				new DefaultHttpMethodRetryHandler(10, true));
-
-		// call the method
-		try {
-			int result = client.executeMethod(method);
-			if (result != HttpStatus.SC_OK)
-				throw new MobyException(
-						"Async HTTP POST service returned code: " + result
-								+ "\n" + method.getStatusLine());
-		} catch (IOException e) {
-			throw new MobyException("Problem reading response from webservice",
-					e);
-		} finally {
-			// Release current connection to the connection pool once you are
-			// done
-			method.releaseConnection();
-		}
-	}
-
-	/**
-	 * 
-	 * @param endpoint
-	 *            the url to the service to call
-	 * @param xml
-	 *            the BioMOBY input message
-	 * @return EndpointReference the EPR returned by the service
-	 * @throws MobyException
-	 */
-	private static EndpointReference launchCgiAsyncService(String endpoint,
-			String xml) throws MobyException {
-		// construct the Httpclient
-		HttpClient client = new HttpClient();
-		client.getParams().setParameter("http.useragent", "jMoby/Taverna2");
-		// create the post method
-		PostMethod method = new PostMethod(endpoint);
-
-		// put our data in the request
-		RequestEntity entity;
-		try {
-			entity = new StringRequestEntity(xml, "text/xml", null);
-		} catch (UnsupportedEncodingException e) {
-			throw new MobyException("Problem posting data to webservice", e);
-		}
-		method.setRequestEntity(entity);
-
-		// retry up to 10 times
-		client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
-				new DefaultHttpMethodRetryHandler(10, true));
-
-		// call the method
-		try {
-			int result = client.executeMethod(method);
-			if (result != HttpStatus.SC_OK)
-				throw new MobyException(
-						"Async HTTP POST service returned code: " + result
-								+ "\n" + method.getStatusLine());
-			return EndpointReference.createFromXML(method.getResponseHeader(
-					"moby-wsrf").getValue());
-		} catch (IOException e) {
-			throw new MobyException("Problem reading response from webservice",
-					e);
-		} finally {
-			// Release current connection to the connection pool once you are
-			// done
-			method.releaseConnection();
-		}
-	}
-
-	private static boolean pollAsyncCgiService(String msName, String url,
-			EndpointReference epr, String[] queryIds, String[] result)
-			throws MobyException {
-		// Needed to remap results
-		HashMap<String, Integer> queryMap = new HashMap<String, Integer>();
-		for (int qi = 0; qi < queryIds.length; qi++) {
-			String queryId = queryIds[qi];
-			if (queryId != null)
-				queryMap.put(queryId, new Integer(qi));
-		}
-
-		if (queryMap.size() == 0)
-			return false;
-
-		// construct the GetMultipleResourceProperties XML
-		StringBuffer xml = new StringBuffer();
-		xml.append("<wsrf-rp:GetMultipleResourceProperties xmlns:wsrf-rp='"
-				+ RESOURCE_PROPERTIES_NS
-				+ "' xmlns:mobyws='http://biomoby.org/'>");
-		for (String q : queryMap.keySet())
-			xml.append("<wsrf-rp:ResourceProperty>mobyws:" + STATUS_PREFIX + q
-					+ "</wsrf-rp:ResourceProperty>");
-		xml.append("</wsrf-rp:GetMultipleResourceProperties>");
-
-		StringBuffer httpheader = new StringBuffer();
-		httpheader.append("<moby-wsrf>");
-		httpheader
-				.append("<wsa:Action xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">"
-						+ GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION
-						+ "</wsa:Action>");
-		httpheader
-				.append("<wsa:To xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" wsu:Id=\"To\">"
-						+ url + "</wsa:To>");
-		httpheader
-				.append("<mobyws:ServiceInvocationId xmlns:mobyws=\"http://biomoby.org/\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" wsa:IsReferenceParameter=\"true\">"
-						+ epr.getServiceInvocationId()
-						+ "</mobyws:ServiceInvocationId>");
-		httpheader.append("</moby-wsrf>");
-
-		AnalysisEvent[] l_ae = null;
-		// First, status from queries
-		String response = "";
-		// construct the Httpclient
-		HttpClient client = new HttpClient();
-		client.getParams().setParameter("http.useragent", "jMoby/Taverna2");
-		// create the post method
-		PostMethod method = new PostMethod(url + "/status");
-		// add the moby-wsrf header (with no newlines)
-		method.addRequestHeader("moby-wsrf", httpheader.toString().replaceAll(
-				"\r\n", ""));
-
-		// put our data in the request
-		RequestEntity entity;
-		try {
-			entity = new StringRequestEntity(xml.toString(), "text/xml", null);
-		} catch (UnsupportedEncodingException e) {
-			throw new MobyException("Problem posting data to webservice", e);
-		}
-		method.setRequestEntity(entity);
-
-		// retry up to 10 times
-		client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
-				new DefaultHttpMethodRetryHandler(10, true));
-
-		// call the method
-		try {
-			if (client.executeMethod(method) != HttpStatus.SC_OK)
-				throw new MobyException(
-						"Async HTTP POST service returned code: "
-								+ method.getStatusCode() + "\n"
-								+ method.getStatusLine()
-								+ "\nduring our polling request");
-			response = stream2String(method.getResponseBodyAsStream());
-		} catch (IOException e) {
-			throw new MobyException("Problem reading response from webservice",
-					e);
-		} finally {
-			// Release current connection to the connection pool once you
-			// are
-			// done
-			method.releaseConnection();
-		}
-
-		if (response != null) {
-			l_ae = AnalysisEvent.createFromXML(response);
-		}
-
-		if (l_ae == null || l_ae.length == 0) {
-			new MobyException(
-					"Troubles while checking asynchronous MOBY job status from service "
-							+ msName);
-		}
-
-		ArrayList<String> finishedQueries = new ArrayList<String>();
-		// Second, gather those finished queries
-		for (int iae = 0; iae < l_ae.length; iae++) {
-			AnalysisEvent ae = l_ae[iae];
-			if (ae.isCompleted()) {
-				String queryId = ae.getQueryId();
-				if (!queryMap.containsKey(queryId)) {
-					throw new MobyException(
-							"Invalid result queryId on asynchronous MOBY job status fetched from "
-									+ msName);
-				}
-				finishedQueries.add(queryId);
-			}
-		}
-
-		// Third, let's fetch the results from the finished queries
-		if (finishedQueries.size() > 0) {
-			String[] resQueryIds = finishedQueries.toArray(new String[0]);
-			for (int x = 0; x < resQueryIds.length; x++) {
-				// construct the GetMultipleResourceProperties XML
-				xml = new StringBuffer();
-				xml
-						.append("<wsrf-rp:GetMultipleResourceProperties xmlns:wsrf-rp='"
-								+ RESOURCE_PROPERTIES_NS
-								+ "' xmlns:mobyws='http://biomoby.org/'>");
-				for (String q : resQueryIds)
-					xml.append("<wsrf-rp:ResourceProperty>mobyws:" + RESULT_PREFIX + q
-							+ "</wsrf-rp:ResourceProperty>");
-				xml.append("</wsrf-rp:GetMultipleResourceProperties>");
-
-				httpheader = new StringBuffer();
-				httpheader.append("<moby-wsrf>");
-				httpheader
-						.append("<wsa:Action xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">"
-								+ GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION
-								+ "</wsa:Action>");
-				httpheader
-						.append("<wsa:To xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" wsu:Id=\"To\">"
-								+ url + "</wsa:To>");
-				httpheader
-						.append("<mobyws:ServiceInvocationId xmlns:mobyws=\"http://biomoby.org/\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\" wsa:IsReferenceParameter=\"true\">"
-								+ epr.getServiceInvocationId()
-								+ "</mobyws:ServiceInvocationId>");
-				httpheader.append("</moby-wsrf>");
-				client = new HttpClient();
-				client.getParams().setParameter("http.useragent",
-						"jMoby/Taverna2");
-				// create the post method
-				method = new PostMethod(url + "/results");
-				// add the moby-wsrf header (with no newlines)
-				method.addRequestHeader("moby-wsrf", httpheader.toString()
-						.replaceAll("\r\n", ""));
-
-				// put our data in the request
-				entity = null;
-				try {
-					entity = new StringRequestEntity(xml.toString(),
-							"text/xml", null);
-				} catch (UnsupportedEncodingException e) {
-					throw new MobyException(
-							"Problem posting data to webservice", e);
-				}
-				method.setRequestEntity(entity);
-
-				// retry up to 10 times
-				client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
-						new DefaultHttpMethodRetryHandler(10, true));
-
-				// call the method
-				try {
-					if (client.executeMethod(method) != HttpStatus.SC_OK)
-						throw new MobyException(
-								"Async HTTP POST service returned code: "
-										+ method.getStatusCode() + "\n"
-										+ method.getStatusLine()
-										+ "\nduring our polling request");
-					// place the result in the array
-					result[x] = stream2String(method.getResponseBodyAsStream());
-					// Marking as null
-					queryIds[x] = null;
-				} catch (IOException e) {
-					logger.warn("Problem getting result from webservice\n"
-							+ e.getMessage());
-				} finally {
-					// Release current connection
-					method.releaseConnection();
-				}
-			}
-
-		}
-		return finishedQueries.size() != queryMap.size();
-	}
-
-	private static String stream2String(InputStream is) {
-		BufferedReader br = new BufferedReader(new InputStreamReader(is));
-		StringBuilder sb = new StringBuilder();
-		String line = null;
-		String newline = System.getProperty("line.separator");
-		try {
-			while ((line = br.readLine()) != null) {
-				sb.append(line + newline);
-			}
-		} catch (IOException e) {
-			logger.warn("Exception reading input stream ...", e);
-		} finally {
-			try {
-				br.close();
-			} catch (IOException e) {
-				logger.warn("Exception closing input stream ...", e);
-			}
-		}
-		return sb.toString();
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java
deleted file mode 100644
index 10c76bc..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java
+++ /dev/null
@@ -1,695 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPBody;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPHeader;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.soap.SOAPPart;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Dispatch;
-import javax.xml.ws.Service;
-import javax.xml.ws.soap.SOAPBinding;
-
-import org.apache.log4j.Logger;
-import org.biomoby.shared.MobyException;
-import org.biomoby.shared.MobyPrefixResolver;
-import org.biomoby.shared.MobyService;
-import org.biomoby.shared.parser.MobyTags;
-import org.biomoby.w3c.addressing.EndpointReference;
-import org.omg.lsae.notifications.AnalysisEvent;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-
-/**
- * This class contains one method that is used to execute asynchronous moby
- * services
- * 
- * @author Edward Kawas
- * 
- */
-
-public class ExecuteAsyncMobyService {
-
-	/* async constants */
-	private static final String GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION = "http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest";
-	private static final String DESTROY_RESOURCE_ACTION = "http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination/DestroyRequest";
-
-	private static final String RESOURCE_PROPERTIES_NS = "http://docs.oasis-open.org/wsrf/rp-2";
-	private static final String RESOURCE_LIFETIME_NS = "http://docs.oasis-open.org/wsrf/rl-2";
-
-	@SuppressWarnings("unused")
-	private static final String XMLNS_NS = "http://www.w3.org/2000/xmlns/";
-	private static final String XSD_NS = "http://www.w3.org/2001/XMLSchema";
-	private static final String WSA_NS = "http://www.w3.org/2005/08/addressing";
-	private static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
-	private static final String ANON_URI = WSA_NS + "/anonymous";
-	private static final String RESULT_PREFIX = "result_";
-	private static final String STATUS_PREFIX = "status_";
-	
-	private static Logger logger = Logger.getLogger(ExecuteAsyncMobyService.class);
-	/**
-	 * This method does the same as getMultipleResourceProperties, with the
-	 * difference that it returns an String instead of a SOAPPart object. The
-	 * result is the serialization of the SOAPPart output obtained from
-	 * getMultipleResourceProperties.
-	 * 
-	 * @param msName
-	 *            The MOBY service name
-	 * @param queryIds
-	 *            The array with the queryIds to use. It may contain null
-	 *            strings
-	 * @param epr
-	 *            The EndpointReference object which helds the MOBY asynchronous
-	 *            job information
-	 * @param asResult
-	 *            If this parameter is true, then this call fetches the results
-	 *            associated to the input queryIds. If it is false, then this
-	 *            call only asks for the job status.
-	 * @return When at least one of the strings from queryIds array was not
-	 *         null, an String with the serialized answer from the service.
-	 *         Otherwise, it returns null.
-	 * @throws SOAPException
-	 */
-	private static String getMultipleResourcePropertiesAsString(String msName,
-			String[] queryIds, EndpointReference epr, boolean asResult)
-			throws TransformerConfigurationException, SOAPException,
-			TransformerException {
-		SOAPPart result = getMultipleResourceProperties(msName, queryIds, epr,
-				asResult);
-		if (result == null)
-			return null;
-		Transformer tr = TransformerFactory.newInstance().newTransformer();
-		tr.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-
-		DOMSource dombody = new DOMSource(result);
-
-		StringWriter sw = new StringWriter();
-		tr.transform(dombody, new StreamResult(sw));
-
-		return sw.toString();
-	}
-
-	/**
-	 * This method does the check and fetch work related to asynchronous
-	 * services. When all the results are fetched, it returns false. When some
-	 * recheck must be issued, it returns true.
-	 * 
-	 * @param msName
-	 *            The MOBY service name
-	 * @param epr
-	 *            The EndpointReference, used for the queries
-	 * @param queryIds
-	 *            The array which holds the queryIds to ask for. It can contain
-	 *            null strings.
-	 * @param result
-	 *            The array which will hold the mobyData results. This one must
-	 *            have the same size as queryIds array.
-	 * @return true, if we need more checking iterations. Otherwise, false
-	 * @throws MobyException
-	 */
-	private static boolean checkMobyAsyncJobsStatus(String msName,
-			EndpointReference epr, String[] queryIds,
-			org.w3c.dom.Element[] result) throws MobyException {
-		// Needed to remap results
-		HashMap<String, Integer> queryMap = new HashMap<String, Integer>();
-		for (int qi = 0; qi < queryIds.length; qi++) {
-			String queryId = queryIds[qi];
-			if (queryId != null)
-				queryMap.put(queryId, new Integer(qi));
-		}
-
-		if (queryMap.size() == 0)
-			return false;
-
-		try {
-			AnalysisEvent[] l_ae = null;
-			// First, status from queries
-			String response = getMultipleResourcePropertiesAsString(msName,
-					queryIds, epr, false);
-			if (response != null) {
-				l_ae = AnalysisEvent.createFromXML(response);
-			}
-
-			if (l_ae == null || l_ae.length == 0) {
-				new MobyException(
-						"Troubles while checking asynchronous MOBY job status from service "
-								+ msName);
-			}
-
-			ArrayList<String> finishedQueries = new ArrayList<String>();
-			// Second, gather those finished queries
-			for (int iae = 0; iae < l_ae.length; iae++) {
-				AnalysisEvent ae = l_ae[iae];
-				if (ae.isCompleted()) {
-					String queryId = ae.getQueryId();
-					if (!queryMap.containsKey(queryId)) {
-						throw new MobyException(
-								"Invalid result queryId on asynchronous MOBY job status fetched from "
-										+ msName);
-					}
-					finishedQueries.add(queryId);
-				}
-			}
-
-			// Third, let's fetch the results from the finished queries
-			if (finishedQueries.size() > 0) {
-				String[] resQueryIds = finishedQueries.toArray(new String[0]);
-				SOAPPart soapDOM = getMultipleResourceProperties(msName,
-						resQueryIds, epr, true);
-				NodeList l_mul = soapDOM.getElementsByTagNameNS(
-						RESOURCE_PROPERTIES_NS,
-						"GetMultipleResourcePropertiesResponse");
-				if (l_mul == null || l_mul.getLength() == 0) {
-					throw new MobyException(
-							"Error while fetching asynchronous MOBY results from "
-									+ msName);
-				}
-
-				org.w3c.dom.Element mul = (org.w3c.dom.Element) l_mul.item(0);
-				for (org.w3c.dom.Node child = mul.getFirstChild(); child != null; child = child
-						.getNextSibling()) {
-					if (child.getNodeType() == Node.ELEMENT_NODE
-							&& MobyService.BIOMOBY_SERVICE_URI.equals(child
-									.getNamespaceURI())) {
-						String preQueryId = child.getLocalName();
-						int subpos = preQueryId.indexOf(RESULT_PREFIX);
-						if (subpos != 0) {
-							throw new MobyException(
-									"Invalid result prefix on asynchronous MOBY job results fetched from "
-											+ msName);
-						}
-						String queryId = preQueryId.substring(RESULT_PREFIX
-								.length());
-						if (!queryMap.containsKey(queryId)) {
-							throw new MobyException(
-									"Invalid result queryId on asynchronous MOBY job results fetched from "
-											+ msName);
-						}
-
-						org.w3c.dom.Element elchild = (org.w3c.dom.Element) child;
-						NodeList l_moby = elchild.getElementsByTagNameNS(
-								MobyPrefixResolver.MOBY_XML_NAMESPACE,
-								MobyTags.MOBYDATA);
-						if (l_moby == null || l_moby.getLength() == 0)
-							l_moby = elchild
-									.getElementsByTagNameNS(
-											MobyPrefixResolver.MOBY_XML_NAMESPACE_INVALID,
-											MobyTags.MOBYDATA);
-
-						if (l_moby == null || l_moby.getLength() == 0) {
-							throw new MobyException(
-									"Recovered empty payload from asynchronous MOBY service "
-											+ msName);
-						}
-						Integer queryPos = queryMap.get(queryId);
-						result[queryPos] = (org.w3c.dom.Element) l_moby.item(0);
-						// Marking as null
-						queryIds[queryPos] = null;
-					}
-				}
-			}
-
-			return finishedQueries.size() != queryMap.size();
-		} catch (SOAPException se) {
-			throw new MobyException("Error while querying MOBY job status", se);
-		} catch (TransformerConfigurationException tce) {
-			throw new MobyException(
-					"Error while preparing to parse MOBY job status", tce);
-		} catch (TransformerException te) {
-			throw new MobyException("Error while parsing MOBY job status", te);
-		}
-	}
-
-	/**
-	 * This method calls the input MOBY service using the asynchronous protocol.
-	 * 
-	 * @param endpoint
-	 *            The endpoint of the service.
-	 * @param msName
-	 *            The MOBY service name.
-	 * @param mobyXML
-	 *            The MOBY payload to be sent to the service.
-	 * @return The MOBY payload with the results from the service.
-	 * @throws MobyException
-	 */
-	public static String executeMobyAsyncService(String endpoint, String msName,
-			String mobyXML) throws MobyException {
-		// First, let's get the queryIds
-		org.w3c.dom.Document message = null;
-
-		try {
-			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-			dbf.setNamespaceAware(true);
-			dbf.setValidating(false);
-			DocumentBuilder db = dbf.newDocumentBuilder();
-
-			message = db.parse(new InputSource(new StringReader(mobyXML)));
-		} catch (Throwable t) {
-			throw new MobyException("Error while parsing input query", t);
-		}
-
-		NodeList l_data = message.getElementsByTagNameNS(
-				MobyPrefixResolver.MOBY_XML_NAMESPACE, MobyTags.MOBYDATA);
-		if (l_data == null || l_data.getLength() == 0) {
-			l_data = message.getElementsByTagNameNS(
-					MobyPrefixResolver.MOBY_XML_NAMESPACE_INVALID,
-					MobyTags.MOBYDATA);
-		}
-
-		// Freeing resources
-		message = null;
-
-		if (l_data == null || l_data.getLength() == 0) {
-			throw new MobyException("Empty asynchronous MOBY query!");
-		}
-
-		int nnode = l_data.getLength();
-		String[] queryIds = new String[nnode];
-		String[] tmpQueryIds = new String[nnode];
-		org.w3c.dom.Element[] results = new org.w3c.dom.Element[nnode];
-		for (int inode = 0; inode < nnode; inode++) {
-			String queryId = null;
-
-			org.w3c.dom.Element mdata = (org.w3c.dom.Element) l_data
-					.item(inode);
-
-			queryId = mdata.getAttribute(MobyTags.QUERYID);
-			if (queryId == null || queryId.length() == 0)
-				queryId = mdata
-						.getAttributeNS(MobyPrefixResolver.MOBY_XML_NAMESPACE,
-								MobyTags.QUERYID);
-			if (queryId == null || queryId.length() == 0)
-				queryId = mdata.getAttributeNS(
-						MobyPrefixResolver.MOBY_XML_NAMESPACE_INVALID,
-						MobyTags.QUERYID);
-
-			if (queryId == null || queryId.length() == 0) {
-				throw new MobyException(
-						"Unable to extract queryId for outgoing MOBY message");
-			}
-
-			tmpQueryIds[inode] = queryIds[inode] = queryId;
-			results[inode] = null;
-		}
-
-		// Freeing resources
-		l_data = null;
-
-		// Second, let's launch
-		EndpointReference epr = launchMobyAsyncService(endpoint, msName,
-				mobyXML);
-
-		// Third, waiting for the results
-		try {
-			// FIXME - add appropriate values here
-			long pollingInterval = 1000L; // proc.getRetryDelay();
-			double backoff = 1.0;// proc.getBackoff();
-
-			// Max: one minute pollings
-			long maxPollingInterval = 60000L;
-
-			// Min: one second
-			if (pollingInterval <= 0L)
-				pollingInterval = 1000L;
-
-			// Backoff: must be bigger than 1.0
-			if (backoff <= 1.0)
-				backoff = 1.5;
-
-			do {
-				try {
-					Thread.sleep(pollingInterval);
-				} catch (InterruptedException ie) {
-					// DoNothing(R)
-				}
-
-				if (pollingInterval != maxPollingInterval) {
-					pollingInterval = (long) ((double) pollingInterval * backoff/*
-																				 * proc.
-																				 * getBackoff
-																				 * (
-																				 * )
-																				 */);
-					if (pollingInterval > maxPollingInterval) {
-						pollingInterval = maxPollingInterval;
-					}
-				}
-			} while (checkMobyAsyncJobsStatus(msName, epr, tmpQueryIds, results));
-		} finally {
-			try {
-				freeAsyncResources(msName, epr);
-			} catch (SOAPException se) {
-				logger.info(
-						"An error was fired while freeing MOBY asynchronous resources from "
-								+ msName, se);
-			}
-		}
-
-		// Fourth, assembling back the results
-		org.w3c.dom.Document resdoc = null;
-		try {
-			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-			dbf.setNamespaceAware(true);
-			dbf.setValidating(false);
-			DocumentBuilder db = dbf.newDocumentBuilder();
-			resdoc = db.newDocument();
-
-			org.w3c.dom.Element mobyroot = resdoc.createElementNS(
-					MobyPrefixResolver.MOBY_XML_NAMESPACE, MobyTags.MOBY);
-			resdoc.appendChild(mobyroot);
-			org.w3c.dom.Element mobycontent = resdoc
-					.createElementNS(MobyPrefixResolver.MOBY_XML_NAMESPACE,
-							MobyTags.MOBYCONTENT);
-			mobyroot.appendChild(mobycontent);
-
-			// Results array already contains mobyData
-
-			for (org.w3c.dom.Element result : results) {
-				mobycontent.appendChild(resdoc.importNode(result, true));
-			}
-		} catch (Throwable t) {
-			throw new MobyException("Error while assembling output", t);
-		}
-
-		// Fifth, returning results
-		try {
-			Transformer tr = TransformerFactory.newInstance().newTransformer();
-			tr.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-
-			DOMSource dombody = new DOMSource(resdoc);
-
-			StringWriter sw = new StringWriter();
-			tr.transform(dombody, new StreamResult(sw));
-
-			return sw.toString();
-		} catch (Throwable t) {
-			throw new MobyException("Error while assembling output", t);
-		}
-	}
-	
-	/**
-	 * This method free the asynchronous MOBY resources associated to the job
-	 * identifier tied to the EndpointReference object passed as input.
-	 * 
-	 * @param msName
-	 *            The MOBY service name
-	 * @param epr
-	 *            The EndpointReference object which holds the MOBY asynchronous
-	 *            job information
-	 * @throws SOAPException
-	 */
-	private static void freeAsyncResources(String msName, EndpointReference epr)
-			throws SOAPException {
-		Service service = Service.create(new QName(
-				MobyService.BIOMOBY_SERVICE_URI, msName + "Service"));
-		QName mQName = new QName(MobyService.BIOMOBY_SERVICE_URI,
-				"WSRF_Operations_Port");
-		service.addPort(mQName, SOAPBinding.SOAP11HTTP_BINDING, epr
-				.getAddress());
-
-		Dispatch<SOAPMessage> dispatch = service.createDispatch(mQName,
-				SOAPMessage.class, Service.Mode.MESSAGE);
-		Map<String, Object> rc = dispatch.getRequestContext();
-		rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true));
-		rc.put(BindingProvider.SOAPACTION_URI_PROPERTY,
-				GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION);
-
-		MessageFactory mf = MessageFactory.newInstance();
-		SOAPMessage request = mf.createMessage();
-		SOAPPart part = request.getSOAPPart();
-
-		String mobyPrefix = "mobyws";
-		String wsaPrefix = "wsa";
-		String wsuPrefix = "wsu";
-		// Obtain the SOAPEnvelope and header and body elements.
-		SOAPEnvelope env = part.getEnvelope();
-		SOAPHeader header = env.getHeader();
-		SOAPBody body = env.getBody();
-
-		header.addNamespaceDeclaration(mobyPrefix,
-				MobyService.BIOMOBY_SERVICE_URI);
-		header.addNamespaceDeclaration(wsaPrefix, WSA_NS);
-		header.addNamespaceDeclaration(wsuPrefix, WSU_NS);
-		// This is for the action
-		SOAPElement actionRoot = header.addChildElement("Action", wsaPrefix,
-				WSA_NS);
-		actionRoot.addAttribute(env.createName("Id", wsuPrefix, WSU_NS),
-				"Action");
-		actionRoot.addTextNode(DESTROY_RESOURCE_ACTION);
-
-		// This is for the To
-		SOAPElement toRoot = header.addChildElement("To", wsaPrefix, WSA_NS);
-		toRoot.addAttribute(env.createName("Id", wsuPrefix, WSU_NS), "To");
-		toRoot.addTextNode(epr.getAddress());
-
-		// And this is for the mobyws
-		SOAPElement mobywsRoot = header.addChildElement("ServiceInvocationId",
-				mobyPrefix, MobyService.BIOMOBY_SERVICE_URI);
-		mobywsRoot.addNamespaceDeclaration(wsaPrefix, WSA_NS);
-		mobywsRoot.addAttribute(env.createName("isReferenceParameter",
-				wsaPrefix, WSA_NS), "true");
-		mobywsRoot.addTextNode(epr.getServiceInvocationId());
-
-		// At last, the replyto
-		SOAPElement replyRoot = header.addChildElement("ReplyTo", wsaPrefix,
-				WSA_NS);
-		replyRoot.addAttribute(env.createName("Id", wsuPrefix, WSU_NS),
-				"ReplyTo");
-		SOAPElement addr = replyRoot.addChildElement("Address", wsaPrefix,
-				WSA_NS);
-		addr.addTextNode(ANON_URI);
-
-		// Let's disable the headers
-		// ((WSBindingProvider)dispatch).setOutboundHeaders(headers);
-
-		// Now the SOAP body
-		body.addChildElement("Destroy", "rl", RESOURCE_LIFETIME_NS);
-
-		request.saveChanges();
-		// We don't mind what it is returned
-		dispatch.invoke(request);
-	}
-	
-	/**
-	 * This method is used to launch an asynchronous MOBY job.
-	 * 
-	 * @param endpoint
-	 *            The endpoint of the service.
-	 * @param msName
-	 *            The MOBY service name.
-	 * @param mobyXML
-	 *            The MOBY payload to be sent to the service.
-	 * @return The EndpointReference object which helds the details of the MOBY
-	 *         asynchronous job.
-	 * @throws MobyException
-	 */
-	private static EndpointReference launchMobyAsyncService(String endpoint,
-			String msName, String mobyXML) throws MobyException {
-		try {
-			Service service = Service.create(new QName(
-					MobyService.BIOMOBY_SERVICE_URI, msName + "Service"));
-			QName mQName = new QName(MobyService.BIOMOBY_SERVICE_URI, msName
-					+ "Port");
-
-			service.addPort(mQName, SOAPBinding.SOAP11HTTP_BINDING, endpoint);
-			Dispatch<SOAPMessage> dispatch = service.createDispatch(mQName,
-					SOAPMessage.class, Service.Mode.MESSAGE);
-			Map<String, Object> rc = dispatch.getRequestContext();
-			rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true));
-			rc.put(BindingProvider.SOAPACTION_URI_PROPERTY,
-					MobyService.BIOMOBY_SERVICE_URI + "#" + msName + "_submit");
-
-			MessageFactory mf = MessageFactory.newInstance();
-			SOAPMessage request = mf.createMessage();
-			SOAPPart part = request.getSOAPPart();
-
-			String mobyPrefix = "mobyws";
-			String xsiPrefix = "xsi";
-
-			// Obtain the SOAPEnvelope and header and body elements.
-			SOAPEnvelope env = part.getEnvelope();
-			SOAPBody body = env.getBody();
-
-			// Now the SOAP body
-			body.addNamespaceDeclaration(mobyPrefix,
-					MobyService.BIOMOBY_SERVICE_URI);
-			SOAPElement rootMessage = body.addChildElement(msName + "_submit",
-					mobyPrefix, MobyService.BIOMOBY_SERVICE_URI);
-			SOAPElement data = rootMessage.addChildElement("data", mobyPrefix,
-					MobyService.BIOMOBY_SERVICE_URI);
-			data.addNamespaceDeclaration(xsiPrefix,
-					MobyPrefixResolver.XSI_NAMESPACE2001);
-			data.addNamespaceDeclaration("xsd", XSD_NS);
-			data.addAttribute(env.createName("type", xsiPrefix,
-					MobyPrefixResolver.XSI_NAMESPACE2001), "xsd:string");
-			data.addTextNode(mobyXML);
-
-			request.saveChanges();
-			SOAPMessage outputMessage = dispatch.invoke(request);
-			DOMSource output = new DOMSource(outputMessage.getSOAPPart()
-					.getEnvelope());
-
-			StringWriter sw = new StringWriter();
-			Transformer tr = TransformerFactory.newInstance().newTransformer();
-			tr.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-			tr.transform(output, new StreamResult(sw));
-
-			String response = sw.toString();
-			return EndpointReference.createFromXML(response);
-		} catch (SOAPException pce) {
-			throw new MobyException(
-					"Unable to create SOAP document builder for MOBY asynchronous call submission",
-					pce);
-		} catch (TransformerConfigurationException tce) {
-			throw new MobyException(
-					"Unable to create transformer factory for MOBY asynchronous call response",
-					tce);
-		} catch (TransformerException te) {
-			throw new MobyException(
-					"Unable to create transformer for MOBY asynchronous call response",
-					te);
-		}
-	}
-
-	
-
-	/**
-	 * This method issues WSRF getMultipleResourceProperties calls. As this call
-	 * is used in BioMOBY for polling and for result fetching, it has an
-	 * additional parameter which handles the call mode.
-	 * 
-	 * @param msName
-	 *            The MOBY service name
-	 * @param queryIds
-	 *            The array with the queryIds to use. It may contain null
-	 *            strings
-	 * @param epr
-	 *            The EndpointReference object which helds the MOBY asynchronous
-	 *            job information
-	 * @param asResult
-	 *            If this parameter is true, then this call fetches the results
-	 *            associated to the input queryIds. If it is false, then this
-	 *            call only asks for the job status.
-	 * @return When at least one of the strings from queryIds array was not
-	 *         null, a SOAPPart object is returned with the answer for the
-	 *         request issued to the MOBY service. Otherwise, it returns null.
-	 * @throws SOAPException
-	 */
-	private static SOAPPart getMultipleResourceProperties(String msName,
-			String[] queryIds, EndpointReference epr, boolean asResult)
-			throws SOAPException {
-		String op = asResult ? RESULT_PREFIX : STATUS_PREFIX;
-
-		Service service = Service.create(new QName(
-				MobyService.BIOMOBY_SERVICE_URI, msName + "Service"));
-		QName mQName = new QName(MobyService.BIOMOBY_SERVICE_URI,
-				"WSRF_Operations_Port");
-		service.addPort(mQName, SOAPBinding.SOAP11HTTP_BINDING, epr
-				.getAddress());
-
-		Dispatch<SOAPMessage> dispatch = service.createDispatch(mQName,
-				SOAPMessage.class, Service.Mode.MESSAGE);
-		Map<String, Object> rc = dispatch.getRequestContext();
-		rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true));
-		rc.put(BindingProvider.SOAPACTION_URI_PROPERTY,
-				GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION);
-
-		MessageFactory mf = MessageFactory.newInstance();
-		SOAPMessage request = mf.createMessage();
-		SOAPPart part = request.getSOAPPart();
-
-		String mobyPrefix = "mobyws";
-		String wsaPrefix = "wsa";
-		String wsuPrefix = "wsu";
-		// Obtain the SOAPEnvelope and header and body elements.
-		SOAPEnvelope env = part.getEnvelope();
-		SOAPHeader header = env.getHeader();
-		SOAPBody body = env.getBody();
-
-		header.addNamespaceDeclaration(mobyPrefix,
-				MobyService.BIOMOBY_SERVICE_URI);
-		header.addNamespaceDeclaration(wsaPrefix, WSA_NS);
-		header.addNamespaceDeclaration(wsuPrefix, WSU_NS);
-		// This is for the action
-		SOAPElement actionRoot = header.addChildElement("Action", wsaPrefix,
-				WSA_NS);
-		actionRoot.addAttribute(env.createName("Id", wsuPrefix, WSU_NS),
-				"Action");
-		actionRoot.addTextNode(GET_MULTIPLE_RESOURCE_PROPERTIES_ACTION);
-
-		// This is for the To
-		SOAPElement toRoot = header.addChildElement("To", wsaPrefix, WSA_NS);
-		toRoot.addAttribute(env.createName("Id", wsuPrefix, WSU_NS), "To");
-		toRoot.addTextNode(epr.getAddress());
-
-		// And this is for the mobyws
-		SOAPElement mobywsRoot = header.addChildElement("ServiceInvocationId",
-				mobyPrefix, MobyService.BIOMOBY_SERVICE_URI);
-		mobywsRoot.addNamespaceDeclaration(wsaPrefix, WSA_NS);
-		mobywsRoot.addAttribute(env.createName("isReferenceParameter",
-				wsaPrefix, WSA_NS), "true");
-		mobywsRoot.addTextNode(epr.getServiceInvocationId());
-
-		// At last, the replyto
-		SOAPElement replyRoot = header.addChildElement("ReplyTo", wsaPrefix,
-				WSA_NS);
-		replyRoot.addAttribute(env.createName("Id", wsuPrefix, WSU_NS),
-				"ReplyTo");
-		SOAPElement addr = replyRoot.addChildElement("Address", wsaPrefix,
-				WSA_NS);
-		addr.addTextNode(ANON_URI);
-
-		// Let's disable the headers
-		// ((WSBindingProvider)dispatch).setOutboundHeaders(headers);
-
-		// Now the SOAP body
-		SOAPElement smrp = body.addChildElement(
-				"GetMultipleResourceProperties", "rp", RESOURCE_PROPERTIES_NS);
-		boolean doSubmit = false;
-		for (String queryId : queryIds) {
-			if (queryId != null) {
-				doSubmit = true;
-				SOAPElement sii = smrp.addChildElement("ResourceProperty",
-						"rp", RESOURCE_PROPERTIES_NS);
-				sii.addNamespaceDeclaration(mobyPrefix,
-						MobyService.BIOMOBY_SERVICE_URI);
-				sii.addTextNode(mobyPrefix + ":" + op + queryId);
-			}
-		}
-
-		if (doSubmit) {
-			request.saveChanges();
-			SOAPMessage output = dispatch.invoke(request);
-
-			return output.getSOAPPart();
-		} else {
-			return null;
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java
deleted file mode 100644
index a221a8a..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-import java.io.OutputStreamWriter;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLEncoder;
-
-import org.biomoby.shared.MobyException;
-
-/**
- * This class contains one method that is used to execute synchronous HTTP POST
- * services
- * 
- * @author Edward Kawas
- * 
- */
-
-public class ExecuteCgiService {
-
-	/**
-	 * 
-	 * @param serviceEndpoint
-	 *            the URL to the HTTP POST service
-	 * @param xml
-	 *            the XML to send the service
-	 * @return a string representing the output from the service
-	 * @throws MobyException
-	 *             if anything goes wrong (problems reading/writing to the
-	 *             service)
-	 */
-	public static String executeCgiService(String serviceEndpoint, String xml)
-			throws MobyException {
-		try {
-			// Construct data
-			String data = "data=" + URLEncoder.encode(xml, "UTF-8");
-
-			// Send data
-			URL url = new URL(serviceEndpoint);
-			URLConnection conn = url.openConnection();
-			conn.setDoOutput(true);
-			OutputStreamWriter wr = new OutputStreamWriter(conn
-					.getOutputStream());
-			wr.write(data);
-			wr.flush();
-			// Get the response
-			BufferedReader rd = new BufferedReader(new InputStreamReader(conn
-					.getInputStream()));
-			String line;
-			StringBuffer sb = new StringBuffer();
-			while ((line = rd.readLine()) != null) {
-				sb.append(line);
-			}
-			wr.close();
-			rd.close();
-			return sb.toString();
-		} catch (Exception e) {
-			throw new MobyException(e.getMessage());
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java
deleted file mode 100644
index f494d47..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import org.biomoby.client.CentralImpl;
-import org.biomoby.shared.MobyException;
-
-/**
- * This class contains one method that is used to execute synchronous moby
- * services
- * 
- * @author Edward Kawas
- * 
- */
-
-public class ExecuteMobyService {
-
-	/**
-	 * 
-	 * @param endpoint
-	 *            the SOAP endpoint of the service to call
-	 * @param service
-	 *            the name of the service
-	 * @param xml
-	 *            the XML to send the service
-	 * @return a string of XML representing the output from the service given
-	 *         our input
-	 * @throws MobyException
-	 *             if anything goes wrong (SOAP error)
-	 */
-	public static String executeMobyService(String endpoint, String service,
-			String xml) throws MobyException {
-		return new CentralImpl(endpoint, "http://biomoby.org/").call(service,
-				xml);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java
deleted file mode 100644
index e2402e8..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-/*
- * This file is a component of the Taverna project,
- * and is licensed under the GNU LGPL.
- * Copyright Edward Kawas, The BioMoby Project
- */
-
-package net.sf.taverna.t2.activities.biomoby;
-
-
-import org.biomoby.client.CentralImpl;
-
-/**
- * This class is used to speed up the running of workflows. Basically, whenever
- * a new Biomoby activity is added to taverna, a call out to RESOURCES/Objects
- * is made to download the datatype ontology.
- *
- * Uses BiomobyCache to process the registry
- * 
- * This should speed up the execution of workflows, since the ontologies will
- * have already been downloaded.
- * 
- * @author Eddie Kawas
- * @author Stuart Owen
- *
- * @see BiomobyCache
- * 
- */
-public class GetOntologyThread extends Thread {
-
-	
-	// the registry endpoint
-	String worker = null;
-
-	/**
-	 * 
-	 * @param url
-	 *            the registry endpoint URL
-	 */
-	public GetOntologyThread(String url) {
-		super("BioMOBY GetOntologyThread");
-		if (url == null || url.trim().equals(""))
-			url = CentralImpl.getDefaultURL();
-		this.worker = url;
-		setDaemon(true);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Thread#run()
-	 */
-	public void run() {
-		BiomobyCache.cacheForRegistryEndpoint(worker);		
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivity.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivity.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivity.java
deleted file mode 100644
index c33a5bf..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivity.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Scanner;
-
-import net.sf.taverna.t2.annotation.annotationbeans.MimeType;
-import net.sf.taverna.t2.reference.ExternalReferenceSPI;
-import net.sf.taverna.t2.reference.ReferenceService;
-import net.sf.taverna.t2.reference.ReferenceServiceException;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.workflowmodel.EditException;
-import net.sf.taverna.t2.workflowmodel.OutputPort;
-import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
-
-import org.apache.log4j.Logger;
-import org.biomoby.client.CentralImpl;
-import org.biomoby.shared.Central;
-import org.biomoby.shared.MobyDataType;
-import org.biomoby.shared.MobyException;
-import org.biomoby.shared.MobyRelationship;
-import org.biomoby.shared.NoSuccessException;
-
-/**
- * An Activity that breaks up a Moby datatype into its component parts minus all
- * the moby wrappings.
- *
- * Copied from org.biomoby.client.taverna.plugin.MobyParseDatatypeActivityProcessor and
- * org.biomoby.client.taverna.plugin.MobyParseDatatypeActivityTask and converted to a Taverna 2
- * Activity.
- *
- * @author Edward Kawas
- * @author David Withers
- */
-public class MobyParseDatatypeActivity extends AbstractAsynchronousActivity<MobyParseDatatypeActivityConfigurationBean> {
-
-	public static final String URI = "http://ns.taverna.org.uk/2010/activity/biomoby/parser";
-
-	private static Logger logger = Logger.getLogger(MobyParseDatatypeActivity.class);
-
-	private MobyParseDatatypeActivityConfigurationBean configurationBean = new MobyParseDatatypeActivityConfigurationBean();
-
-	private Central central = null;
-
-	private MobyDataType datatype = null;
-
-	@Override
-	public void configure(MobyParseDatatypeActivityConfigurationBean configurationBean) throws ActivityConfigurationException {
-		this.configurationBean = configurationBean;
-		init();
-	}
-
-	@Override
-	public void executeAsynch(final Map<String, T2Reference> data,
-			final AsynchronousActivityCallback callback) {
-		callback.requestRun(new Runnable() {
-
-			@SuppressWarnings("unchecked")
-			public void run() {
-				ReferenceService referenceService = callback.getContext().getReferenceService();
-
-				Map<String, T2Reference> output = new HashMap<String, T2Reference>();
-
-				try {
-
-                    //cache ontology and namespace if not done so already. Immediately returns if already cached.
-                    BiomobyCache.cacheForRegistryEndpoint(getConfiguration().getRegistryEndpoint());
-
-					String inputMapKey = getInputPorts().iterator().next().getName();
-					// inputMap wasnt as expected
-					if (!data.containsKey(inputMapKey)) {
-						callback.receiveResult(output, new int[0]);
-						return;
-					}
-
-					T2Reference inputId = data.get(inputMapKey);
-
-					Object input = referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-
-					if (input instanceof String) {
-						//logger.error(inputMapKey + " is a string!\n");
-						String inputXML = (String) input;
-						for (OutputPort outPort : getOutputPorts()) {
-							String outputPortName = outPort.getName();
-							String[] invocations = XMLUtilities.getSingleInvokationsFromMultipleInvokations(inputXML);
-							ArrayList<String> names = new ArrayList<String>();
-							int type = 0;
-							// get the type, names list, etc
-							if (outputPortName.equalsIgnoreCase("namespace")) {
-								// extract the namespace from the top element
-								names.add(configurationBean.getArticleNameUsedByService());
-								type = ParseMobyXML.NAMESPACE;
-							} else if (outputPortName.equalsIgnoreCase("id")) {
-								// extract the id from the top element
-								names.add(configurationBean.getArticleNameUsedByService());
-								type = ParseMobyXML.ID;
-							} else {
-								names = getNames(outputPortName);
-								if (outputPortName.endsWith("_ns")) {
-									type = ParseMobyXML.NAMESPACE;
-									if (names.size() > 1) // added nov15-2007
-										names.remove(names.size()-1);
-								} else if (outputPortName.endsWith("_id")) {
-									type = ParseMobyXML.ID;
-									if (names.size() > 1)//added nov15-2007
-		                                                                names.remove(names.size()-1);
-								} else {
-									type = ParseMobyXML.VALUE;
-								}
-							}
-							ArrayList<String> stuff = new ArrayList<String>();
-							for (int i = 0; i < invocations.length; i++) {
-								String invocation = invocations[i];
-								if (XMLUtilities.isCollection(invocation)) {
-									String[] simples = XMLUtilities.getAllSimplesByArticleName(configurationBean.getArticleNameUsedByService(), invocation);
-									for (int j = 0; j < simples.length; j++) {
-										ArrayList<String> content = ParseMobyXML.getContentForDataType(names, type, XMLUtilities.createMobyDataElementWrapper(simples[j],"a1", null), configurationBean.getRegistryEndpoint());
-										stuff.addAll(content);
-									}
-								} else {
-									ArrayList<String> content = ParseMobyXML.getContentForDataType(names, type, invocations[i],configurationBean.getRegistryEndpoint());
-									stuff.addAll(content);
-								}
-							}
-							output.put(outputPortName, referenceService.register(stuff, 1, true, callback.getContext()));
-						}
-
-					} else if (input instanceof List) {
-						//logger.error(inputMapKey + " is a list!\n");
-						List<String> list = (List) input;
-						// holder contains a list of strings indexed by output port name
-						// TODO put stuff in the map and in the end put it in the output map
-						HashMap<String, ArrayList<String>> holder = new HashMap<String, ArrayList<String>>();
-						for (Iterator<String> it = list.iterator(); it.hasNext();) {
-							String inputXML = (String) it.next();
-							for (OutputPort outPort : getOutputPorts()) {
-								String outputPortName = outPort.getName();
-								String[] invocations = XMLUtilities.getSingleInvokationsFromMultipleInvokations(inputXML);
-								ArrayList<String> names = new ArrayList<String>();
-								int type = 0;
-								// get the type, names list, etc
-								if (outputPortName.equalsIgnoreCase("namespace")) {
-									// extract the namespace from the top element
-									names.add(configurationBean.getArticleNameUsedByService());
-									type = ParseMobyXML.NAMESPACE;
-								} else if (outputPortName.equalsIgnoreCase("id")) {
-									// extract the id from the top element
-									names.add(configurationBean.getArticleNameUsedByService());
-									type = ParseMobyXML.ID;
-								} else {
-									names = getNames(outputPortName);
-									if (outputPortName.endsWith("_ns")) {
-										type = ParseMobyXML.NAMESPACE;
-										if (names.size() > 1)//added nov-15-07
-		                                                                	names.remove(names.size()-1);
-									} else if (outputPortName.endsWith("_id")) {
-										type = ParseMobyXML.ID;
-										if (names.size() > 1)//added nov-15-07
-		                                                                        names.remove(names.size()-1);
-									} else {
-										type = ParseMobyXML.VALUE;
-									}
-								}
-								ArrayList<String> stuff = new ArrayList<String>();
-								for (int i = 0; i < invocations.length; i++) {
-									String invocation = invocations[i];
-									if (XMLUtilities.isCollection(invocation)) {
-										String[] simples = XMLUtilities.getAllSimplesByArticleName(configurationBean.getArticleNameUsedByService(), invocation);
-										for (int j = 0; j < simples.length; j++) {
-											ArrayList<String> content = ParseMobyXML.getContentForDataType(names, type, XMLUtilities.createMobyDataElementWrapper(simples[j],"a1", null),configurationBean.getRegistryEndpoint());
-											stuff.addAll(content);
-										}
-									} else {
-										ArrayList<String> content = ParseMobyXML.getContentForDataType(names, type, invocations[i],configurationBean.getRegistryEndpoint());
-										stuff.addAll(content);
-									}
-								}
-								if (holder.containsKey(outputPortName)) {
-									ArrayList<String> al = holder.get(outputPortName);
-									al.addAll(stuff);
-									holder.put(outputPortName, al);
-								} else {
-									holder.put(outputPortName, stuff);
-								}
-							}
-						}
-						// fill output map
-						for (Iterator<String> it = holder.keySet().iterator(); it.hasNext();) {
-							String key = it.next();
-							output.put(key, referenceService.register(holder.get(key), 1, true, callback.getContext()));
-						}
-					}
-
-					callback.receiveResult(output, new int[0]);
-				} catch (ReferenceServiceException e) {
-					callback.fail("Error accessing input/output data", e);
-				} catch (Exception e) {
-					callback.fail("rror parsing moby data", e);
-				}
-
-			}
-		});
-	}
-
-	@Override
-	public MobyParseDatatypeActivityConfigurationBean getConfiguration() {
-		return configurationBean;
-	}
-
-	@SuppressWarnings("unchecked")
-	private void init() throws ActivityConfigurationException {
-		try {
-			central = new CentralImpl(configurationBean.getRegistryEndpoint());
-		} catch (MobyException e) {
-			throw new ActivityConfigurationException("Couldn't create MobyCentral client for endpoint "
-					+ configurationBean.getRegistryEndpoint() + System.getProperty("line.separator")
-					+ e.getLocalizedMessage());
-		}
-		if (this.datatype == null) {
-			try {
-				this.datatype = central.getDataType(configurationBean.getDatatypeName());
-			} catch (MobyException e) {
-				throw new ActivityConfigurationException(
-						"There was a problem getting information from the MobyCentral registry at "
-								+ configurationBean.getRegistryEndpoint() + System.getProperty("line.separator")
-								+ e.getLocalizedMessage());
-			} catch (NoSuccessException e) {
-				throw new ActivityConfigurationException(
-						"There was no success in getting information from the MobyCentral registry at "
-								+ configurationBean.getRegistryEndpoint() + System.getProperty("line.separator")
-								+ e.getLocalizedMessage());
-			}
-		}
-
-//		setDescription("Service to parse the datatype " + this.datatype.getName());
-
-		ArrayList list = new ArrayList();
-		if (isPrimitive(this.datatype.getName())) {
-			list.add(configurationBean.getArticleNameUsedByService() + "_" + this.datatype.getName());
-		} else if (this.datatype.getName().equals("Object")) {
-			// dont do anything because object has no value
-		} else {
-			processDatatype(this.datatype, central, configurationBean.getArticleNameUsedByService(), list);
-		}
-		// add the input port called mobyData('datatypeName')
-		addInput("mobyData('" + this.datatype.getName() + "')", 0, true,
-				new ArrayList<Class<? extends ExternalReferenceSPI>>(),
-				String.class);
-		// add the namespace/id ports to the processor
-		addOutput("namespace", 1, "text/xml");
-		addOutput("id", 1, "text/xml");
-
-		// list contains the output ports i have to create
-		for (Iterator it = list.iterator(); it.hasNext();) {
-			String portName = (String) it.next();
-			if (portName.equals(configurationBean.getArticleNameUsedByService()+"_id") || portName.equals(configurationBean.getArticleNameUsedByService()+"_ns"))
-				continue;
-			addOutput(portName, 1, "text/xml");
-		}
-	}
-
-	private boolean isPrimitive(String name) {
-		if (name.equals("Integer") || name.equals("String") || name.equals("Float")
-				|| name.equals("DateTime") || name.equals("Boolean")
-		)
-			return true;
-		return false;
-	}
-
-	@SuppressWarnings("unchecked")
-	private void processDatatype(MobyDataType dt, Central central, String currentName, List list) throws ActivityConfigurationException {
-
-		if (dt.getParentName() == null || dt.getParentName().trim().equals("")) {
-			//TODO should we throw an error or just return ...
-			return;
-		}
-
-		if (!dt.getParentName().equals("Object")) {
-			flattenChildType(dt.getParentName(), central, currentName, list);
-		} else {
-			list.add(currentName + "_id");
-			list.add(currentName + "_ns");
-		}
-
-		MobyRelationship[] relations = dt.getChildren();
-		for (int i = 0; i < relations.length; i++) {
-			MobyRelationship relation = relations[i];
-			switch (relation.getRelationshipType()) {
-			case CentralImpl.iHAS: {
-				// check for object or primitives
-				if (isPrimitive(relation.getDataTypeName()) || relation.getDataTypeName().equals("Object")) {
-					// object has no value ... only primitives do
-					if (!relation.getDataTypeName().equals("Object"))
-						list.add(currentName + (currentName.equals("") ? "" : "_'")
-								+ relation.getName() + (currentName.equals("") ? "" : "'"));
-					list.add(currentName + (currentName.equals("") ? "" : "_'")
-							+ relation.getName() + (currentName.equals("") ? "" : "'")+"_id");
-					list.add(currentName + (currentName.equals("") ? "" : "_'")
-							+ relation.getName() + (currentName.equals("") ? "" : "'")+"_ns");
-				}
-				else {
-					flattenChildType(relation.getDataTypeName(), central, currentName
-							+ (currentName.equals("") ? "" : "_'") + relation.getName() + (currentName.equals("") ? "" : "'"), list);
-				}
-			}
-			break;
-			case CentralImpl.iHASA: {
-				// check for object or primitives ...
-				if (isPrimitive(relation.getDataTypeName()) || relation.getDataTypeName().equals("Object")) {
-					// object has no value ... only primitives do
-					if (!relation.getDataTypeName().equals("Object"))
-						list.add(currentName + (currentName.equals("") ? "" : "_'")
-								+ relation.getName()+ (currentName.equals("") ? "" : "'"));
-					list.add(currentName + (currentName.equals("") ? "" : "_'")
-							+ relation.getName() + (currentName.equals("") ? "" : "'")+"_id");
-					list.add(currentName + (currentName.equals("") ? "" : "_'")
-							+ relation.getName() + (currentName.equals("") ? "" : "'")+"_ns");
-				}
-				else {
-
-					flattenChildType(relation.getDataTypeName(), central, currentName
-							+ (currentName.equals("") ? "" : "_'") + relation.getName() + (currentName.equals("") ? "" : "'"), list);
-				}
-			}
-			break;
-			default:
-				break;
-			}
-		}
-
-	}
-
-	@SuppressWarnings("unchecked")
-	private void flattenChildType(String name, Central central, String current, List list) throws ActivityConfigurationException {
-		MobyDataType dt = null;
-		try {
-			dt = central.getDataType(name);
-		} catch (MobyException e) {
-			throw new ActivityConfigurationException(
-					"There was a problem getting information from the MobyCentral registry at "
-					+ configurationBean.getRegistryEndpoint() + System.getProperty("line.separator")
-					+ e.getLocalizedMessage());
-		} catch (NoSuccessException e) {
-			throw new ActivityConfigurationException(
-					"There was no success in getting information from the MobyCentral registry at "
-					+ configurationBean.getRegistryEndpoint() + System.getProperty("line.separator")
-					+ e.getLocalizedMessage());
-		}
-		processDatatype(dt, central, current, list);
-	}
-
-	private ArrayList<String> getNames(String names) {
-		ArrayList<String> list = new ArrayList<String>();
-		ArrayList<String> temp = new ArrayList<String>();
-		if (names == null || names.trim().length() == 0)
-			return list;
-		Scanner s = new Scanner(names).useDelimiter("_'");
-		while (s.hasNext()) {
-			temp.add(s.next());
-		}
-		s.close();
-
-		for (String str : temp) {
-			if (str.indexOf("'_") >= 0) {
-				String[] strings = str.split("'_");
-				for (int i = 0; i < strings.length; i++) {
-					list.add(strings[i].replaceAll("'", ""));
-				}
-			} else {
-				list.add(str.replaceAll("'", ""));
-			}
-		}
-
-		if (list.size() == 1) {
-			if (endsWithPrimitive(list.get(0))) {
-				String name = list.remove(0);
-				int i = name.lastIndexOf("_");
-				name = name.substring(0, i);
-				list.add(name);
-			}
-		} else if (isPrimitive(list.get(list.size()-1))) {
-			// remove the last entry if its a primitive ... legacy reasons
-			list.remove(list.size()-1);
-		}
-		return list;
-	}
-
-	private static boolean endsWithPrimitive(String name) {
-		if (name.endsWith("_Integer") || name.endsWith("_String") || name.endsWith("_Float")
-				|| name.endsWith("_DateTime") || name.endsWith("_Boolean"))
-			return true;
-		return false;
-	}
-
-	protected void addOutput(String portName, int portDepth, String type) {
-		OutputPort port = edits.createActivityOutputPort(
-				portName, portDepth, portDepth);
-		MimeType mimeType = new MimeType();
-		mimeType.setText(type);
-		try {
-			edits.getAddAnnotationChainEdit(port, mimeType).doEdit();
-		} catch (EditException e) {
-			logger.debug("Error adding MimeType annotation to port", e);
-		}
-		outputPorts.add(port);
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityConfigurationBean.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityConfigurationBean.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityConfigurationBean.java
deleted file mode 100644
index 1f02e7e..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityConfigurationBean.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
-import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
-
-/**
- * A configuration bean specific to the Moby Parse Datatype activity.
- * 
- * @author David Withers
- */
-@ConfigurationBean(uri = MobyParseDatatypeActivity.URI + "#Config")
-public class MobyParseDatatypeActivityConfigurationBean {
-
-	private String datatypeName="";
-
-	private String registryEndpoint="";
-	
-	private String articleNameUsedByService="";
-
-	/**
-	 * Returns the datatypeName.
-	 *
-	 * @return the datatypeName
-	 */
-	public String getDatatypeName() {
-		return datatypeName;
-	}
-
-	/**
-	 * Sets the datatypeName.
-	 *
-	 * @param datatypeName the new datatypeName
-	 */
-	@ConfigurationProperty(name = "datatypeName", label = "Datatype Name", description = "")
-	public void setDatatypeName(String datatypeName) {
-		this.datatypeName = datatypeName;
-	}
-
-	/**
-	 * Returns the registryEndpoint.
-	 *
-	 * @return the registryEndpoint
-	 */
-	public String getRegistryEndpoint() {
-		return registryEndpoint;
-	}
-
-	/**
-	 * Sets the registryEndpoint.
-	 *
-	 * @param registryEndpoint the new registryEndpoint
-	 */
-	@ConfigurationProperty(name = "registryEndpoint", label = "Registry Endpoint", description = "")
-	public void setRegistryEndpoint(String registryEndpoint) {
-		this.registryEndpoint = registryEndpoint;
-	}
-
-	/**
-	 * Returns the articleNameUsedByService.
-	 *
-	 * @return the articleNameUsedByService
-	 */
-	public String getArticleNameUsedByService() {
-		return articleNameUsedByService;
-	}
-
-	/**
-	 * Sets the articleNameUsedByService.
-	 *
-	 * @param articleNameUsedByService the new articleNameUsedByService
-	 */
-	@ConfigurationProperty(name = "articleNameUsedByService", label = "Article Name Used By Service", description = "")
-	public void setArticleNameUsedByService(String articleNameUsedByService) {
-		this.articleNameUsedByService = articleNameUsedByService;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityFactory.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityFactory.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityFactory.java
deleted file mode 100644
index 8da531e..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2011 The University of Manchester   
- * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- * 
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *    
- *  This program 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
- *  Lesser General Public License for more details.
- *    
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.net.URI;
-
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
-
-/**
- * An {@link ActivityFactory} for creating <code>MobyParseDatatypeActivity</code>.
- * 
- * @author David Withers
- */
-public class MobyParseDatatypeActivityFactory implements ActivityFactory {
-
-	@Override
-	public MobyParseDatatypeActivity createActivity() {
-		return new MobyParseDatatypeActivity();
-	}
-
-	@Override
-	public URI getActivityURI() {
-		return URI.create(MobyParseDatatypeActivity.URI);
-	}
-
-	@Override
-	public Object createActivityConfiguration() {
-		return new MobyParseDatatypeActivityConfigurationBean();
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityHealthChecker.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityHealthChecker.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityHealthChecker.java
deleted file mode 100644
index 0ca0d38..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/MobyParseDatatypeActivityHealthChecker.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * This file is a component of the Taverna project, and is licensed  under the
- *  GNU LGPL. Copyright Edward Kawas, The BioMoby Project
- ******************************************************************************/
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.SocketTimeoutException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.List;
-
-import net.sf.taverna.t2.workflowmodel.Processor;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
-import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
-import net.sf.taverna.t2.visit.VisitReport;
-import net.sf.taverna.t2.visit.VisitReport.Status;
-
-import net.sf.taverna.t2.workflowmodel.health.RemoteHealthChecker;
-import net.sf.taverna.t2.workflowmodel.processor.activity.DisabledActivity;
-
-
-/**
- * A health checker for the Moby Parse Datatype activity.
- * 
- * @author David Withers
- */
-public class MobyParseDatatypeActivityHealthChecker extends RemoteHealthChecker {
-
-	
-	public boolean canVisit(Object subject) {
-		if (subject == null) {
-			return false;
-		}
-		if (subject instanceof MobyParseDatatypeActivity) {
-			return true;
-		}
-		if (subject instanceof DisabledActivity) {
-			return (((DisabledActivity) subject).getActivity() instanceof MobyParseDatatypeActivity);
-		}
-		return false;
-	}
-
-	public VisitReport visit(Object o, List<Object> ancestors) {
-		Activity activity = (Activity) o;
-		MobyParseDatatypeActivityConfigurationBean configuration = null;
-		if (activity instanceof MobyParseDatatypeActivity) {
-			configuration = (MobyParseDatatypeActivityConfigurationBean) activity.getConfiguration();
-		} else if (activity instanceof DisabledActivity) {
-			configuration = (MobyParseDatatypeActivityConfigurationBean) ((DisabledActivity) activity).getActivityConfiguration();
-		}
-		return contactEndpoint(activity, configuration.getRegistryEndpoint());
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/e13e3b74/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ParseMobyXML.java
----------------------------------------------------------------------
diff --git a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ParseMobyXML.java b/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ParseMobyXML.java
deleted file mode 100644
index 042b6e8..0000000
--- a/taverna-biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/ParseMobyXML.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * This file is a component of the Taverna project,
- * and is licensed under the GNU LGPL.
- * Copyright Edward Kawas, The BioMoby Project
- */
-package net.sf.taverna.t2.activities.biomoby;
-
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.biomoby.shared.MobyNamespace;
-import org.biomoby.shared.data.MobyContentInstance;
-import org.biomoby.shared.data.MobyDataBoolean;
-import org.biomoby.shared.data.MobyDataComposite;
-import org.biomoby.shared.data.MobyDataFloat;
-import org.biomoby.shared.data.MobyDataInstance;
-import org.biomoby.shared.data.MobyDataInt;
-import org.biomoby.shared.data.MobyDataJob;
-import org.biomoby.shared.data.MobyDataObject;
-import org.biomoby.shared.data.MobyDataObjectVector;
-import org.biomoby.shared.data.MobyDataString;
-import org.biomoby.shared.data.MobyDataUtils;
-import org.biomoby.registry.meta.Registry;
-
-/**
- * This class is used to help parse BioMOBY messages.
- * 
- * @author Edward Kawas
- * 
- */
-public class ParseMobyXML {
-
-    private static Logger logger = Logger.getLogger(ParseMobyXML.class);
-
-    public static final int NAMESPACE = -10;
-
-    public static final int ID = -20;
-
-    public static final int VALUE = -30;
-
-    private static final List<Integer> allowables;
-
-    static {
-	allowables = new ArrayList<Integer>();
-	allowables.add(NAMESPACE);
-	allowables.add(ID);
-	allowables.add(VALUE);
-    }
-
-    /**
-     * PRECONDITION: XML is valid MOBY xml and contains exactly 1 invocation
-     * message containing our simple element
-     * 
-     * @param names
-     *                an array of article names in the order that we will
-     *                extract our information
-     * @param type
-     *                one of {NAMESPACE | ID | VALUE} denoting what exactly it
-     *                is that you would like returned
-     * @param xml
-     *                the MOBY xml containing the data to extract
-     * @param endpoint
-     *                the BioMOBY registry endpoint to use
-     * @return a list of strings representing what it is you asked for
-     */
-    public static ArrayList<String> getContentForDataType(
-	    ArrayList<String> names, int type, String xml, String endpoint) {
-	if (!allowables.contains(type) || names == null || names.size() == 0
-		|| xml == null || xml.trim().length() == 0) {
-	    // nothing to return
-	    logger.warn("Parser invoked on an empty message ...");
-	    return new ArrayList<String>();
-	}
-	MobyContentInstance contents;
-	try {
-	    contents = MobyDataUtils.fromXMLDocument(new ByteArrayInputStream(
-		    xml.getBytes("UTF8")), new Registry(endpoint, endpoint,
-		    "http://domain.com/MOBY/Central"));
-	} catch (Exception e) {
-	    logger.error("There was a problem parsing the input XML:\n" + xml
-		    + "\n", e);
-	    return new ArrayList<String>();
-	}
-	if (contents.keySet().size() != 1) {
-	    return new ArrayList<String>();
-	}
-
-	ArrayList<String> clone = new ArrayList<String>();
-	clone.addAll(names);
-	ArrayList<String> output = new ArrayList<String>();
-	// should be exactly 1 job!
-	Iterator<String> jobIDs = contents.keySet().iterator();
-	while (jobIDs.hasNext()) {
-	    MobyDataJob job = (MobyDataJob) contents.get(jobIDs.next());
-	    // get the instance
-	    MobyDataInstance data = job.get(clone.remove(0));
-	    if (data == null)
-		return output;
-	    recurse(clone, data, output, type);
-	}
-	return output;
-    }
-
-    @SuppressWarnings("unchecked")
-    private static void recurse(ArrayList<String> names, MobyDataInstance data,
-	    ArrayList<String> output, int type) {
-	// base case => we have finally found the element of interest
-	if (names.isEmpty()) {
-	    baseCase(data, output, type);
-	    return;
-	}
-	if (data instanceof MobyDataObjectVector) {
-	    // recurse on the children -- the recursion will extract by
-	    // articlename
-	    MobyDataObjectVector vector = (MobyDataObjectVector) data;
-	    // recurse on the has relationship
-	    for (Iterator i = vector.iterator(); i.hasNext();) {
-		recurse((ArrayList) (names.clone()), (MobyDataInstance) i
-			.next(), output, type);
-	    }
-
-	} else if (data instanceof MobyDataComposite) {
-	    // recurse on the child given by name.get(0)
-	    MobyDataInstance d = ((MobyDataComposite) data).remove(names
-		    .remove(0));
-	    recurse((ArrayList) (names.clone()), d, output, type);
-	} else if (data instanceof MobyDataBoolean) {
-	    baseCase(data, output, type);
-	} else if (data instanceof MobyDataFloat) {
-	    baseCase(data, output, type);
-	} else if (data instanceof MobyDataInt) {
-	    baseCase(data, output, type);
-	} else if (data instanceof MobyDataString) {
-	    baseCase(data, output, type);
-	}
-
-    }
-
-    private static void baseCase(MobyDataInstance data,
-	    ArrayList<String> output, int type) {
-	if (data == null)
-	    return;
-	switch (type) {
-	case NAMESPACE: {
-	    if (data instanceof MobyDataObjectVector) {
-		MobyDataObjectVector vector = (MobyDataObjectVector) data;
-		for (Iterator i = vector.iterator(); i.hasNext();) {
-		    MobyNamespace[] namespaces = ((MobyDataObject) i.next())
-			    .getNamespaces();
-		    for (int j = 0; j < namespaces.length; j++) {
-			output.add(namespaces[j].getName());
-		    }
-		}
-	    } else {
-		MobyNamespace[] namespaces = ((MobyDataObject) data)
-			.getNamespaces();
-		for (int j = 0; j < namespaces.length; j++) {
-		    output.add(namespaces[j].getName());
-		}
-	    }
-	}
-	    break;
-	case ID: {
-	    if (data instanceof MobyDataObjectVector) {
-		MobyDataObjectVector vector = (MobyDataObjectVector) data;
-		for (Iterator i = vector.iterator(); i.hasNext();) {
-		    output.add(((MobyDataObject) i.next()).getId());
-		}
-	    } else {
-		output.add(((MobyDataObject) data).getId());
-	    }
-	}
-	    break;
-	case VALUE: {
-	    if (data instanceof MobyDataObjectVector) {
-		MobyDataObjectVector vector = (MobyDataObjectVector) data;
-		for (Iterator i = vector.iterator(); i.hasNext();) {
-		    output.add(((MobyDataObject) i.next()).getValue());
-		}
-	    } else {
-		output.add(((MobyDataObject) data).getValue());
-	    }
-	}
-	    break;
-	default:
-	    break;
-	}
-    }
-}