You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/17 21:36:57 UTC
[26/28] incubator-taverna-common-activities git commit: Temporarily
empty repository
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java
deleted file mode 100755
index 3541b8f..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/* Part of the KnowARC Janitor Use-case processor for taverna
- * written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
- * University of Luebeck, Institute for Neuro- and Bioinformatics
- * University of Luebeck, Institute for Dermatolgy
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This package is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this package; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation.local;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-
-import net.sf.taverna.t2.reference.AbstractExternalReference;
-import net.sf.taverna.t2.reference.ErrorDocument;
-import net.sf.taverna.t2.reference.ExternalReferenceSPI;
-import net.sf.taverna.t2.reference.Identified;
-import net.sf.taverna.t2.reference.ReferenceService;
-import net.sf.taverna.t2.reference.ReferenceSet;
-import net.sf.taverna.t2.reference.ReferencedDataNature;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.reference.impl.external.file.FileReference;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.log4j.Logger;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNodeFactory;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUrl;
-
-/**
- * The job is executed locally, i.e. not via the grid.
- * @author Hajo Krabbenhoeft
- */
-public class LocalUseCaseInvocation extends UseCaseInvocation {
-
- private static Logger logger = Logger.getLogger(LocalUseCaseInvocation.class);
-
- private final File tempDir;
-
- public static String LOCAL_USE_CASE_INVOCATION_TYPE = "789663B8-DA91-428A-9F7D-B3F3DA185FD4";
-
- private Process running;
-
- private final String shellPrefix;
-
- private final String linkCommand;
-
- private Reader stdInReader = null;
-
- private static Map<String, Set<String>> runIdToTempDir = Collections.synchronizedMap(new HashMap<String, Set<String>> ());
-
- private static String LOCAL_INVOCATION_FILE = "localInvocations";
-
- public LocalUseCaseInvocation(UseCaseDescription desc, boolean retrieveData, String mainTempDirectory, String shellPrefix, String linkCommand) throws IOException {
-
- usecase = desc;
- setRetrieveData(retrieveData);
- this.shellPrefix = shellPrefix;
- this.linkCommand = linkCommand;
-
- if (mainTempDirectory != null) {
-
- File mainTempDir = new File(mainTempDirectory);
-
- tempDir = File.createTempFile("usecase", "dir", mainTempDir);
- } else {
- tempDir = File.createTempFile("usecase", "dir");
- }
- tempDir.delete();
- tempDir.mkdir();
- logger.info("mainTempDirectory is " + mainTempDirectory);
- logger.info("Using tempDir " + tempDir.getAbsolutePath());
-
- }
-
- void recDel(File c) {
- File[] files = c.listFiles();
- if (files != null) {
- for (File cc : files)
- recDel(cc);
- }
- c.delete();
- }
-
- private String setOneBinaryInput(ReferenceService referenceService,
- T2Reference t2Reference, ScriptInput input, String targetSuffix)
- throws InvocationException {
-
- if (input.isFile() || input.isTempFile()) {
- // Try to get it as a file
- String target = tempDir.getAbsolutePath() + "/" + targetSuffix;
- FileReference fileRef = getAsFileReference(referenceService,
- t2Reference);
- if (fileRef != null) {
-
- if (!input.isForceCopy()) {
- if (linkCommand != null) {
- String source = fileRef.getFile().getAbsolutePath();
- String actualLinkCommand = getActualOsCommand(
- linkCommand, source, targetSuffix, target);
- logger.info("Link command is " + actualLinkCommand);
- String[] splitCmds = actualLinkCommand.split(" ");
- ProcessBuilder builder = new ProcessBuilder(splitCmds);
- builder.directory(tempDir);
- try {
- int code = builder.start().waitFor();
- if (code == 0) {
- return target;
- } else {
- logger.error("Link command gave errorcode: "
- + code);
- }
-
- } catch (InterruptedException e) {
- // go through
- } catch (IOException e) {
- // go through
- }
-
- }
- }
- }
-
- InputStream is = null;
- OutputStream os = null;
- is = getAsStream(referenceService, t2Reference);
-
- try {
- os = new FileOutputStream(target);
- } catch (FileNotFoundException e) {
- throw new InvocationException(e);
- }
-
- try {
- IOUtils.copyLarge(is, os);
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- try {
- is.close();
- os.close();
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- return target;
- } else {
- String value = (String) referenceService.renderIdentifier(
- t2Reference, String.class, this.getContext());
- return value;
- }
- }
-
- @Override
- public String setOneInput(ReferenceService referenceService,
- T2Reference t2Reference, ScriptInput input)
- throws InvocationException {
-
- if (input.getCharsetName() == null) {
- input.setCharsetName(Charset.defaultCharset().name());
- }
- String target = null;
- String targetSuffix = null;
- if (input.isFile()) {
- targetSuffix = input.getTag();
- } else if (input.isTempFile()) {
- targetSuffix = "tempfile." + (nTempFiles++) + ".tmp";
- }
-
- if (input.isBinary()) {
- return setOneBinaryInput(referenceService, t2Reference, input,
- targetSuffix);
- }
-
- logger.info("Target is " + target);
- if (input.isFile() || input.isTempFile()) {
- target = tempDir.getAbsolutePath() + "/" + targetSuffix;
- // Try to get it as a file
- Reader r;
- Writer w;
- FileReference fileRef = getAsFileReference(referenceService,
- t2Reference);
- if (fileRef != null) {
-
- if (!input.isForceCopy()) {
- if (linkCommand != null) {
- String source = fileRef.getFile().getAbsolutePath();
- String actualLinkCommand = getActualOsCommand(
- linkCommand, source, targetSuffix, target);
- logger.info("Link command is " + actualLinkCommand);
- String[] splitCmds = actualLinkCommand.split(" ");
- ProcessBuilder builder = new ProcessBuilder(splitCmds);
- builder.directory(tempDir);
- try {
- int code = builder.start().waitFor();
- if (code == 0) {
- return target;
- } else {
- logger.error("Link command gave errorcode: "
- + code);
- }
-
- } catch (InterruptedException e) {
- // go through
- } catch (IOException e) {
- // go through
- }
-
- }
- }
-
- if (fileRef.getDataNature().equals(ReferencedDataNature.TEXT)) {
- r = new InputStreamReader(fileRef.openStream(this
- .getContext()), Charset.forName(fileRef
- .getCharset()));
- } else {
- try {
- r = new FileReader(fileRef.getFile());
- } catch (FileNotFoundException e) {
- throw new InvocationException(e);
- }
- }
- } else {
- r = new InputStreamReader(getAsStream(referenceService,
- t2Reference));
- }
- try {
- w = new OutputStreamWriter(new FileOutputStream(target), input
- .getCharsetName());
- } catch (UnsupportedEncodingException e) {
- throw new InvocationException(e);
- } catch (FileNotFoundException e) {
- throw new InvocationException(e);
- }
- try {
- IOUtils.copyLarge(r, w);
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- try {
- r.close();
- w.close();
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- return target;
- } else {
- String value = (String) referenceService.renderIdentifier(
- t2Reference, String.class, this.getContext());
- return value;
- }
- }
-
- private void forgetRun() {
- Set<String> directories = runIdToTempDir.get(getRunId());
- try {
- directories.remove(tempDir.getCanonicalPath());
- } catch (IOException e) {
- logger.error(e);
- }
- }
-
- private static void deleteDirectory(String location) {
- try {
- FileUtils.deleteDirectory(new File(location));
- } catch (IOException e) {
- logger.error("Problem deleting " + location, e);
- }
- }
-
- public static void cleanup(String runId) {
- Set<String> tempDirectories = runIdToTempDir.get(runId);
- if (tempDirectories != null) {
- for (String tempDir : tempDirectories) {
- deleteDirectory(tempDir);
- }
- runIdToTempDir.remove(runId);
- }
- }
-
- @Override
- protected void submit_generate_job_inner() throws InvocationException {
- tags.put("uniqueID", "" + getSubmissionID());
- String command = usecase.getCommand();
- for (String cur : tags.keySet()) {
- command = command.replaceAll("\\Q%%" + cur + "%%\\E", Matcher.quoteReplacement(tags.get(cur)));
- }
-
- List<String> cmds = new ArrayList<String>();
- if ((shellPrefix != null) && !shellPrefix.isEmpty()) {
- String[] prefixCmds = shellPrefix.split(" ");
- for (int i = 0; i < prefixCmds.length; i++) {
- cmds.add(prefixCmds[i]);
- }
- cmds.add(command);
- } else {
- String[] splitCmds = command.split(" ");
- for (int i = 0; i < splitCmds.length; i++) {
- cmds.add(splitCmds[i]);
- }
- }
-
- ProcessBuilder builder = new ProcessBuilder(cmds);
- builder.directory(tempDir);
-
- for (int i = 0; i < cmds.size(); i++) {
- logger.info("cmds[" + i + "] = " + cmds.get(i));
- }
- logger.info("Command is " + command + " in directory " + tempDir);
- try {
- running = builder.start();
- if (stdInReader != null) {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(running.getOutputStream()));
- IOUtils.copyLarge(stdInReader, writer);
- writer.close();
- }
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- }
-
- private void copy_stream(InputStream read, OutputStream write) throws IOException {
- int a = read.available();
- if (a > 0) {
- byte[] buf = new byte[a];
- read.read(buf);
- write.write(buf);
- }
- }
-
- @Override
- public HashMap<String, Object> submit_wait_fetch_results(ReferenceService referenceService) throws InvocationException {
- ByteArrayOutputStream stdout_buf = new ByteArrayOutputStream();
- ByteArrayOutputStream stderr_buf = new ByteArrayOutputStream();
- while (true) {
- try {
- copy_stream(running.getInputStream(), stdout_buf);
- copy_stream(running.getErrorStream(), stderr_buf);
- } catch (IOException e1) {
- throw new InvocationException(e1);
- }
- try {
- int exitcode = running.exitValue();
- if (!usecase.getValidReturnCodes().contains(exitcode)) {
- try {
- throw new InvocationException("Invalid exit code " + exitcode + ":" + stderr_buf.toString("US-ASCII"));
- } catch (UnsupportedEncodingException e) {
- throw new InvocationException("Invalid exit code " + exitcode + ":" + stderr_buf.toString());
- }
- }
- else
- break;
- } catch (IllegalThreadStateException e) {
-
- try {
- Thread.sleep(100);
- } catch (InterruptedException e1) {
- throw new InvocationException(e);
- }
-
- }
- }
-
- HashMap<String, Object> results = new HashMap<String, Object>();
- results.put("STDOUT", stdout_buf.toByteArray());
- results.put("STDERR", stderr_buf.toByteArray());
-
- for (Map.Entry<String, ScriptOutput> cur : usecase.getOutputs().entrySet()) {
- ScriptOutput scriptOutput = cur.getValue();
- File result = new File(tempDir.getAbsoluteFile() + "/" + cur.getValue().getPath());
- if (result.exists()) {
- AbstractExternalReference ref;
- if (isRetrieveData()) {
- FileInputStream is;
- try {
- is = new FileInputStream(result);
- } catch (FileNotFoundException e) {
- throw new InvocationException(e);
- }
- if (scriptOutput.isBinary()) {
- ref = inlineByteArrayReferenceBuilder.createReference(is, null);
- } else {
- ref = inlineStringReferenceBuilder.createReference(is, null);
- }
- try {
- is.close();
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- }
- else {
- ref = new FileReference(result);
- if (scriptOutput.isBinary()) {
- ((FileReference) ref)
- .setDataNature(ReferencedDataNature.BINARY);
- } else {
- ((FileReference) ref)
- .setDataNature(ReferencedDataNature.TEXT);
- ((FileReference) ref).setCharset("UTF-8");
- }
- }
- results.put(cur.getKey(), ref);
- } else {
- ErrorDocument ed = referenceService.getErrorDocumentService().registerError("No result for " + cur.getKey(), 0, getContext());
- results.put(cur.getKey(), ed);
- }
- }
-
- if (isRetrieveData()) {
- forgetRun();
- try {
- deleteDirectory(tempDir.getCanonicalPath());
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- }
-
- return results;
- }
-
- private FileReference getAsFileReference(ReferenceService referenceService, T2Reference t2Reference) {
- Identified identified = referenceService.resolveIdentifier(t2Reference, null, null);
- if (identified instanceof ReferenceSet) {
- for (ExternalReferenceSPI ref : ((ReferenceSet) identified).getExternalReferences()) {
- if (ref instanceof FileReference) {
- return (FileReference) ref;
- }
- }
- }
- return null;
- }
-
- @Override
- public void setStdIn(ReferenceService referenceService,
- T2Reference t2Reference) {
- stdInReader = new BufferedReader(new InputStreamReader(getAsStream(referenceService, t2Reference)));
- }
-
- @Override
- public void rememberRun(String runId) {
- this.setRunId(runId);
- Set<String> directories = runIdToTempDir.get(runId);
- if (directories == null) {
- directories = Collections.synchronizedSet(new HashSet<String> ());
- runIdToTempDir.put(runId, directories);
- }
- try {
- directories.add(tempDir.getCanonicalPath());
- } catch (IOException e) {
- logger.error("Unable to record temporary directory: " + tempDir, e);
- }
- }
-
- public static void load(File directory) {
- File invocationsFile = new File(directory, LOCAL_INVOCATION_FILE);
- if (!invocationsFile.exists()) {
- return;
- }
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(invocationsFile));
- String line = reader.readLine();
- while (line != null) {
- String[] parts = line.split(" ");
- if (parts.length != 2) {
- break;
- }
- String runId = parts[0];
- String tempDirString = parts[1];
- Set<String> tempDirs = runIdToTempDir.get(runId);
- if (tempDirs == null) {
- tempDirs = new HashSet<String>();
- runIdToTempDir.put(runId, tempDirs);
- }
- tempDirs.add(tempDirString);
- line = reader.readLine();
- }
- } catch (FileNotFoundException e) {
- logger.error(e);
- } catch (IOException e) {
- logger.error(e);
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- logger.error(e);
- }
- }
- }
- }
-
- public static void persist(File directory) {
- File invocationsFile = new File(directory, LOCAL_INVOCATION_FILE);
- BufferedWriter writer = null;
- try {
- writer = new BufferedWriter(new FileWriter(invocationsFile));
- for (String runId : runIdToTempDir.keySet()) {
- for (String tempDir : runIdToTempDir.get(runId)) {
- writer.write(runId);
- writer.write(" ");
- writer.write(tempDir);
- writer.newLine();
- }
- }
- } catch (IOException e) {
- logger.error(e);
- } finally {
- if (writer != null) {
- try {
- writer.close();
- } catch (IOException e) {
- logger.error(e);
- }
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java
deleted file mode 100644
index 60d3bec..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Part of the KnowARC Janitor Use-case processor for taverna
- * written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
- * University of Luebeck, Institute for Neuro- and Bioinformatics
- * University of Luebeck, Institute for Dermatolgy
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This package is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this package; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import org.apache.log4j.Logger;
-
-import com.jcraft.jsch.UIKeyboardInteractive;
-import com.jcraft.jsch.UserInfo;
-
-import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
-
-final class SshAutoLoginTrustEveryone implements UserInfo, UIKeyboardInteractive {
-
- private static Logger logger = Logger.getLogger(SshAutoLoginTrustEveryone.class);
-
- private final AskUserForPw askUserForPw;
-
- public SshAutoLoginTrustEveryone(AskUserForPw askUserForPw) {
- super();
- this.askUserForPw = askUserForPw;
- }
-
- public void showMessage(String arg0) {
- logger.info(arg0);
- }
-
- public boolean promptYesNo(String arg0) {
- if (arg0.startsWith("The authenticity of host"))
- return true;
- return false;
- }
-
- public boolean promptPassword(String arg0) {
- return true;
- }
-
- public boolean promptPassphrase(String arg0) {
- return true;
- }
-
- public String getPassword() {
- return askUserForPw.getPassword();
- }
-
- public String getPassphrase() {
- return askUserForPw.getPassphrase();
- }
-
- public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, boolean[] echo) {
- if (prompt.length >= 1 && prompt[0].toLowerCase().startsWith("password"))
- return new String[] { askUserForPw.getPassword() };
- return null;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java
deleted file mode 100644
index 92b065e..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Part of the KnowARC Janitor Use-case processor for taverna
- * written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
- * University of Luebeck, Institute for Neuro- and Bioinformatics
- * University of Luebeck, Institute for Dermatolgy
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This package is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this package; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-
-public class SshNode {
-
- public static String DEFAULT_HOST = "127.0.0.1";
- public static int DEFAULT_PORT = 22;
- public static String DEFAULT_DIRECTORY = "/tmp/";
-
- private String host = DEFAULT_HOST;
- private int port = DEFAULT_PORT;
- private String directory = DEFAULT_DIRECTORY;
-
- private SshUrl url;
-
- private String linkCommand = null;
- private String copyCommand = null;
- private boolean retrieveData = false;
-
- /**
- *
- */
- SshNode() {
- super();
- linkCommand = InvocationMechanism.UNIX_LINK;
- copyCommand = InvocationMechanism.UNIX_COPY;
-
- }
- /**
- * @param directory the directory to set
- */
- public void setDirectory(String directory) {
- if ((directory != null) && !directory.isEmpty()) {
- if (!directory.endsWith("/")) {
- directory = directory + "/";
- }
- this.directory = directory;
- }
- }
-
- /**
- * @return the directory
- */
- public String getDirectory() {
- return directory;
- }
-
- /**
- * @param host the host to set
- */
- public void setHost(String host) {
- this.host = host;
- }
-
- /**
- * @return the host
- */
- public String getHost() {
- return host;
- }
-
- /**
- * @param port the port to set
- */
- public void setPort(int port) {
- this.port = port;
- }
-
- /**
- * @return the port
- */
- public int getPort() {
- return port;
- }
-
- SshUrl getUrl() {
- if (url == null) {
- url = new SshUrl(this);
- }
- return url;
- }
-
- public int hashCode() {
- return getUrl().hashCode();
- }
-
- public boolean equals(Object obj) {
- if ((obj == null) || !(obj instanceof SshNode)) {
- return false;
- }
- return (this.hashCode() == obj.hashCode());
- }
- /**
- * @return the linkCommand
- */
- public String getLinkCommand() {
- return linkCommand;
- }
- /**
- * @param linkCommand the linkCommand to set
- */
- public void setLinkCommand(String linkCommand) {
- if ((linkCommand != null) && linkCommand.isEmpty()) {
- this.linkCommand = null;
- } else {
- this.linkCommand = linkCommand;
- } }
- /**
- * @return the copyCommand
- */
- public String getCopyCommand() {
- return copyCommand;
- }
- /**
- * @param copyCommand the copyCommand to set
- */
- public void setCopyCommand(String copyCommand) {
- if ((copyCommand != null) && copyCommand.isEmpty()) {
- this.copyCommand = null;
- } else {
- this.copyCommand = copyCommand;
- }
- }
-
- /**
- * @return the retrieveData
- */
- public boolean isRetrieveData() {
- return retrieveData;
- }
- /**
- * @param retrieveData the retrieveData to set
- */
- public void setRetrieveData(boolean retrieveData) {
- this.retrieveData = retrieveData;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java
deleted file mode 100644
index 2d8f4bb..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- *
- */
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author alanrw
- *
- */
-public class SshNodeFactory {
-
- private Map<String, SshNode> nodeMap = Collections.synchronizedMap(new HashMap<String, SshNode> ());
-
- private static SshNodeFactory INSTANCE = new SshNodeFactory();
-
- private SshNode defaultNode;
-
- private SshNodeFactory() {
- defaultNode = getSshNode(SshNode.DEFAULT_HOST, SshNode.DEFAULT_PORT, SshNode.DEFAULT_DIRECTORY);
- }
-
- public SshNode getDefaultNode() {
- return defaultNode;
- }
-
- public static SshNodeFactory getInstance() {
- return INSTANCE;
- }
-
- public SshNode getSshNode(String host, int port, String directory) {
- String url = makeUrl(host, port, directory);
- if (nodeMap.containsKey(url)) {
- return nodeMap.get(url);
- }
- else {
- SshNode newNode = new SshNode();
- newNode.setHost(host);
- newNode.setPort(port);
- newNode.setDirectory(directory);
- nodeMap.put(url, newNode);
- return newNode;
- }
- }
-
- public boolean containsSshNode(String host, int port, String directory) {
- return nodeMap.containsKey(makeUrl(host, port, directory));
- }
-
- public static String makeUrl(String host, int port, String directory) {
- return ("ssh://" + host + ":" + port + directory);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java
deleted file mode 100755
index c6a5851..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- *
- */
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-
-import com.jcraft.jsch.ChannelExec;
-import com.jcraft.jsch.ChannelSftp;
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-
-import de.uni_luebeck.inb.knowarc.usecases.RuntimeEnvironmentConstraint;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
-
-/**
- * @author alanrw
- *
- */
-public class SshPool {
-
- private static Logger logger = Logger.getLogger(SshPool.class);
-
-
- private static JSch jsch = new JSch();
-
- private static int CONNECT_TIMEOUT = 10000; // milliseconds
-
- private static Map<SshNode, Session> sessionMap = Collections.synchronizedMap(new HashMap<SshNode, Session> ());
- private static Map<Session, ChannelSftp> sftpGetMap = Collections.synchronizedMap(new HashMap<Session, ChannelSftp> ());
- private static Map<Session, ChannelSftp> sftpPutMap = Collections.synchronizedMap(new HashMap<Session, ChannelSftp> ());
-
- public static Session getSshSession(final SshUrl sshUrl, final AskUserForPw askUserForPw) throws JSchException {
- return getSshSession(sshUrl.getSshNode(), askUserForPw);
- }
-
- public static synchronized Session getSshSession(final SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
-
- Session s = sessionMap.get(sshNode);
- if ((s != null) && s.isConnected()) {
- logger.info("Reusing session");
- return s;
- }
- if (s != null) {
- logger.info("Session was not connected");
- }
- if (s == null) {
- logger.info("No session found for " + sshNode.toString());
- }
-
- if (askUserForPw.getKeyfile().length() > 0) {
- jsch.addIdentity(askUserForPw.getKeyfile());
- }
- logger.info("Using host is " + sshNode.getHost() + " and port " + sshNode.getPort());
- Session sshSession = jsch.getSession(askUserForPw.getUsername(), sshNode.getHost(), sshNode.getPort());
- sshSession.setUserInfo(new SshAutoLoginTrustEveryone(askUserForPw));
- sshSession.connect(CONNECT_TIMEOUT);
-
- askUserForPw.authenticationSucceeded();
- sessionMap.put(sshNode, sshSession);
- if (sshSession == null) {
- logger.error("Returning a null session");
- }
- return sshSession;
- }
-
- public static ChannelSftp getSftpGetChannel(SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
- return getSftpGetChannel(getSshSession(sshNode, askUserForPw));
- }
-
- private static synchronized ChannelSftp getSftpGetChannel(Session session) throws JSchException {
- ChannelSftp result = sftpGetMap.get(session);
- if (!session.isConnected()) {
- logger.warn("Session is not connected");
- }
- if (result == null) {
- logger.info("Creating new sftp channel");
- result = (ChannelSftp) session.openChannel("sftp");
- sftpGetMap.put(session, result);
- }
- else {
- logger.info("Reusing sftp channel");
- }
- if (!result.isConnected()) {
- logger.info("Connecting");
- result.connect();
- } else {
- logger.info("Already connected");
- }
- return result;
- }
-
- public static ChannelSftp getSftpPutChannel(SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
- return getSftpPutChannel(getSshSession(sshNode, askUserForPw));
- }
-
- private static synchronized ChannelSftp getSftpPutChannel(Session session) throws JSchException {
- ChannelSftp result = null;
- synchronized(sftpPutMap) {
- result = sftpPutMap.get(session);
- if (!session.isConnected()) {
- logger.info("Session is not connected");
- }
- if (result == null) {
- logger.info("Creating new sftp channel");
- result = (ChannelSftp) session.openChannel("sftp");
- sftpPutMap.put(session, result);
- }
- else {
- logger.info("Reusing sftp channel");
- }
- }
- if (!result.isConnected()) {
- logger.info("Connecting");
- result.connect(CONNECT_TIMEOUT);
- } else {
- logger.info("Already connected");
- }
- return result;
- }
-
- public static synchronized ChannelExec openExecChannel(SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
- return (ChannelExec) getSshSession(sshNode, askUserForPw).openChannel("exec");
- }
-
- private static synchronized ChannelExec openExecChannel(Session session) throws JSchException {
- return (ChannelExec) session.openChannel("exec");
- }
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java
deleted file mode 100644
index 0431153..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- *
- */
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import java.io.InputStream;
-
-import net.sf.taverna.t2.activities.externaltool.RetrieveLoginFromTaverna;
-import net.sf.taverna.t2.reference.AbstractExternalReference;
-import net.sf.taverna.t2.reference.DereferenceException;
-import net.sf.taverna.t2.reference.ExternalReferenceSPI;
-import net.sf.taverna.t2.reference.ReferenceContext;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.reference.ReferencedDataNature;
-
-import org.apache.log4j.Logger;
-
-import com.jcraft.jsch.ChannelSftp;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.SftpException;
-
-/**
- * @author alanrw
- *
- */
-public class SshReference extends AbstractExternalReference implements
- ExternalReferenceSPI {
-
- private static Logger logger = Logger.getLogger(SshReference.class);
-
-
- private String host = "127.0.0.1";
- private int port = 22;
- private String directory = "/tmp/";
- private String subDirectory;
- private String fileName;
-
- private CredentialManager credentialManager;
-
- private int dataNatureInteger = ReferencedDataNature.UNKNOWN.ordinal();
- private String charset = "UTF-8";
-
- public SshReference() {
- super();
- }
-
- public SshReference(SshUrl url) {
- super();
- this.host = url.getSshNode().getHost();
- this.port = url.getSshNode().getPort();
- this.directory = url.getSshNode().getDirectory();
- this.subDirectory = url.getSubDirectory();
- this.fileName = url.getFileName();
- this.setDataNature(url.getDataNature());
- this.setCharset(url.getCharset());
- }
-
- /* (non-Javadoc)
- * @see net.sf.taverna.t2.reference.ExternalReferenceSPI#getApproximateSizeInBytes()
- */
- @Override
- public Long getApproximateSizeInBytes() {
- return 10000L;
- }
-
- /* (non-Javadoc)
- * @see net.sf.taverna.t2.reference.ExternalReferenceSPI#openStream(net.sf.taverna.t2.reference.ReferenceContext)
- */
- @Override
- public InputStream openStream(ReferenceContext context)
- throws DereferenceException {
- try {
- SshNode node = SshNodeFactory.getInstance().getSshNode(this.getHost(), this.getPort(), this.getDirectory());
- String fullPath = getDirectory() + getSubDirectory() + "/" + getFileName();
- ChannelSftp channel = SshPool.getSftpGetChannel(node, new RetrieveLoginFromTaverna(new SshUrl(node).toString(), credentialManager));
- logger.info("Opening stream on " + fullPath);
- return (channel.get(fullPath));
- } catch (JSchException e) {
- //TODO
- logger.error(e);
- } catch (SftpException e) {
- // TODO Auto-generated catch block
- logger.error(e);
- }
- return null;
- }
-
- /**
- * @return the host
- */
- public String getHost() {
- return host;
- }
-
- /**
- * @param host the host to set
- */
- public void setHost(String host) {
- this.host = host;
- }
-
- /**
- * @return the port
- */
- public int getPort() {
- return port;
- }
-
- /**
- * @param port the port to set
- */
- public void setPort(int port) {
- this.port = port;
- }
-
- /**
- * @return the directory
- */
- public String getDirectory() {
- return directory;
- }
-
- /**
- * @param directory the directory to set
- */
- public void setDirectory(String directory) {
- this.directory = directory;
- }
-
- /**
- * @return the subDirectory
- */
- public String getSubDirectory() {
- return subDirectory;
- }
-
- /**
- * @param subDirectory the subDirectory to set
- */
- public void setSubDirectory(String subDirectory) {
- this.subDirectory = subDirectory;
- }
-
- /**
- * @return the fileName
- */
- public String getFileName() {
- return fileName;
- }
-
- /**
- * @param fileName the fileName to set
- */
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public String getFullPath() {
- return getDirectory() + "/" + getSubDirectory() + "/" + getFileName();
- }
-
- public ReferencedDataNature getDataNature() {
- return ReferencedDataNature.values()[dataNatureInteger];
- }
-
- public void setDataNature(ReferencedDataNature dataNature) {
- this.dataNatureInteger = dataNature.ordinal();
- }
-
- public String getCharset() {
- return charset;
- }
-
- public void setCredentialManager(CredentialManager credentialManager) {
- this.credentialManager = credentialManager;
- }
-
- public void setCharset(String charset) {
- this.charset = charset;
- }
-
- /**
- * @return the dataNatureInteger
- */
- public int getDataNatureInteger() {
- return dataNatureInteger;
- }
-
- /**
- * @param dataNatureInteger the dataNatureInteger to set
- */
- public void setDataNatureInteger(int dataNatureInteger) {
- this.dataNatureInteger = dataNatureInteger;
- }
-
- public SshReference clone() {
- SshReference result = new SshReference();
- result.setHost(this.getHost());
- result.setPort(this.getPort());
- result.setDirectory(this.getDirectory());
- result.setSubDirectory(this.getSubDirectory());
- result.setFileName(this.getFileName());
- result.setDataNature(this.getDataNature());
- result.setCharset(this.getCharset());
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java
deleted file mode 100644
index eb5f269..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- *
- */
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import net.sf.taverna.t2.reference.ReferencedDataNature;
-
-/**
- * @author alanrw
- *
- */
-public class SshUrl {
-
- private SshNode sshNode;
- private String subDirectory;
- private String fileName;
-
- private ReferencedDataNature dataNature = ReferencedDataNature.UNKNOWN;
- private String charset = "UTF-8";
-
-
- public SshUrl(SshNode sshNode) {
- this.setSshNode(sshNode);
- }
-
-
- /**
- * @return the host
- */
- public String getHost() {
- return getSshNode().getHost();
- }
- /**
- * @param host the host to set
- */
- public void setHost(String host) {
- getSshNode().setHost(host);
- }
- /**
- * @return the port
- */
- public int getPort() {
- return getSshNode().getPort();
- }
- /**
- * @param port the port to set
- */
- public void setPort(int port) {
- getSshNode().setPort(port);
- }
- /**
- * @return the directory
- */
- public String getDirectory() {
- return getSshNode().getDirectory();
- }
- /**
- * @param directory the directory to set
- */
- public void setDirectory(String directory) {
- getSshNode().setDirectory(directory);
- }
- /**
- * @return the subDirectory
- */
- public String getSubDirectory() {
- return subDirectory;
- }
- /**
- * @param subDirectory the subDirectory to set
- */
- public void setSubDirectory(String subDirectory) {
- this.subDirectory = subDirectory;
- }
- /**
- * @return the fileName
- */
- public String getFileName() {
- return fileName;
- }
- /**
- * @param fileName the fileName to set
- */
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public String toString() {
- String result = SshNodeFactory.makeUrl(getHost(), getPort(), getDirectory());
- if (getSubDirectory() != null) {
- result += getSubDirectory();
- }
- if (getFileName() != null) {
- result += "/" + getFileName();
- }
- return result;
- }
-
- public int hashCode() {
- return toString().hashCode();
-
- }
-
- public boolean equals(Object obj) {
- if ((obj == null) || !(obj instanceof SshUrl)) {
- return false;
- }
- return (this.hashCode() == obj.hashCode());
- }
-
- public SshUrl getBaseUrl() {
- SshUrl result = new SshUrl(this.getSshNode());
- return result;
- }
-
-
- /**
- * @return the sshNode
- */
- public SshNode getSshNode() {
- return sshNode;
- }
-
-
- /**
- * @param sshNode the sshNode to set
- */
- public void setSshNode(SshNode sshNode) {
- this.sshNode = sshNode;
- }
-
- public ReferencedDataNature getDataNature() {
- return dataNature;
- }
-
-
- public void setDataNature(ReferencedDataNature dataNature) {
- this.dataNature = dataNature;
- }
-
-
- public String getCharset() {
- return charset;
- }
-
-
- public void setCharset(String charset) {
- this.charset = charset;
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java
deleted file mode 100644
index 6a9b2dc..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- */
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import net.sf.taverna.t2.reference.ExternalReferenceSPI;
-import net.sf.taverna.t2.reference.ReferenceContext;
-import net.sf.taverna.t2.reference.ValueToReferenceConversionException;
-import net.sf.taverna.t2.reference.ValueToReferenceConverterSPI;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-
-/**
- * @author alanrw
- *
- */
-public class SshUrlToSshReference implements ValueToReferenceConverterSPI {
-
- private CredentialManager credentialManager;
-
- /* (non-Javadoc)
- * @see net.sf.taverna.t2.reference.ValueToReferenceConverterSPI#canConvert(java.lang.Object, net.sf.taverna.t2.reference.ReferenceContext)
- */
- @Override
- public boolean canConvert(Object o, ReferenceContext context) {
- return (o instanceof SshUrl);
- }
-
- /* (non-Javadoc)
- * @see net.sf.taverna.t2.reference.ValueToReferenceConverterSPI#convert(java.lang.Object, net.sf.taverna.t2.reference.ReferenceContext)
- */
- @Override
- public ExternalReferenceSPI convert(Object o, ReferenceContext context)
- throws ValueToReferenceConversionException {
- SshReference result = new SshReference((SshUrl) o);
- result.setCredentialManager(credentialManager);
- return result;
- }
-
- public void setCredentialManager(CredentialManager credentialManager) {
- this.credentialManager = credentialManager;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java
deleted file mode 100755
index 29e475d..0000000
--- a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/* Part of the KnowARC Janitor Use-case processor for taverna
- * written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
- * University of Luebeck, Institute for Neuro- and Bioinformatics
- * University of Luebeck, Institute for Dermatolgy
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This package is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this package; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.Vector;
-import java.util.regex.Matcher;
-
-import net.sf.taverna.t2.activities.externaltool.RetrieveLoginFromTaverna;
-import net.sf.taverna.t2.reference.AbstractExternalReference;
-import net.sf.taverna.t2.reference.ErrorDocument;
-import net.sf.taverna.t2.reference.ErrorDocumentServiceException;
-import net.sf.taverna.t2.reference.ExternalReferenceSPI;
-import net.sf.taverna.t2.reference.Identified;
-import net.sf.taverna.t2.reference.ReferenceService;
-import net.sf.taverna.t2.reference.ReferenceSet;
-import net.sf.taverna.t2.reference.ReferencedDataNature;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-
-import org.apache.log4j.Logger;
-
-import com.jcraft.jsch.ChannelExec;
-import com.jcraft.jsch.ChannelSftp;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-import com.jcraft.jsch.SftpException;
-import com.jcraft.jsch.ChannelSftp.LsEntry;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
-
-/**
- * The job is executed by connecting to a worker pc using ssh, i.e. not via the
- * grid.
- *
- * @author Hajo Krabbenhoeft
- */
-public class SshUseCaseInvocation extends UseCaseInvocation {
-
- private static Logger logger = Logger.getLogger(SshUseCaseInvocation.class);
-
- private SshUrl location = null;
-
- private InputStream stdInputStream = null;
-
- public static final String SSH_USE_CASE_INVOCATION_TYPE = "D0A4CDEB-DD10-4A8E-A49C-8871003083D8";
- private String tmpname;
- private final SshNode workerNode;
- private final AskUserForPw askUserForPw;
-
- private ChannelExec running;
-
- private List<String> precedingCommands = new ArrayList<String>();
-
- private final ByteArrayOutputStream stdout_buf = new ByteArrayOutputStream();
- private final ByteArrayOutputStream stderr_buf = new ByteArrayOutputStream();
-
- private static Map<String, Object> nodeLock = Collections
- .synchronizedMap(new HashMap<String, Object>());
-
- private static Map<String, Set<SshUrl>> runIdToTempDir = Collections
- .synchronizedMap(new HashMap<String, Set<SshUrl>>());
-
- private static String SSH_INVOCATION_FILE = "sshInvocations";
-
- private final CredentialManager credentialManager;
-
- public static String test(final SshNode workerNode,
- final AskUserForPw askUserForPw) {
- try {
- Session sshSession = SshPool
- .getSshSession(workerNode, askUserForPw);
-
- ChannelSftp sftpTest = (ChannelSftp) sshSession.openChannel("sftp");
- sftpTest.connect();
- sftpTest.cd(workerNode.getDirectory());
- sftpTest.disconnect();
- sshSession.disconnect();
- } catch (JSchException e) {
- return e.toString();
- } catch (SftpException e) {
- return e.toString();
- }
- return null;
- }
-
- public SshUseCaseInvocation(UseCaseDescription desc, SshNode workerNodeA,
- AskUserForPw askUserForPwA, CredentialManager credentialManager)
- throws JSchException, SftpException {
- this.workerNode = workerNodeA;
- this.credentialManager = credentialManager;
-
- setRetrieveData(workerNodeA.isRetrieveData());
- this.askUserForPw = askUserForPwA;
- usecase = desc;
-
- ChannelSftp sftp = SshPool.getSftpPutChannel(workerNode, askUserForPw);
- synchronized (getNodeLock(workerNode)) {
-
- logger.info("Changing remote directory to "
- + workerNode.getDirectory());
- sftp.cd(workerNode.getDirectory());
- Random rnd = new Random();
- while (true) {
- tmpname = "usecase" + rnd.nextLong();
- try {
- sftp.lstat(workerNode.getDirectory() + tmpname);
- continue;
- } catch (Exception e) {
- // file seems to not exist :)
- }
- sftp.mkdir(workerNode.getDirectory() + tmpname);
- sftp.cd(workerNode.getDirectory() + tmpname);
- break;
- }
- }
- }
-
- private static void recursiveDelete(ChannelSftp sftp, String path)
- throws SftpException, JSchException {
- Vector<?> entries = sftp.ls(path);
- for (Object object : entries) {
- LsEntry entry = (LsEntry) object;
- if (entry.getFilename().equals(".")
- || entry.getFilename().equals("..")) {
- continue;
- }
- if (entry.getAttrs().isDir()) {
- recursiveDelete(sftp, path + entry.getFilename() + "/");
- } else {
- sftp.rm(path + entry.getFilename());
- }
- }
- sftp.rmdir(path);
- }
-
- private static void deleteDirectory(SshUrl directory,
- CredentialManager credentialManager) throws InvocationException {
- URI uri;
- try {
- uri = new URI(directory.toString());
-
- ChannelSftp sftp;
- SshNode workerNode;
- String fullPath = uri.getPath();
- String path = fullPath.substring(0, fullPath.lastIndexOf("/"));
- String tempDir = fullPath.substring(fullPath.lastIndexOf("/"));
- try {
- workerNode = SshNodeFactory.getInstance().getSshNode(
- uri.getHost(), uri.getPort(), path);
-
- sftp = SshPool.getSftpPutChannel(workerNode,
- new RetrieveLoginFromTaverna(workerNode.getUrl()
- .toString(), credentialManager));
- } catch (JSchException e) {
- throw new InvocationException(e);
- }
- synchronized (getNodeLock(workerNode)) {
- try {
- sftp.cd(path);
- recursiveDelete(sftp, path + "/" + tempDir + "/");
- } catch (SftpException e) {
- throw new InvocationException(e);
- } catch (JSchException e) {
- throw new InvocationException(e);
- }
- }
- } catch (URISyntaxException e1) {
- throw new InvocationException(e1);
- }
- }
-
- public static void cleanup(String runId, CredentialManager credentialManager)
- throws InvocationException {
- Set<SshUrl> tempDirectories = runIdToTempDir.get(runId);
- if (tempDirectories != null) {
- for (SshUrl tempUrl : tempDirectories) {
- deleteDirectory(tempUrl, credentialManager);
- }
- runIdToTempDir.remove(runId);
- }
- }
-
- @Override
- protected void submit_generate_job_inner() throws InvocationException {
- tags.put("uniqueID", "" + getSubmissionID());
- String command = usecase.getCommand();
- for (String cur : tags.keySet()) {
- command = command.replaceAll("\\Q%%" + cur + "%%\\E",
- Matcher.quoteReplacement(tags.get(cur)));
- }
- String fullCommand = "cd " + workerNode.getDirectory() + tmpname;
- for (String preceding : precedingCommands) {
- fullCommand += " && " + preceding;
- }
- fullCommand += " && " + command;
-
- logger.info("Full command is " + fullCommand);
-
- try {
- running = SshPool.openExecChannel(workerNode, askUserForPw);
- running.setCommand(fullCommand);
- running.setOutputStream(stdout_buf);
- running.setErrStream(stderr_buf);
- if (stdInputStream != null) {
- running.setInputStream(stdInputStream);
- }
- running.connect();
- } catch (JSchException e) {
- throw new InvocationException(e);
- }
-
- }
-
- @Override
- public HashMap<String, Object> submit_wait_fetch_results(
- ReferenceService referenceService) throws InvocationException {
- while (!running.isClosed()) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- throw new InvocationException("Invocation interrupted:"
- + e.getMessage());
- }
- }
-
- int exitcode = running.getExitStatus();
- if (!usecase.getValidReturnCodes().contains(exitcode)) {
- try {
- throw new InvocationException("Invalid exit code " + exitcode
- + ":" + stderr_buf.toString("US-ASCII"));
- } catch (UnsupportedEncodingException e) {
- throw new InvocationException("Invalid exit code " + exitcode
- + ":" + stderr_buf.toString());
- }
- }
-
- HashMap<String, Object> results = new HashMap<String, Object>();
-
- results.put("STDOUT", stdout_buf.toByteArray());
- results.put("STDERR", stderr_buf.toByteArray());
- try {
- stdout_buf.close();
- stderr_buf.close();
- } catch (IOException e2) {
- throw new InvocationException(e2);
- }
-
- try {
- ChannelSftp sftp = SshPool.getSftpPutChannel(workerNode,
- askUserForPw);
- synchronized (getNodeLock(workerNode)) {
- for (Map.Entry<String, ScriptOutput> cur : usecase.getOutputs()
- .entrySet()) {
- ScriptOutput scriptOutput = cur.getValue();
- String fullPath = workerNode.getDirectory() + tmpname + "/"
- + scriptOutput.getPath();
- try {
- if (sftp.stat(fullPath) != null) {
- SshUrl url = new SshUrl(workerNode);
- url.setSubDirectory(tmpname);
- url.setFileName(scriptOutput.getPath());
- if (scriptOutput.isBinary()) {
- url.setDataNature(ReferencedDataNature.BINARY);
- } else {
- url.setDataNature(ReferencedDataNature.TEXT);
- url.setCharset("UTF-8");
- }
- if (isRetrieveData()) {
- SshReference urlRef = new SshReference(url);
- InputStream is = urlRef.openStream(null);
- AbstractExternalReference ref;
- if (scriptOutput.isBinary()) {
- ref = inlineByteArrayReferenceBuilder
- .createReference(is, null);
- } else {
- ref = inlineStringReferenceBuilder
- .createReference(is, null);
- }
- try {
- is.close();
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- results.put(cur.getKey(), ref);
- } else {
- results.put(cur.getKey(), url);
- }
- } else {
- ErrorDocument ed = referenceService
- .getErrorDocumentService().registerError(
- "No result for " + cur.getKey(), 0,
- getContext());
- results.put(cur.getKey(), ed);
- }
- } catch (SftpException e) {
- ErrorDocument ed = referenceService
- .getErrorDocumentService().registerError(
- "No result for " + cur.getKey(), 0,
- getContext());
- results.put(cur.getKey(), ed);
-
- }
- }
- }
- } catch (JSchException e1) {
- throw new InvocationException(e1);
- } catch (ErrorDocumentServiceException e) {
- throw new InvocationException(e);
- }
-
- if (running != null) {
- running.disconnect();
- }
- if (stdInputStream != null) {
- try {
- stdInputStream.close();
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- }
-
- if (isRetrieveData()) {
- forgetRun();
- deleteDirectory(location, credentialManager);
-
- }
- return results;
- }
-
- @Override
- public String setOneInput(ReferenceService referenceService,
- T2Reference t2Reference, ScriptInput input)
- throws InvocationException {
- String target = null;
- String remoteName = null;
- if (input.isFile()) {
- remoteName = input.getTag();
- } else if (input.isTempFile()) {
- remoteName = "tempfile." + (nTempFiles++) + ".tmp";
-
- }
- if (input.isFile() || input.isTempFile()) {
- SshReference sshRef = getAsSshReference(referenceService,
- t2Reference, workerNode);
- target = workerNode.getDirectory() + tmpname + "/" + remoteName;
- logger.info("Target is " + target);
- if (sshRef != null) {
- if (!input.isForceCopy()) {
- String linkCommand = workerNode.getLinkCommand();
- if (linkCommand != null) {
- String actualLinkCommand = getActualOsCommand(
- linkCommand, sshRef.getFullPath(), remoteName,
- target);
- precedingCommands.add(actualLinkCommand);
- return target;
-
- }
- }
- String copyCommand = workerNode.getCopyCommand();
- if (copyCommand != null) {
- String actualCopyCommand = getActualOsCommand(copyCommand,
- sshRef.getFullPath(), remoteName, target);
- precedingCommands.add(actualCopyCommand);
- return target;
- }
- }
- try {
- ChannelSftp sftp = SshPool.getSftpPutChannel(workerNode,
- askUserForPw);
- synchronized (getNodeLock(workerNode)) {
- InputStream r = getAsStream(referenceService, t2Reference);
- sftp.put(r, target);
- r.close();
- }
- } catch (SftpException e) {
- throw new InvocationException(e);
- } catch (JSchException e) {
- throw new InvocationException(e);
- } catch (IOException e) {
- throw new InvocationException(e);
- }
- return target;
- } else {
- String value = (String) referenceService.renderIdentifier(
- t2Reference, String.class, this.getContext());
- return value;
-
- }
- }
-
- public SshReference getAsSshReference(ReferenceService referenceService,
- T2Reference t2Reference, SshNode workerNode) {
- Identified identified = referenceService.resolveIdentifier(t2Reference,
- null, null);
- if (identified instanceof ReferenceSet) {
- for (ExternalReferenceSPI ref : ((ReferenceSet) identified)
- .getExternalReferences()) {
- if (ref instanceof SshReference) {
- SshReference sshRef = (SshReference) ref;
- if (sshRef.getHost().equals(workerNode.getHost())) {
- return sshRef;
- }
- }
- }
- }
- return null;
- }
-
- private static Object getNodeLock(final SshNode node) {
- return getNodeLock(node.getHost());
- }
-
- private static synchronized Object getNodeLock(String hostName) {
- if (!nodeLock.containsKey(hostName)) {
- nodeLock.put(hostName, new Object());
- }
- return nodeLock.get(hostName);
- }
-
- @Override
- public void setStdIn(ReferenceService referenceService,
- T2Reference t2Reference) {
- stdInputStream = new BufferedInputStream(getAsStream(referenceService,
- t2Reference));
- }
-
- @Override
- public void rememberRun(String runId) {
- this.setRunId(runId);
- Set<SshUrl> directories = runIdToTempDir.get(runId);
- if (directories == null) {
- directories = Collections.synchronizedSet(new HashSet<SshUrl>());
- runIdToTempDir.put(runId, directories);
- }
- location = new SshUrl(workerNode);
- location.setSubDirectory(tmpname);
- directories.add(location);
- }
-
- private void forgetRun() {
- Set<SshUrl> directories = runIdToTempDir.get(getRunId());
- directories.remove(location);
- }
-
- public static void load(File directory) {
- File invocationsFile = new File(directory, SSH_INVOCATION_FILE);
- if (!invocationsFile.exists()) {
- return;
- }
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(invocationsFile));
- String line = reader.readLine();
- while (line != null) {
- String[] parts = line.split(" ");
- if (parts.length != 2) {
- break;
- }
- String runId = parts[0];
- String urlString = parts[1];
- Set<SshUrl> urls = runIdToTempDir.get(runId);
- if (urls == null) {
- urls = new HashSet<SshUrl>();
- runIdToTempDir.put(runId, urls);
- }
- URI uri = new URI(urlString);
- String fullPath = uri.getPath();
- String path = fullPath.substring(0, fullPath.lastIndexOf("/"));
- String tempDir = fullPath.substring(fullPath.lastIndexOf("/"));
- SshNode node = SshNodeFactory.getInstance().getSshNode(
- uri.getHost(), uri.getPort(), path);
- SshUrl newUrl = new SshUrl(node);
- newUrl.setSubDirectory(tempDir);
- urls.add(newUrl);
- line = reader.readLine();
- }
- } catch (FileNotFoundException e) {
- logger.error(e);
- } catch (URISyntaxException e) {
- logger.error(e);
- } catch (IOException e) {
- logger.error(e);
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- logger.error(e);
- }
- }
- }
- }
-
- public static void persist(File directory) {
- File invocationsFile = new File(directory, SSH_INVOCATION_FILE);
- BufferedWriter writer = null;
- try {
- writer = new BufferedWriter(new FileWriter(invocationsFile));
- for (String runId : runIdToTempDir.keySet()) {
- for (SshUrl url : runIdToTempDir.get(runId)) {
- writer.write(runId);
- writer.write(" ");
- writer.write(url.toString());
- writer.newLine();
- }
- }
- } catch (IOException e) {
- logger.error(e);
- } finally {
- if (writer != null) {
- try {
- writer.close();
- } catch (IOException e) {
- logger.error(e);
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java
deleted file mode 100755
index 1e6ef77..0000000
--- a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-
-package net.sf.taverna.t2.activities.externaltool;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-import net.sf.taverna.t2.annotation.Annotated;
-import net.sf.taverna.t2.annotation.annotationbeans.MimeType;
-import net.sf.taverna.t2.reference.ExternalReferenceSPI;
-import net.sf.taverna.t2.reference.ReferenceService;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.reference.WorkflowRunIdEntity;
-import net.sf.taverna.t2.workflowmodel.EditException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
-import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
-
-import org.apache.log4j.Logger;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
-
-/**
- * This is the main class of the use case activity plugin. Here we store the
- * configuration and the description of a use case activity, configure the input
- * and output port and provide use case activity invocation
- *
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolActivity extends AbstractAsynchronousActivity<ExternalToolActivityConfigurationBean> {
-
- public static final String URI = "http://ns.taverna.org.uk/2010/activity/tool";
-
- private static final String STDERR = "STDERR";
-
- private static final String STDOUT = "STDOUT";
-
- private static final String STDIN = "STDIN";
-
- private static Logger logger = Logger.getLogger(ExternalToolActivity.class);
-
- private ExternalToolActivityConfigurationBean configurationBean;
- private UseCaseDescription mydesc;
-
- private List<InvocationCreator> invocationCreators;
-
- /**
- * Add the given MIME types to the given input/output port.
- *
- * @param annotated
- * The port to which to add the MIME types.
- * @param mimeTypes
- * A list of Strings specifying the MIME types to add.
- */
- private void addMimeTypes(Annotated<?> annotated, List<String> mimeTypes) {
- for (String mimeType : mimeTypes) {
- MimeType mimeTypeAnnotation = new MimeType();
- mimeTypeAnnotation.setText(mimeType);
- try {
- getEdits().getAddAnnotationChainEdit(annotated, mimeTypeAnnotation).doEdit();
- } catch (EditException e) {
- Logger.getLogger(ExternalToolActivity.class).error(e);
- }
- }
- }
-
- /**
- * Create a new input port with the given name, depth, element class and
- * MIME types.
- *
- * @param portName
- * Name of the new port
- * @param portDepth
- * Depth of the new port
- * @param translatedElementClass
- * Which class of elements would this port like?
- * @param mimeTypes
- * Accepted mime types for this port
- */
- private void addInputWithMime(String portName, int portDepth, Class<?> translatedElementClass, List<String> mimeTypes) {
- List<Class<? extends ExternalReferenceSPI>> handledReferenceSchemes = Collections.emptyList();
- ActivityInputPort inputPort = getEdits().createActivityInputPort(portName, portDepth, true, handledReferenceSchemes,
- translatedElementClass);
- inputPorts.add(inputPort);
- if (mimeTypes != null) {
- addMimeTypes(inputPort, mimeTypes);
- }
- }
-
- /**
- * Create a new output port with the given MIME types
- *
- * @param portName
- * Name of the new port
- * @param portDepth
- * Depth of the new port
- * @param mimeTypes
- * Accepted mime types for this port
- */
- private void addOutputWithMime(String portName, int portDepth, List<String> mimeTypes) {
- ActivityOutputPort outputPort = getEdits().createActivityOutputPort(portName, portDepth, portDepth);
- outputPorts.add(outputPort);
- addMimeTypes(outputPort, mimeTypes);
- }
-
- @Override
- public void configure(ExternalToolActivityConfigurationBean bean) throws ActivityConfigurationException {
- this.configurationBean = bean;
-
- try {
- mydesc = bean.getUseCaseDescription();
-
- inputPorts.clear();
- outputPorts.clear();
-
- if (mydesc != null) {
-
- // loop through all script inputs and add them as taverna activity
- // input ports
- for (Map.Entry<String, ScriptInput> cur : mydesc.getInputs().entrySet()) {
- ScriptInputUser scriptInputUser = (ScriptInputUser) cur.getValue();
- // if the input port is a list, depth is 1 otherwise it is a
- // single element, therefore depth 0
- // if the input port is binary, we would like byte arrays,
- // otherwise we require strings
- addInputWithMime(cur.getKey(), scriptInputUser.isList() ? 1 : 0, cur.getValue().isBinary() ? byte[].class : String.class, scriptInputUser.getMime());
-
- }
- // loop through all script outputs and add them to taverna
- for (Map.Entry<String, ScriptOutput> cur : mydesc.getOutputs().entrySet()) {
- addOutputWithMime(cur.getKey(), 0, cur.getValue().getMime());
- }
- }
-
- if (mydesc.isIncludeStdIn()) {
- addInputWithMime(STDIN, 0, byte[].class, null);
- }
- if (mydesc.isIncludeStdOut()) {
- addOutput(STDOUT, 0);
- }
- if (mydesc.isIncludeStdErr()) {
- addOutput(STDERR, 0);
- }
- } catch (Exception e) {
- throw new ActivityConfigurationException("Couldn't create ExternalTool Activity", e);
- }
- }
-
- @Override
- public ExternalToolActivityConfigurationBean getConfiguration() {
- if (configurationBean != null) {
- InvocationGroup invocationGroup = configurationBean.getInvocationGroup();
- if (invocationGroup == null) {
- if (configurationBean.getMechanism() != null) {
- configurationBean.convertMechanismToDetails();
- }
- } else {
- if (invocationGroup.getMechanism() != null) {
- invocationGroup.convertMechanismToDetails();
- }
- }
- }
- return configurationBean;
- }
-
- public ExternalToolActivityConfigurationBean getConfigurationNoConversion() {
- return configurationBean;
- }
-
- public InvocationMechanism recreateMechanism() {
- if (configurationBean.getInvocationGroup() != null) {
- if (configurationBean.getInvocationGroup().getMechanism() == null) {
- configurationBean.getInvocationGroup().convertDetailsToMechanism();
- }
- return configurationBean.getInvocationGroup().getMechanism();
- } else {
- if (configurationBean.getMechanism() == null) {
- configurationBean.convertDetailsToMechanism();
- }
- return configurationBean.getMechanism();
- }
- }
-
- @Override
- public void executeAsynch(final Map<String, T2Reference> data, final AsynchronousActivityCallback callback) {
-
- callback.requestRun(new Runnable() {
-
- public void run() {
- ReferenceService referenceService = callback.getContext().getReferenceService();
- UseCaseInvocation invoke = null;
-
- /**
- * Note that retrying needs to be either done via Taverna's retry mechanism or as part of the specific invocation
- */
- try {
-
- invoke = getInvocation(recreateMechanism(),
- configurationBean.getUseCaseDescription(), data, referenceService);
- if (invoke == null) {
- logger.error("Invoke is null");
- callback.fail("No invocation mechanism found");
- }
- String runId = callback.getContext()
- .getEntities(WorkflowRunIdEntity.class).get(0)
- .getWorkflowRunId();
- logger.info("Run id is " + runId);
- invoke.rememberRun(runId);
-
- invoke.setContext(callback.getContext());
-
- // look at every use dynamic case input
- for (String cur : invoke.getInputs()) {
- if (!cur.equals(STDIN)) {
- invoke.setInput(cur, referenceService,
- data.get(cur));
- }
- }
-
- if (mydesc.isIncludeStdIn() && (data.get(STDIN) != null)) {
- invoke.setStdIn(referenceService, data.get(STDIN));
- }
-
- // submit the use case to its invocation mechanism
- invoke.submit_generate_job(referenceService);
-
- // retrieve the result.
- Map<String, Object> downloads = invoke
- .submit_wait_fetch_results(referenceService);
- Map<String, T2Reference> result = new HashMap<String, T2Reference>();
- for (Map.Entry<String, Object> cur : downloads.entrySet()) {
- Object value = cur.getValue();
-
- // register the result value with taverna
- T2Reference reference = referenceService.register(
- value, 0, true, callback.getContext());
-
- // store the reference into the activity result
- // set
- result.put(cur.getKey(), reference);
- }
- callback.receiveResult(result, new int[0]);
- } catch (InvocationException e) {
- callback.fail(e.getMessage(), e);
- }
- }
-
- });
-
- }
-
- public void setInvocationCreators(List<InvocationCreator> invocationCreators) {
- this.invocationCreators = invocationCreators;
- }
-
- private UseCaseInvocation getInvocation(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
- UseCaseInvocation result = null;
- InvocationCreator creator = null;
- for (InvocationCreator c : invocationCreators) {
- if (c.canHandle(mechanism.getType())) {
- creator = c;
- break;
- }
- }
- if (creator != null) {
- result = creator.convert(mechanism, description, data, referenceService);
- }
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java
deleted file mode 100755
index ce3387b..0000000
--- a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package net.sf.taverna.t2.activities.externaltool;
-
-import java.util.List;
-
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
-import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
-import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-@ConfigurationBean(uri = ExternalToolActivity.URI + "#Config")
-public final class ExternalToolActivityConfigurationBean {
-
- private InvocationGroup group;
-
- private String mechanismType;
-
- private String mechanismName;
-
- private String mechanismXML;
-
- private transient InvocationMechanism mechanism;
-
- protected String repositoryUrl;
- protected String externaltoolid;
- protected UseCaseDescription useCaseDescription = null;
- private boolean edited = false;
-
- private List<MechanismCreator> mechanismCreators;
-
- public boolean isEdited() {
- return edited;
- }
-
- public ExternalToolActivityConfigurationBean() {
- }
-
- public InvocationGroup getInvocationGroup() {
- return group;
- }
-
- @ConfigurationProperty(name = "invocationGroup", label = "InvocationGroup", required=false)
- public void setInvocationGroup(
- InvocationGroup group) {
- this.group = group;
- clearMechanismInformation();
- }
-
- private void clearMechanismInformation() {
- this.mechanismType = null;
- this.mechanismName = null;
- this.mechanismXML = null;
- this.mechanism = null;
- }
-
- /**
- * @return the repositoryUrl
- */
- public String getRepositoryUrl() {
- return repositoryUrl;
- }
-
- /**
- * @param repositoryUrl the repositoryUrl to set
- */
- @ConfigurationProperty(name = "repositoryUrl", label = "Repository URL", required=false)
- public void setRepositoryUrl(String repositoryUrl) {
- this.repositoryUrl = repositoryUrl;
- }
-
- /**
- * @return the externaltoolid
- */
- public String getExternaltoolid() {
- return externaltoolid;
- }
-
- /**
- * @param externaltoolid the externaltoolid to set
- */
- @ConfigurationProperty(name = "toolId", label = "Tool ID")
- public void setExternaltoolid(String externaltoolid) {
- this.externaltoolid = externaltoolid;
- }
-
- /**
- * @return the useCaseDescription
- */
- public UseCaseDescription getUseCaseDescription() {
- return useCaseDescription;
- }
-
- /**
- * @param useCaseDescription the useCaseDescription to set
- */
- @ConfigurationProperty(name = "toolDescription", label = "Tool Description")
- public void setUseCaseDescription(UseCaseDescription useCaseDescription) {
- this.useCaseDescription = useCaseDescription;
- }
-
- @ConfigurationProperty(name = "edited", label = "Edited", required=false)
- public void setEdited(boolean b) {
- this.edited = b;
- }
-
- /**
- * Note this also sets the details
- *
- * @param mechanism the mechanism to set
- */
- public void setMechanism(InvocationMechanism mechanism) {
- this.mechanism = mechanism;
- convertMechanismToDetails();
- this.group = null;
- }
-
- public void convertMechanismToDetails() {
- if (mechanism != null) {
- this.setMechanismXML(mechanism.getXML());
- this.setMechanismName(mechanism.getName());
- this.setMechanismType(mechanism.getType());
- }
- }
-
- /**
- * @param mechanismType the mechanismType to set
- */
- @ConfigurationProperty(name = "mechanismType", label = "Mechanism Type", required=false)
- public void setMechanismType(String mechanismType) {
- this.mechanismType = mechanismType;
- }
-
- /**
- * @param mechanismName the mechanismName to set
- */
- @ConfigurationProperty(name = "mechanismName", label = "Mechanism Name", required=false)
- public void setMechanismName(String mechanismName) {
- this.mechanismName = mechanismName;
- }
-
- /**
- * @param mechanismXML the mechanismXML to set
- */
- @ConfigurationProperty(name = "mechanismXML", label = "Mechanism XML", required=false)
- public void setMechanismXML(String mechanismXML) {
- this.mechanismXML = mechanismXML;
- }
-
- public void convertDetailsToMechanism() {
- if (mechanismXML != null) {
- for (MechanismCreator mc : mechanismCreators) {
- if (mc.canHandle(getMechanismType())) {
- mechanism = mc.convert(getMechanismXML(), getMechanismName());
- break;
- }
- }
- }
- }
-
- /**
- * @return the mechanism
- */
- public InvocationMechanism getMechanism() {
-
- return mechanism;
- }
-
- /**
- * @return the mechanismType
- */
- public String getMechanismType() {
- return mechanismType;
- }
-
- /**
- * @return the mechanismName
- */
- public String getMechanismName() {
- return mechanismName;
- }
-
- /**
- * @return the mechanismXML
- */
- public String getMechanismXML() {
- return mechanismXML;
- }
-
- public void setMechanismCreators(List<MechanismCreator> mechanismCreators) {
- this.mechanismCreators = mechanismCreators;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/2e8f451e/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java
----------------------------------------------------------------------
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java
deleted file mode 100644
index dc27b11..0000000
--- a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2011 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.externaltool;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.List;
-import java.util.Set;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
-import net.sf.taverna.t2.workflowmodel.Edits;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
-
-/**
- * An {@link ActivityFactory} for creating <code>ExternalToolActivity</code>.
- *
- * @author David Withers
- */
-public class ExternalToolActivityFactory implements ActivityFactory {
-
- private List<InvocationCreator> invocationCreators;
-
- private List<MechanismCreator> mechanismCreators;
-
- private Edits edits;
-
- @Override
- public ExternalToolActivity createActivity() {
- ExternalToolActivity activity = new ExternalToolActivity();
- activity.setInvocationCreators(invocationCreators);
- activity.setEdits(edits);
- return activity;
- }
-
- @Override
- public URI getActivityType() {
- return URI.create(ExternalToolActivity.URI);
- }
-
- @Override
- public JsonNode getActivityConfigurationSchema() {
- ObjectMapper objectMapper = new ObjectMapper();
- try {
- return objectMapper.readTree(getClass().getResource("/schema.json"));
- } catch (IOException e) {
- return objectMapper.createObjectNode();
- }
- }
-
- public void setInvocationCreators(List<InvocationCreator> invocationCreators) {
- this.invocationCreators = invocationCreators;
- }
-
- public void setMechanismCreators(List<MechanismCreator> mechanismCreators) {
- this.mechanismCreators = mechanismCreators;
- }
-
- @Override
- public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
- throws ActivityConfigurationException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
- throws ActivityConfigurationException {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void setEdits(Edits edits) {
- this.edits = edits;
- }
-
-}