You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/06/30 13:53:37 UTC

[13/50] [abbrv] incubator-taverna-common-activities git commit: UseCaseInvocation -> ToolInvocation

UseCaseInvocation -> ToolInvocation


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/3c48b20a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/3c48b20a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/3c48b20a

Branch: refs/heads/docker
Commit: 3c48b20aa4e8d6cbfcdee819699a56c63b1927bd
Parents: 5bce4cb
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed May 4 01:05:38 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed May 4 01:05:38 2016 +0100

----------------------------------------------------------------------
 .../externaltool/ExternalToolActivity.java      |   8 +-
 .../externaltool/InvocationCreator.java         |   4 +-
 .../externaltool/invocation/ToolInvocation.java | 321 +++++++++++++++++++
 .../invocation/UseCaseInvocation.java           | 321 -------------------
 .../local/LocalInvocationCreator.java           |   6 +-
 .../local/LocalUseCaseInvocation.java           |   4 +-
 .../externaltool/ssh/SshInvocationCreator.java  |   4 +-
 .../externaltool/ssh/SshUseCaseInvocation.java  |   4 +-
 8 files changed, 336 insertions(+), 336 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ExternalToolActivity.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ExternalToolActivity.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ExternalToolActivity.java
index 167f424..b2fae4e 100644
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ExternalToolActivity.java
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ExternalToolActivity.java
@@ -29,7 +29,7 @@ import org.apache.taverna.activities.externaltool.desc.ScriptInputUser;
 import org.apache.taverna.activities.externaltool.desc.ScriptOutput;
 import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
 import org.apache.taverna.activities.externaltool.invocation.InvocationException;
-import org.apache.taverna.activities.externaltool.invocation.UseCaseInvocation;
+import org.apache.taverna.activities.externaltool.invocation.ToolInvocation;
 import org.apache.taverna.activities.externaltool.manager.InvocationGroup;
 import org.apache.taverna.activities.externaltool.manager.InvocationMechanism;
 import org.apache.taverna.annotation.Annotated;
@@ -215,7 +215,7 @@ public class ExternalToolActivity extends AbstractAsynchronousActivity<ExternalT
 
 			public void run() {
 				ReferenceService referenceService = callback.getContext().getReferenceService();
-				UseCaseInvocation invoke = null;
+				ToolInvocation invoke = null;
 
 				/**
 				 * Note that retrying needs to be either done via Taverna's retry mechanism or as part of the specific invocation
@@ -280,8 +280,8 @@ public class ExternalToolActivity extends AbstractAsynchronousActivity<ExternalT
 		this.invocationCreators = invocationCreators;
 	}
 
-	private UseCaseInvocation getInvocation(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
-		UseCaseInvocation result = null;
+	private ToolInvocation getInvocation(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
+		ToolInvocation result = null;
 		InvocationCreator creator = null;
 		for (InvocationCreator c : invocationCreators) {
 			if (c.canHandle(mechanism.getType())) {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/InvocationCreator.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/InvocationCreator.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/InvocationCreator.java
index 6bf729c..b5394c4 100644
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/InvocationCreator.java
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/InvocationCreator.java
@@ -22,7 +22,7 @@ package org.apache.taverna.activities.externaltool;
 import java.util.Map;
 
 import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
-import org.apache.taverna.activities.externaltool.invocation.UseCaseInvocation;
+import org.apache.taverna.activities.externaltool.invocation.ToolInvocation;
 import org.apache.taverna.activities.externaltool.manager.InvocationMechanism;
 import org.apache.taverna.reference.ReferenceService;
 import org.apache.taverna.reference.T2Reference;
@@ -35,6 +35,6 @@ public interface InvocationCreator {
 	
 	public boolean canHandle(String mechanismType);
 	
-	public UseCaseInvocation convert(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService);
+	public ToolInvocation convert(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/ToolInvocation.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/ToolInvocation.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/ToolInvocation.java
new file mode 100644
index 0000000..485f613
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/ToolInvocation.java
@@ -0,0 +1,321 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.taverna.activities.externaltool.invocation;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.taverna.activities.externaltool.desc.ScriptInput;
+import org.apache.taverna.activities.externaltool.desc.ScriptInputStatic;
+import org.apache.taverna.activities.externaltool.desc.ScriptInputUser;
+import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
+import org.apache.taverna.invocation.InvocationContext;
+import org.apache.taverna.reference.ExternalReferenceSPI;
+import org.apache.taverna.reference.Identified;
+import org.apache.taverna.reference.IdentifiedList;
+import org.apache.taverna.reference.ReferenceService;
+import org.apache.taverna.reference.ReferenceServiceException;
+import org.apache.taverna.reference.ReferenceSet;
+import org.apache.taverna.reference.T2Reference;
+import org.apache.taverna.reference.impl.external.object.InlineByteArrayReferenceBuilder;
+import org.apache.taverna.reference.impl.external.object.InlineStringReferenceBuilder;
+
+/**
+ * An abstraction of various forms to bring job using the software that is
+ * referenced as a use case towards their execution.
+ * 
+ * @author Hajo Nils Krabbenhoeft with some contribution by
+ * @author Steffen Moeller
+ */
+public abstract class ToolInvocation {
+	
+	private String runId;
+	
+	
+	protected static String getActualOsCommand(String osCommand, String pathToOriginal,
+			String targetName, String pathTarget) {
+				String actualOsCommand = osCommand;
+				actualOsCommand = actualOsCommand.replace("%%PATH_TO_ORIGINAL%%", pathToOriginal);
+				actualOsCommand = actualOsCommand.replace("%%TARGET_NAME%%", targetName);
+				actualOsCommand = actualOsCommand.replace("%%PATH_TO_TARGET%%", pathTarget);
+				return actualOsCommand;
+			}
+
+	protected UseCaseDescription usecase;
+	protected final HashMap<String, String> tags = new HashMap<String, String>();
+	protected int nTempFiles = 0;
+	private static int submissionID = 0;
+	protected static InlineByteArrayReferenceBuilder inlineByteArrayReferenceBuilder = new InlineByteArrayReferenceBuilder();
+	protected static InlineStringReferenceBuilder inlineStringReferenceBuilder = new InlineStringReferenceBuilder();
+	private InvocationContext invocationContext;
+	private boolean retrieveData;
+	
+	/*
+	 * get the class of the data we expect for a given input
+	 */
+	@SuppressWarnings("unchecked")
+	public Class getType(String inputName) {
+		if (!usecase.getInputs().containsKey(inputName))
+			return null;
+		ScriptInputUser input = (ScriptInputUser) usecase.getInputs().get(inputName);
+		if (input.isList()) {
+			if (input.isBinary())
+				return List.class;
+			else
+				return List.class;
+		} else {
+			if (input.isBinary())
+				return byte[].class;
+			else
+				return String.class;
+		}
+	}
+
+	/*
+	 * get a list of all the input port names
+	 */
+	public Set<String> getInputs() {
+		return usecase.getInputs().keySet();
+	}
+
+
+	/*
+	 * get a id, incremented with each job. thus, this should be thread-wide
+	 * unique
+	 */
+	public synchronized int getSubmissionID() {
+		return submissionID++;
+	}
+
+	/*
+	 * set the data for the input port with given name
+	 */
+	@SuppressWarnings("unchecked")
+	public void setInput(String inputName, ReferenceService referenceService, T2Reference t2Reference) throws InvocationException {
+		if (t2Reference == null) {
+			throw new InvocationException("No input specified for " + inputName);
+		}
+		ScriptInputUser input = (ScriptInputUser) usecase.getInputs().get(inputName);
+		if (input.isList()) {
+			IdentifiedList<T2Reference> listOfReferences = (IdentifiedList<T2Reference>) referenceService
+					.getListService().getList(t2Reference);
+
+			if (!input.isConcatenate()) {
+				// this is a list input (not concatenated)
+				// so write every element to its own temporary file
+				// and create a filelist file
+
+				// we need to write the list elements to temporary files
+				ScriptInputUser listElementTemp = new ScriptInputUser();
+				listElementTemp.setBinary(input.isBinary());
+				listElementTemp.setTempFile(true);
+
+				String lineEndChar = "\n";
+				if (!input.isFile() && !input.isTempFile()) {
+					lineEndChar = " ";
+				}
+
+				String listFileContent = "";
+				String filenamesFileContent = "";
+				// create a list of all temp file names
+				for (T2Reference cur : listOfReferences) {
+					String tmp = setOneInput(referenceService, cur,
+							listElementTemp);
+					listFileContent += tmp + lineEndChar;
+					int ind = tmp.lastIndexOf('/');
+					if (ind == -1) {
+						ind = tmp.lastIndexOf('\\');
+					}
+					if (ind != -1) {
+						tmp = tmp.substring(ind + 1);
+					}
+					filenamesFileContent += tmp + lineEndChar;
+				}
+
+				// how do we want the listfile to be stored?
+				ScriptInputUser listFile = new ScriptInputUser();
+				listFile.setBinary(false); // since its a list file
+				listFile.setFile(input.isFile());
+				listFile.setTempFile(input.isTempFile());
+				listFile.setTag(input.getTag());
+				T2Reference listFileContentReference = referenceService
+						.register(listFileContent, 0, true, invocationContext);
+
+				tags.put(listFile.getTag(), setOneInput(referenceService,
+						listFileContentReference, listFile));
+
+				listFile.setTag(input.getTag() + "_NAMES");
+				T2Reference filenamesFileContentReference = referenceService
+						.register(filenamesFileContent, 0, true, null);
+				tags.put(listFile.getTag(), setOneInput(referenceService,
+						filenamesFileContentReference, listFile));
+			} else {
+				try {
+					// first, concatenate all data
+					if (input.isBinary()) {
+						ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+						BufferedWriter outputWriter = new BufferedWriter(
+								new OutputStreamWriter(outputStream));
+						for (T2Reference cur : listOfReferences) {
+							InputStreamReader inputReader = new InputStreamReader(
+									getAsStream(referenceService, cur));
+							IOUtils.copyLarge(inputReader, outputWriter);
+							inputReader.close();
+						}
+						outputWriter.close();
+						T2Reference binaryReference = referenceService
+								.register(outputStream.toByteArray(), 0, true,
+										invocationContext);
+						tags.put(input.getTag(), setOneInput(referenceService,
+								binaryReference, input));
+					} else {
+						ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+						BufferedWriter outputWriter = new BufferedWriter(
+								new OutputStreamWriter(outputStream));
+						for (T2Reference cur : listOfReferences) {
+							InputStreamReader inputReader = new InputStreamReader(
+									getAsStream(referenceService, cur));
+							IOUtils.copyLarge(inputReader, outputWriter);
+							outputWriter.write(" ");
+							inputReader.close();
+						}
+						outputWriter.close();
+						T2Reference binaryReference = referenceService
+								.register(outputStream.toByteArray(), 0, true,
+										invocationContext);
+						tags.put(input.getTag(), setOneInput(referenceService,
+								binaryReference, input));
+					}
+				} catch (IOException e) {
+					throw new InvocationException(e);
+				}
+			}
+		} else {
+			tags.put(input.getTag(), setOneInput(referenceService, t2Reference,
+					input));
+		}
+	}
+
+	/*
+	 * submit a grid job and wait for it to finish, then get the result as
+	 * on-demand downloads or directly as data (in case of local execution)
+	 */
+	public HashMap<String, Object> Submit(ReferenceService referenceService) throws InvocationException {
+		submit_generate_job(referenceService);
+		return submit_wait_fetch_results(referenceService);
+	}
+
+	/*
+	 * just submit the job. useful if you want to wait for it to finish later on
+	 * 
+	 * Can the statics be made more static?
+	 */
+	public void submit_generate_job(ReferenceService referenceService) throws InvocationException {
+		for (ScriptInputStatic input : usecase.getStatic_inputs()) {
+			T2Reference ref;
+			if (input.getUrl() != null) {
+				// Does this work OK with binary
+				try {
+					ref = referenceService.register(new URL(input.getUrl()), 0, true, null);
+				} catch (ReferenceServiceException e) {
+					throw new InvocationException(e);
+				} catch (MalformedURLException e) {
+					throw new InvocationException(e);
+				}
+			} else {
+				ref = referenceService.register((String) input.getContent(), 0, true, null);
+			}
+				tags.put(input.getTag(), setOneInput(referenceService, ref, input));
+			
+		}
+		submit_generate_job_inner();
+	}
+
+	protected abstract void submit_generate_job_inner() throws InvocationException;
+
+	/*
+	 * wait for a submitted job to finish and fetch the results
+	 */
+	public abstract HashMap<String, Object> submit_wait_fetch_results(ReferenceService referenceService) throws InvocationException;
+
+	public abstract String setOneInput(ReferenceService referenceService, T2Reference t2Reference, ScriptInput input) throws InvocationException;
+
+	protected InputStream getAsStream(ReferenceService referenceService, T2Reference t2Reference) {
+		Identified identified = referenceService.resolveIdentifier(t2Reference, null, null);
+		if (identified instanceof ReferenceSet) {
+			ExternalReferenceSPI ref = ((ReferenceSet) identified).getExternalReferences().iterator().next();
+			return ref.openStream(invocationContext);
+		}
+		return null;
+	}
+
+	public void setContext(InvocationContext context) {
+		this.invocationContext = context;
+		
+	}
+	
+	public InvocationContext getContext() {
+		return this.invocationContext;
+	}
+
+	public abstract void setStdIn(ReferenceService referenceService,
+			T2Reference t2Reference);
+
+	public abstract void rememberRun(String runId);
+
+	/**
+	 * @return the runId
+	 */
+	protected String getRunId() {
+		return runId;
+	}
+
+	/**
+	 * @param runId the runId to set
+	 */
+	protected void setRunId(String runId) {
+		this.runId = runId;
+	}
+
+	/**
+	 * @return the retrieveData
+	 */
+	protected boolean isRetrieveData() {
+		return retrieveData;
+	}
+
+	/**
+	 * @param retrieveData the retrieveData to set
+	 */
+	protected void setRetrieveData(boolean retrieveData) {
+		this.retrieveData = retrieveData;
+	}
+	
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/UseCaseInvocation.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/UseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/UseCaseInvocation.java
deleted file mode 100644
index 4d97030..0000000
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/invocation/UseCaseInvocation.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.taverna.activities.externaltool.invocation;
-
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.taverna.activities.externaltool.desc.ScriptInput;
-import org.apache.taverna.activities.externaltool.desc.ScriptInputStatic;
-import org.apache.taverna.activities.externaltool.desc.ScriptInputUser;
-import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
-import org.apache.taverna.invocation.InvocationContext;
-import org.apache.taverna.reference.ExternalReferenceSPI;
-import org.apache.taverna.reference.Identified;
-import org.apache.taverna.reference.IdentifiedList;
-import org.apache.taverna.reference.ReferenceService;
-import org.apache.taverna.reference.ReferenceServiceException;
-import org.apache.taverna.reference.ReferenceSet;
-import org.apache.taverna.reference.T2Reference;
-import org.apache.taverna.reference.impl.external.object.InlineByteArrayReferenceBuilder;
-import org.apache.taverna.reference.impl.external.object.InlineStringReferenceBuilder;
-
-/**
- * An abstraction of various forms to bring job using the software that is
- * referenced as a use case towards their execution.
- * 
- * @author Hajo Nils Krabbenhoeft with some contribution by
- * @author Steffen Moeller
- */
-public abstract class UseCaseInvocation {
-	
-	private String runId;
-	
-	
-	protected static String getActualOsCommand(String osCommand, String pathToOriginal,
-			String targetName, String pathTarget) {
-				String actualOsCommand = osCommand;
-				actualOsCommand = actualOsCommand.replace("%%PATH_TO_ORIGINAL%%", pathToOriginal);
-				actualOsCommand = actualOsCommand.replace("%%TARGET_NAME%%", targetName);
-				actualOsCommand = actualOsCommand.replace("%%PATH_TO_TARGET%%", pathTarget);
-				return actualOsCommand;
-			}
-
-	protected UseCaseDescription usecase;
-	protected final HashMap<String, String> tags = new HashMap<String, String>();
-	protected int nTempFiles = 0;
-	private static int submissionID = 0;
-	protected static InlineByteArrayReferenceBuilder inlineByteArrayReferenceBuilder = new InlineByteArrayReferenceBuilder();
-	protected static InlineStringReferenceBuilder inlineStringReferenceBuilder = new InlineStringReferenceBuilder();
-	private InvocationContext invocationContext;
-	private boolean retrieveData;
-	
-	/*
-	 * get the class of the data we expect for a given input
-	 */
-	@SuppressWarnings("unchecked")
-	public Class getType(String inputName) {
-		if (!usecase.getInputs().containsKey(inputName))
-			return null;
-		ScriptInputUser input = (ScriptInputUser) usecase.getInputs().get(inputName);
-		if (input.isList()) {
-			if (input.isBinary())
-				return List.class;
-			else
-				return List.class;
-		} else {
-			if (input.isBinary())
-				return byte[].class;
-			else
-				return String.class;
-		}
-	}
-
-	/*
-	 * get a list of all the input port names
-	 */
-	public Set<String> getInputs() {
-		return usecase.getInputs().keySet();
-	}
-
-
-	/*
-	 * get a id, incremented with each job. thus, this should be thread-wide
-	 * unique
-	 */
-	public synchronized int getSubmissionID() {
-		return submissionID++;
-	}
-
-	/*
-	 * set the data for the input port with given name
-	 */
-	@SuppressWarnings("unchecked")
-	public void setInput(String inputName, ReferenceService referenceService, T2Reference t2Reference) throws InvocationException {
-		if (t2Reference == null) {
-			throw new InvocationException("No input specified for " + inputName);
-		}
-		ScriptInputUser input = (ScriptInputUser) usecase.getInputs().get(inputName);
-		if (input.isList()) {
-			IdentifiedList<T2Reference> listOfReferences = (IdentifiedList<T2Reference>) referenceService
-					.getListService().getList(t2Reference);
-
-			if (!input.isConcatenate()) {
-				// this is a list input (not concatenated)
-				// so write every element to its own temporary file
-				// and create a filelist file
-
-				// we need to write the list elements to temporary files
-				ScriptInputUser listElementTemp = new ScriptInputUser();
-				listElementTemp.setBinary(input.isBinary());
-				listElementTemp.setTempFile(true);
-
-				String lineEndChar = "\n";
-				if (!input.isFile() && !input.isTempFile()) {
-					lineEndChar = " ";
-				}
-
-				String listFileContent = "";
-				String filenamesFileContent = "";
-				// create a list of all temp file names
-				for (T2Reference cur : listOfReferences) {
-					String tmp = setOneInput(referenceService, cur,
-							listElementTemp);
-					listFileContent += tmp + lineEndChar;
-					int ind = tmp.lastIndexOf('/');
-					if (ind == -1) {
-						ind = tmp.lastIndexOf('\\');
-					}
-					if (ind != -1) {
-						tmp = tmp.substring(ind + 1);
-					}
-					filenamesFileContent += tmp + lineEndChar;
-				}
-
-				// how do we want the listfile to be stored?
-				ScriptInputUser listFile = new ScriptInputUser();
-				listFile.setBinary(false); // since its a list file
-				listFile.setFile(input.isFile());
-				listFile.setTempFile(input.isTempFile());
-				listFile.setTag(input.getTag());
-				T2Reference listFileContentReference = referenceService
-						.register(listFileContent, 0, true, invocationContext);
-
-				tags.put(listFile.getTag(), setOneInput(referenceService,
-						listFileContentReference, listFile));
-
-				listFile.setTag(input.getTag() + "_NAMES");
-				T2Reference filenamesFileContentReference = referenceService
-						.register(filenamesFileContent, 0, true, null);
-				tags.put(listFile.getTag(), setOneInput(referenceService,
-						filenamesFileContentReference, listFile));
-			} else {
-				try {
-					// first, concatenate all data
-					if (input.isBinary()) {
-						ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-						BufferedWriter outputWriter = new BufferedWriter(
-								new OutputStreamWriter(outputStream));
-						for (T2Reference cur : listOfReferences) {
-							InputStreamReader inputReader = new InputStreamReader(
-									getAsStream(referenceService, cur));
-							IOUtils.copyLarge(inputReader, outputWriter);
-							inputReader.close();
-						}
-						outputWriter.close();
-						T2Reference binaryReference = referenceService
-								.register(outputStream.toByteArray(), 0, true,
-										invocationContext);
-						tags.put(input.getTag(), setOneInput(referenceService,
-								binaryReference, input));
-					} else {
-						ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-						BufferedWriter outputWriter = new BufferedWriter(
-								new OutputStreamWriter(outputStream));
-						for (T2Reference cur : listOfReferences) {
-							InputStreamReader inputReader = new InputStreamReader(
-									getAsStream(referenceService, cur));
-							IOUtils.copyLarge(inputReader, outputWriter);
-							outputWriter.write(" ");
-							inputReader.close();
-						}
-						outputWriter.close();
-						T2Reference binaryReference = referenceService
-								.register(outputStream.toByteArray(), 0, true,
-										invocationContext);
-						tags.put(input.getTag(), setOneInput(referenceService,
-								binaryReference, input));
-					}
-				} catch (IOException e) {
-					throw new InvocationException(e);
-				}
-			}
-		} else {
-			tags.put(input.getTag(), setOneInput(referenceService, t2Reference,
-					input));
-		}
-	}
-
-	/*
-	 * submit a grid job and wait for it to finish, then get the result as
-	 * on-demand downloads or directly as data (in case of local execution)
-	 */
-	public HashMap<String, Object> Submit(ReferenceService referenceService) throws InvocationException {
-		submit_generate_job(referenceService);
-		return submit_wait_fetch_results(referenceService);
-	}
-
-	/*
-	 * just submit the job. useful if you want to wait for it to finish later on
-	 * 
-	 * Can the statics be made more static?
-	 */
-	public void submit_generate_job(ReferenceService referenceService) throws InvocationException {
-		for (ScriptInputStatic input : usecase.getStatic_inputs()) {
-			T2Reference ref;
-			if (input.getUrl() != null) {
-				// Does this work OK with binary
-				try {
-					ref = referenceService.register(new URL(input.getUrl()), 0, true, null);
-				} catch (ReferenceServiceException e) {
-					throw new InvocationException(e);
-				} catch (MalformedURLException e) {
-					throw new InvocationException(e);
-				}
-			} else {
-				ref = referenceService.register((String) input.getContent(), 0, true, null);
-			}
-				tags.put(input.getTag(), setOneInput(referenceService, ref, input));
-			
-		}
-		submit_generate_job_inner();
-	}
-
-	protected abstract void submit_generate_job_inner() throws InvocationException;
-
-	/*
-	 * wait for a submitted job to finish and fetch the results
-	 */
-	public abstract HashMap<String, Object> submit_wait_fetch_results(ReferenceService referenceService) throws InvocationException;
-
-	public abstract String setOneInput(ReferenceService referenceService, T2Reference t2Reference, ScriptInput input) throws InvocationException;
-
-	protected InputStream getAsStream(ReferenceService referenceService, T2Reference t2Reference) {
-		Identified identified = referenceService.resolveIdentifier(t2Reference, null, null);
-		if (identified instanceof ReferenceSet) {
-			ExternalReferenceSPI ref = ((ReferenceSet) identified).getExternalReferences().iterator().next();
-			return ref.openStream(invocationContext);
-		}
-		return null;
-	}
-
-	public void setContext(InvocationContext context) {
-		this.invocationContext = context;
-		
-	}
-	
-	public InvocationContext getContext() {
-		return this.invocationContext;
-	}
-
-	public abstract void setStdIn(ReferenceService referenceService,
-			T2Reference t2Reference);
-
-	public abstract void rememberRun(String runId);
-
-	/**
-	 * @return the runId
-	 */
-	protected String getRunId() {
-		return runId;
-	}
-
-	/**
-	 * @param runId the runId to set
-	 */
-	protected void setRunId(String runId) {
-		this.runId = runId;
-	}
-
-	/**
-	 * @return the retrieveData
-	 */
-	protected boolean isRetrieveData() {
-		return retrieveData;
-	}
-
-	/**
-	 * @param retrieveData the retrieveData to set
-	 */
-	protected void setRetrieveData(boolean retrieveData) {
-		this.retrieveData = retrieveData;
-	}
-	
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalInvocationCreator.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalInvocationCreator.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalInvocationCreator.java
index c340f0e..cd15a4c 100644
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalInvocationCreator.java
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalInvocationCreator.java
@@ -24,7 +24,7 @@ import java.util.Map;
 
 import org.apache.taverna.activities.externaltool.InvocationCreator;
 import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
-import org.apache.taverna.activities.externaltool.invocation.UseCaseInvocation;
+import org.apache.taverna.activities.externaltool.invocation.ToolInvocation;
 import org.apache.taverna.activities.externaltool.manager.InvocationMechanism;
 import org.apache.taverna.reference.ReferenceService;
 import org.apache.taverna.reference.T2Reference;
@@ -50,9 +50,9 @@ public final class LocalInvocationCreator implements
 	}
 
 	@Override
-	public UseCaseInvocation convert(InvocationMechanism m, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
+	public ToolInvocation convert(InvocationMechanism m, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
 	    ExternalToolLocalInvocationMechanism mechanism = (ExternalToolLocalInvocationMechanism) m;
-		UseCaseInvocation result = null;
+		ToolInvocation result = null;
 		try {
 		    result = new LocalUseCaseInvocation(description, mechanism.isRetrieveData(), mechanism.getDirectory(), mechanism.getShellPrefix(), mechanism.getLinkCommand());
 		} catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalUseCaseInvocation.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalUseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalUseCaseInvocation.java
index b57be14..86406d1 100755
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalUseCaseInvocation.java
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/local/LocalUseCaseInvocation.java
@@ -51,7 +51,7 @@ import org.apache.taverna.activities.externaltool.desc.ScriptInput;
 import org.apache.taverna.activities.externaltool.desc.ScriptOutput;
 import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
 import org.apache.taverna.activities.externaltool.invocation.InvocationException;
-import org.apache.taverna.activities.externaltool.invocation.UseCaseInvocation;
+import org.apache.taverna.activities.externaltool.invocation.ToolInvocation;
 import org.apache.taverna.activities.externaltool.ssh.SshNode;
 import org.apache.taverna.activities.externaltool.ssh.SshNodeFactory;
 import org.apache.taverna.activities.externaltool.ssh.SshUrl;
@@ -73,7 +73,7 @@ import org.apache.log4j.Logger;
  * The job is executed locally, i.e. not via the grid.
  * @author Hajo Krabbenhoeft
  */
-public class LocalUseCaseInvocation extends UseCaseInvocation {
+public class LocalUseCaseInvocation extends ToolInvocation {
 
 	private static Logger logger = Logger.getLogger(LocalUseCaseInvocation.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshInvocationCreator.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshInvocationCreator.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshInvocationCreator.java
index b876ec8..f0b1e83 100644
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshInvocationCreator.java
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshInvocationCreator.java
@@ -26,7 +26,7 @@ import java.util.Map;
 import org.apache.taverna.activities.externaltool.InvocationCreator;
 import org.apache.taverna.activities.externaltool.RetrieveLoginFromTaverna;
 import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
-import org.apache.taverna.activities.externaltool.invocation.UseCaseInvocation;
+import org.apache.taverna.activities.externaltool.invocation.ToolInvocation;
 import org.apache.log4j.Logger;
 
 import com.jcraft.jsch.JSchException;
@@ -58,7 +58,7 @@ public final class SshInvocationCreator implements InvocationCreator {
 	}
 
 	@Override
-	public UseCaseInvocation convert(InvocationMechanism m, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
+	public ToolInvocation convert(InvocationMechanism m, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
 	    ExternalToolSshInvocationMechanism mechanism = (ExternalToolSshInvocationMechanism) m;
 		SshUseCaseInvocation result = null;
 		try {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/3c48b20a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshUseCaseInvocation.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshUseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshUseCaseInvocation.java
index fcbc33f..06300a8 100755
--- a/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshUseCaseInvocation.java
+++ b/taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ssh/SshUseCaseInvocation.java
@@ -48,7 +48,7 @@ import org.apache.taverna.activities.externaltool.desc.ScriptOutput;
 import org.apache.taverna.activities.externaltool.desc.UseCaseDescription;
 import org.apache.taverna.activities.externaltool.invocation.AskUserForPw;
 import org.apache.taverna.activities.externaltool.invocation.InvocationException;
-import org.apache.taverna.activities.externaltool.invocation.UseCaseInvocation;
+import org.apache.taverna.activities.externaltool.invocation.ToolInvocation;
 import org.apache.taverna.reference.AbstractExternalReference;
 import org.apache.taverna.reference.ErrorDocument;
 import org.apache.taverna.reference.ErrorDocumentServiceException;
@@ -75,7 +75,7 @@ import com.jcraft.jsch.ChannelSftp.LsEntry;
  * 
  * @author Hajo Krabbenhoeft
  */
-public class SshUseCaseInvocation extends UseCaseInvocation {
+public class SshUseCaseInvocation extends ToolInvocation {
 
 	private static Logger logger = Logger.getLogger(SshUseCaseInvocation.class);