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 <[email protected]>
Authored: Wed May 4 01:05:38 2016 +0100
Committer: Stian Soiland-Reyes <[email protected]>
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);
 


Reply via email to