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

Reply via email to