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);