You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/17 12:37:27 UTC

[67/70] [abbrv] incubator-taverna-common-activities git commit: taverna-interaction-activity/

taverna-interaction-activity/


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

Branch: refs/heads/master
Commit: 95509a51d6dd2c384e2e727b56041f89b2917fd5
Parents: 2231a5f
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu Jan 29 10:13:52 2015 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu Jan 29 10:13:52 2015 +0000

----------------------------------------------------------------------
 .gitignore                                      |  24 -
 .travis.yml                                     |   1 -
 README.md                                       |   3 -
 pom.xml                                         | 191 ------
 .../t2/activities/interaction/FeedReader.java   |  87 ---
 .../interaction/InteractionActivity.java        | 156 -----
 .../interaction/InteractionActivityFactory.java | 135 ----
 .../InteractionActivityHealthChecker.java       |  39 --
 .../InteractionActivityRunnable.java            | 329 ---------
 .../interaction/InteractionActivityType.java    |  15 -
 .../InteractionCallbackRequestor.java           | 193 ------
 .../interaction/InteractionRecorder.java        | 163 -----
 .../interaction/InteractionRequestor.java       |  38 -
 .../InteractionRunDeletionListener.java         |  31 -
 .../activities/interaction/InteractionType.java |  14 -
 .../interaction/InteractionUtils.java           | 127 ----
 .../interaction/ResponseFeedListener.java       | 159 -----
 .../activities/interaction/atom/AtomUtils.java  |  83 ---
 .../feed/ShowRequestFeedListener.java           |  65 --
 .../jetty/HackedFilesystemAdapter.java          | 263 -------
 .../interaction/jetty/InteractionJetty.java     | 203 ------
 .../preference/InteractionPreference.java       | 268 --------
 .../velocity/InteractionVelocity.java           | 130 ----
 .../interaction/velocity/NotifyChecker.java     |  26 -
 .../interaction/velocity/NotifyDirective.java   |  58 --
 .../interaction/velocity/ProduceChecker.java    |  35 -
 .../interaction/velocity/ProduceDirective.java  |  58 --
 .../interaction/velocity/RequireChecker.java    |  35 -
 .../interaction/velocity/RequireDirective.java  |  58 --
 src/main/resources/Authorize.vm                 |  73 --
 ...taverna.t2.activities.interaction.FeedReader |   2 -
 ...taverna.t2.workflowmodel.RunDeletionListener |   1 -
 ...averna.t2.workflowmodel.health.HealthChecker |   1 -
 .../interaction-activity-context-osgi.xml       |  21 -
 .../spring/interaction-activity-context.xml     |  61 --
 src/main/resources/MasterPassword.vm            |  47 --
 src/main/resources/TrustedCertificate.vm        |  57 --
 src/main/resources/TruststorePassword.vm        |  48 --
 src/main/resources/UsernamePassword.vm          |  57 --
 .../resources/abdera/adapter/feed.properties    |   5 -
 src/main/resources/ask.vm                       |  51 --
 src/main/resources/choose.vm                    |  74 --
 src/main/resources/index                        |  15 -
 src/main/resources/interaction.css              |   5 -
 src/main/resources/interaction.vm               | 168 -----
 src/main/resources/json2.js                     | 487 -------------
 src/main/resources/notify.vm                    |  39 --
 src/main/resources/pmrpc.js                     | 686 -------------------
 src/main/resources/schema.json                  |  31 -
 src/main/resources/select.vm                    |  61 --
 src/main/resources/tell.vm                      |  54 --
 src/main/resources/warn.vm                      |  54 --
 taverna-interaction-activity/pom.xml            | 191 ++++++
 .../t2/activities/interaction/FeedReader.java   |  87 +++
 .../interaction/InteractionActivity.java        | 156 +++++
 .../interaction/InteractionActivityFactory.java | 135 ++++
 .../InteractionActivityHealthChecker.java       |  39 ++
 .../InteractionActivityRunnable.java            | 329 +++++++++
 .../interaction/InteractionActivityType.java    |  15 +
 .../InteractionCallbackRequestor.java           | 193 ++++++
 .../interaction/InteractionRecorder.java        | 163 +++++
 .../interaction/InteractionRequestor.java       |  38 +
 .../InteractionRunDeletionListener.java         |  31 +
 .../activities/interaction/InteractionType.java |  14 +
 .../interaction/InteractionUtils.java           | 127 ++++
 .../interaction/ResponseFeedListener.java       | 159 +++++
 .../activities/interaction/atom/AtomUtils.java  |  83 +++
 .../feed/ShowRequestFeedListener.java           |  65 ++
 .../jetty/HackedFilesystemAdapter.java          | 263 +++++++
 .../interaction/jetty/InteractionJetty.java     | 203 ++++++
 .../preference/InteractionPreference.java       | 268 ++++++++
 .../velocity/InteractionVelocity.java           | 130 ++++
 .../interaction/velocity/NotifyChecker.java     |  26 +
 .../interaction/velocity/NotifyDirective.java   |  58 ++
 .../interaction/velocity/ProduceChecker.java    |  35 +
 .../interaction/velocity/ProduceDirective.java  |  58 ++
 .../interaction/velocity/RequireChecker.java    |  35 +
 .../interaction/velocity/RequireDirective.java  |  58 ++
 .../src/main/resources/Authorize.vm             |  73 ++
 ...taverna.t2.activities.interaction.FeedReader |   2 +
 ...taverna.t2.workflowmodel.RunDeletionListener |   1 +
 ...averna.t2.workflowmodel.health.HealthChecker |   1 +
 .../interaction-activity-context-osgi.xml       |  21 +
 .../spring/interaction-activity-context.xml     |  61 ++
 .../src/main/resources/MasterPassword.vm        |  47 ++
 .../src/main/resources/TrustedCertificate.vm    |  57 ++
 .../src/main/resources/TruststorePassword.vm    |  48 ++
 .../src/main/resources/UsernamePassword.vm      |  57 ++
 .../resources/abdera/adapter/feed.properties    |   5 +
 .../src/main/resources/ask.vm                   |  51 ++
 .../src/main/resources/choose.vm                |  74 ++
 .../src/main/resources/index                    |  15 +
 .../src/main/resources/interaction.css          |   5 +
 .../src/main/resources/interaction.vm           | 168 +++++
 .../src/main/resources/json2.js                 | 487 +++++++++++++
 .../src/main/resources/notify.vm                |  39 ++
 .../src/main/resources/pmrpc.js                 | 686 +++++++++++++++++++
 .../src/main/resources/schema.json              |  31 +
 .../src/main/resources/select.vm                |  61 ++
 .../src/main/resources/tell.vm                  |  54 ++
 .../src/main/resources/warn.vm                  |  54 ++
 101 files changed, 5057 insertions(+), 5085 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ebe0e5b..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# ignore project files #
-.classpath
-.project
-.settings/
-catalog-v001.xml
-
-# ignore target files #
-target/
-bin/
-build/
-dist/
-apidoc/
-*.swp
-
-# ignore svn files if there
-.svn
-
-# ignore log files #
-*.log
-/logs/*
-*/logs/*
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index dff5f3a..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1 +0,0 @@
-language: java

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
deleted file mode 100644
index 72becd8..0000000
--- a/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Taverna Workflow system Interaction Activity: data model and execution implementation
-
-This code was previously hosted at http://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.activities/

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index de9cbbd..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-                <groupId>net.sf.taverna</groupId>
-                <artifactId>taverna-parent</artifactId>
-                <version>3.0.1-SNAPSHOT</version>
-	</parent>
-	<groupId>net.sf.taverna.t2.activities</groupId>
-	<artifactId>interaction-activity</artifactId>
-	<version>2.0.l-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>Taverna Interaction activity</name>
-	
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<configuration>
-					<instructions>
-					<!--  Export nothing -->
-						<Export-Package></Export-Package>
-						<Embed-Transitive>true</Embed-Transitive>
-						<Embed-Dependency>webdav-servlet</Embed-Dependency>
-					</instructions>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	
-	<properties>
-		<jetty.version>6.1.24</jetty.version>
-		<abdera.version>1.1.3</abdera.version>
-		<jackson.version>1.9.13</jackson.version>
-		<velocity.version>1.7</velocity.version>
-	</properties>
-
-	<dependencies>
-	
-			<dependency>
-			<groupId>net.sf.taverna.t2.core</groupId>
-			<artifactId>workflowmodel-api</artifactId>
-			<version>${t2.core.version}</version>
-		</dependency>
-		
-				<dependency>
-		  <groupId>net.sf.taverna.t2.security</groupId>
-		  <artifactId>credential-manager</artifactId>
-		  <version>${t2.core.version}</version>
-		</dependency>
-
-	<dependency>
-		<groupId>net.sf.taverna.t2.activities</groupId>
-		<artifactId>activity-test-utils</artifactId>
-		<version>${t2.activities.version}</version>
-		<scope>test</scope>
-	</dependency>
-
-	<dependency>
-    <groupId>commons-io</groupId>
-		<artifactId>commons-io</artifactId>
-		<version>${commons.io.version}</version>
-	</dependency>
-
-	<dependency>
-    <groupId>commons-codec</groupId>
-    <artifactId>commons-codec</artifactId>
-		<version>${commons.codec.version}</version>
-	</dependency>
-				
-
-		
-		<!--  Mortbay jetty artifacts are bundles -->
-		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
-			<artifactId>jetty</artifactId>
-			<version>${jetty.version}</version>
-		</dependency>
-		
-		<dependency>
-			<groupId>org.mortbay.jetty</groupId>
-			<artifactId>jetty-util</artifactId>
-			<version>${jetty.version}</version>
-		</dependency>
-		
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-			<version>2.5</version>
-		</dependency>
-
-		<dependency>
-			<groupId>net.sf.webdav-servlet</groupId>
-			<artifactId>webdav-servlet</artifactId>
-			<version>2.0</version>
-		</dependency>	
-		
-<!--  The abdera artifacts are bundles -->
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-core</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-		
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-client</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-server</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-extensions-main</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-extensions-html</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-extensions-json</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-i18n</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.abdera</groupId>
-			<artifactId>abdera-parser</artifactId>
-			<version>${abdera.version}</version>
-		</dependency>
-
-<!--  The velocity artifact is a bundle -->
-		<dependency>
-			<groupId>org.apache.velocity</groupId>
-			<artifactId>velocity</artifactId>
-			<version>${velocity.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-                        <version>${junit.version}</version>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-        <repositories>
-                <repository>
-                        <releases />
-                        <snapshots>
-                                <enabled>false</enabled>
-                        </snapshots>
-                        <id>mygrid-repository</id>
-                        <name>myGrid Repository</name>
-                        <url>http://www.mygrid.org.uk/maven/repository</url>
-                </repository>
-                <repository>
-                        <releases>
-                                <enabled>false</enabled>
-                        </releases>
-                        <snapshots />
-                        <id>mygrid-snapshot-repository</id>
-                        <name>myGrid Snapshot Repository</name>
-                        <url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-                </repository>
-        </repositories>
-        <scm>
-                <connection>scm:git:https://github.com/taverna/taverna-interaction-activity.git</connection>
-                <developerConnection>scm:git:ssh://git@github.com/taverna/taverna-interaction-activity.git</developerConnection>
-                <url>https://github.com/taverna/taverna-interaction-activity/</url>
-                <tag>HEAD</tag>
-        </scm>
-	
-	
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java b/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java
deleted file mode 100644
index 7be03df..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package net.sf.taverna.t2.activities.interaction;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Date;
-
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-
-import org.apache.abdera.model.Document;
-import org.apache.abdera.model.Entry;
-import org.apache.abdera.model.Feed;
-import org.apache.abdera.parser.ParseException;
-import org.apache.abdera.parser.Parser;
-import org.apache.abdera.parser.stax.FOMParser;
-import org.apache.log4j.Logger;
-
-public abstract class FeedReader extends Thread {
-
-	static final Logger logger = Logger.getLogger(FeedReader.class);
-
-	public FeedReader(final String name) {
-		super(name);
-		this.setDaemon(true);
-	}
-
-	protected abstract void considerEntry(Entry entry);
-
-	@Override
-	public void run() {
-		try {
-			final Parser parser = new FOMParser();
-			Date lastCheckedDate = new Date();
-			while (true) {
-				try {
-					sleep(5000);
-				} catch (final InterruptedException e1) {
-					logger.error(e1);
-				}
-				InputStream openStream = null;
-				try {
-					final Date newLastCheckedDate = new Date();
-					final URL url = getInteractionPreference().getFeedUrl();
-					openStream = url.openStream();
-					final Document<Feed> doc = parser.parse(openStream,
-							url.toString());
-					final Feed feed = doc.getRoot().sortEntriesByEdited(true);
-
-					for (final Entry entry : feed.getEntries()) {
-
-						Date d = entry.getEdited();
-						if (d == null) {
-							d = entry.getUpdated();
-						}
-						if (d == null) {
-							d = entry.getPublished();
-						}
-						 if (d.before(lastCheckedDate)) {
-						 break;
-						 }
-						this.considerEntry(entry);
-					}
-					lastCheckedDate = newLastCheckedDate;
-				} catch (final MalformedURLException e) {
-					logger.error(e);
-				} catch (final ParseException e) {
-					logger.error(e);
-				} catch (final IOException e) {
-					logger.error(e);
-				} finally {
-					try {
-						if (openStream != null) {
-							openStream.close();
-						}
-					} catch (final IOException e) {
-						logger.error(e);
-					}
-				}
-			}
-		} catch (final Exception e) {
-			logger.error(e);
-		}
-	}
-
-	protected abstract InteractionPreference getInteractionPreference();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java
deleted file mode 100644
index cfc2182..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package net.sf.taverna.t2.activities.interaction;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-import net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity;
-import net.sf.taverna.t2.activities.interaction.velocity.NotifyChecker;
-import net.sf.taverna.t2.activities.interaction.velocity.ProduceChecker;
-import net.sf.taverna.t2.activities.interaction.velocity.RequireChecker;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-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.AsynchronousActivity;
-import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
-import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean;
-import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean;
-
-import org.apache.log4j.Logger;
-import org.apache.velocity.Template;
-import org.apache.velocity.app.Velocity;
-import org.apache.velocity.exception.ParseErrorException;
-import org.apache.velocity.exception.ResourceNotFoundException;
-import org.apache.velocity.runtime.parser.node.ASTprocess;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-public final class InteractionActivity extends
-		AbstractAsynchronousActivity<JsonNode>
-		implements AsynchronousActivity<JsonNode> {
-	
-	public static final String URI = "http://ns.taverna.org.uk/2010/activity/interaction";
-
-	@SuppressWarnings("unused")
-	private static final Logger logger = Logger
-			.getLogger(InteractionActivity.class);
-
-	private Template presentationTemplate;
-
-	private final Map<String, Integer> inputDepths = new HashMap<String, Integer>();
-	private final Map<String, Integer> outputDepths = new HashMap<String, Integer>();
-
-	private CredentialManager credentialManager;
-
-	private InteractionRecorder interactionRecorder;
-
-	private InteractionUtils interactionUtils;
-
-	private InteractionJetty interactionJetty;
-
-	private InteractionPreference interactionPreference;
-
-	private ResponseFeedListener responseFeedListener;
-
-	private JsonNode json;
-
-	private InteractionVelocity interactionVelocity;
-
-	public InteractionActivity(final CredentialManager credentialManager,
-			final InteractionRecorder interactionRecorder,
-			final InteractionUtils interactionUtils,
-			final InteractionJetty interactionJetty,
-			final InteractionPreference interactionPreference,
-			final ResponseFeedListener responseFeedListener,
-			final InteractionVelocity interactionVelocity) {
-		this.credentialManager = credentialManager;
-		this.interactionRecorder = interactionRecorder;
-		this.interactionUtils = interactionUtils;
-		this.interactionJetty = interactionJetty;
-		this.interactionPreference = interactionPreference;
-		this.responseFeedListener = responseFeedListener;
-		this.interactionVelocity = interactionVelocity;
-		this.json = null;
-	}
-
-	@Override
-	public void configure(final JsonNode json)
-			throws ActivityConfigurationException {
-		
-		this.json = json;
-	}
-
-	@Override
-	public void executeAsynch(final Map<String, T2Reference> inputs,
-			final AsynchronousActivityCallback callback) {
-		// Don't execute service directly now, request to be run ask to be run
-		// from thread pool and return asynchronously
-		final InteractionRequestor requestor = new InteractionCallbackRequestor(
-				this, callback, inputs);
-		callback.requestRun(new InteractionActivityRunnable(requestor,
-				this.presentationTemplate,
-				this.credentialManager,
-				this.interactionRecorder,
-				this.interactionUtils,
-				this.interactionJetty,
-				this.interactionPreference,
-				this.responseFeedListener,
-				this.interactionVelocity));
-	}
-
-	@Override
-	public JsonNode getConfiguration() {
-		return this.json;
-	}
-
-	public ActivityInputPort getInputPort(final String name) {
-		for (final ActivityInputPort port : this.getInputPorts()) {
-			if (port.getName().equals(name)) {
-				return port;
-			}
-		}
-		return null;
-	}
-
-	InteractionActivityType getInteractionActivityType() {
-		JsonNode subNode = json.get("interactivityActivityType");
-		if (subNode == null) {
-			return InteractionActivityType.LocallyPresentedHtml;
-		}
-		String textValue = subNode.textValue();
-		if (textValue == null) {
-			return InteractionActivityType.LocallyPresentedHtml;
-		}
-		if ("VelocityTemplate".equals(textValue)) {
-			return InteractionActivityType.VelocityTemplate;
-		}
-		return InteractionActivityType.LocallyPresentedHtml;
-	}
-	
-
-	 String getPresentationOrigin() {
-		JsonNode subNode = json.get("presentationOrigin");
-		if (subNode == null) {
-			return null;
-		}
-		String textValue = subNode.textValue();
-		if (textValue == null) {
-			return null;			
-		}
-		return textValue;
-	}
-
-	public boolean isProgressNotification() {
-		JsonNode subNode = json.get("progressNotification");
-		if (subNode == null) {
-			return false;
-		}
-		return subNode.booleanValue();
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java
deleted file mode 100644
index 911d860..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Set;
-
-import net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-import net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-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;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * @author alanrw
- *
- */
-public class InteractionActivityFactory implements ActivityFactory {
-	
-	private CredentialManager credentialManager;
-	
-	private InteractionRecorder interactionRecorder;
-	
-	private InteractionUtils interactionUtils;
-
-	private InteractionJetty interactionJetty;
-
-	private InteractionPreference interactionPreference;
-
-	private ResponseFeedListener responseFeedListener;
-
-	private InteractionVelocity interactionVelocity;
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#createActivity()
-	 */
-	@Override
-	public InteractionActivity createActivity() {
-		return new InteractionActivity(this.credentialManager,
-				this.interactionRecorder,
-				this.interactionUtils,
-				this.interactionJetty,
-				this.interactionPreference,
-				this.responseFeedListener,
-				this.interactionVelocity);
-	}
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getActivityType()
-	 */
-	@Override
-	public URI getActivityType() {
-		return URI.create(InteractionActivity.URI);
-	}
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getActivityConfigurationSchema()
-	 */
-	@Override
-	public JsonNode getActivityConfigurationSchema() {
-		ObjectMapper objectMapper = new ObjectMapper();
-		try {
-			return objectMapper.readTree(getClass().getResource("/schema.json"));
-		} catch (IOException e) {
-			return objectMapper.createObjectNode();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getInputPorts(com.fasterxml.jackson.databind.JsonNode)
-	 */
-	@Override
-	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
-			throws ActivityConfigurationException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getOutputPorts(com.fasterxml.jackson.databind.JsonNode)
-	 */
-	@Override
-	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
-			throws ActivityConfigurationException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/**
-	 * @return the credentialManager
-	 */
-	public CredentialManager getCredentialManager() {
-		return credentialManager;
-	}
-
-	/**
-	 * @param credentialManager the credentialManager to set
-	 */
-	public void setCredentialManager(CredentialManager credentialManager) {
-		this.credentialManager = credentialManager;
-	}
-
-	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
-		this.interactionRecorder = interactionRecorder;
-	}
-
-	public void setInteractionUtils(InteractionUtils interactionUtils) {
-		this.interactionUtils = interactionUtils;
-	}
-
-	public void setInteractionJetty(InteractionJetty interactionJetty) {
-		this.interactionJetty = interactionJetty;
-	}
-
-	public void setInteractionPreference(InteractionPreference interactionPreference) {
-		this.interactionPreference = interactionPreference;
-	}
-
-	public void setResponseFeedListener(ResponseFeedListener responseFeedListener) {
-		this.responseFeedListener = responseFeedListener;
-	}
-
-	public void setInteractionVelocity(InteractionVelocity interactionVelocity) {
-		this.interactionVelocity = interactionVelocity;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java
deleted file mode 100644
index 555fe6a..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package net.sf.taverna.t2.activities.interaction;
-
-import java.util.List;
-
-import net.sf.taverna.t2.visit.VisitReport;
-import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
-import net.sf.taverna.t2.workflowmodel.health.RemoteHealthChecker;
-
-/**
- * Example health checker
- * 
- */
-public class InteractionActivityHealthChecker implements
-		HealthChecker<InteractionActivity> {
-
-	@Override
-	public boolean canVisit(final Object o) {
-		return o instanceof InteractionActivity;
-	}
-
-	@Override
-	public boolean isTimeConsuming() {
-		return true;
-	}
-
-	@Override
-	public VisitReport visit(final InteractionActivity activity,
-			final List<Object> ancestry) {
-
-		if (activity.getInteractionActivityType().equals(
-				InteractionActivityType.LocallyPresentedHtml)) {
-			return RemoteHealthChecker.contactEndpoint(activity,
-					activity.getPresentationOrigin());
-		}
-
-		return null;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java
deleted file mode 100644
index 342eeda..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Date;
-import java.util.Map;
-import java.util.UUID;
-
-import net.sf.taverna.t2.activities.interaction.atom.AtomUtils;
-import net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-import net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-
-import org.apache.abdera.Abdera;
-import org.apache.abdera.i18n.text.Normalizer;
-import org.apache.abdera.i18n.text.Sanitizer;
-import org.apache.abdera.model.Element;
-import org.apache.abdera.model.Entry;
-import org.apache.abdera.parser.stax.FOMElement;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.log4j.Logger;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-
-public final class InteractionActivityRunnable implements Runnable {
-
-	private static final Logger logger = Logger
-			.getLogger(InteractionActivityRunnable.class);
-
-	private static final Abdera ABDERA = Abdera.getInstance();
-
-	private final Template presentationTemplate;
-
-	private final InteractionRequestor requestor;
-
-	private CredentialManager credentialManager;
-
-	private InteractionRecorder interactionRecorder;
-	
-	private InteractionUtils interactionUtils;
-
-	private InteractionJetty interactionJetty;
-
-	private InteractionPreference interactionPreference;
-
-	private ResponseFeedListener responseFeedListener;
-
-	private InteractionVelocity interactionVelocity;
-
-	public InteractionActivityRunnable(final InteractionRequestor requestor,
-			final Template presentationTemplate,
-			final CredentialManager credentialManager,
-			final InteractionRecorder interactionRecorder,
-			final InteractionUtils interactionUtils,
-			final InteractionJetty interactionJetty,
-			final InteractionPreference interactionPreference,
-			final ResponseFeedListener responseFeedListener,
-			final InteractionVelocity interactionVelocity) {
-		this.requestor = requestor;
-		this.presentationTemplate = presentationTemplate;
-		this.credentialManager = credentialManager;
-		this.interactionRecorder = interactionRecorder;
-		this.interactionUtils = interactionUtils;
-		this.interactionJetty = interactionJetty;
-		this.interactionPreference = interactionPreference;
-		this.responseFeedListener = responseFeedListener;
-		this.interactionVelocity = interactionVelocity;
-	}
-
-	@Override
-	public void run() {
-		/*
-		 * InvocationContext context = callback.getContext();
-		 */
-		final String runId = InteractionUtils.getUsedRunId(this.requestor
-				.getRunId());
-
-		final String id = Sanitizer.sanitize(UUID.randomUUID().toString(), "",
-				true, Normalizer.Form.D);
-
-		final Map<String, Object> inputData = this.requestor.getInputData();
-
-		if (interactionPreference.getUseJetty()) {
-			interactionJetty.startJettyIfNecessary(credentialManager);
-		}
-		interactionJetty.startListenersIfNecessary();
-		try {
-			interactionUtils.copyFixedFile("pmrpc.js");
-			interactionUtils.copyFixedFile("interaction.css");
-		} catch (final IOException e1) {
-			logger.error(e1);
-			this.requestor.fail("Unable to copy necessary fixed file");
-			return;
-		}
-		synchronized (ABDERA) {
-			final Entry interactionNotificationMessage = this
-					.createBasicInteractionMessage(id, runId);
-
-			for (final String key : inputData.keySet()) {
-				final Object value = inputData.get(key);
-				if (value instanceof byte[]) {
-					final String replacementUrl = interactionPreference
-							.getPublicationUrlString(id, key);
-					final ByteArrayInputStream bais = new ByteArrayInputStream(
-							(byte[]) value);
-					try {
-						interactionUtils.publishFile(replacementUrl, bais,
-								runId, id);
-						bais.close();
-						inputData.put(key, replacementUrl);
-					} catch (final IOException e) {
-						logger.error(e);
-						this.requestor.fail("Unable to publish to " + replacementUrl);
-						return;
-					}
-				}
-			}
-
-			final String inputDataString = this.createInputDataJson(inputData);
-			if (inputDataString == null) {
-				return;
-			}
-			final String inputDataUrl = interactionPreference
-					.getInputDataUrlString(id);
-			try {
-				interactionUtils.publishFile(inputDataUrl, inputDataString,
-						runId, id);
-			} catch (final IOException e) {
-				logger.error(e);
-				this.requestor.fail("Unable to publish to " + inputDataUrl);
-				return;
-			}
-
-			String outputDataUrl = null;
-
-			if (!this.requestor.getInteractionType().equals(
-					InteractionType.Notification)) {
-				outputDataUrl = interactionPreference
-						.getOutputDataUrlString(id);
-			}
-			final String interactionUrlString = this.generateHtml(inputDataUrl,
-					outputDataUrl, inputData, runId, id);
-
-			try {
-				this.postInteractionMessage(id, interactionNotificationMessage,
-						interactionUrlString, runId);
-			} catch (IOException e) {
-				logger.error(e);
-				this.requestor.fail("Unable to post message");
-				return;
-			}
-			if (!this.requestor.getInteractionType().equals(
-					InteractionType.Notification)) {
-				responseFeedListener.registerInteraction(
-						interactionNotificationMessage, this.requestor);
-			} else {
-				this.requestor.carryOn();
-
-			}
-		}
-	}
-
-	private String createInputDataJson(final Map<String, Object> inputData) {
-		try {
-			return InteractionUtils.objectToJson(inputData);
-		} catch (final IOException e) {
-			logger.error(e);
-			this.requestor.fail("Unable to generate JSON");
-		}
-		return null;
-	}
-
-	private Entry createBasicInteractionMessage(final String id,
-			final String runId) {
-		final Entry interactionNotificationMessage = ABDERA.newEntry();
-
-		interactionNotificationMessage.setId(id);
-		final Date timestamp = new Date();
-		interactionNotificationMessage.setPublished(timestamp);
-		interactionNotificationMessage.setUpdated(timestamp);
-
-		interactionNotificationMessage.addAuthor("Taverna");
-		interactionNotificationMessage.setTitle("Interaction from Taverna for "
-				+ this.requestor.generateId());
-
-		final Element runIdElement = interactionNotificationMessage
-				.addExtension(AtomUtils.getRunIdQName());
-		runIdElement.setText(StringEscapeUtils.escapeJavaScript(runId));
-		
-		final Element pathIdElement = interactionNotificationMessage.addExtension(AtomUtils.getPathIdQName());
-		pathIdElement.setText(StringEscapeUtils.escapeJavaScript(this.requestor.getPath()));
-		
-		final Element countElement = interactionNotificationMessage.addExtension(AtomUtils.getCountQName());
-		countElement.setText(StringEscapeUtils.escapeJavaScript(this.requestor.getInvocationCount().toString()));
-		
-		if (this.requestor.getInteractionType().equals(
-				InteractionType.Notification)) {
-			interactionNotificationMessage.addExtension(AtomUtils
-					.getProgressQName());
-		}
-		final Element idElement = interactionNotificationMessage
-				.addExtension(AtomUtils.getIdQName());
-		idElement.setText(id);
-
-		return interactionNotificationMessage;
-	}
-
-	private void postInteractionMessage(final String id, final Entry entry,
-			final String interactionUrlString, final String runId) throws IOException {
-
-		entry.addLink(StringEscapeUtils.escapeXml(interactionUrlString),
-				"presentation");
-		entry.setContentAsXhtml("<p><a href=\""
-				+ StringEscapeUtils.escapeXml(interactionUrlString)
-				+ "\">Open: "
-				+ StringEscapeUtils.escapeXml(interactionUrlString)
-				+ "</a></p>");
-
-		URL feedUrl;
-
-			feedUrl = new URL(interactionPreference
-					.getFeedUrlString());
-			final String entryContent = ((FOMElement) entry)
-					.toFormattedString();
-			final HttpURLConnection httpCon = (HttpURLConnection) feedUrl
-					.openConnection();
-			httpCon.setDoOutput(true);
-			httpCon.setRequestProperty("Content-Type",
-					"application/atom+xml;type=entry;charset=UTF-8");
-			httpCon.setRequestProperty("Content-Length",
-					"" + entryContent.length());
-			httpCon.setRequestProperty("Slug", id);
-			httpCon.setRequestMethod("POST");
-			httpCon.setConnectTimeout(5000);
-			final OutputStream outputStream = httpCon.getOutputStream();
-			IOUtils.write(entryContent, outputStream, "UTF-8");
-			outputStream.close();
-			final int response = httpCon.getResponseCode();
-			if ((response < 0) || (response >= 400)) {
-				logger.error("Received response code" + response);
-				throw (new IOException ("Received response code " + response));
-			}
-			if (response == HttpURLConnection.HTTP_CREATED) {
-				interactionRecorder.addResource(runId, id,
-						httpCon.getHeaderField("Location"));
-			}
-	}
-
-	String generateHtml(final String inputDataUrl, final String outputDataUrl,
-			final Map<String, Object> inputData, final String runId,
-			final String id) {
-
-		final VelocityContext velocityContext = new VelocityContext();
-
-		for (final String inputName : inputData.keySet()) {
-			final Object input = inputData.get(inputName);
-			velocityContext.put(inputName, input);
-		}
-
-		velocityContext.put("feed", interactionPreference
-				.getFeedUrlString());
-		velocityContext.put("runId", runId);
-		velocityContext.put("entryId", id);
-		final String pmrpcUrl = interactionPreference
-				.getLocationUrl() + "/pmrpc.js";
-		velocityContext.put("pmrpcUrl", pmrpcUrl);
-		velocityContext.put("inputDataUrl", inputDataUrl);
-		velocityContext.put("outputDataUrl", outputDataUrl);
-		final String interactionUrl = interactionPreference
-				.getInteractionUrlString(id);
-
-		velocityContext.put("interactionUrl", interactionUrl);
-
-		String presentationUrl = "";
-		final String authorizeUrl = "";
-		try {
-			if (this.requestor.getPresentationType().equals(
-					InteractionActivityType.VelocityTemplate)) {
-
-				presentationUrl = interactionPreference
-						.getPresentationUrlString(id);
-
-				final String presentationString = this.processTemplate(
-						this.presentationTemplate, velocityContext);
-				interactionUtils.publishFile(presentationUrl,
-						presentationString, runId, id);
-
-			} else if (this.requestor.getPresentationType().equals(
-					InteractionActivityType.LocallyPresentedHtml)) {
-				presentationUrl = this.requestor.getPresentationOrigin();
-			}
-
-			velocityContext.put("presentationUrl", presentationUrl);
-
-			final String interactionString = this.processTemplate(
-					interactionVelocity.getInteractionTemplate(),
-					velocityContext);
-			interactionUtils.publishFile(interactionUrl, interactionString,
-					runId, id);
-
-			if (!authorizeUrl.isEmpty()) {
-				return authorizeUrl;
-			}
-			return interactionUrl;
-		} catch (final IOException e) {
-			logger.error(e);
-			this.requestor.fail("Unable to generate HTML");
-			return null;
-		}
-	}
-
-	private String processTemplate(final Template template,
-			final VelocityContext context) throws IOException {
-		final StringWriter resultWriter = new StringWriter();
-		template.merge(context, resultWriter);
-		resultWriter.close();
-		return resultWriter.toString();
-	}
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java
deleted file mode 100644
index 63bc001..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction;
-
-/**
- * @author alanrw
- * 
- *         Should be renamed something like presentation type
- */
-public enum InteractionActivityType {
-
-	VelocityTemplate, LocallyPresentedHtml
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java
deleted file mode 100644
index f7445a8..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import net.sf.taverna.t2.invocation.InvocationContext;
-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.processor.activity.ActivityInputPort;
-import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
-import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
-
-/**
- * @author alanrw
- * 
- */
-public class InteractionCallbackRequestor implements InteractionRequestor {
-
-	private final AsynchronousActivityCallback callback;
-
-	private final Map<String, T2Reference> inputs;
-
-	private final InteractionActivity activity;
-
-	private boolean answered = false;
-
-	private String path;
-
-	private Integer count;
-	
-	private static Map<String, Integer> invocationCount = new HashMap<String, Integer> ();
-
-	public InteractionCallbackRequestor(final InteractionActivity activity,
-			final AsynchronousActivityCallback callback,
-			final Map<String, T2Reference> inputs) {
-		this.activity = activity;
-		this.callback = callback;
-		this.inputs = inputs;
-		this.path = calculatePath();
-		this.count = calculateInvocationCount(path);
-	}
-
-	@Override
-	public String getRunId() {
-		return this.callback.getContext()
-				.getEntities(WorkflowRunIdEntity.class).get(0)
-				.getWorkflowRunId();
-	}
-
-	@Override
-	public Map<String, Object> getInputData() {
-		final Map<String, Object> inputData = new HashMap<String, Object>();
-
-		final InvocationContext context = this.callback.getContext();
-		final ReferenceService referenceService = context.getReferenceService();
-		for (final String inputName : this.inputs.keySet()) {
-			final Object input = referenceService.renderIdentifier(this.inputs
-					.get(inputName), this.getInputPort(inputName)
-					.getTranslatedElementClass(), this.callback.getContext());
-			inputData.put(inputName, input);
-		}
-		return inputData;
-	}
-
-	public ActivityInputPort getInputPort(final String name) {
-		for (final ActivityInputPort port : this.activity.getInputPorts()) {
-			if (port.getName().equals(name)) {
-				return port;
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public void fail(final String string) {
-		if (this.answered) {
-			return;
-		}
-		this.callback.fail(string);
-		this.answered = true;
-	}
-
-	@Override
-	public void carryOn() {
-		if (this.answered) {
-			return;
-		}
-		this.callback.receiveResult(new HashMap<String, T2Reference>(),
-				new int[0]);
-		this.answered = true;
-	}
-
-	@Override
-	public String generateId() {
-		final String workflowRunId = getRunId();
-		final String parentProcessIdentifier = this.callback
-				.getParentProcessIdentifier();
-		return (workflowRunId + ":" + parentProcessIdentifier);
-	}
-
-	@Override
-	public InteractionType getInteractionType() {
-		if (this.activity.isProgressNotification()) {
-			return InteractionType.Notification;
-		}
-		return InteractionType.DataRequest;
-	}
-
-	@Override
-	public InteractionActivityType getPresentationType() {
-		return this.activity.getInteractionActivityType();
-	}
-
-	@Override
-	public String getPresentationOrigin() {
-		return this.activity.getPresentationOrigin();
-	}
-
-	@Override
-	public void receiveResult(final Map<String, Object> resultMap) {
-		if (this.answered) {
-			return;
-		}
-		final Map<String, T2Reference> outputs = new HashMap<String, T2Reference>();
-
-		final InvocationContext context = this.callback.getContext();
-		final ReferenceService referenceService = context.getReferenceService();
-
-		for (final Object key : resultMap.keySet()) {
-			final String keyString = (String) key;
-			final Object value = resultMap.get(key);
-			final Integer depth = this.findPortDepth(keyString);
-			if (depth == null) {
-				this.callback.fail("Data sent for unknown port : " + keyString);
-			}
-			outputs.put(keyString,
-					referenceService.register(value, depth, true, context));
-		}
-		this.callback.receiveResult(outputs, new int[0]);
-		this.answered = true;
-	}
-
-	private Integer findPortDepth(final String portName) {
-		final Set<ActivityOutputPort> ports = this.activity.getOutputPorts();
-		for (final ActivityOutputPort op : ports) {
-			if (op.getName().equals(portName)) {
-				return op.getDepth();
-			}
-		}
-		return null;
-	}
-
-	private String calculatePath() {
-		final String parentProcessIdentifier = this.callback
-				.getParentProcessIdentifier();
-		String result = "";
-		String parts[] = parentProcessIdentifier.split(":");
-
-		for (int i = 2; i < parts.length; i += 4) {
-			if (!result.isEmpty()) {
-				result += ":";
-			}
-			result += parts[i];
-		}
-		return result;
-	}
-
-	@Override
-	public String getPath() {
-		return this.path;
-	}
-	
-	private synchronized static Integer calculateInvocationCount(String path) {
-		Integer currentCount = invocationCount.get(path);
-		if (currentCount == null) {
-			currentCount = Integer.valueOf(0);
-		} else {
-			currentCount = currentCount + 1;
-		}
-		invocationCount.put(path, currentCount);
-		return currentCount;
-	}
-
-	@Override
-	public Integer getInvocationCount() {
-		return count;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
deleted file mode 100644
index 66b2d38..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-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 org.apache.commons.io.FileUtils;
-import org.apache.log4j.Logger;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * 
- * This class is used to remember and forget interactions and their associated
- * ATOM entries and files
- * 
- * @author alanrw
- * 
- */
-public class InteractionRecorder {
-
-	private static final Logger logger = Logger
-			.getLogger(InteractionRecorder.class);
-
-	static Map<String, Map<String, Set<String>>> runToInteractionMap = Collections
-			.synchronizedMap(new HashMap<String, Map<String, Set<String>>>());
-	
-	private InteractionUtils interactionUtils;
-
-	private InteractionRecorder() {
-		super();
-	}
-
-	public void deleteRun(final String runToDelete) {
-		final Set<String> interactionIds = new HashSet<String>(
-				getInteractionMap(runToDelete).keySet());
-		for (final String interactionId : interactionIds) {
-			deleteInteraction(runToDelete, interactionId);
-		}
-		runToInteractionMap.remove(runToDelete);
-	}
-
-	public void deleteInteraction(final String runId,
-			final String interactionId) {
-		for (final String urlString : getResourceSet(runId, interactionId)) {
-			try {
-				deleteUrl(urlString);
-			} catch (final IOException e) {
-				logger.info("Unable to delete " + urlString, e);
-			}
-
-		}
-		getInteractionMap(runId).remove(interactionId);
-	}
-
-	private void deleteUrl(final String urlString) throws IOException {
-		logger.info("Deleting resource " + urlString);
-		final URL url = new URL(urlString);
-		final HttpURLConnection httpCon = (HttpURLConnection) url
-				.openConnection();
-		httpCon.setRequestMethod("DELETE");
-		final int response = httpCon.getResponseCode();
-		if (response >= 400) {
-			logger.info("Received response code" + response);
-		}
-	}
-
-	public void addResource(final String runId,
-			final String interactionId, final String resourceId) {
-		if (resourceId == null) {
-			logger.error("Attempt to add null resource",
-					new NullPointerException(""));
-			return;
-		}
-		logger.info("Adding resource " + resourceId);
-		final Set<String> resourceSet = getResourceSet(runId, interactionId);
-
-		resourceSet.add(resourceId);
-	}
-
-	private Set<String> getResourceSet(final String runId,
-			final String interactionId) {
-		final Map<String, Set<String>> interactionMap = getInteractionMap(runId);
-		Set<String> resourceSet = interactionMap.get(interactionId);
-		if (resourceSet == null) {
-			resourceSet = Collections.synchronizedSet(new HashSet<String>());
-			interactionMap.put(interactionId, resourceSet);
-		}
-		return resourceSet;
-	}
-
-	private Map<String, Set<String>> getInteractionMap(final String runId) {
-		Map<String, Set<String>> interactionMap = InteractionRecorder.runToInteractionMap
-				.get(runId);
-		if (interactionMap == null) {
-			interactionMap = Collections.synchronizedMap(Collections
-					.synchronizedMap(new HashMap<String, Set<String>>()));
-			InteractionRecorder.runToInteractionMap.put(runId, interactionMap);
-		}
-		return interactionMap;
-	}
-
-	public void persist() {
-		final File outputFile = getUsageFile();
-		try {
-			FileUtils.writeStringToFile(outputFile, InteractionUtils
-					.objectToJson(InteractionRecorder.runToInteractionMap));
-		} catch (final IOException e) {
-			logger.error(e);
-		}
-	}
-
-	private File getUsageFile() {
-		return new File(getInteractionUtils().getInteractionServiceDirectory(),
-				"usage");
-	}
-
-	public void load() {
-		final File inputFile = getUsageFile();
-		try {
-			final String usageString = FileUtils.readFileToString(inputFile);
-			final ObjectMapper mapper = new ObjectMapper();
-			@SuppressWarnings("unchecked")
-			final Map<String, Object> rootAsMap = mapper.readValue(usageString,
-					Map.class);
-			InteractionRecorder.runToInteractionMap.clear();
-			for (final String runId : rootAsMap.keySet()) {
-				@SuppressWarnings("unchecked")
-				final Map<String, Object> runMap = (Map<String, Object>) rootAsMap
-						.get(runId);
-				for (final String interactionId : runMap.keySet()) {
-					@SuppressWarnings("unchecked")
-					final List<String> urlList = (List<String>) runMap
-							.get(interactionId);
-					for (final String url : urlList) {
-						addResource(runId, interactionId, url);
-					}
-				}
-			}
-		} catch (final IOException e) {
-			logger.info(e);
-		}
-	}
-
-	public InteractionUtils getInteractionUtils() {
-		return interactionUtils;
-	}
-
-	public void setInteractionUtils(InteractionUtils interactionUtils) {
-		this.interactionUtils = interactionUtils;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java
deleted file mode 100644
index 7eff950..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.util.Map;
-
-/**
- * @author alanrw
- * 
- */
-public interface InteractionRequestor {
-
-	String getRunId();
-
-	Map<String, Object> getInputData();
-
-	void fail(String string);
-
-	void carryOn();
-
-	String generateId();
-	
-	// The path to whatever requested the interaction
-	String getPath();
-	
-	// The number of times whatever requested the interaction has requested one
-	Integer getInvocationCount();
-
-	InteractionActivityType getPresentationType();
-
-	InteractionType getInteractionType();
-
-	String getPresentationOrigin();
-
-	void receiveResult(Map<String, Object> resultMap);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java
deleted file mode 100644
index 880ff82..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import net.sf.taverna.t2.workflowmodel.RunDeletionListener;
-
-import org.apache.log4j.Logger;
-
-/**
- * @author alanrw
- * 
- */
-public class InteractionRunDeletionListener implements RunDeletionListener {
-	
-	private InteractionRecorder interactionRecorder;
-
-	@SuppressWarnings("unused")
-	private static final Logger logger = Logger
-			.getLogger(InteractionRunDeletionListener.class);
-
-	@Override
-	public void deleteRun(final String runToDelete) {
-		interactionRecorder.deleteRun(runToDelete);
-	}
-
-	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
-		this.interactionRecorder = interactionRecorder;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java
deleted file mode 100644
index 1e42b4a..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction;
-
-/**
- * @author alanrw
- * 
- */
-public enum InteractionType {
-
-	DataRequest, Notification, SecurityRequest, AuthenticationRequest
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java b/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java
deleted file mode 100644
index 149f842..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-// import net.sf.taverna.raven.appconfig.ApplicationRuntime;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-
-import org.apache.commons.io.IOUtils;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-
-/**
- * @author alanrw
- * 
- */
-public class InteractionUtils {
-
-	static final Set<String> publishedUrls = Collections
-			.synchronizedSet(new HashSet<String>());
-	
-	private ApplicationConfiguration appConfig;
-	
-	private InteractionRecorder interactionRecorder;
-
-	private InteractionPreference interactionPreference;
-
-	private InteractionUtils() {
-		super();
-	}
-
-	protected void copyFixedFile(final String fixedFileName)
-			throws IOException {
-		final String targetUrl = interactionPreference
-				.getLocationUrl() + "/" + fixedFileName;
-		this.publishFile(
-				targetUrl,
-				InteractionActivity.class.getResourceAsStream("/"
-						+ fixedFileName), null, null);
-	}
-
-	public void publishFile(final String urlString,
-			final String contents, final String runId,
-			final String interactionId) throws IOException {
-		final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
-				contents.getBytes("UTF-8"));
-		this.publishFile(urlString, byteArrayInputStream, runId,
-				interactionId);
-	}
-
-	void publishFile(final String urlString, final InputStream is,
-			final String runId, final String interactionId) throws IOException {
-		if (InteractionUtils.publishedUrls.contains(urlString)) {
-			return;
-		}
-		InteractionUtils.publishedUrls.add(urlString);
-		if (runId != null) {
-			interactionRecorder.addResource(runId, interactionId, urlString);
-		}
-
-		final URL url = new URL(urlString);
-		final HttpURLConnection httpCon = (HttpURLConnection) url
-				.openConnection();
-		httpCon.setDoOutput(true);
-		httpCon.setRequestMethod("PUT");
-		final OutputStream outputStream = httpCon.getOutputStream();
-		IOUtils.copy(is, outputStream);
-		is.close();
-		outputStream.close();
-		int code = httpCon.getResponseCode();
-		if ((code >= 400) || (code < 0)){
-			throw new IOException ("Received code " + code);
-		}
-	}
-
-	public static String getUsedRunId(final String engineRunId) {
-		String runId = engineRunId;
-		final String specifiedId = System.getProperty("taverna.runid");
-		if (specifiedId != null) {
-			runId = specifiedId;
-		}
-		return runId;
-	}
-
-	public File getInteractionServiceDirectory() {
-		final File workingDir = appConfig
-				.getApplicationHomeDir();
-		final File interactionServiceDirectory = new File(workingDir,
-				"interactionService");
-		interactionServiceDirectory.mkdirs();
-		return interactionServiceDirectory;
-	}
-
-	public static String objectToJson(final Object o) throws IOException {
-		final ObjectMapper mapper = new ObjectMapper();
-		final StringWriter sw = new StringWriter();
-		mapper.writeValue(sw, o);
-		final String theString = sw.toString();
-		return theString;
-	}
-
-	public void setAppConfig(ApplicationConfiguration appConfig) {
-		this.appConfig = appConfig;
-	}
-
-	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
-		this.interactionRecorder = interactionRecorder;
-	}
-
-	public void setInteractionPreference(InteractionPreference interactionPreference) {
-		this.interactionPreference = interactionPreference;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java b/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java
deleted file mode 100644
index 78fdd6d..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
-import net.sf.taverna.t2.activities.interaction.atom.AtomUtils;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-
-import org.apache.abdera.model.Element;
-import org.apache.abdera.model.Entry;
-import org.apache.commons.io.IOUtils;
-import org.apache.log4j.Logger;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * @author alanrw
- * 
- */
-public final class ResponseFeedListener extends FeedReader {
-	
-	private InteractionRecorder interactionRecorder;
-
-	private InteractionPreference interactionPreference;
-
-	private static final String STATUS_OK = "OK";
-
-	private static final String DATA_READ_FAILED = "Data read failed";
-
-	private static ResponseFeedListener instance;
-
-	private static final Logger logger = Logger.getLogger(ResponseFeedListener.class);
-
-	private static final Map<String, InteractionRequestor> requestorMap = new HashMap<String, InteractionRequestor>();
-
-	private ResponseFeedListener() {
-		super("ResponseFeedListener");
-	}
-	
-	@Override
-	protected void considerEntry(final Entry entry) {
-		synchronized (requestorMap) {
-			final String refString = getReplyTo(entry);
-			if (refString == null) {
-				return;
-			}
-			final String runId = getRunId(entry);
-
-			final String entryUrl = interactionPreference
-					.getFeedUrlString() + "/" + entry.getId().toASCIIString();
-			interactionRecorder.addResource(runId, refString, entryUrl);
-
-			if (requestorMap.containsKey(refString)) {
-
-				final InteractionRequestor requestor = requestorMap
-						.get(refString);
-
-				final Element statusElement = entry.getExtension(AtomUtils
-						.getResultStatusQName());
-				final String statusContent = statusElement.getText().trim();
-				if (!statusContent.equals(STATUS_OK)) {
-					cleanup(refString);
-					requestor.fail(statusContent);
-					return;
-				}
-				final String outputDataUrl = interactionPreference
-						.getOutputDataUrlString(refString);
-				// Note that this may not really exist
-				interactionRecorder
-						.addResource(runId, refString, outputDataUrl);
-				String content = null;
-				InputStream iStream;
-				try {
-					iStream = new URL(outputDataUrl).openStream();
-					content = IOUtils.toString(iStream);
-					iStream.close();
-				} catch (final MalformedURLException e1) {
-					logger.error(e1);
-					requestor.fail(DATA_READ_FAILED);
-					return;
-				} catch (final IOException e1) {
-					logger.error(e1);
-					requestor.fail(DATA_READ_FAILED);
-					return;
-				}
-
-				try {
-					final ObjectMapper mapper = new ObjectMapper();
-					@SuppressWarnings("unchecked")
-					final Map<String, Object> rootAsMap = mapper.readValue(
-							content, Map.class);
-					requestor.receiveResult(rootAsMap);
-					cleanup(refString);
-					interactionRecorder.deleteInteraction(runId, refString);
-
-				} catch (final JsonParseException e) {
-					logger.error(e);
-				} catch (final IOException e) {
-					logger.error(e);
-				} catch (final Exception e) {
-					logger.error(e);
-				}
-
-			}
-		}
-	}
-
-	private static void cleanup(final String refString) {
-		requestorMap.remove(refString);
-	}
-
-	private static String getReplyTo(final Entry entry) {
-		final Element replyTo = entry.getFirstChild(AtomUtils
-				.getInReplyToQName());
-		if (replyTo == null) {
-			return null;
-		}
-		return replyTo.getText();
-	}
-
-	private static String getRunId(final Entry entry) {
-		final Element runIdElement = entry.getFirstChild(AtomUtils
-				.getRunIdQName());
-		if (runIdElement == null) {
-			return null;
-		}
-		return runIdElement.getText();
-	}
-
-	public void registerInteraction(final Entry entry,
-			final InteractionRequestor requestor) {
-		synchronized (requestorMap) {
-			final String refString = entry.getId().toString();
-			requestorMap.put(refString, requestor);
-		}
-	}
-
-	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
-		this.interactionRecorder = interactionRecorder;
-	}
-
-	public void setInteractionPreference(InteractionPreference interactionPreference) {
-		this.interactionPreference = interactionPreference;
-	}
-
-	@Override
-	protected InteractionPreference getInteractionPreference() {
-		return this.interactionPreference;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java b/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java
deleted file mode 100644
index 350e986..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction.atom;
-
-import javax.xml.namespace.QName;
-
-/**
- * @author alanrw
- * 
- */
-public class AtomUtils {
-
-	private static QName inputDataQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "input-data",
-			"interaction");
-	private static QName resultDataQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "result-data",
-			"interaction");
-	private static QName resultStatusQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "result-status",
-			"interaction");
-	private static QName idQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "id", "interaction");
-	private static QName pathIdQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "path",
-			"interaction");
-	private static QName countQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "count",
-			"interaction");
-	private static QName runIdQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "run-id",
-			"interaction");
-	private static QName inReplyToQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "in-reply-to",
-			"interaction");
-	private static QName progressQName = new QName(
-			"http://ns.taverna.org.uk/2012/interaction", "progress",
-			"interaction");
-
-	public static QName getInputDataQName() {
-		return inputDataQName;
-	}
-
-	public static QName getIdQName() {
-		return idQName;
-	}
-
-	public static QName getInReplyToQName() {
-		return inReplyToQName;
-	}
-
-	public static QName getResultDataQName() {
-		return resultDataQName;
-	}
-
-	public static QName getResultStatusQName() {
-		return resultStatusQName;
-	}
-
-	/**
-	 * @return the runIdQName
-	 */
-	public static QName getRunIdQName() {
-		return runIdQName;
-	}
-
-	/**
-	 * @return the progressQName
-	 */
-	public static QName getProgressQName() {
-		return progressQName;
-	}
-
-	public static QName getPathIdQName() {
-		return pathIdQName;
-	}
-
-	public static QName getCountQName() {
-		return countQName;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java b/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java
deleted file mode 100644
index b8996b2..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction.feed;
-
-import java.awt.Desktop;
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import net.sf.taverna.t2.activities.interaction.FeedReader;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-
-import org.apache.abdera.model.Entry;
-import org.apache.abdera.model.Link;
-import org.apache.log4j.Logger;
-
-/**
- * @author alanrw
- * 
- */
-public class ShowRequestFeedListener extends FeedReader {
-	
-	private static ShowRequestFeedListener instance;
-
-	private static Logger logger = Logger
-			.getLogger(ShowRequestFeedListener.class);
-	
-	private static final String ignore_requests_property = System.getProperty("taverna.interaction.ignore_requests");
-
-	private static boolean operational = (ignore_requests_property == null) || !Boolean.valueOf(ignore_requests_property);
-
-	private InteractionPreference interactionPreference;
-	
-	private ShowRequestFeedListener() {
-		super("ShowRequestFeedListener");
-	}
-	
-			@Override
-			protected void considerEntry(final Entry entry) {
-				if (!operational) {
-					return;
-				}
-				final Link presentationLink = entry.getLink("presentation");
-				if (presentationLink != null) {
-					try {
-						Desktop.getDesktop().browse(
-								presentationLink.getHref().toURI());
-					} catch (final IOException e) {
-						logger.error("Cannot open presentation");
-					} catch (final URISyntaxException e) {
-						logger.error("Cannot open presentation");
-					}
-				}
-			}
-
-			@Override
-			protected InteractionPreference getInteractionPreference() {
-				return this.interactionPreference;
-			}
-
-			public void setInteractionPreference(InteractionPreference interactionPreference) {
-				this.interactionPreference = interactionPreference;
-			}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java b/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java
deleted file mode 100644
index 24ad5a5..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java
+++ /dev/null
@@ -1,263 +0,0 @@
-package net.sf.taverna.t2.activities.interaction.jetty;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- */
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.abdera.Abdera;
-import org.apache.abdera.i18n.templates.Template;
-import org.apache.abdera.i18n.text.Normalizer;
-import org.apache.abdera.i18n.text.Sanitizer;
-import org.apache.abdera.model.Document;
-import org.apache.abdera.model.Entry;
-import org.apache.abdera.model.Feed;
-import org.apache.abdera.model.Link;
-import org.apache.abdera.protocol.server.ProviderHelper;
-import org.apache.abdera.protocol.server.RequestContext;
-import org.apache.abdera.protocol.server.ResponseContext;
-import org.apache.abdera.protocol.server.Target;
-import org.apache.abdera.protocol.server.provider.managed.FeedConfiguration;
-import org.apache.abdera.protocol.server.provider.managed.ManagedCollectionAdapter;
-
-/**
- * Simple Filesystem Adapter that uses a local directory to store Atompub
- * collection entries. As an extension of the ManagedCollectionAdapter class,
- * the Adapter is intended to be used with implementations of the
- * ManagedProvider and are configured using /abdera/adapter/*.properties files.
- * The *.properties file MUST specify the fs.root property to specify the root
- * directory used by the Adapter.
- */
-public class HackedFilesystemAdapter extends ManagedCollectionAdapter {
-	
-	private InteractionJetty interactionJetty;
-
-	private final File root;
-	private final static FileSorter sorter = new FileSorter();
-	private final static Template paging_template = new Template(
-			"?{-join|&|count,page}");
-
-	public HackedFilesystemAdapter(final Abdera abdera,
-			final FeedConfiguration config) {
-		super(abdera, config);
-		this.root = this.getRoot();
-	}
-
-	private File getRoot() {
-		return interactionJetty.getFeedDirectory();
-	}
-
-	private Entry getEntry(final File entryFile) {
-		if (!entryFile.exists() || !entryFile.isFile()) {
-			throw new RuntimeException();
-		}
-		try {
-			final FileInputStream fis = new FileInputStream(entryFile);
-			final Document<Entry> doc = this.abdera.getParser().parse(fis);
-			final Entry entry = doc.getRoot();
-			return entry;
-		} catch (final Exception e) {
-			throw new RuntimeException(e);
-		}
-	}
-
-	private void addPagingLinks(final RequestContext request, final Feed feed,
-			final int currentpage, final int count) {
-		final Map<String, Object> params = new HashMap<String, Object>();
-		params.put("count", count);
-		params.put("page", currentpage + 1);
-		String next = paging_template.expand(params);
-		next = request.getResolvedUri().resolve(next).toString();
-		feed.addLink(next, "next");
-		if (currentpage > 0) {
-			params.put("page", currentpage - 1);
-			String prev = paging_template.expand(params);
-			prev = request.getResolvedUri().resolve(prev).toString();
-			feed.addLink(prev, "previous");
-		}
-		params.put("page", 0);
-		String current = paging_template.expand(params);
-		current = request.getResolvedUri().resolve(current).toString();
-		feed.addLink(current, "current");
-	}
-
-	private void getEntries(final RequestContext request, final Feed feed,
-			final File root) {
-		final File[] files = root.listFiles();
-		Arrays.sort(files, sorter);
-		final int length = ProviderHelper.getPageSize(request, "count", 25);
-		final int offset = ProviderHelper.getOffset(request, "page", length);
-		final String _page = request.getParameter("page");
-		final int page = (_page != null) ? Integer.parseInt(_page) : 0;
-		this.addPagingLinks(request, feed, page, length);
-		if (offset > files.length) {
-			return;
-		}
-		for (int n = offset; (n < (offset + length)) && (n < files.length); n++) {
-			final File file = files[n];
-			try {
-				final Entry entry = this.getEntry(file);
-				feed.addEntry((Entry) entry.clone());
-			} catch (final Exception e) {
-				// Do nothing
-			}
-		}
-	}
-
-	@Override
-	public ResponseContext getFeed(final RequestContext request) {
-		final Feed feed = this.abdera.newFeed();
-		feed.setId(this.config.getServerConfiguration().getServerUri() + "/"
-				+ this.config.getFeedId());
-		feed.setTitle(this.config.getFeedTitle());
-		feed.addAuthor(this.config.getFeedAuthor());
-		feed.addLink(this.config.getFeedUri());
-		feed.addLink(this.config.getFeedUri(), "self");
-		feed.setUpdated(new Date());
-		this.getEntries(request, feed, this.root);
-		return ProviderHelper.returnBase(feed.getDocument(), 200, null);
-	}
-
-	@Override
-	public ResponseContext deleteEntry(final RequestContext request) {
-		final Target target = request.getTarget();
-		final String key = target.getParameter("entry");
-		final File file = this.getFile(key, false);
-		if (file.exists()) {
-			file.delete();
-		}
-		return ProviderHelper.nocontent();
-	}
-
-	@Override
-	public ResponseContext getEntry(final RequestContext request) {
-		final Target target = request.getTarget();
-		final String key = target.getParameter("entry");
-		final File file = this.getFile(key, false);
-		final Entry entry = this.getEntry(file);
-		if (entry != null) {
-			return ProviderHelper.returnBase(entry.getDocument(), 200, null);
-		} else {
-			return ProviderHelper.notfound(request);
-		}
-	}
-
-	@Override
-	public ResponseContext postEntry(final RequestContext request) {
-		if (request.isAtom()) {
-			try {
-				final Entry entry = (Entry) request.getDocument().getRoot()
-						.clone();
-				final String key = this.createKey(request);
-				this.setEditDetail(request, entry, key);
-				final File file = this.getFile(key);
-				final FileOutputStream out = new FileOutputStream(file);
-				entry.writeTo(out);
-				final String edit = entry.getEditLinkResolvedHref().toString();
-				return ProviderHelper
-						.returnBase(entry.getDocument(), 201, null)
-						.setLocation(edit);
-			} catch (final Exception e) {
-				return ProviderHelper.badrequest(request);
-			}
-		} else {
-			return ProviderHelper.notsupported(request);
-		}
-	}
-
-	private void setEditDetail(final RequestContext request, final Entry entry,
-			final String key) throws IOException {
-		final Target target = request.getTarget();
-		final String feed = target.getParameter("feed");
-		final String id = key;
-		entry.setEdited(new Date());
-		final Link link = entry.getEditLink();
-		final Map<String, Object> params = new HashMap<String, Object>();
-		params.put("feed", feed);
-		params.put("entry", id);
-		final String href = request.absoluteUrlFor("entry", params);
-		if (link == null) {
-			entry.addLink(href, "edit");
-		} else {
-			link.setHref(href);
-		}
-	}
-
-	private File getFile(final String key) {
-		return this.getFile(key, true);
-	}
-
-	private File getFile(final String key, final boolean post) {
-		final File file = new File(this.root, key);
-		if (post && file.exists()) {
-			throw new RuntimeException("File exists");
-		}
-		return file;
-	}
-
-	private String createKey(final RequestContext request) throws IOException {
-		String slug = request.getSlug();
-		if (slug == null) {
-			slug = ((Entry) request.getDocument().getRoot()).getTitle();
-		}
-		return Sanitizer.sanitize(slug, "", true, Normalizer.Form.D);
-	}
-
-	@Override
-	public ResponseContext putEntry(final RequestContext request) {
-		if (request.isAtom()) {
-			try {
-				final Entry entry = (Entry) request.getDocument().getRoot()
-						.clone();
-				final String key = request.getTarget().getParameter("entry");
-				this.setEditDetail(request, entry, key);
-				final File file = this.getFile(key, false);
-				final FileOutputStream out = new FileOutputStream(file);
-				entry.writeTo(out);
-				final String edit = entry.getEditLinkResolvedHref().toString();
-				return ProviderHelper
-						.returnBase(entry.getDocument(), 200, null)
-						.setLocation(edit);
-			} catch (final Exception e) {
-				return ProviderHelper.badrequest(request);
-			}
-		} else {
-			return ProviderHelper.notsupported(request);
-		}
-	}
-
-	private static class FileSorter implements Comparator<File> {
-		@Override
-		public int compare(final File o1, final File o2) {
-			return o1.lastModified() > o2.lastModified() ? -1 : o1
-					.lastModified() < o2.lastModified() ? 1 : 0;
-		}
-	}
-
-	public void setInteractionJetty(InteractionJetty interactionJetty) {
-		this.interactionJetty = interactionJetty;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/95509a51/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java b/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java
deleted file mode 100644
index c5fb3af..0000000
--- a/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.interaction.jetty;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import net.sf.taverna.t2.activities.interaction.FeedReader;
-import net.sf.taverna.t2.activities.interaction.InteractionUtils;
-import net.sf.taverna.t2.activities.interaction.ResponseFeedListener;
-import net.sf.taverna.t2.activities.interaction.feed.ShowRequestFeedListener;
-import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
-import net.sf.taverna.t2.security.credentialmanager.CMException;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.security.credentialmanager.UsernamePassword;
-//import net.sf.taverna.t2.spi.SPIRegistry;
-import net.sf.webdav.WebdavServlet;
-
-import org.apache.abdera.protocol.server.ServiceManager;
-import org.apache.abdera.protocol.server.provider.basic.BasicProvider;
-import org.apache.abdera.protocol.server.servlet.AbderaServlet;
-import org.apache.log4j.Logger;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.handler.HandlerList;
-import org.mortbay.jetty.security.Constraint;
-import org.mortbay.jetty.security.ConstraintMapping;
-import org.mortbay.jetty.security.HashUserRealm;
-import org.mortbay.jetty.security.SecurityHandler;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.ServletHolder;
-
-/**
- * @author alanrw
- * 
- */
-public class InteractionJetty {
-
-	private static Logger logger = Logger.getLogger(InteractionJetty.class);
-	
-	private InteractionUtils interactionUtils;
-	
-	private ShowRequestFeedListener showRequestFeedListener;
-	private ResponseFeedListener responseFeedListener;
-
-	private InteractionPreference interactionPreference;
-
-	private static Server server;
-
-	private static String REALM_NAME = "TavernaInteraction";
-	
-	private static boolean listenersStarted = false;
-
-	public synchronized void startJettyIfNecessary(CredentialManager credentialManager) {
-		if (server != null) {
-			return;
-		}
-		
-//		final ClassLoader previousContextClassLoader = Thread.currentThread()
-//				.getContextClassLoader();
-//		Thread.currentThread().setContextClassLoader(
-//				InteractionJetty.class.getClassLoader());
-
-		final String port = interactionPreference.getPort();
-
-		server = new Server(Integer.parseInt(port));
-		server.setStopAtShutdown(true);
-
-		final WebdavServlet interactionServlet = new WebdavServlet();
-
-		final ServletHolder interactionHolder = new ServletHolder();
-		interactionHolder.setServlet(interactionServlet);
-
-		try {
-
-			interactionHolder.setInitParameter("rootpath",
-					getInteractionDirectory().getCanonicalPath());
-		} catch (final IOException e1) {
-			logger.error("Unable to set root of interaction", e1);
-		}
-
-		final HandlerList handlers = new HandlerList();
-		final Context overallContext = new Context(handlers, "/",
-				Context.SESSIONS);
-		overallContext.setContextPath("/");
-		server.setHandler(overallContext);
-
-		final AbderaServlet abderaServlet = new AbderaServlet();
-		final ServletHolder abderaHolder = new ServletHolder(abderaServlet);
-		abderaHolder.setInitParameter(ServiceManager.PROVIDER,
-				BasicProvider.class.getName());
-
-		overallContext.addServlet(abderaHolder, "/*");
-		overallContext.addServlet(interactionHolder, "/interaction/*");
-
-		if (interactionPreference.getUseUsername()) {
-			final Constraint constraint = new Constraint();
-			constraint.setName(Constraint.__BASIC_AUTH);
-
-			constraint.setRoles(new String[] { "user", "admin", "moderator" });
-			constraint.setAuthenticate(true);
-
-			final ConstraintMapping cm = new ConstraintMapping();
-			cm.setConstraint(constraint);
-			cm.setPathSpec("/*");
-
-			final SecurityHandler sh = new SecurityHandler();
-			try {
-				final HashUserRealm realm = new HashUserRealm(REALM_NAME);
-				final URI serviceURI = createServiceURI(port);
-				final UsernamePassword up = credentialManager
-						.getUsernameAndPasswordForService(serviceURI, true,
-								"Please specify the username and password to secure your interactions");
-				if (up != null) {
-					final String username = up.getUsername();
-					realm.put(username, up.getPasswordAsString());
-					realm.addUserToRole(username, "user");
-				}
-				sh.setUserRealm(realm);
-			} catch (final CMException e) {
-				logger.error(e);
-			} catch (final URISyntaxException e) {
-				logger.error(e);
-			}
-			sh.setConstraintMappings(new ConstraintMapping[] { cm });
-			overallContext.addHandler(sh);
-
-		}
-
-		getFeedDirectory();
-
-		try {
-			server.start();
-			while (!server.isRunning()) {
-				Thread.sleep(5000);
-			}
-		} catch (final Exception e) {
-			logger.error("Unable to start Jetty");
-		}
-//		Thread.currentThread()
-//				.setContextClassLoader(previousContextClassLoader);
-	}
-
-	public static URI createServiceURI(final String port)
-			throws URISyntaxException {
-		return new URI("http://localhost:" + port + "/#" + REALM_NAME);
-	}
-
-	public File getJettySubdirectory(final String subdirectoryName) {
-		final File workingDir = interactionUtils
-				.getInteractionServiceDirectory();
-		final File subDir = new File(workingDir, "jetty/" + subdirectoryName);
-		subDir.mkdirs();
-		return subDir;
-	}
-
-	public File getFeedDirectory() {
-		return getJettySubdirectory("feed");
-	}
-
-	public File getInteractionDirectory() {
-		return getJettySubdirectory("interaction");
-	}
-	
-	public synchronized void startListenersIfNecessary() {
-		if (listenersStarted) {
-			return;
-		}
-		listenersStarted = true;
-		startListener(this.responseFeedListener);
-		startListener(showRequestFeedListener);
-
-	}
-
-	private void startListener(FeedReader fr) {
-		try {
-			fr.start();
-		}
-		catch (Exception e) {
-			logger.error("Failed to start " + fr.getClass().getCanonicalName(), e);
-		}
-	}
-	
-	public void setInteractionUtils(InteractionUtils interactionUtils) {
-		this.interactionUtils = interactionUtils;
-	}
-
-	public void setShowRequestFeedListener(
-			ShowRequestFeedListener showRequestFeedListener) {
-		this.showRequestFeedListener = showRequestFeedListener;
-	}
-
-	public void setResponseFeedListener(ResponseFeedListener responseFeedListener) {
-		this.responseFeedListener = responseFeedListener;
-	}
-
-	public void setInteractionPreference(InteractionPreference interactionPreference) {
-		this.interactionPreference = interactionPreference;
-	}
-
-}