You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by re...@apache.org on 2015/03/23 17:38:03 UTC

[19/51] [partial] incubator-taverna-engine git commit:

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/DispatchMessageType.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/DispatchMessageType.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/DispatchMessageType.java
deleted file mode 100644
index ca44bf2..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/DispatchMessageType.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.description;
-
-/**
- * Enumeration of the possible message types passed between layers of the
- * dispatch stack.
- * 
- * @author Tom Oinn
- */
-public enum DispatchMessageType {
-	/**
-	 * A reference to a queue of Job objects waiting to be used as input along
-	 * with a list of activities to process them.
-	 */
-	JOB_QUEUE,
-
-	/**
-	 * A Job object and list of activities to be used to process the data in the
-	 * Job. The Job will have been previously extracted from the JobQueue
-	 */
-	JOB,
-
-	/**
-	 * A Job object containing the result of a single activity invocation.
-	 */
-	RESULT,
-
-	/**
-	 * A (possibly partial) completion event from the layer below. This is only
-	 * going to be used when the activity invocation is capable of streaming
-	 * partial data back up through the dispatch stack before the activity has
-	 * completed. Not all dispatch stack layers are compatible with this mode of
-	 * operation, for example retry and recursion do not play well here!
-	 */
-	RESULT_COMPLETION,
-
-	/**
-	 * A failure message sent by the layer below to denote some kind of failure
-	 * (surprisingly)
-	 */
-	ERROR;
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/ReactionTo.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/ReactionTo.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/ReactionTo.java
deleted file mode 100644
index 40600ac..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/ReactionTo.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.description;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Describes the type of message to which the various DispatchLayerFooReaction
- * classes are referring
- * 
- * @author Tom Oinn
- */
-@Documented
-@Target(ElementType.ANNOTATION_TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ReactionTo {
-	public DispatchMessageType messageType();
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/SupportsStreamedResult.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/SupportsStreamedResult.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/SupportsStreamedResult.java
deleted file mode 100644
index 87dc6fa..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/SupportsStreamedResult.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.description;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Declares that a dispatch layer can handle streamed result data correctly, if
- * this annotation is attached to a DispatchLayer implementation that
- * implementation must be able to correctly handle the result completion message
- * type. By default dispatch layers are assumed to not handle this message type.
- * 
- * @author Tom Oinn
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-@Documented
-public @interface SupportsStreamedResult {
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/package.html
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/package.html b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/package.html
deleted file mode 100644
index f0629bb..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/description/package.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<body>
-Annotations and enumerations used to describe dispatch layers, specifically the types of messages they can consume and their reactions to those messages.
-</body>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/AbstractDispatchEvent.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/AbstractDispatchEvent.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/AbstractDispatchEvent.java
deleted file mode 100644
index 3f8d011..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/AbstractDispatchEvent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-import net.sf.taverna.t2.invocation.Event;
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType;
-
-/**
- * Superclass of events within the dispatch stack
- * 
- * @author Tom Oinn
- */
-public abstract class AbstractDispatchEvent<EventType extends AbstractDispatchEvent<EventType>>
-		extends Event<EventType> {
-	protected AbstractDispatchEvent(String owner, int[] index,
-			InvocationContext context) {
-		super(owner, index, context);
-	}
-
-	/**
-	 * Return the DispatchMessageType for this event object
-	 * 
-	 * @return instance of DispatchMessageType represented by this event
-	 */
-	public abstract DispatchMessageType getMessageType();
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchCompletionEvent.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchCompletionEvent.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchCompletionEvent.java
deleted file mode 100644
index 6a57321..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchCompletionEvent.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-import static net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType.RESULT_COMPLETION;
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.invocation.ProcessIdentifierException;
-import net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType;
-
-/**
- * Dispatch event containing detailing a (potentially partial) completion of a
- * stream of streaming result events. Layers which do not support streaming by
- * definition can't cope with this event and the dispatch stack checker should
- * prevent them from ever seeing it.
- * 
- * @author Tom Oinn
- */
-public class DispatchCompletionEvent extends
-		AbstractDispatchEvent<DispatchCompletionEvent> {
-	/**
-	 * Construct a new dispatch result completion event
-	 * 
-	 * @param owner
-	 * @param index
-	 * @param context
-	 */
-	public DispatchCompletionEvent(String owner, int[] index,
-			InvocationContext context) {
-		super(owner, index, context);
-	}
-
-	@Override
-	public DispatchCompletionEvent popOwningProcess()
-			throws ProcessIdentifierException {
-		return new DispatchCompletionEvent(popOwner(), index, context);
-	}
-
-	@Override
-	public DispatchCompletionEvent pushOwningProcess(String localProcessName)
-			throws ProcessIdentifierException {
-		return new DispatchCompletionEvent(pushOwner(localProcessName), index,
-				context);
-	}
-
-	/**
-	 * DispatchMessageType.RESULT_COMPLETION
-	 */
-	@Override
-	public DispatchMessageType getMessageType() {
-		return RESULT_COMPLETION;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorEvent.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorEvent.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorEvent.java
deleted file mode 100644
index d048040..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorEvent.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-import static net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType.ERROR;
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.invocation.ProcessIdentifierException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType;
-
-/**
- * Message within the dispatch stack representing a single error report. This
- * may then be handled by upstream layers to retry jobs etc. If it reaches the
- * top of the dispatch stack the behaviour is configurable but by default it
- * will abort that workflow instance, being treated as a catastrophic
- * unhandleable problem.
- * 
- * @author Tom Oinn
- */
-public class DispatchErrorEvent extends
-		AbstractDispatchEvent<DispatchErrorEvent> {
-	private Throwable cause;
-	private String message;
-	private DispatchErrorType failureType;
-	private Activity<?> failedActivity;
-
-	/**
-	 * Create a new error event
-	 * 
-	 * @param owningProcess
-	 * @param index
-	 * @param context
-	 * @param errorMessage
-	 * @param t
-	 */
-	public DispatchErrorEvent(String owningProcess, int[] index,
-			InvocationContext context, String errorMessage, Throwable t,
-			DispatchErrorType failureType, Activity<?> failedActivity) {
-		super(owningProcess, index, context);
-		this.message = errorMessage;
-		this.cause = t;
-		this.failureType = failureType;
-		this.failedActivity = failedActivity;
-	}
-
-	/**
-	 * Return the type of failure, this is used by upstream dispatch layers to
-	 * determine whether they can reasonably handle the error message
-	 */
-	public DispatchErrorType getFailureType() {
-		return this.failureType;
-	}
-
-	/**
-	 * Return the Activity instance which failed to produce this error message
-	 */
-	public Activity<?> getFailedActivity() {
-		return this.failedActivity;
-	}
-
-	/**
-	 * Return the throwable behind this error, or null if there was no exception
-	 * raised to create it.
-	 * 
-	 * @return
-	 */
-	public Throwable getCause() {
-		return this.cause;
-	}
-
-	/**
-	 * Return the textual message representing this error
-	 * 
-	 * @return
-	 */
-	public String getMessage() {
-		return this.message;
-	}
-
-	@Override
-	public DispatchErrorEvent popOwningProcess()
-			throws ProcessIdentifierException {
-		return new DispatchErrorEvent(popOwner(), index, context, message,
-				cause, failureType, failedActivity);
-	}
-
-	@Override
-	public DispatchErrorEvent pushOwningProcess(String localProcessName)
-			throws ProcessIdentifierException {
-		return new DispatchErrorEvent(pushOwner(localProcessName), index,
-				context, message, cause, failureType, failedActivity);
-	}
-
-	/**
-	 * @return Always a {@link DispatchMessageType#ERROR}
-	 */
-	@Override
-	public DispatchMessageType getMessageType() {
-		return ERROR;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorType.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorType.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorType.java
deleted file mode 100644
index 226fd6f..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchErrorType.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-/**
- * A simple enumeration of possible failure classes, used to determine whether
- * fault handling dispatch layers should attempt to handle a given failure
- * message.
- * 
- * @author Tom Oinn
- */
-public enum DispatchErrorType {
-	/**
-	 * Indicates that the failure to invoke the activity was due to invalid
-	 * input data, in this case there is no point in trying to invoke the
-	 * activity again with the same data as it will always fail. Fault handling
-	 * layers such as retry should pass this error type through directly; layers
-	 * such as failover handlers should handle it as the input data may be
-	 * applicable to other activities within the processor.
-	 */
-	DATA,
-
-	/**
-	 * Indicates that the failure was related to the invocation of the resource
-	 * rather than the input data, and that an identical invocation at a later
-	 * time may succeed.
-	 */
-	INVOCATION,
-
-	/**
-	 * Indicates that the failure was due to missing or incorrect authentication
-	 * credentials and that retrying the activity invocation without modifying
-	 * the credential set is pointless.
-	 */
-	AUTHENTICATION;
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobEvent.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobEvent.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobEvent.java
deleted file mode 100644
index ecf03c8..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobEvent.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-import static net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType.JOB;
-
-import java.util.List;
-import java.util.Map;
-
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.invocation.ProcessIdentifierException;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType;
-
-/**
- * An event within the dispatch stack containing a single job's worth of data
- * along with an ordered list of Activity instances.
- * 
- * @author Tom Oinn
- */
-public class DispatchJobEvent extends AbstractDispatchEvent<DispatchJobEvent> {
-	private Map<String, T2Reference> dataMap;
-	private List<? extends Activity<?>> activities;
-
-	/**
-	 * Create a new job event, specifying a complete set of input data and a
-	 * list of activities which could potentially consume this data
-	 * 
-	 * @param owningProcess
-	 * @param index
-	 * @param context
-	 * @param data
-	 * @param activities
-	 */
-	public DispatchJobEvent(String owningProcess, int[] index,
-			InvocationContext context, Map<String, T2Reference> data,
-			List<? extends Activity<?>> activities) {
-		super(owningProcess, index, context);
-		this.dataMap = data;
-		this.activities = activities;
-	}
-
-	/**
-	 * The actual data carried by this dispatch job event object is in the form
-	 * of a map, where the keys of the map are Strings identifying the named
-	 * input and the values are Strings containing valid data identifiers within
-	 * the context of a visible DataManager object (see CloudOne specification
-	 * for further information on the DataManager system)
-	 * 
-	 * @return Map of name to data reference for this Job
-	 */
-	public Map<String, T2Reference> getData() {
-		return this.dataMap;
-	}
-
-	/**
-	 * Returns a list of activity instances which can be applied to the data
-	 * contained by this job event.
-	 * 
-	 * @return ordered list of Activity instances
-	 */
-	public List<? extends Activity<?>> getActivities() {
-		return this.activities;
-	}
-
-	@Override
-	public DispatchJobEvent popOwningProcess()
-			throws ProcessIdentifierException {
-		return new DispatchJobEvent(popOwner(), index, context, dataMap,
-				activities);
-	}
-
-	@Override
-	public DispatchJobEvent pushOwningProcess(String localProcessName)
-			throws ProcessIdentifierException {
-		return new DispatchJobEvent(pushOwner(localProcessName), index,
-				context, dataMap, activities);
-	}
-
-	/**
-	 * @return Always a {@link DispatchMessageType#JOB}.
-	 */
-	@Override
-	public DispatchMessageType getMessageType() {
-		return JOB;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobQueueEvent.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobQueueEvent.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobQueueEvent.java
deleted file mode 100644
index d2d0461..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchJobQueueEvent.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-import static net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType.JOB_QUEUE;
-
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.invocation.IterationInternalEvent;
-import net.sf.taverna.t2.invocation.ProcessIdentifierException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType;
-
-/**
- * A message within the dispatch stack containing a single reference to the job
- * queue from the iteration system along with an ordered list of Activity
- * instances.
- * 
- * @author Tom Oinn
- */
-public class DispatchJobQueueEvent extends
-		AbstractDispatchEvent<DispatchJobQueueEvent> {
-	private BlockingQueue<IterationInternalEvent<? extends IterationInternalEvent<?>>> queue;
-	private List<? extends Activity<?>> activities;
-
-	/**
-	 * Create a new job queue event, specifying the queue of Completion and Job
-	 * objects and the list of activities which will be used to process the
-	 * corresponding dispatch events
-	 * 
-	 * @param owner
-	 * @param context
-	 * @param queue
-	 * @param activities
-	 */
-	public DispatchJobQueueEvent(
-			String owner,
-			InvocationContext context,
-			BlockingQueue<IterationInternalEvent<? extends IterationInternalEvent<?>>> queue,
-			List<? extends Activity<?>> activities) {
-		super(owner, new int[] {}, context);
-		this.queue = queue;
-		this.activities = activities;
-	}
-
-	public BlockingQueue<IterationInternalEvent<? extends IterationInternalEvent<?>>> getQueue() {
-		return this.queue;
-	}
-
-	public List<? extends Activity<?>> getActivities() {
-		return this.activities;
-	}
-
-	@Override
-	public DispatchJobQueueEvent popOwningProcess()
-			throws ProcessIdentifierException {
-		return new DispatchJobQueueEvent(popOwner(), context, queue, activities);
-	}
-
-	@Override
-	public DispatchJobQueueEvent pushOwningProcess(String localProcessName)
-			throws ProcessIdentifierException {
-		return new DispatchJobQueueEvent(pushOwner(localProcessName), context,
-				queue, activities);
-	}
-
-	/**
-	 * @return Always a {@link DispatchMessageType#JOB_QUEUE}.
-	 */
-	@Override
-	public DispatchMessageType getMessageType() {
-		return JOB_QUEUE;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchResultEvent.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchResultEvent.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchResultEvent.java
deleted file mode 100644
index 6e2c4b9..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/events/DispatchResultEvent.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.dispatch.events;
-
-import static net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType.RESULT;
-
-import java.util.Map;
-
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.invocation.ProcessIdentifierException;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.workflowmodel.processor.dispatch.description.DispatchMessageType;
-
-/**
- * Dispatch event containing the results from an invocation. If the event is
- * part of a stream of such events from a single job invocation the streaming
- * flag will be set to true - when set layers that do not support streaming
- * should either disable any related functionality or complain bitterly. They
- * should never see such an event as the type checker will in the future catch
- * such cases before they occur but for now it's something to watch for.
- * 
- * @author Tom Oinn
- */
-public class DispatchResultEvent extends
-		AbstractDispatchEvent<DispatchResultEvent> {
-	private Map<String, T2Reference> dataMap;
-	private boolean streaming;
-
-	/**
-	 * Construct a new dispatch result event, specifying the data and whether
-	 * the result is part of a stream of multiple results events from a single
-	 * invocation
-	 * 
-	 * @param owner
-	 * @param index
-	 * @param context
-	 * @param data
-	 * @param streaming
-	 */
-	public DispatchResultEvent(String owner, int[] index,
-			InvocationContext context, Map<String, T2Reference> data,
-			boolean streaming) {
-		super(owner, index, context);
-		this.dataMap = data;
-		this.streaming = streaming;
-	}
-
-	/**
-	 * If this result is part of a stream, that is to say multiple result events
-	 * from a single job event, then return true otherwise return false.
-	 * 
-	 * @return whether this is part of a streamed result set
-	 */
-	public boolean isStreamingEvent() {
-		return this.streaming;
-	}
-
-	/**
-	 * The result contains a map of named EntityIdentifier instances
-	 * corresponding to the result data.
-	 * 
-	 * @return the result data for this event
-	 */
-	public Map<String, T2Reference> getData() {
-		return this.dataMap;
-	}
-
-	@Override
-	public DispatchResultEvent popOwningProcess()
-			throws ProcessIdentifierException {
-		return new DispatchResultEvent(popOwner(), index, context, dataMap,
-				streaming);
-	}
-
-	@Override
-	public DispatchResultEvent pushOwningProcess(String localProcessName)
-			throws ProcessIdentifierException {
-		return new DispatchResultEvent(pushOwner(localProcessName), index,
-				context, dataMap, streaming);
-	}
-
-	/**
-	 * @return Always a {@link DispatchMessageType#RESULT}.
-	 */
-	@Override
-	public DispatchMessageType getMessageType() {
-		return RESULT;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/package.html
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/package.html b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/package.html
deleted file mode 100644
index d4dc0d4..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/dispatch/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<body>
-Definition and support classes for the Dispatch Stack. Each processor in
-a workflow contains a stack of dispatch layers with each layer being
-responsible for a particular aspect of the invocation. At a high level
-the stack consumes a queue of events from the iteration system along
-with an initial set of service proxy objects and is repsonsible for
-taking jobs from the queue and matching them to appropriate invocation
-targets.
-<p>Taverna 1 has in effect a single hardcoded dispatch stack for
-each processor with little control over it aside from a few basic
-properties. To replicate the same behaviour within Taverna 2 there are
-dispatch layers for parallelism, retry, failover and invocation. As the
-dispatch layer is an extension point we or others can provide other
-aspects such as recursive invocation and dynamic (runtime) binding from
-abstract service proxies to concrete instances. The last is possible
-because the service list is passed through the stack along with the
-queue or individual job events and can be rewritten or filtered by
-dispatch layer implementations.
-</body>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/AbstractIterationStrategyNode.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/AbstractIterationStrategyNode.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/AbstractIterationStrategyNode.java
deleted file mode 100644
index 22eaf69..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/AbstractIterationStrategyNode.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Vector;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.MutableTreeNode;
-import javax.swing.tree.TreeNode;
-
-import net.sf.taverna.t2.invocation.Completion;
-import net.sf.taverna.t2.workflowmodel.WorkflowStructureException;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Job;
-
-/**
- * Abstract superclass for implementations of IterationStrategyNode, adds logic
- * to connect nodes together and convenience methods to push jobs and completion
- * events up to the parent node.
- * 
- * @author Tom Oinn
- * @author Stian Soiland-Reyes
- */
-@SuppressWarnings("serial")
-public abstract class AbstractIterationStrategyNode extends
-		DefaultMutableTreeNode implements IterationStrategyNode {
-	private List<IterationStrategyNode> children = new ArrayList<>();
-	private IterationStrategyNode parent = null;
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public final synchronized Enumeration<IterationStrategyNode> children() {
-		return new Vector<>(children).elements(); // TODO arraylist?
-	}
-
-	/**
-	 * Clear the child list and parent of this node
-	 */
-	@Override
-	public final synchronized void clear() {
-		for (IterationStrategyNode child : children)
-			child.setParent(null);
-		children.clear();
-		this.parent = null;
-	}
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public boolean getAllowsChildren() {
-		return true;
-	}
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public final synchronized IterationStrategyNode getChildAt(int position) {
-		return children.get(position);
-	}
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public final int getChildCount() {
-		return children.size();
-	}
-
-	/**
-	 * Implements IterationStrategyNode
-	 */
-	@Override
-	public final synchronized List<IterationStrategyNode> getChildren() {
-		return new ArrayList<>(children);
-	}
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public final synchronized int getIndex(TreeNode node) {
-		return children.indexOf(node);
-	}
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public final IterationStrategyNode getParent() {
-		return parent;
-	}
-
-	@Override
-	public synchronized void insert(MutableTreeNode child) {
-		insert(child, getChildCount());
-	}
-
-	@Override
-	public synchronized void insert(MutableTreeNode child, int index) {
-		if (!getAllowsChildren())
-			throw new IllegalStateException("Node does not allow children");
-		if (!(child instanceof IterationStrategyNode))
-			throw new IllegalArgumentException(
-					"Child not an instance of IterationStrategyNode: " + child);
-		if (child == this)
-			throw new IllegalArgumentException("Can't be it's own parent");
-
-		// Check if it is already there (in case we'll just move it)
-		int alreadyExistsIndex = children.indexOf(child);
-
-		children.add(index, (IterationStrategyNode) child);
-
-		if (alreadyExistsIndex > -1) {
-			// Remove it from the old position
-			if (index < alreadyExistsIndex
-					&& alreadyExistsIndex + 1 < children.size())
-				alreadyExistsIndex++;
-			children.remove(alreadyExistsIndex);
-		}
-		if (child.getParent() != this)
-			child.setParent(this);
-	}
-
-	/**
-	 * Implement TreeNode
-	 */
-	@Override
-	public boolean isLeaf() {
-		return children.isEmpty();
-	}
-
-	@Override
-	public void remove(int index) {
-		if (!getAllowsChildren())
-			throw new IllegalStateException("Node does not allow children");
-		children.remove(index);
-	}
-
-	@Override
-	public synchronized void remove(MutableTreeNode node) {
-		if (!getAllowsChildren())
-			throw new IllegalStateException("Node does not allow children");
-		children.remove(node);
-		if (node.getParent() == this)
-			node.setParent(null);
-	}
-
-	@Override
-	public void removeFromParent() {
-		if (parent != null) {
-			IterationStrategyNode oldParent = parent;
-			parent = null;
-			oldParent.remove(this);
-		}
-	}
-
-	/**
-	 * Implements IterationStrategyNode
-	 */
-	@Override
-	public final synchronized void setParent(MutableTreeNode newParent) {
-		if (newParent != null && !(newParent instanceof IterationStrategyNode))
-			throw new IllegalArgumentException(
-					"Parent not a IterationStrategyNode instance: " + newParent);
-		if (newParent != null && !newParent.getAllowsChildren())
-			throw new IllegalStateException(
-					"New parent does not allow children");
-		if (newParent == this)
-			throw new IllegalArgumentException("Can't be it's own parent");
-		removeFromParent();
-		parent = (IterationStrategyNode) newParent;
-		if (parent != null && !parent.getChildren().contains(this))
-			parent.insert(this);
-	}
-
-	@Override
-	public void setUserObject(Object object) {
-		throw new UnsupportedOperationException("Can't set user object");
-	}
-
-	/**
-	 * Push the specified completion event to the parent node
-	 */
-	protected final void pushCompletion(Completion completion) {
-		if (parent != null)
-			parent.receiveCompletion(parent.getIndex(this), completion);
-	}
-
-	/**
-	 * Push the specified job up to the parent node in the iteration strategy.
-	 */
-	protected final void pushJob(Job job) {
-		if (parent != null) {
-			int index = parent.getIndex(this);
-			if (index < 0)
-				throw new WorkflowStructureException(
-						"Parent doesn't have this node in its child list!");
-			parent.receiveJob(parent.getIndex(this), job);
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CompletionHandlingAbstractIterationStrategyNode.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CompletionHandlingAbstractIterationStrategyNode.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CompletionHandlingAbstractIterationStrategyNode.java
deleted file mode 100644
index 117afe2..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CompletionHandlingAbstractIterationStrategyNode.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import static java.util.Collections.synchronizedMap;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import net.sf.taverna.t2.invocation.Completion;
-import net.sf.taverna.t2.invocation.InvocationContext;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Job;
-
-/**
- * A superclass for all iteration strategy nodes which are required to propagate
- * final completion events formed from multiple inputs. This is all the 'real'
- * iteration strategy nodes (but not the internal ones within the iteration
- * strategy object itself or the named input port nodes). All events are passed
- * to delegates in subclasses after which the completion state is checked, the
- * logic is as follows :
- * <p>
- * If the event received is final, that is to say it has an index of zero, and
- * final events have been received on all other inputs and at least one final
- * completion has been received then emit a final completion, otherwise do
- * nothing.
- * <p>
- * This means that subclasses should not emit final completion events themselves
- * - these will be handled by this superclass and emiting them in the subclass
- * will lead to duplicatation.
- * 
- * @author Tom Oinn
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public abstract class CompletionHandlingAbstractIterationStrategyNode extends
-		AbstractIterationStrategyNode {
-	/**
-	 * Container class for the state of completion for a given process
-	 * identifier
-	 * 
-	 * @author Tom Oinn
-	 */
-	protected final class CompletionState {
-		protected CompletionState(int indexLength) {
-			inputComplete = new boolean[indexLength];
-			for (int i = 0; i < indexLength; i++)
-				inputComplete[i] = false;
-		}
-
-		protected boolean[] inputComplete;
-		protected boolean receivedCompletion = false;
-
-		/**
-		 * Return true iff all inputs have completed
-		 */
-		protected boolean isComplete() {
-			for (boolean inputCompletion : inputComplete)
-				if (!inputCompletion)
-					return false;
-			return true;
-		}
-	}
-
-	private Map<String, CompletionState> ownerToCompletion = synchronizedMap(new HashMap<String, CompletionState>());
-
-	@Override
-	public final void receiveCompletion(int inputIndex, Completion completion) {
-		innerReceiveCompletion(inputIndex, completion);
-		if (completion.getIndex().length == 0)
-			pingCompletionState(inputIndex, completion.getOwningProcess(),
-					true, completion.getContext());
-	}
-
-	@Override
-	public final void receiveJob(int inputIndex, Job newJob) {
-		innerReceiveJob(inputIndex, newJob);
-		if (newJob.getIndex().length == 0)
-			pingCompletionState(inputIndex, newJob.getOwningProcess(), false,
-					newJob.getContext());
-	}
-
-	/**
-	 * Called after a final completion event has been emited for a given owning
-	 * process, should be used by subclasses to do any tidying required,
-	 * removing state etc.
-	 * 
-	 * @param owningProcess
-	 */
-	protected abstract void cleanUp(String owningProcess);
-
-	private void pingCompletionState(int inputIndex, String owningProcess,
-			boolean isCompletion, InvocationContext context) {
-		CompletionState cs = getCompletionState(owningProcess);
-		cs.inputComplete[inputIndex] = true;
-		if (isCompletion)
-			cs.receivedCompletion = true;
-		if (cs.isComplete()) {
-			cleanUp(owningProcess);
-			ownerToCompletion.remove(owningProcess);
-			if (cs.receivedCompletion)
-				pushCompletion(new Completion(owningProcess, new int[0],
-						context));
-		}
-	}
-
-	protected CompletionState getCompletionState(String owningProcess) {
-		if (ownerToCompletion.containsKey(owningProcess))
-			return ownerToCompletion.get(owningProcess);
-		CompletionState cs = new CompletionState(getChildCount());
-		ownerToCompletion.put(owningProcess, cs);
-		return cs;
-	}
-
-	protected abstract void innerReceiveCompletion(int inputIndex,
-			Completion completion);
-
-	protected abstract void innerReceiveJob(int inputIndex, Job newJob);
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CrossProduct.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CrossProduct.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CrossProduct.java
deleted file mode 100644
index 4bf606c..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/CrossProduct.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import static java.util.Collections.synchronizedMap;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import net.sf.taverna.t2.invocation.Completion;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Job;
-
-/**
- * A cross product node combines its inputs in an 'all against all' manner. When
- * a new job is received on index 'n' a set of jobs is emited corresponding to
- * the combination of the new job with all other jobs on input indices other
- * than 'n'.
- * 
- * @author Tom Oinn
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class CrossProduct extends
-		CompletionHandlingAbstractIterationStrategyNode {
-	private Map<String, List<Set<Job>>> ownerToCache = synchronizedMap(new HashMap<String, List<Set<Job>>>());
-
-	/**
-	 * Receive a job, emit jobs corresponding to the orthogonal join of the new
-	 * job with all jobs in all other input lists.
-	 */
-	@Override
-	public synchronized void innerReceiveJob(int inputIndex, Job newJob) {
-		if (getChildCount() == 1) {
-			/*
-			 * there's only one input and there's nothing to do here so push the
-			 * job through
-			 */
-			pushJob(newJob);
-			return;
-		}
-		if (!ownerToCache.containsKey(newJob.getOwningProcess())) {
-			List<Set<Job>> perInputCache = new ArrayList<>();
-			for (int i = 0; i < getChildCount(); i++)
-				perInputCache.add(new HashSet<Job>());
-			ownerToCache.put(newJob.getOwningProcess(), perInputCache);
-		}
-		// Store the new job
-		List<Set<Job>> perInputCache = ownerToCache.get(newJob
-				.getOwningProcess());
-		perInputCache.get(inputIndex).add(newJob);
-		/*
-		 * Find all combinations of the new job with all permutations of jobs in
-		 * the other caches. We could make this a lot easier by restricting it
-		 * to a single pair of inputs, this might be a more sane way to go in
-		 * the future...
-		 */
-		Set<Job> workingSet = perInputCache.get(0);
-		if (inputIndex == 0) {
-			workingSet = new HashSet<>();
-			workingSet.add(newJob);
-		}
-		for (int i = 1; i < getChildCount(); i++) {
-			Set<Job> thisSet = perInputCache.get(i);
-			if (i == inputIndex) {
-				/*
-				 * This is the cache for the new job, so we rewrite the set to a
-				 * single element one containing only the newly submitted job
-				 */
-				thisSet = new HashSet<>();
-				thisSet.add(newJob);
-			}
-			workingSet = merge(workingSet, thisSet);
-		}
-		for (Job outputJob : workingSet)
-			pushJob(outputJob);
-		if (canClearCache(inputIndex, newJob.getOwningProcess()))
-			/*
-			 * If we've seen completions for all the other indexes we don't need
-			 * to cache jobs for this index
-			 */
-			perInputCache.get(inputIndex).clear();
-	}
-
-	private Set<Job> merge(Set<Job> set1, Set<Job> set2) {
-		Set<Job> newSet = new HashSet<>();
-		for (Job job1 : set1)
-			for (Job job2 : set2) {
-				int[] newIndex = new int[job1.getIndex().length
-						+ job2.getIndex().length];
-				int j = 0;
-				for (int i = 0; i < job1.getIndex().length; i++)
-					newIndex[j++] = job1.getIndex()[i];
-				for (int i = 0; i < job2.getIndex().length; i++)
-					newIndex[j++] = job2.getIndex()[i];
-				Map<String, T2Reference> newDataMap = new HashMap<>();
-				newDataMap.putAll(job1.getData());
-				newDataMap.putAll(job2.getData());
-				newSet.add(new Job(job1.getOwningProcess(), newIndex,
-						newDataMap, job1.getContext()));
-			}
-		return newSet;
-	}
-
-	@Override
-	public void innerReceiveCompletion(int inputIndex, Completion completion) {
-		// Do nothing, let the superclass handle final completion events
-	}
-
-	@Override
-	protected final void cleanUp(String owningProcess) {
-		ownerToCache.remove(owningProcess);
-	}
-
-	/**
-	 * Returns true iff completions have been received for all other inputs.
-	 * 
-	 * @param inputIndex
-	 * @param owningProcess
-	 * @return true iff completions have been received for all other inputs
-	 */
-	private boolean canClearCache(int inputIndex, String owningProcess) {
-		boolean[] completionState = getCompletionState(owningProcess).inputComplete;
-		for (int i = 0; i < completionState.length; i++)
-			if (i != inputIndex && !completionState[i])
-				return false;
-		return true;
-	}
-
-	@Override
-	public int getIterationDepth(Map<String, Integer> inputDepths)
-			throws IterationTypeMismatchException {
-		if (isLeaf())
-			// No children!
-			throw new IterationTypeMismatchException(
-					"Cross product with no children");
-		int temp = 0;
-		for (IterationStrategyNode child : getChildren())
-			temp += child.getIterationDepth(inputDepths);
-		return temp;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/DotProduct.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/DotProduct.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/DotProduct.java
deleted file mode 100644
index 057c017..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/DotProduct.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import static java.util.Collections.synchronizedMap;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import net.sf.taverna.t2.invocation.Completion;
-import net.sf.taverna.t2.invocation.TreeCache;
-import net.sf.taverna.t2.reference.T2Reference;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Job;
-
-/**
- * The dot product matches jobs by index array, when a job is received a job is
- * emited if and only if the index array of the new job is matched exactly by
- * index arrays of one job in each other input index.
- * 
- * @author Tom Oinn
- */
-@SuppressWarnings("serial")
-public class DotProduct extends CompletionHandlingAbstractIterationStrategyNode {
-	Map<String, TreeCache[]> ownerToCache = synchronizedMap(new HashMap<String, TreeCache[]>());
-
-	@Override
-	public synchronized void innerReceiveJob(int inputIndex, Job newJob) {
-		if (getChildCount() == 1) {
-			/*
-			 * if there's only one input there's nothing to do here so push the
-			 * job through
-			 */
-			pushJob(newJob);
-			return;
-		}
-		String owningProcess = newJob.getOwningProcess();
-		if (!ownerToCache.containsKey(owningProcess)) {
-			TreeCache[] caches = new TreeCache[getChildCount()];
-			for (int i = 0; i < getChildCount(); i++)
-				caches[i] = new TreeCache();
-			ownerToCache.put(owningProcess, caches);
-		}
-		/*
-		 * Firstly store the new job in the cache, this isn't optimal but is
-		 * safe for now - we can make this more efficient by doing the
-		 * comparison first and only storing the job if required
-		 */
-		TreeCache[] caches = ownerToCache.get(owningProcess);
-		caches[inputIndex].insertJob(newJob);
-		int[] indexArray = newJob.getIndex();
-		boolean foundMatch = true;
-		Map<String, T2Reference> newDataMap = new HashMap<>();
-		for (TreeCache cache : caches)
-			if (cache.containsLocation(indexArray))
-				newDataMap.putAll(cache.get(indexArray).getData());
-			else
-				foundMatch = false;
-		if (foundMatch) {
-			Job j = new Job(owningProcess, indexArray, newDataMap, newJob
-					.getContext());
-			/*
-			 * Remove all copies of the job with this index from the cache,
-			 * we'll never use it again and it pays to be tidy
-			 */
-			for (TreeCache cache : caches)
-				cache.cut(indexArray);
-			pushJob(j);
-		}
-	}
-
-	/**
-	 * Delegate to the superclass to propogate completion events if and only if
-	 * the completion event is a final one. We can potentially implement finer
-	 * grained logic here in the future.
-	 */
-	@Override
-	public void innerReceiveCompletion(int inputIndex,
-			Completion completion) {
-		/*
-		 * Do nothing, let the superclass handle final completion events, ignore
-		 * others for now (although in theory we should be able to do better
-		 * than this really)
-		 */
-	}
-
-	@Override
-	protected  void cleanUp(String owningProcess) {
-		ownerToCache.remove(owningProcess);
-	}
-
-	@Override
-	public int getIterationDepth(Map<String, Integer> inputDepths)
-			throws IterationTypeMismatchException {
-		// Check that all input depths are the same
-		if (isLeaf())
-			// No children!
-			throw new IterationTypeMismatchException("Dot product with no children");			
-		int depth = getChildAt(0).getIterationDepth(inputDepths);
-		for (IterationStrategyNode childNode : getChildren())
-			if (childNode.getIterationDepth(inputDepths) != depth)
-				throw new IterationTypeMismatchException(
-						"Mismatched input types for dot product node");
-		return depth;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategy.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategy.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategy.java
deleted file mode 100644
index 3de1846..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategy.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import java.util.Map;
-
-import net.sf.taverna.t2.workflowmodel.WorkflowItem;
-
-public interface IterationStrategy extends WorkflowItem {
-	/**
-	 * The iteration strategy results in a set of job objects with a particular
-	 * job index. This method returns the length of that index array when the
-	 * specified input types are used. Input types are defined in terms of name
-	 * and integer pairs where the name is the name of a NamedInputPortNode in
-	 * the iteration strategy and the integer is the depth of the input data
-	 * collection (i.e. item depth + index array length for that item which
-	 * should be a constant).
-	 * 
-	 * @param inputDepths
-	 *            map of port names to input collection depth
-	 * @return the length of the index array which will be generated for each
-	 *         resultant job object.
-	 */
-	int getIterationDepth(Map<String, Integer> inputDepths)
-			throws IterationTypeMismatchException;
-
-	/**
-	 * Return a map of port name -> desired cardinality for this iteration
-	 * strategy
-	 */
-	Map<String, Integer> getDesiredCardinalities();
-
-	TerminalNode getTerminalNode();
-
-	void normalize();
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyNode.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyNode.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyNode.java
deleted file mode 100644
index e2b0385..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyNode.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.tree.MutableTreeNode;
-
-import net.sf.taverna.t2.invocation.Completion;
-import net.sf.taverna.t2.workflowmodel.WorkflowItem;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Job;
-
-/**
- * Interface for nodes within an iteration strategy layer
- * 
- * @author Tom Oinn
- * @author Stian Soiland-Reyes
- */
-public interface IterationStrategyNode extends MutableTreeNode, WorkflowItem {
-	/**
-	 * Specialised return type of {@link TreeNode#children()}
-	 */
-	@Override
-	Enumeration<IterationStrategyNode> children();
-
-	/**
-	 * Remove all children nodes and set the parent to <code>null</code>.
-	 */
-	void clear();
-
-	/**
-	 * Specialised return type of {@link TreeNode#getChildAt(int)}
-	 */
-	@Override
-	IterationStrategyNode getChildAt(int childIndex);
-
-	/**
-	 * Return a copy of the list of children nodes, or an empty list if
-	 * {@link #getAllowsChildren()} is <code>false</code>.
-	 * 
-	 * @return List of children nodes.
-	 */
-	List<IterationStrategyNode> getChildren();
-
-	/**
-	 * In the context of an enclosing iteration strategy each node should be
-	 * able to return the iteration depth, i.e. the length of the index array,
-	 * for items it will emit. In all cases other than leaf nodes this is
-	 * defined in terms of the depth of child nodes. The input cardinalities for
-	 * named ports are pushed through each node so that the terminal nodes
-	 * corresponding to input port collators can evaluate this expression -
-	 * pushing it through the entire evaluation means we don't have to keep
-	 * state anywhere in the leaf nodes (standard dependency injection)
-	 * <p>
-	 * Nodes can choose to throw the IterationTypeMismatchException if their
-	 * inputs aren't compatible with the operational semantics of the node such
-	 * as in the case of a dot product node with inputs with different depths.
-	 * 
-	 * @param inputDepths
-	 * @return
-	 * @throws IterationTypeMismatchException
-	 */
-	int getIterationDepth(Map<String, Integer> inputDepths)
-			throws IterationTypeMismatchException;
-
-	/**
-	 * Specialised return type of {@link TreeNode#getParent()}
-	 */
-	@Override
-	IterationStrategyNode getParent();
-
-	/**
-	 * Insert a new child node. The new child will be added in the end of the
-	 * list, so this would be equivalent to insert(child, getChildCount()).
-	 * 
-	 * @param child
-	 *            Child node to add
-	 */
-	void insert(MutableTreeNode child);
-
-	/**
-	 * Nodes can also receive completion events, the simplest being one
-	 * declaring that no further input is expected on the given input, or
-	 * partial completion events which are interpreted as 'no event with an
-	 * index array prefixed by the specified completion index array will be
-	 * received on the specified index'
-	 */
-	void receiveCompletion(int inputIndex, Completion completion);
-
-	/**
-	 * The nodes within the iteration strategy, a tree structure, are event
-	 * based. When a new fragment of a job from upstream in the tree (towards
-	 * leaves) arrives it is handled by this method. Implementations will
-	 * probably have to handle state management, i.e. what jobs have we already
-	 * seen, and emit appropriate jobs to downstream nodes.
-	 * 
-	 * @param inputIndex
-	 * @param newJob
-	 */
-	void receiveJob(int inputIndex, Job newJob);
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyStack.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyStack.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyStack.java
deleted file mode 100644
index ee7f099..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationStrategyStack.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import java.util.List;
-import java.util.Map;
-
-import net.sf.taverna.t2.workflowmodel.WorkflowItem;
-
-/**
- * Stack of iteration strategy containers. The stacking behaviour allows for
- * staged implicit iteration where intermediate strategies are used to drill
- * into the collection structure to a certain depth with a final one used to
- * render job objects containing data at the correct depth for the process. This
- * was achieved in Taverna 1 through the combination of nested workflows and
- * 'forcing' processors which could echo and therefore force input types of the
- * workflow to a particular cardinality.
- * 
- * @author Tom Oinn
- */
-public interface IterationStrategyStack extends WorkflowItem {
-	/**
-	 * The iteration strategy stack consists of an ordered list of iteration
-	 * strategies.
-	 * 
-	 * @return An unmodifiable copy of the list containing the iteration
-	 *         strategy objects in order, with the strategy at position 0 in the
-	 *         list being the one to which data is fed first.
-	 */
-	List<? extends IterationStrategy> getStrategies();
-
-	/**
-	 * Calculate the depth of the iteration strategy stack as a whole given a
-	 * set of named inputs and their cardinalities. This depth is the length of
-	 * the index array which will be added to any output data, so the resultant
-	 * output of each port in the owning processor is the depth of that port as
-	 * defined by the activity plus this value.
-	 * 
-	 * @param inputDepths
-	 * @return
-	 * @throws IterationTypeMismatchException
-	 * @throws MissingIterationInputException
-	 */
-	int getIterationDepth(Map<String, Integer> inputDepths)
-			throws IterationTypeMismatchException,
-			MissingIterationInputException;
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationTypeMismatchException.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationTypeMismatchException.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationTypeMismatchException.java
deleted file mode 100644
index 9566039..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/IterationTypeMismatchException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-/**
- * Thrown during the typecheck phase when an iteration strategy is configured
- * such that at runtime it would fail. This is generally because a dot product
- * node has been specified where the children of that node will have different
- * cardinalities (in this case the dot product isn't defined)
- * 
- * @author Tom Oinn
- */
-public class IterationTypeMismatchException extends Exception {
-	private static final long serialVersionUID = -3034020607723767223L;
-
-	public IterationTypeMismatchException() {
-		super();
-	}
-
-	public IterationTypeMismatchException(String arg0) {
-		super(arg0);
-	}
-
-	public IterationTypeMismatchException(Throwable arg0) {
-		super(arg0);
-	}
-
-	public IterationTypeMismatchException(String arg0, Throwable arg1) {
-		super(arg0, arg1);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/MissingIterationInputException.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/MissingIterationInputException.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/MissingIterationInputException.java
deleted file mode 100644
index 8df9328..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/MissingIterationInputException.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-/**
- * Thrown when an attempt is made to evaluate the type of the iteration strategy
- * but one or more input ports aren't defined in the input array of types.
- * Shouldn't normally happen as this will be handled by the type checker
- * detecting that there aren't enough inputs to check but we indicate it for
- * extra robustness.
- * 
- * @author Tom Oinn
- */
-public class MissingIterationInputException extends Exception {
-	private static final long serialVersionUID = -1615949178096496592L;
-
-	public MissingIterationInputException() {
-		super();
-	}
-
-	public MissingIterationInputException(String arg0) {
-		super(arg0);
-	}
-
-	public MissingIterationInputException(Throwable arg0) {
-		super(arg0);
-	}
-
-	public MissingIterationInputException(String arg0, Throwable arg1) {
-		super(arg0, arg1);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/5f1ddb71/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/NamedInputPortNode.java
----------------------------------------------------------------------
diff --git a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/NamedInputPortNode.java b/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/NamedInputPortNode.java
deleted file mode 100644
index bd76a27..0000000
--- a/taverna-workflowmodel-api/src/main/java/net/sf/taverna/t2/workflowmodel/processor/iteration/NamedInputPortNode.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 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.workflowmodel.processor.iteration;
-
-import java.util.Map;
-
-import net.sf.taverna.t2.invocation.Completion;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Job;
-
-/**
- * Acts as the input to a stage within the iteration strategy, passes all jobs
- * straight through. NamedInputPortNode objects are, as the name suggests,
- * named. These names correspond to the names of abstract input ports on the
- * Processor object to which the iteration strategy belongs.
- * 
- * @author Tom Oinn
- */
-@SuppressWarnings("serial")
-public class NamedInputPortNode extends AbstractIterationStrategyNode {
-	private String portName;
-	private int desiredCardinality;
-
-	public NamedInputPortNode(String name, int cardinality) {
-		super();
-		this.portName = name;
-		this.desiredCardinality = cardinality;
-	}
-
-	/**
-	 * If this node receives a job it will always be pushed without modification
-	 * up to the parent
-	 */
-	@Override
-	public void receiveJob(int inputIndex, Job newJob) {
-		pushJob(newJob);
-	}
-
-	/**
-	 * Completion events are passed straight through the same as jobs
-	 */
-	@Override
-	public void receiveCompletion(int inputIndex, Completion completion) {
-		pushCompletion(completion);
-	}
-
-	/**
-	 * Each node maps to a single named input port within the processor
-	 */
-	public String getPortName() {
-		return this.portName;
-	}
-
-	/**
-	 * Each node defines the level of collection depth for that input port
-	 */
-	public int getCardinality() {
-		return this.desiredCardinality;
-	}
-
-	/**
-	 * These nodes correspond to inputs to the iteration strategy and are always
-	 * leaf nodes as a result.
-	 * 
-	 * @override
-	 */
-	@Override
-	public boolean isLeaf() {
-		return true;
-	}
-
-	/**
-	 * These nodes can never have children
-	 * 
-	 * @override
-	 */
-	@Override
-	public boolean getAllowsChildren() {
-		return false;
-	}
-
-	/**
-	 * Iteration depth is the difference between the supplied input depth and
-	 * the desired one. If the desired depth is greater then wrapping will
-	 * happen and the iteration depth will be zero (rather than a negative!)
-	 */
-	@Override
-	public int getIterationDepth(Map<String, Integer> inputDepths) {
-		int myInputDepth = inputDepths.get(portName);
-		int depthMismatch = myInputDepth - desiredCardinality;
-		return (depthMismatch > 0 ? depthMismatch : 0);
-	}
-
-	@Override
-	public String toString() {
-		return getClass().getSimpleName() + " " + getPortName() + "("
-				+ getCardinality() + ")";
-	}
-}