http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivity.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivity.java 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivity.java
deleted file mode 100644
index 41e8c4f..0000000
--- 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivity.java
+++ /dev/null
@@ -1,545 +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.Map;
-
-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.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.ActivityInputPort;
-import 
net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
-
-import org.apache.log4j.Logger;
-import org.biomoby.client.CentralImpl;
-import org.biomoby.registry.meta.Registry;
-import org.biomoby.shared.Central;
-import org.biomoby.shared.MobyDataType;
-import org.biomoby.shared.MobyException;
-import org.biomoby.shared.MobyNamespace;
-import org.biomoby.shared.MobyRelationship;
-import org.biomoby.shared.NoSuccessException;
-import org.biomoby.shared.data.MobyDataBoolean;
-import org.biomoby.shared.data.MobyDataComposite;
-import org.biomoby.shared.data.MobyDataDateTime;
-import org.biomoby.shared.data.MobyDataFloat;
-import org.biomoby.shared.data.MobyDataInstance;
-import org.biomoby.shared.data.MobyDataInt;
-import org.biomoby.shared.data.MobyDataString;
-import org.jdom.Element;
-
-/**
- * An Activity providing Biomoby Object functionality.
- *
- * Copied from org.biomoby.client.taverna.plugin.BiomobyObjectProcessor and
- * org.biomoby.client.taverna.plugin.BiomobyObjectTask and converted to a 
Taverna 2
- * Activity.
- *
- * @author Edward Kawas
- * @author David Withers
- */
-public class BiomobyObjectActivity extends 
AbstractAsynchronousActivity<BiomobyObjectActivityConfigurationBean> {
-
-       public static final String URI = 
"http://ns.taverna.org.uk/2010/activity/biomoby/object";;
-
-       private static Logger logger = 
Logger.getLogger(BiomobyObjectActivity.class);
-
-    private BiomobyObjectActivityConfigurationBean configurationBean = new 
BiomobyObjectActivityConfigurationBean();
-
-    private Central worker = null;
-
-    private MobyDataType mobyObject = null;
-
-    @Override
-       public void configure(BiomobyObjectActivityConfigurationBean 
configurationBean) throws ActivityConfigurationException {
-               this.configurationBean = configurationBean;
-               init();
-               generatePorts();
-       }
-
-       @Override
-       public void executeAsynch(final Map<String, T2Reference> data,
-                       final AsynchronousActivityCallback callback) {
-               callback.requestRun(new Runnable() {
-
-                       public void run() {
-                               ReferenceService referenceService = 
callback.getContext().getReferenceService();
-
-                               Map<String, T2Reference> outputMap = new 
HashMap<String, T2Reference>();
-
-                               // initialize the namespace and id fields
-                               String namespace = "";
-                               String id = "";
-                               String article = "";
-                               boolean isPrimitiveType = 
getInputPort("value")!=null;
-                               String objectName = 
configurationBean.getServiceName();
-                               // would like to use the MobyObjectClass to 
generate a skeleton
-
-                               String registryEndpoint = 
worker.getRegistryEndpoint();
-                               Registry mRegistry = new 
Registry(registryEndpoint,registryEndpoint,"http://domain.com/MOBY/Central";);
-
-                BiomobyCache.cacheForRegistry(mRegistry);
-
-                               if (isPrimitiveType) {
-                                       try {
-
-                                               T2Reference inputId;
-                                               try {
-                                                       inputId = 
data.get("namespace");
-                                                       namespace = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               } catch (Exception e) {
-                                               }
-
-                                               try {
-                                                       inputId = 
data.get("id");
-                                                       id = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               } catch (Exception e) {
-                                               }
-
-                                               try {
-                                                       inputId = 
data.get("article name");
-                                                       article = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               } catch (Exception e) {
-                                               }
-
-                                               inputId = data.get("value");
-                                               String value = null;
-                                               try {
-                                                       value = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               }
-                                               catch(NullPointerException e) {
-                                                       //means the value 
hasn't been set and is handled below
-                                               }
-
-                                               if 
(objectName.equals("String")) {
-                                                       if (value == null) {
-                                                               value = "";
-                                                       }
-                                                       MobyDataString d = new 
MobyDataString(value,mRegistry);
-                                                       d.setId(id);
-                                                       MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                       if (mNamespace != null)
-                                                               
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                       
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                       
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                       
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                               } else if 
(objectName.equals("Float")) {
-                                                       if (value == null || 
value.trim().equals("")) {
-                                                               
MobyDataComposite d = new MobyDataComposite(
-                                                                               
MobyDataType.getDataType("Float", mRegistry));
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       } else {
-                                                               MobyDataFloat d 
= new MobyDataFloat(value,mRegistry);
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       }
-                                               } else if 
(objectName.equals("Integer")) {
-
-                                                       try {
-                                                               int val = 0;
-                                                               val = 
Integer.parseInt(value);
-                                                               MobyDataInt d = 
new MobyDataInt(val,mRegistry);
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       } catch (Exception e) {
-                                                               
MobyDataComposite d = new MobyDataComposite(
-                                                                               
MobyDataType.getDataType("Integer", mRegistry));
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       }
-                                               }else if 
(objectName.equals("Boolean")) {
-                                                       if (value == null || 
value.trim().equals("")) {
-                                                               
MobyDataComposite d = new MobyDataComposite(MobyDataType.getDataType("Boolean", 
mRegistry));
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       } else {
-                                                               MobyDataBoolean 
d = new MobyDataBoolean(value,mRegistry);
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       }
-                                               } else if 
(objectName.equals("DateTime")) {
-                                                       if (value == null || 
value.trim().equals("")) {
-                                                               
MobyDataComposite d = new 
MobyDataComposite(MobyDataType.getDataType("DateTime", mRegistry));
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       } else {
-                                                               
MobyDataDateTime d = new MobyDataDateTime("", value,mRegistry);
-                                                               d.setId(id);
-                                                               MobyNamespace 
mNamespace = MobyNamespace.getNamespace(namespace,mRegistry);
-                                                               if (mNamespace 
!= null)
-                                                                       
d.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                                               
d.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-                                                               
outputMap.put("mobyData", 
referenceService.register(XMLUtilities.createMobyDataElementWrapper(
-                                                                               
"<Simple articleName=\""+article+"\">" + d.toXML() +"</Simple>" ), 0, true, 
callback.getContext()));
-                                                       }
-                                               }
-                                               
callback.receiveResult(outputMap, new int[0]);
-                                       } catch (Exception ex) {
-                                               // details of other exceptions 
will appear only in a log
-                                               logger.error("Error creating 
biomoby object for biomoby", ex);
-                                               callback.fail("Service failed 
due to problem creating biomoby object (see details in log)", ex);
-                                       }
-                               } else {
-                                       // Situation where simples are feeding 
into this non primitive type
-                                       try {
-                                               T2Reference inputId;
-                                               try {
-                                                       inputId = 
data.get("namespace");
-                                                       namespace = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               } catch (Exception e) {
-                                               }
-
-                                               try {
-                                                       inputId = 
data.get("id");
-                                                       id = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               } catch (Exception e) {
-                                               }
-
-                                               try {
-                                                       inputId = 
data.get("article name");
-                                                       article = (String) 
referenceService.renderIdentifier(inputId, String.class, callback.getContext());
-                                               } catch (Exception e) {
-                                               }
-
-                                               //Element mobyObjectElement = 
mo.createObject(objectName,namespace, id, article);
-
-                                               MobyDataComposite composite = 
new MobyDataComposite(MobyDataType.getDataType(objectName, mRegistry));
-                                               composite.setId(id);
-                                               MobyNamespace mNamespace = 
MobyNamespace.getNamespace(namespace,mRegistry);
-                                               if (mNamespace != null)
-                                                       
composite.setPrimaryNamespace(MobyNamespace.getNamespace(namespace,mRegistry));
-                                               
composite.setXmlMode(MobyDataInstance.SERVICE_XML_MODE);
-
-                                               // Element mobyObjectElement = 
XMLUtilities.getDOMDocument(XMLUtilities.createMobyDataElementWrapper( "<Simple 
articleName=\""+article+"\">" + composite.toXML() +"</Simple>" 
)).detachRootElement();
-                                               Element mobyObjectElement = 
XMLUtilities.getDOMDocument(( composite.toXML() )).detachRootElement();
-
-                                               // using the inputs, iterate 
through and fill in data
-                                               for (ActivityInputPort 
inputPort : getInputPorts()) {
-                                                       String portName = 
inputPort.getName();
-                                                       if 
(!(portName.equalsIgnoreCase("namespace")
-                                                                       || 
portName.equalsIgnoreCase("id") || portName
-                                                                       
.equalsIgnoreCase("article name"))) {
-                                                               String type = 
portName.substring(0, portName
-                                                                               
.indexOf("("));
-                                                               String 
articleName = portName.substring(
-                                                                               
type.length() + 1, portName.length() - 1);
-                                                               inputId = null;
-                                                               try {
-                                                                       inputId 
= data.get(portName);
-                                                               } catch 
(Exception e) {
-
-                                                               }
-                                                               if (inputId != 
null) {
-                                                                       String 
value = (String) referenceService.renderIdentifier(inputId, 
inputPort.getTranslatedElementClass(), callback.getContext());
-                                                                       Element 
valueElement = (XMLUtilities.getDOMDocument(value)).getRootElement();
-                                                                       if 
(valueElement.getChild("mobyContent",XMLUtilities.MOBY_NS) != null) {
-                                                                               
valueElement = valueElement.getChild("mobyContent",XMLUtilities.MOBY_NS);
-                                                                       } else {
-                                                                               
valueElement = valueElement.getChild("mobyContent");
-                                                                       }
-                                                                       if 
(valueElement.getChild("mobyData",XMLUtilities.MOBY_NS) != null ) {
-                                                                               
valueElement = valueElement.getChild("mobyData",XMLUtilities.MOBY_NS);
-                                                                       } else {
-                                                                               
valueElement = valueElement.getChild("mobyData");
-                                                                       }
-                                                                       if 
(valueElement.getChild("Simple",XMLUtilities.MOBY_NS) != null ) {
-                                                                               
valueElement = valueElement.getChild("Simple",XMLUtilities.MOBY_NS);
-                                                                       } else {
-                                                                               
valueElement = valueElement.getChild("Simple");
-                                                                       }
-                                                                       if 
(valueElement.getChild(type,XMLUtilities.MOBY_NS) != null ) {
-                                                                               
valueElement = valueElement.getChild(type,XMLUtilities.MOBY_NS);
-                                                                       } else {
-                                                                               
valueElement = valueElement.getChild(type);
-                                                                       }
-                                                                       // 
Element _child = mo.getObject(mobyObjectElement,type, articleName);
-
-                                                                       
valueElement.removeAttribute("articleName");
-                                                                       
valueElement.removeAttribute("articleName", XMLUtilities.MOBY_NS);
-                                                                       
valueElement.setAttribute("articleName", articleName, XMLUtilities.MOBY_NS);
-//                                                                     Element 
_newChild = mo.createObject(type, _ns, _id,
-//                                                                     
articleName);
-//                                                                     
_newChild.setText(valueElement
-//                                                                     
.getText());
-//                                                                     
_newChild.addContent(_child.cloneContent());
-                                                                       // 
import and replace the node
-                                                                       // 
mobyObjectElement.removeContent(_child);
-                                                                       
mobyObjectElement.addContent(valueElement.detach());
-                                                               }
-                                                       }
-                                               }
-                                               Element simple = new 
Element("Simple", XMLUtilities.MOBY_NS);
-                                               
simple.setAttribute("articleName", article, XMLUtilities.MOBY_NS);
-                                               
simple.addContent(mobyObjectElement);
-
-                                               org.jdom.output.XMLOutputter 
outputter = new 
org.jdom.output.XMLOutputter(org.jdom.output.Format.getPrettyFormat());
-                                               String mobyDataString = 
outputter.outputString(XMLUtilities.createMobyDataElementWrapper(simple));
-                                               outputMap.put("mobyData", 
referenceService.register(mobyDataString, 0, true, callback.getContext()));
-
-                                               
callback.receiveResult(outputMap, new int[0]);
-                                       } catch (Exception ex) {
-                                               // details of other exceptions 
will appear only in a log
-                                               logger.error("Error creating 
biomoby object for biomoby", ex);
-                                               callback.fail("Service failed 
due to problem creating biomoby object (see details in log)", ex);
-                                       }
-                               }
-                       }
-               });
-
-       }
-
-       @Override
-       public BiomobyObjectActivityConfigurationBean getConfiguration() {
-               return configurationBean;
-       }
-
-    private void init() throws ActivityConfigurationException {
-        // Find the service endpoint (by calling Moby registry)
-        try {
-            if (mobyObject == null) {
-                worker = new CentralImpl(configurationBean.getMobyEndpoint());
-                mobyObject = 
worker.getDataType(configurationBean.getServiceName());
-            }
-
-        } catch (Exception e) {
-            if (e instanceof ActivityConfigurationException) {
-                throw (ActivityConfigurationException) e;
-            }
-            throw new 
ActivityConfigurationException(formatError(e.toString()));
-        }
-        // here we make sure that we have downloaded the ontology for the
-               // registry that we got this service from
-        try {
-                       new 
GetOntologyThread(worker.getRegistryEndpoint()).start();
-               } catch (Exception e) {
-                       /* don't care if an exception occurs here ... */
-               }
-    }
-
-    private void generatePorts() {
-       removeInputs();
-       removeOutputs();
-
-       //inputs
-               addInput("namespace", 0, true,
-                               new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                               String.class);
-
-               addInput("id", 0, true,
-                               new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                               String.class);
-
-               addInput("article name", 0, true,
-                               new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                               String.class);
-
-       try {
-               String serviceName = configurationBean.getServiceName();
-               MobyDataType datatype = worker.getDataType(serviceName);
-               MobyRelationship[] relations = datatype.getChildren();
-               processRelationships(relations);
-               String parent = "Object";
-               try {
-                       parent = datatype.getParentNames()[0];
-                       if (parent.indexOf(":") > 0) {
-                               parent = 
parent.substring(parent.lastIndexOf(":") + 1);
-                       }
-               } catch (ArrayIndexOutOfBoundsException e) {
-                       // parent is then by default object
-               }
-               if (parent.equalsIgnoreCase("String")
-                               || parent.equalsIgnoreCase("Integer")
-                               || parent.equalsIgnoreCase("float")
-                               || parent.equalsIgnoreCase("DateTime")
-                               || parent.equalsIgnoreCase("Boolean")
-                               || serviceName.equalsIgnoreCase("String")
-                               || serviceName.equalsIgnoreCase("Boolean")
-                               || serviceName.equalsIgnoreCase("Integer")
-                               || serviceName.equalsIgnoreCase("float")
-                               || serviceName.equalsIgnoreCase("DateTime")) {
-                       addInput("value", 0, true,
-                                       new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                                       String.class);
-               } else {
-                       if (!parent.equalsIgnoreCase("Object"))
-                               extractParentContainerRelationships(parent);
-               }
-       } catch (MobyException e) {
-       } catch (NoSuccessException e) {
-       }
-
-       //outputs
-               addOutput("mobyData", 0, "text/xml");
-    }
-
-    private void extractParentContainerRelationships(String string) {
-        try {
-            MobyDataType datatype = worker.getDataType(string);
-            // need to propagate the isa up to Object to get all of the 
has/hasa
-            MobyRelationship[] relations = datatype.getChildren();
-            processRelationships(relations);
-            String parent = "Object";
-            try {
-                parent = datatype.getParentNames()[0];
-                if (parent.indexOf(":") > 0) {
-                    parent = parent.substring(parent.lastIndexOf(":") + 1);
-                }
-            } catch (ArrayIndexOutOfBoundsException e) {
-                // parent is then by default object
-            }
-               String serviceName = configurationBean.getServiceName();
-            if (parent.equalsIgnoreCase("String")
-                    || parent.equalsIgnoreCase("Integer")
-                    || parent.equalsIgnoreCase("float")
-                    || serviceName.equalsIgnoreCase("String")
-                     || parent.equalsIgnoreCase("Boolean")
-                    || serviceName.equalsIgnoreCase("Boolean")
-                    || serviceName.equalsIgnoreCase("Integer")
-                    || serviceName.equalsIgnoreCase("float")) {
-                       addInput("value", 0, true,
-                                       new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                                       String.class);
-            } else {
-                if (!parent.equalsIgnoreCase("Object"))
-                    extractParentContainerRelationships(parent);
-            }
-        } catch (MobyException e) {
-        } catch (NoSuccessException e) {
-        }
-    }
-
-    private void processRelationships(MobyRelationship[] relations) {
-        for (int x = 0; x < relations.length; x++) {
-            MobyRelationship relationship = relations[x];
-
-            // strip urn:lsid:...
-            String name = relationship.getDataTypeName();
-            if (name.indexOf(":") > 0) {
-                name = name.substring(name.lastIndexOf(":") + 1);
-            }
-            // port name == DataType(articleName)
-            name = name + "(" + relationship.getName() + ")";
-            switch (relationship.getRelationshipType()) {
-            case (Central.iHAS): {
-                // TODO - not really supported
-                       addInput(name, 0, true,
-                                       new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                                       String.class);
-                break;
-            }
-            case (Central.iHASA): {
-                       addInput(name, 0, true,
-                                       new ArrayList<Class<? extends 
ExternalReferenceSPI>>(),
-                                       String.class);
-                break;
-            }
-            default:
-                break;
-            }
-        }
-    }
-
-
-       protected String formatError(String msg) {
-               // Removed references to the authority, some errors
-               // were causing it to be null which in turn threw
-               // a NPE from here, breaking Taverna's error handlers
-               return ("Problems with service '" + 
configurationBean.getServiceName()
-                               + "' provided by authority '"
-                               + configurationBean.getAuthorityName()
-                               + "'\nfrom Moby registry at "
-                               + configurationBean.getMobyEndpoint() + ":\n\n" 
+ msg);
-       }
-
-       protected ActivityInputPort getInputPort(String name) {
-               for (ActivityInputPort port : getInputPorts()) {
-                       if (port.getName().equals(name)) {
-                               return port;
-                       }
-               }
-               return null;
-       }
-
-       protected OutputPort getOutputPort(String name) {
-               for (OutputPort port : getOutputPorts()) {
-                       if (port.getName().equals(name)) {
-                               return port;
-                       }
-               }
-               return null;
-       }
-
-       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);
-       }
-
-       public Central getCentral() {
-        if (worker != null)
-            return worker;
-        else
-            try {
-                return new CentralImpl(getConfiguration().getMobyEndpoint());
-            } catch (MobyException e) {
-                return null;
-            }
-    }
-
-       public MobyDataType getMobyObject() {
-        return mobyObject;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityConfigurationBean.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityConfigurationBean.java
 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityConfigurationBean.java
deleted file mode 100644
index ab26b32..0000000
--- 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityConfigurationBean.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 Biomoby Object activity.
- * 
- * @author David Withers
- */
-@ConfigurationBean(uri = BiomobyObjectActivity.URI + "#Config")
-public class BiomobyObjectActivityConfigurationBean {
-
-       private String mobyEndpoint="";
-
-       private String serviceName="";
-
-       private String authorityName="";
-
-       /**
-        * Returns the mobyEndpoint.
-        *
-        * @return the mobyEndpoint
-        */
-       public String getMobyEndpoint() {
-               return mobyEndpoint;
-       }
-
-       /**
-        * Sets the mobyEndpoint.
-        *
-        * @param mobyEndpoint the new mobyEndpoint
-        */
-       @ConfigurationProperty(name = "mobyEndpoint", label = "Moby Endpoint", 
description = "")
-       public void setMobyEndpoint(String mobyEndpoint) {
-               this.mobyEndpoint = mobyEndpoint;
-       }
-
-       /**
-        * Returns the serviceName.
-        *
-        * @return the serviceName
-        */
-       public String getServiceName() {
-               return serviceName;
-       }
-
-       /**
-        * Sets the serviceName.
-        *
-        * @param serviceName the new serviceName
-        */
-       @ConfigurationProperty(name = "serviceName", label = "Service Name", 
description = "")
-       public void setServiceName(String serviceName) {
-               this.serviceName = serviceName;
-       }
-
-       /**
-        * Returns the authorityName.
-        *
-        * @return the authorityName
-        */
-       public String getAuthorityName() {
-               return authorityName;
-       }
-
-       /**
-        * Sets the authorityName.
-        *
-        * @param authorityName the new authorityName
-        */
-       @ConfigurationProperty(name = "authorityName", label = "Authority 
Name", description = "")
-       public void setAuthorityName(String authorityName) {
-               this.authorityName = authorityName;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityFactory.java
 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityFactory.java
deleted file mode 100644
index 955b808..0000000
--- 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityFactory.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>BiomobyObjectActivity</code>.
- * 
- * @author David Withers
- */
-public class BiomobyObjectActivityFactory implements ActivityFactory {
-
-       @Override
-       public BiomobyObjectActivity createActivity() {
-               return new BiomobyObjectActivity();
-       }
-
-       @Override
-       public URI getActivityURI() {
-               return URI.create(BiomobyObjectActivity.URI);
-       }
-
-       @Override
-       public Object createActivityConfiguration() {
-               return new BiomobyObjectActivityConfigurationBean();
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java
 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyObjectActivityHealthChecker.java
deleted file mode 100644
index 7db539a..0000000
--- 
a/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/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java
 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncCgiService.java
deleted file mode 100644
index 552dd34..0000000
--- 
a/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/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java
 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteAsyncMobyService.java
deleted file mode 100644
index 10c76bc..0000000
--- 
a/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/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteCgiService.java
deleted file mode 100644
index a221a8a..0000000
--- a/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/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/ExecuteMobyService.java
deleted file mode 100644
index f494d47..0000000
--- a/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/709e8c1c/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java 
b/src/main/java/net/sf/taverna/t2/activities/biomoby/GetOntologyThread.java
deleted file mode 100644
index e2402e8..0000000
--- a/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);          
-       }
-}

Reply via email to