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

[12/51] [partial] incubator-taverna-language git commit: temporarily empty repository

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2flow.xsd
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2flow.xsd b/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2flow.xsd
deleted file mode 100644
index d4c23c0..0000000
--- a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2flow.xsd
+++ /dev/null
@@ -1,923 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<schema targetNamespace="http://taverna.sf.net/2008/xml/t2flow"
-	elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
-	xmlns:tav="http://taverna.sf.net/2008/xml/t2flow" xml:lang="en">
-
-	<annotation>
-		<documentation>
-			<p xmlns='http://www.w3.org/1999/xhtml'>
-				This is a descriptive, informative XML Schema
-				describing
-				the serialisation format of Taverna 2 workflows, as of
-				Taverna 2.0.
-				Such workflows are commonly served with the extension
-				.t2flow and
-				served using the content-type
-				application/vnd.taverna.t2flow+xml
-			</p>
			<p xmlns='http://www.w3.org/1999/xhtml'>
				Stable as of 2009-09-11 by Stian Soiland-Reyes, should correctly
				describe workflows as saved from Taverna 2.0, 2.1 b1 and 2.1 b2, but
				as this schema has been made in retrospect no guarantees are made.
				To test the schema against the examples, try xmllint:
				<code>xmllint --noout --schema t2flow.xsd examples/*t2flow</code>
			</p>
		</documentation>
	</annotation>
-	<element name="workflow" type="tav:Workflow">
-		<annotation>
-			<documentation>The container element for a .t2flow workflow
-				definition. Future versions of Taverna may support other kinds of
-				flows, like control flows, but currently only Dataflows are
-				supported. The Dataflow with role="top" is the main workflows.
			</documentation>
-		</annotation>
-	</element>
-
-	<complexType name="Workflow">
-		<annotation>
-			<documentation>
-				The container of a workflow definition. This schema
-				specifies workflow definitions where version="1" (as
-				used by Taverna
-				2.0) - although this schema also permits
-				any future minor versions
-				like "1.1".
-
-				At least one dataflow must be present, and it must have
-				role="top". Other dataflows would typically be
-				referenced by their id
-				from the nested workflow
-				activity.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="dataflow" type="tav:Dataflow" maxOccurs="unbounded"
-				minOccurs="1">
-			</element>
-		</sequence>
-		<attribute use="required" name="version" type="tav:Version1">
-
-		</attribute>
-		<attribute name="producedBy" type="string" use="optional">
-			<annotation>
-				<documentation>Application that produced (ie. saved/serialised) this
-					workflow.
-
-					Example: taverna-2.1-beta-1
-
-					Introduced in Taverna 2.1 Beta
-					1 - if the value is missing it's safe to
-					assume 'taverna-2.0' -
-					although it might also be a workflow saved
-					through another
-					application using the pre 2.1 APIs, such as the
-					Taverna Platform.
-				</documentation>
-			</annotation>
-		</attribute>
-	</complexType>
-
-	<complexType name="Dataflow">
-		<annotation>
-			<documentation>A dataflow, that is a workflow that is data-driven.
-				When running a dataflow, data is pushed onto the inputPorts, leading
-				through the datalinks to the input ports of processors. The output
-				ports of these processors again have datalinks to other processors,
-				and to outputPorts, which are the results of the workflow.
-				Additional control links can be listed under 'conditions', and
-				annotations (descriptions) about the Dataflow under 'annotations'.
-				The "role" attribute should be "top" for the main dataflow, and
-				"nested" for nested dataflows. The uuid-s in "id" can be referenced
-				from a nested dataflow activity.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="name" type="string">
-				<annotation>
-					<documentation></documentation>
-				</annotation>
-			</element>
-			<element name="inputPorts" type="tav:AnnotatedGranularDepthPorts">
-				<annotation>
-					<documentation>List of dataflow input ports. Input ports are the
-						"parameters" or inputs to running a workflow and must be described
-						with depth and granular depth.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="outputPorts" type="tav:AnnotatedPorts">
-				<annotation>
-					<documentation>List of output ports of the dataflows. Results are
-						delivered to the output ports, the depth of the output port is
-						calculated at runtime.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="processors" type="tav:Processors">
-				<annotation>
-					<documentation>List of processors. Processors receive, process and
-						produce data and are linked with each other using datalinks.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="conditions" type="tav:Conditions">
-				<annotation>
-					<documentation>List of conditional control link. A control link
-						between processor A and B means that processor B will not run
-						until processor A has finished all it's iterations.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="datalinks" type="tav:Datalinks">
-				<annotation>
-					<documentation>List of datalinks. A datalink goes between ports,
-						for instance from a processor output port to a processor input
-						port. The "source" end of the link can also come from a dataflow
-						input port, and the "sink" end can go to a dataflow output port. A
-						processor output port and a dataflow input port can have several
-						links to different ports, but a processor input port or a dataflow
-						output port can't have several incoming links. However, a
-						processor input port can have several incoming links through a
-						'merge', which will wrap the inputs into an ordered list.
					</documentation>
-				</annotation>
-			</element>
-			<element name="annotations" type="tav:Annotations" maxOccurs="1"
-				minOccurs="0">
-				<annotation>
-					<documentation>List of annotations, ie. descriptions and metadata
-						about the dataflow such as "title" and "author".
-					</documentation>
-				</annotation>
-			</element>
-		</sequence>
-		<attribute name="id" type="tav:uuid" use="required">
-			<annotation>
-				<documentation>A unique identifier for this dataflow (UUID). This id
-					should change whenever a structural change has been done to the
-					dataflow.
-				</documentation>
-			</annotation>
-		</attribute>
-		<attribute name="role" type="tav:role" use="required">
-			<annotation>
-				<documentation>The role of this Dataflow within the Workflow
-					container. The "top" dataflow is the main one, while "nested"
-					dataflows might be referenced by id from activities.
-				</documentation>
-			</annotation>
-		</attribute>
-	</complexType>
-
-	<simpleType name="uuid">
-		<annotation>
-			<documentation>A hex-formatted UUID. (Universial Unique IDentifier).
-				UUIDs should be generated using a random algorithm so that they
-				can't identify the machine who saved the dataflow.
-			</documentation>
-		</annotation>
-		<restriction base="string">
-			<pattern
-				value="[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}">
-			</pattern>
-		</restriction>
-	</simpleType>
-
-	<simpleType name="role">
-		<annotation>
-			<documentation>The role of a dataflow within a workflow.
-			</documentation>
-		</annotation>
-		<restriction base="string">
-			<enumeration value="top"></enumeration>
-			<enumeration value="nested"></enumeration>
-		</restriction>
-	</simpleType>
-
-	<complexType name="Ports">
-		<annotation>
-			<documentation>List of ports.</documentation>
-		</annotation>
-		<sequence>
-			<element name="port" type="tav:Port" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Processors">
-		<annotation>
-			<documentation>List of processors.</documentation>
-		</annotation>
-		<sequence>
-			<element name="processor" type="tav:Processor" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Conditions">
-		<annotation>
-			<documentation>List of conditional control links.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="condition" type="tav:Condition" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Datalinks">
-		<annotation>
-			<documentation>List of datalinks between dataflow ports and
-				processors in a workflow.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="datalink" type="tav:DataLink" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Port">
-		<sequence>
-			<element name="name" type="tav:PortName"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Processor">
-		<annotation>
-			<documentation>A processor of a dataflow. A processor is a dataflow
-				unit that receives input to its input ports, iterates over it using
-				the iteration strategy stack, and pushes it down the dispatch stack
-				to reach the activities that invokes the actual services. The
-				outputs from the services buble up through the dispatch stack and is
-				pushed out on the output ports, indexed according to the iteration
-				strategy.
			</documentation>
-		</annotation>
-		<sequence>
-			<element name="name" type="tav:ProcessorName">
-				<annotation>
-					<documentation>Name of processor within the dataflow. This name is
-						used to describe datalinks. The name of a processor must be
-						locally unique within a dataflow. (However the name can be reused
-						in a nested dataflow)
-					</documentation>
-				</annotation>
-			</element>
-			<element name="inputPorts" type="tav:DepthPorts">
-				<annotation>
-					<documentation>List of processor input ports. Inputs are described
-						with depth. Inputs served at a lower depth will be wrapped, if it
-						is served at a higher depth the iteration strategy stack will be
-						involved to do the iteration over the input. "Depth" means the
-						granularity of data, single strings are depth 0, a list of strings
-						are depth 1, lists of such lists are depth 2, etc.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="outputPorts" type="tav:GranularDepthPorts">
-				<annotation>
-					<documentation>List of processor output ports. Output ports must be
-						described with both depth and granular depth, although in most
-						cases the two are equal. The "depth" describes the granularity of
-						the final output produced by a data port (assuming no iteration,
-						the additional depth from this is added at runtime). If a
-						processor (and its activity) produces intermediate outputs at
-						lower granularity than the granularDepth can be set to describe at
-						which level the intermediate outputs will be produced. (Note that
-						such a processor would still need to produce the final list of the
-						defined depth in the end).
-					</documentation>
-				</annotation>
-			</element>
-			<element name="annotations" type="tav:Annotations" maxOccurs="1"
-				minOccurs="0">
-				<annotation>
-					<documentation>List of processor annotations, describing this
-						processor. For instance a description could say what is the role
-						of this processor in the dataflow.
-					</documentation>
-				</annotation>
-			</element>
-
-			<element name="activities" type="tav:Activities">
-				<annotation>
-					<documentation>List of activities that is to be invoked by this
-						processor. It is down to the dispatch stack to do the activity
-						selection (typically by the Failover layer) so that in the bottom
-						a single activity is invoked at a time. The activities must have
-						output mapping to be able to populate all of this processors
-						outputPorts, and can have input mapping to use one or more of the
-						input ports. Note that the depth of the mapped activity ports must
-						match the defined depths in the Processor ports.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="dispatchStack" type="tav:DispatchStack">
-				<annotation>
-					<documentation>The dispatch stack. The stack is made out of layers
-						that send jobs down and receive job results (or failure) from
-						below. The typical stack takes care of parallelizing, retries on
-						failure, failover to alternative activities, and handling errors.
-						The elements of the stack can be reordered and replaced for
-						individual processors, for instance if one wants to do failover
-						before retries, or do a customized layer that does service
-						selection at runtime by doing a lookup in a service repository
-						like BioCatalogue.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="iterationStrategyStack" type="tav:IterationStrategyStack">
-				<annotation>
-					<documentation>The stack of iteration strategies. The iteration
-						strategies takes care of iterating when a processor is served with
-						inputs of higher granularity than what it expects. The typical
-						usecase is a single iteration strategy in the stack, and by
-						default a single cross product of all the input ports (meaning
-						all-to-all iteration).
-					</documentation>
-				</annotation>
-			</element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Annotations">
-		<annotation>
-			<documentation>List of annotation chains</documentation>
-		</annotation>
-		<choice maxOccurs="unbounded" minOccurs="0">
-			<element name="annotation_chain" type="tav:AnnotationChain">
-			</element>
-			<element name="annotation_chain_2_2" type="tav:AnnotationChain">
-			</element>
-		</choice>
-	</complexType>
-
-	<complexType name="Activities">
-		<annotation>
-			<documentation>List of activities. The list can be empty, used for
-				"abstract" processors, placeholders until a matching activity is
-				found.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="activity" type="tav:Activity" maxOccurs="unbounded"
-				minOccurs="0" />
-		</sequence>
-	</complexType>
-
-	<complexType name="Activity">
-		<annotation>
-			<documentation>An activity is the link between a processor and the
-				actual service. Typical activities can be the WSDL activity that
-				knows how to communicate with WSDL-services, the Beanshell activity
-				that knows how to locally execute a Beanshell script, or a Dataflow
-				activity that knows how to execute a nested dataflow. (Typically
-				included as another dataflow element within this Workflow
-				description).
			</documentation>
-		</annotation>
-		<sequence>
-			<element name="raven" type="tav:Raven" maxOccurs="1"
-				minOccurs="0">
-				<annotation>
-					<documentation>Raven artifact from which the activity
-						implementation class is to be loaded. The version of this artifact
-						is mainly informational, as the currently loaded artifact is
-						preferred.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="class" type="string">
-				<annotation>
-					<documentation>Fully qualified Java class name defining this
-						activity implementation. An instance of this class will be
-						constructed and then configured with the deserialised configBean.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="inputMap" type="tav:Map">
-				<annotation>
-					<documentation>Mapping from the processor's input ports to this
-						activity's input ports (determined at run-time after
-						configuration). Not all processor inputs need to be mapped, and
-						neither does all the activity input ports need a mapping. Notice
-						that this mapping is processorPort -> activityPort , while the
-						order is opposite for outputMap. Each activity have their own
-						mapping, which means that you can have alternative activities with
-						different port names (but same depths). If one of the activities
-						requires additional input ports this can be arrange by having
-						additional processor ports, and only map them in that activity.
-						(If the other activity is invoked those inputs are ignored - but
-						note that they would still be iterated over according ot the
-						iteration strategy).
-					</documentation>
-				</annotation>
-			</element>
-			<element name="outputMap" type="tav:Map">
-				<annotation>
-					<documentation>Mapping from the activity's output ports (determined
-						at run-time after configuration) to the processor's output ports.
-						Not all of the activity's output ports need to be mapped, but all
-						of the processor output ports need to have a mapping. Notice that
-						this mapping is activityPort -> processorPort, while the order is
-						opposite for inputMap.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="configBean" type="tav:ConfigBean">
-				<annotation>
-					<documentation>Serialised configuration bean. After constructing
-						the activity instance of the defined class, this configuration
-						bean is passed as configuration to the activity. The activity
-						input and output ports will be defined at runtime after this
-						configuration. (For some activities the configuration bean
-						includes this port definition, while other calculate the ports by
-						parsing service descriptions, etc).
-					</documentation>
-				</annotation>
-			</element>
-			<element name="annotations" type="tav:Annotations" maxOccurs="1"
-				minOccurs="0">
-				<annotation>
-					<documentation>List of annotations describing this activity.
-					</documentation>
-				</annotation>
-			</element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Raven">
-		<annotation>
-			<documentation>Raven artifact described using typical Maven groupId,
-				artifactId and version. When loading a dataflow this artifact must
-				have already been loaded from one of the plugins.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="group" type="string" />
-			<element name="artifact" type="string" />
-			<element name="version" type="string" />
-		</sequence>
-	</complexType>
-
-	<complexType name="Mapping">
-		<annotation>
-			<documentation>A mapping of port names. For instance in an inputMap,
-				where a processor input port "database" is to be mapped to the
-				activity input port "db", an inputMap would be made with
-				from="database" to="db".
-			</documentation>
-		</annotation>
-		<attribute use="required" name="from" type="tav:PortName" />
-		<attribute use="required" name="to" type="tav:PortName" />
-	</complexType>
-
-	<element name="abstractConfigBean" abstract="true"
-		type="tav:AbstractConfigBean" />
-
-	<complexType name="AbstractConfigBean" />
-
-	<complexType name="ConfigBean">
-		<annotation>
-			<documentation>A serialised configuration bean to configure a
-				dispatch layer or activity. Typically the serialisation is done
-				using a Java XML serialisation from libraries such as xstream, and
-				the serialisation is therefore also dependent on the plugin defining
-				the activity or dispatch layer. The alternative schema
-				t2flow-extended.xsd adds descriptions of the most typical activities
-				and dispatch layers.
-			</documentation>
-		</annotation>
-		<sequence>
-			<any namespace="##any" processContents="lax" />
-		</sequence>
-		<attribute name="encoding" type="string" use="required" />
-	</complexType>
-
-	<complexType name="DispatchStack">
-		<annotation>
-			<documentation>List of dispatch layers. This would typically contain
-				at least the Invoke layer to perform the actual invocation of the
-				activity.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="dispatchLayer" type="tav:DispatchLayer"
-				maxOccurs="unbounded" minOccurs="0" />
-		</sequence>
-	</complexType>
-
-	<complexType name="DispatchLayer">
-		<annotation>
-			<documentation>A dispatch layer, identified by Java class name.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="raven" type="tav:Raven" maxOccurs="1"
-				minOccurs="0">
-				<annotation>
-					<documentation>Raven artifact from which the layer class is to be
-						loaded. The version of this artifact is mainly informational, as
-						the currently loaded artifact is preferred.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="class" type="string">
-				<annotation>
-					<documentation>Fully qualified Java class name defining this
-						dispatch layer. An instance of this class will be constructed and
-						then configured with the deserialised configBean.
-					</documentation>
-				</annotation>
-			</element>
-			<element name="configBean" type="tav:ConfigBean">
-				<annotation>
-					<documentation>A serialised configuration for the dispatch layer.
-						The deserialised version of this bean will be passed to the layer
-						instance after initialisation.
-					</documentation>
-				</annotation>
-			</element>
-		</sequence>
-	</complexType>
-
-	<complexType name="IterationStrategyStack">
-		<sequence>
-			<element name="iteration" type="tav:Iteration"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Iteration">
-		<sequence>
-			<element name="strategy" type="tav:TopIterationNode"
-				minOccurs="0" maxOccurs="unbounded" />
-		</sequence>
-	</complexType>
-
-	<complexType name="TopIterationNode">
-		<choice maxOccurs="1" minOccurs="0">
-			<element name="cross" type="tav:CrossProduct" />
-			<element name="dot" type="tav:DotProduct" />
-		</choice>
-	</complexType>
-
-	<complexType name="IterationNode">
-	</complexType>
-
-
-	<complexType name="IterationNodeParent">
-		<complexContent>
-			<extension base="tav:IterationNode">
-				<choice maxOccurs="unbounded" minOccurs="0">
-					<element name="cross" type="tav:CrossProduct" />
-					<element name="dot" type="tav:DotProduct" />
-					<element name="port" type="tav:PortProduct" />
-				</choice>
-			</extension>
-		</complexContent>
-	</complexType>
-
-	<complexType name="CrossProduct">
-		<complexContent>
-			<extension base="tav:IterationNodeParent" />
-		</complexContent>
-	</complexType>
-
-	<complexType name="DotProduct">
-		<complexContent>
-			<extension base="tav:IterationNodeParent" />
-		</complexContent>
-	</complexType>
-
-
-	<complexType name="DepthPort">
-		<complexContent>
-			<extension base="tav:Port">
-				<sequence>
-					<element name="depth" type="nonNegativeInteger"></element>
-				</sequence>
-			</extension>
-		</complexContent>
-	</complexType>
-
-	<complexType name="GranularDepthPort">
-		<complexContent>
-			<extension base="tav:DepthPort">
-				<sequence>
-					<element name="granularDepth" type="nonNegativeInteger">
-					</element>
-				</sequence>
-			</extension>
-		</complexContent>
-	</complexType>
-
-
-
-	<complexType name="GranularDepthPorts">
-		<annotation>
-			<documentation>List of ports that have both depth and granular depth.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="port" type="tav:GranularDepthPort" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-
-	<complexType name="AnnotatedGranularDepthPort">
-		<complexContent>
-			<extension base="tav:GranularDepthPort">
-				<sequence>
-					<element name="annotations" type="tav:Annotations"
-						maxOccurs="1" minOccurs="0">
-						<annotation>
-							<documentation>
-								List of annotations, describing this port. For
-								instance a description could say what type of data the port
-								expects, and an example annotation could say an example value
-							</documentation>
-						</annotation>
-					</element>
-				</sequence>
-			</extension>
-		</complexContent>
-	</complexType>
-	<complexType name="AnnotatedGranularDepthPorts">
-		<annotation>
-			<documentation>List of annotated ports that have both depth and
-				granular depth.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="port" type="tav:AnnotatedGranularDepthPort"
-				maxOccurs="unbounded" minOccurs="0"></element>
-		</sequence>
-	</complexType>
-	
-	<complexType name="LastPredictedDepthPort">
-			<complexContent>
-			<extension base="tav:Port">
-				<sequence>
-					<element name="lastPredictedDepth" type="integer" minOccurs="0">
-					</element>
-				</sequence>
-			</extension>
-		</complexContent>
-	</complexType>
-
-	<complexType name="AnnotatedPort">
-		<complexContent>
-			<extension base="tav:LastPredictedDepthPort">
-				<sequence>
-					<element name="annotations" type="tav:Annotations"
-						maxOccurs="1" minOccurs="0">
-						<annotation>
-							<documentation>
-								List of annotations, describing this port. For
-								instance a description could say what type of data the port
-								expects, and an example annotation could say an example value
-							</documentation>
-						</annotation>
-					</element>
-				</sequence>
-			</extension>
-		</complexContent>
-	</complexType>
-	<complexType name="AnnotatedPorts">
-		<annotation>
-			<documentation>List of annotated ports.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="port" type="tav:AnnotatedPort" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-
-
-	<complexType name="Map">
-		<annotation>
-			<documentation>0 or more mappings.</documentation>
-		</annotation>
-		<sequence>
-			<element name="map" type="tav:Mapping" maxOccurs="unbounded"
-				minOccurs="0"></element>
-		</sequence>
-	</complexType>
-
-	<complexType name="DataLink">
-		<annotation>
-			<documentation>A link between two dataflow units, from source to
-				link.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="sink" type="tav:Link">
-				<annotation>
-					<documentation>The sink of the link - where the data will be
-						flowing to. This must be either a processor input port or a
-						dataflow output port.
-					</documentation>
-				</annotation>
-			</element>
-
-			<element name="source" type="tav:Link">
-				<annotation>
-					<documentation>The source of the link - where the data will be
-						flowing from. This must be a dataflow input port or a processor
-						output port.
-					</documentation>
-				</annotation>
-			</element>
-		</sequence>
-	</complexType>
-
-	<complexType name="Link">
-		<annotation>
-			<documentation>One end of the links in the Datalink. A link goes
-				from/to a port, either a dataflow port or a processor port. If the
-				type is "dataflow", then the "processor" element must not be
-				present, and the port defines a dataflow input (if this link is a
-				source) or output port (if this link is a sink). The must not be
-				more than one DataLink with a sink to the same dataflow output port.
-				If the type is "processor", then the "processor" element must be
-				present, and name a processor in the same dataflow. The port must
-				name a defined processor input port (if this link is a sink) or
-				processor output port (if this link is a source). There must not be
-				more than one DataLink with a sink to the same processor input port.
-				If the type is "merge", this link must be used as a source (merge
-				can't be used with a sink), and is similar to the type of
-				"processor", except that more than one link to the processor is
-				allowed. A "merge" element will be inserted in front of the defined
-				processor input port, and the incoming links will be added to the
-				merge in the order they have been defined in the dataflow.
			</documentation>
-		</annotation>
-		<sequence>
-			<element name="processor" type="tav:ProcessorName" maxOccurs="1"
-				minOccurs="0">
-				<annotation>
-					<documentation>If the type is "processor" or "merge" this element
-						must be present and describe the processor name of this link. If
-						the type is "dataflow" this element must not be present.
					</documentation>
-				</annotation>
-			</element>
-			<element name="port" type="tav:PortName">
-				<annotation>
-					<documentation>If type is "processor" or "merge" this describes a
-						processor input port (if this link is a sink) or output port (if
-						this link is a source).
-					</documentation>
-				</annotation>
-			</element>
-		</sequence>
-
-		<attribute use="required" name="type" type="tav:LinkType"></attribute>
-	</complexType>
-
-	<simpleType name="LinkType">
-		<restriction base="string">
-			<enumeration value="dataflow"></enumeration>
-			<enumeration value="processor"></enumeration>
-			<enumeration value="merge"></enumeration>
-		</restriction>
-	</simpleType>
-
-
-	<complexType name="DepthPorts">
-		<annotation>
-			<documentation>List of ports that have depths.</documentation>
-		</annotation>
-		<sequence>
-			<element name="port" type="tav:DepthPort" maxOccurs="unbounded"
-				minOccurs="0">
-			</element>
-		</sequence>
-	</complexType>
-
-	<complexType name="PortProduct">
-
-		<complexContent>
-			<extension base="tav:IterationNode">
-				<attribute use="required" name="name" type="tav:PortName"></attribute>
-				<attribute use="required" name="depth" type="nonNegativeInteger"></attribute>
-			</extension>
-		</complexContent>
-	</complexType>
-
-	<complexType name="AnnotationChain">
-		<annotation>
-			<documentation>Chain of annotations. Annotations are serialised Java
-				objects, similar to the ConfigBeans.
-			</documentation>
-		</annotation>
-		<sequence>
-			<element name="net.sf.taverna.t2.annotation.AnnotationChainImpl"
-				form="unqualified">
-				<complexType>
-					<sequence>
-						<element name="annotationAssertions" form="unqualified"
-							type="tav:AnnotationAssertionImpl">
-
-						</element>
-					</sequence>
-				</complexType>
-			</element>
-		</sequence>
-		<attribute use="required" name="encoding" type="string"></attribute>
-	</complexType>
-
-	<complexType name="AnnotationAssertionImpl">
-		<sequence>
-			<element name="net.sf.taverna.t2.annotation.AnnotationAssertionImpl"
-				form="unqualified">
-				<complexType>
-					<sequence>
-						<element name="annotationBean" form="unqualified" type="tav:AnnotationBean" />										
-						<element name="date" form="unqualified" type="tav:datetime" />
-						<element name="creators" form="unqualified" />
-						<element name="curationEventList" form="unqualified" />
-					</sequence>
-				</complexType>
-			</element>
-
-		</sequence>
-	</complexType>
-	
-	<complexType name="AnnotationBean">
-		<sequence>
-			<any minOccurs="0" maxOccurs="unbounded" processContents="lax"  />
-		</sequence>
-		<attribute name="class" form="unqualified" />
-	</complexType>
-
-	<simpleType name="datetime">
-		<annotation>
-			<documentation>ISO 8601 datetime with spaces and letter time zones; YYYY-mm-dd hh:mm:ss.nnn TTT
-			</documentation>
-		</annotation>
-		<restriction base="string">
-			<pattern value="\d{4}-\d\d-\d\d \d\d:\d\d:\d\d\.?\d* .*"></pattern>
-		</restriction>
-	</simpleType>
-
-	<simpleType name="Version1">
-		<annotation>
-			<documentation>Version of workflow element covered by this schema -
-				restricted to "1" or "1.x" - for instance "1.2" would be allowed.
-			</documentation>
-		</annotation>
-		<restriction base="string">
-			<pattern value="1(|\..*)"></pattern>
-		</restriction>
-	</simpleType>
-
-	<complexType name="Condition">
-		<annotation>
-			<documentation>A conditional link. The processor named in "target"
-				will not be invoked before the processor named in "control" has
-				finished all its iterations. (Note that the target processor will
-				also wait for any required input data before invoking).
-			</documentation>
-		</annotation>
-		<attribute use="required" name="control" type="tav:ProcessorName"></attribute>
-		<attribute use="required" name="target" type="tav:ProcessorName"></attribute>
-	</complexType>
-
-	<simpleType name="ProcessorName">
-		<annotation>
-			<documentation>Name of a processor within a dataflow. Each processor
-				in the same dataflow need a unique processor name. It is not
-				required, but recommended, to avoid 'special' characters like space,
-				", -, ', \, etc.
-			</documentation>
-		</annotation>
-		<restriction base="string"></restriction>
-	</simpleType>
-
-	<simpleType name="PortName">
-		<annotation>
-			<documentation>Name of a port, either a dataflow input/output port,
-				processor input/output port or a activity input/output port. Port
-				names must be unique for a given grouping of ports. For instance you
-				can't have two input ports on a dataflow with the same name, but you
-				can have two separate dataflows, both having an input port with the
-				same name, or an output port with the same name. In the same way a
-				processor or an activity can have an input port and an output port
-				with the same name (but they are separate ports), but not two input
-				ports or output ports with the same name. It is not required, but
-				recommended, to avoid 'special' characters like space, ", -, ', \,
-				etc.
			</documentation>
-		</annotation>
-		<restriction base="string"></restriction>
-	</simpleType>
-</schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2layers.xsd
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2layers.xsd b/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2layers.xsd
deleted file mode 100644
index f66604e..0000000
--- a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2layers.xsd
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<xsd:schema targetNamespace="http://taverna.sf.net/2008/xml/t2layers"
-	xmlns:layers="http://taverna.sf.net/2008/xml/t2layers" xmlns:tav="http://taverna.sf.net/2008/xml/t2flow"
-	elementFormDefault="unqualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-	<xsd:complexType name="RetryConfig">
-		<xsd:annotation>
-			<xsd:documentation>Defines parameters of retries for when an
-				activity fails.
</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="backoffFactor" type="xsd:double">
-				<xsd:annotation>
-					<xsd:documentation>A multiplication factor applied to the previous
-						delay on concurrent delays. Typically this number is quite close
-						to 1.0. A value of 1.0 means to always use the same delay, while a
-						factor of 2.0 means a doubling of delay for each retry. The delay
-						will however never be larger than the specified maxDelay.
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="initialDelay" type="xsd:long">
-				<xsd:annotation>
-					<xsd:documentation>
-						Initial delay in milliseconds before the first
-						retry will be performed.
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="maxDelay" type="xsd:long">
-				<xsd:annotation>
-					<xsd:documentation>Maximum delay in milliseconds after
-						applying the backoffFactor.</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="maxRetries" type="xsd:nonNegativeInteger">
-				<xsd:annotation>
-					<xsd:documentation>
-						Maximum number of retries. A number of 0 means
-						no retries will be performed.
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="ParallelizeConfig">
-		<xsd:annotation>
-			<xsd:documentation>Defines maximum number of jobs to run
-				concurrently.</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="maxJobs" type="xsd:nonNegativeInteger"></xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="LoopConfig">
-		<xsd:annotation>
-			<xsd:documentation>Configuration of the loop layer,
-				which can call an activity again on a given condition. The outputs
-				of the activity in the processor that has this layer in it's
-				dispatch stack will be passed to a special conditional activity,
-				described by conditionXML. This conditional activity will determine
-				if the main activity is to be called again, by returning "true" or
-				"false" on it's "loop" output port. If this is the case, the
-				original job will be sent down again in the dispatch stack, possibly
-				with any modified input parameters (if other output ports from the
-				conditional activity matches the original input port names).
			</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="conditionXML" type="xsd:string">
-				<xsd:annotation>
-					<xsd:documentation>
-						Activity to invoke to do the conditional
-						checking as escaped XML of the format
-						tav:Activity, typically a Beanshell script. Must
-						have an output port of depth 0 called "loop" -
-						which string value will be checked as a boolean
-						- if it is equal to "true" then the main
-						activity will be invoked again.
-
-						Additional input ports can be defined - if they
-						match any processor input ports then they will
-						receive the processor inputs. If they match any
-						processor output ports they will receive outputs
-						from last invoking the activity.
-
-						Similarly, if output ports are defined, and they
-						match the processor input port, the output from
-						the conditional will replace the original
-						processor input on the next invocation of the
-						real activity. If they match the processor
-						output they will replace the output from the
-						activity.
-        			</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="runFirst" type="xsd:boolean">
-				<xsd:annotation>
-					<xsd:documentation>If true, then the conditional activity will be
-						invoked before calling the "real" activity for the first time,
-						otherwise the real activity will always be called at least once.
-						It is generally not recommended to use runFirst=true unless the
-						conditional activity is able to produce values for all the
-						processor output ports. Also in this case one must be careful with
-						conditional activity input ports that are to be received from
-						calling the activity - they will be null on the first call.
					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="properties" type="layers:Properties">
-				<xsd:annotation>
-					<xsd:documentation>Properties saved by the UI for any
-						auto-generated conditonalXML. Note that these properties are
-						ignored when running the workflow and are only saved for the UI to
-						remember the properties used to generate the conditional activity.
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-
-
-
-    <xsd:complexType name="Properties">
-    	<xsd:sequence>
-    		<xsd:element name="property" type="layers:Property"
-    			maxOccurs="unbounded" minOccurs="0">
-    		</xsd:element>
-    	</xsd:sequence>
-    </xsd:complexType>
-
-    <xsd:complexType name="Property">
-    	<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
-    	<xsd:attribute name="value" type="xsd:string" use="required"></xsd:attribute>
-    </xsd:complexType>
-</xsd:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/xpathactivity.xsd
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/xpathactivity.xsd b/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/xpathactivity.xsd
deleted file mode 100644
index 3f2a875..0000000
--- a/taverna-scufl2-t2flow/src/main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/xpathactivity.xsd
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<xsd:schema elementFormDefault="unqualified"
-
-	xmlns:tool="http://taverna.sf.net/2011/xml/activity/xpath" xmlns:tav="http://taverna.sf.net/2008/xml/t2flow"
-	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
-	jxb:version="1.0">
-
-	<xsd:annotation>
-		<xsd:appinfo>
-			<!-- See http://docs.rakeshv.org/java/jaxb/users-guide/jaxb-custom.html -->
-
-			<!-- <jxb:schemaBindings> <jxb:package name="uk.org.taverna.scufl2.xml.t2flow.rest.jaxb"
-				/> </jxb:schemaBindings> -->
-		</xsd:appinfo>
-	</xsd:annotation>
-
-	<xsd:import namespace="http://taverna.sf.net/2008/xml/t2flow"
-		schemaLocation="t2flow.xsd" />
-
-	<xsd:element
-		name="net.sf.taverna.t2.activities.xpath.XPathActivityConfigurationBean"
-		type="XPathConfig" substitutionGroup="tav:abstractConfigBean" />
-
-	<xsd:complexType name="XPathConfig">
-		<xsd:complexContent>
-			<xsd:extension base="tav:AbstractConfigBean">
-				<xsd:sequence>
-					<xsd:element name="xmlDocument" type="xsd:string" />
-					<xsd:element name="xpathExpression" type="xsd:string" minOccurs="0" />
-					<xsd:element name="xpathNamespaceMap" type="XPathNamespaceMap" />
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="XPathNamespaceMap">
-		<xsd:sequence>
-                        <xsd:element name="entry" minOccurs="0" maxOccurs="unbounded">
-                                <xsd:complexType>
-					<xsd:sequence>
-						<xsd:element name="string" type="xsd:string" />
-						<xsd:element name="string" type="xsd:string" />
-					</xsd:sequence>
-				</xsd:complexType>
-			</xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-</xsd:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/MergeParsingTest.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/MergeParsingTest.java b/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/MergeParsingTest.java
deleted file mode 100644
index bc8298c..0000000
--- a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/MergeParsingTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.apache.taverna.scufl2.translator.t2flow;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-import static org.junit.Assert.assertNotNull;
-
-import java.net.URL;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.translator.t2flow.T2FlowParser;
-import org.junit.Test;
-
-
-public class MergeParsingTest {
-
-	private static final String MERGE_FUN = "/merge_fun.t2flow";
-	private static final String MERGE_THEN_DATAFLOW = "/merge_then_dataflow_link.t2flow";
-	private static final String DATAFLOW_THEN_MERGE = "/dataflow_link_then_merge.t2flow";
-	private static final String MISSING_MERGE = "/missing_merge.t2flow";
-
-	@Test
-	public void mergeFun() throws Exception {
-		URL wfResource = getClass().getResource(MERGE_FUN);
-		assertNotNull("Could not find workflow " + MERGE_FUN, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setStrict(true);
-		@SuppressWarnings("unused")
-		WorkflowBundle researchObj = parser.parseT2Flow(wfResource.openStream());		
-	}
-	
-	@Test(expected=ReaderException.class)
-	public void mergeThenDataflow() throws Exception {
-		URL wfResource = getClass().getResource(MERGE_THEN_DATAFLOW);
-		assertNotNull("Could not find workflow " + MERGE_THEN_DATAFLOW, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setStrict(true);
-		parser.parseT2Flow(wfResource.openStream());
-	}
-	
-	@Test(expected=ReaderException.class)
-	public void dataflowThenMerge() throws Exception {
-		URL wfResource = getClass().getResource(DATAFLOW_THEN_MERGE);
-		assertNotNull("Could not find workflow " + DATAFLOW_THEN_MERGE, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setStrict(true);
-		parser.parseT2Flow(wfResource.openStream());
-	}
-	
-	@Test(expected=ReaderException.class)
-	public void missingMerge() throws Exception {
-		URL wfResource = getClass().getResource(MISSING_MERGE);
-		assertNotNull("Could not find workflow " + MISSING_MERGE, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setStrict(true);
-		parser.parseT2Flow(wfResource.openStream());
-	}
-	
-	
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsing.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsing.java b/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsing.java
deleted file mode 100644
index 68dbf41..0000000
--- a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsing.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.taverna.scufl2.translator.t2flow;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-import static org.junit.Assert.assertNotNull;
-
-import java.net.URL;
-
-import org.apache.taverna.scufl2.api.common.NamedSet;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.configurations.Configuration;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.translator.t2flow.T2FlowParser;
-import org.junit.Test;
-
-
-@SuppressWarnings("unused")
-public class TestActivityParsing {
-
-    private static final String WF_ALL_ACTIVITIES = "/defaultActivitiesTaverna2.2.t2flow";
-	private static final String WF_AS = "/as.t2flow";
-	private static Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-    @Test
-    public void readSimpleWorkflow() throws Exception {
-        URL wfResource = getClass().getResource(WF_ALL_ACTIVITIES);
-        assertNotNull("Could not find workflow " + WF_ALL_ACTIVITIES,
-                wfResource);
-        T2FlowParser parser = new T2FlowParser();
-        parser.setValidating(true);
-        // parser.setStrict(true);
-        WorkflowBundle wfBundle = parser
-                .parseT2Flow(wfResource.openStream());
-		NamedSet<Configuration> cfgs = wfBundle.getProfiles().iterator().next()
-				.getConfigurations();
-        // System.out.println(cfgs);
-
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsingRshell.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsingRshell.java b/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsingRshell.java
deleted file mode 100644
index 4fff401..0000000
--- a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestActivityParsingRshell.java
+++ /dev/null
@@ -1,334 +0,0 @@
-package org.apache.taverna.scufl2.translator.t2flow;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-import static org.apache.taverna.scufl2.api.common.Scufl2Tools.PORT_DEFINITION;
-import static org.apache.taverna.scufl2.translator.t2flow.defaultactivities.RshellActivityParser.ACTIVITY_URI;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.net.URI;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.bind.JAXBException;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.common.URITools;
-import org.apache.taverna.scufl2.api.configurations.Configuration;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.port.InputActivityPort;
-import org.apache.taverna.scufl2.api.port.OutputActivityPort;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-import org.apache.taverna.scufl2.translator.t2flow.T2FlowParser;
-import org.junit.Before;
-import org.junit.Test;
-
-
-@SuppressWarnings("unused")
-public class TestActivityParsingRshell {
-
-	private static final String WF_RSHELL_2_2 = "/rshell-2-2.t2flow";
-	private static final String WF_RSHELL_2_3 = "/rshell-2-3.t2flow";
-	private static final String WF_RSHELL_SIMPLE_2_3 = "/rshell-simple-2-3.t2flow";
-
-	private static final String WF_ALL_ACTIVITIES = "/defaultActivitiesTaverna2.2.t2flow";
-	
-	private static Scufl2Tools scufl2Tools = new Scufl2Tools();
-	private static URITools uriTools = new URITools();
-	private T2FlowParser parser;
-
-	@Before
-	public void makeParser() throws JAXBException {
-		parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		
-	}
-	
-	@Test
-	public void parseRShell22WithReferences() throws Exception {
-		URL wfResource = getClass().getResource(WF_RSHELL_2_2);
-		assertNotNull("Could not find workflow " + WF_RSHELL_2_2, wfResource);
-		WorkflowBundle bundle = parser
-				.parseT2Flow(wfResource.openStream());
-		Profile profile = bundle.getMainProfile();
-		Processor proc = bundle.getMainWorkflow().getProcessors()
-				.getByName("Rshell");
-		assertNotNull(proc);
-		Configuration config = scufl2Tools
-				.configurationForActivityBoundToProcessor(proc, profile);
-		assertNotNull(config);
-		// TODO: Check data types defined (semantic types)
-		
-	}
-	
-	/** FIXME: Update tests for JSON config
-
-	@Test
-	public void parseRShell23() throws Exception {
-		URL wfResource = getClass().getResource(WF_RSHELL_2_3);
-		assertNotNull("Could not find workflow " + WF_RSHELL_2_3, wfResource);
-		WorkflowBundle bundle = parser
-				.parseT2Flow(wfResource.openStream());
-		Profile profile = bundle.getMainProfile();
-		Processor proc = bundle.getMainWorkflow().getProcessors()
-				.getByName("Rshell");
-		assertNotNull(proc);
-		Configuration config = scufl2Tools
-				.configurationForActivityBoundToProcessor(proc, profile);
-		assertNotNull(config);
-
-		Activity activity = (Activity) config.getConfigures();
-
-//		System.out.println(activity.getInputPorts().getNames());
-//		System.out.println(activity.getOutputPorts().getNames());
-
-		
-		assertEquals(ACTIVITY_URI.resolve("#BOOL_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("logVec"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		
-		assertEquals(ACTIVITY_URI.resolve("#R_EXP"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("regxp"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#STRING"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("str"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#STRING"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("str2"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-
-		assertEquals(ACTIVITY_URI.resolve("#INTEGER"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("int"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#INTEGER_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("intVector"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#BOOL"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("log"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#BOOL_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("logicVector"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-
-		assertEquals(ACTIVITY_URI.resolve("#DOUBLE"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("num"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#DOUBLE_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("numVector"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-
-		assertEquals(ACTIVITY_URI.resolve("#PNG_FILE"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("png"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#R_EXP"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("rexpr"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-
-		
-		assertEquals(ACTIVITY_URI.resolve("#STRING"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("str"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#STRING_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("strVector"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-
-		assertEquals(ACTIVITY_URI.resolve("#TEXT_FILE"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("txt"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		
-	}
-	
-
-
-	@Test
-	public void parseRShellAllActiv() throws Exception {
-		URL wfResource = getClass().getResource(WF_ALL_ACTIVITIES);
-		assertNotNull("Could not find workflow " + WF_ALL_ACTIVITIES, wfResource);
-		parser.setStrict(false); // Ignore other broken activities
-		WorkflowBundle bundle = parser
-				.parseT2Flow(wfResource.openStream());
-		Profile profile = bundle.getMainProfile();
-		Processor proc = bundle.getMainWorkflow().getProcessors()
-				.getByName("Rshell");
-		assertNotNull(proc);
-		Configuration config = scufl2Tools
-				.configurationForActivityBoundToProcessor(proc, profile);
-		assertNotNull(config);
-		
-	}
-		
-	@Test
-	public void parseSimpleRShellScript() throws Exception {
-		URL wfResource = getClass().getResource(WF_RSHELL_SIMPLE_2_3);
-		assertNotNull("Could not find workflow " + WF_RSHELL_SIMPLE_2_3, wfResource);
-		WorkflowBundle bundle = parser
-				.parseT2Flow(wfResource.openStream());
-		Profile profile = bundle.getMainProfile();
-		Processor proc = bundle.getMainWorkflow().getProcessors()
-				.getByName("Rshell");
-		assertNotNull(proc);
-		Configuration config = scufl2Tools
-				.configurationForActivityBoundToProcessor(proc, profile);
-		assertNotNull(config);
-				
-		Activity activity = (Activity) config.getConfigures();
-		assertEquals(ACTIVITY_URI,
-				activity.getType());
-		assertEquals(ACTIVITY_URI.resolve("#Config"), config
-				.getJson().getTypeURI());
-		String script = config.getJson().getPropertyAsString(
-				ACTIVITY_URI.resolve("#script"));
-		assertEquals("too\nsimple", script);
-
-		Set<String> expectedInputs = new HashSet<String>(Arrays.asList(
-				"in1", "in2", "in3"));
-		assertEquals(expectedInputs, activity.getInputPorts().getNames());
-		InputActivityPort in1 = activity.getInputPorts().getByName("in1");
-		assertEquals(0, in1.getDepth().intValue());
-		InputActivityPort in2 = activity.getInputPorts().getByName("in2");
-		assertEquals(0, in2.getDepth().intValue());
-		InputActivityPort in3 = activity.getInputPorts().getByName("in3");
-		assertEquals(0, in3.getDepth().intValue());
-
-		Set<PropertyResource> inputDef = config.getJson()
-				.getPropertiesAsResources(
-						PORT_DEFINITION.resolve("#inputPortDefinition"));
-		assertEquals(3, inputDef.size());
-
-		Set<URI> expectedPortUris = new HashSet<URI>();
-		for (InputActivityPort inPort : activity.getInputPorts()) {
-			expectedPortUris.add(uriTools.relativeUriForBean(inPort,
-					config));
-			PropertyResource portDef = scufl2Tools.portDefinitionFor(inPort, profile);
-			assertNotNull("Could not find port definition for port " + inPort, portDef);
-		}
-		assertEquals(3, expectedPortUris.size());
-		assertEquals(3, inputDef.size());
-		
-		Map<URI, URI> dataTypes = new HashMap<URI, URI>();
-		
-		for (PropertyResource portDef : inputDef) {
-			assertEquals(PORT_DEFINITION.resolve("#InputPortDefinition"),
-					portDef.getTypeURI());
-			assertNull(portDef.getResourceURI());
-			URI portURI = portDef.getPropertyAsResourceURI(PORT_DEFINITION
-					.resolve("#definesInputPort"));
-			assertTrue("Unknown port " + portURI,
-					expectedPortUris.contains(portURI));
-			
-			URI dataType = portDef.getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType"));
-			assertEquals(ACTIVITY_URI.resolve("#samePrefix"), dataType.resolve("#samePrefix"));			
-			// For instance http://ns.taverna.org.uk/2010/activity/rshell#BOOL_LIST
-			dataTypes.put(portURI, dataType);
-			
-			
-		}
-
-
-		Set<String> expectedOutputs = new HashSet<String>(
-				Arrays.asList("out1", "out2", "out3"));
-		assertEquals(expectedOutputs, activity.getOutputPorts().getNames());
-		OutputActivityPort out1 = activity.getOutputPorts().getByName("out1");
-		assertEquals(0, out1.getDepth().intValue());
-		OutputActivityPort out2 = activity.getOutputPorts().getByName("out2");
-		assertEquals(1, out2.getDepth().intValue());
-		OutputActivityPort out3 = activity.getOutputPorts().getByName("out3");
-		assertEquals(1, out3.getDepth().intValue());
-
-		expectedPortUris.clear();
-		for (OutputActivityPort outPort : activity.getOutputPorts()) {
-	
-			expectedPortUris.add(uriTools.relativeUriForBean(outPort,
-					config));
-			PropertyResource portDef = scufl2Tools.portDefinitionFor(outPort, profile);
-			assertNotNull("Could not find port definition for port " + outPort, portDef);
-
-		}
-		
-		Set<PropertyResource> outputDef = config.getJson()
-				.getPropertiesAsResources(
-						PORT_DEFINITION.resolve("#outputPortDefinition"));
-		assertEquals(3, outputDef.size());
-		for (PropertyResource portDef : outputDef) {
-			assertEquals(PORT_DEFINITION.resolve("#OutputPortDefinition"),
-					portDef.getTypeURI());
-			assertNull(portDef.getResourceURI());
-			URI portURI = portDef.getPropertyAsResourceURI(PORT_DEFINITION
-					.resolve("#definesOutputPort"));
-			assertTrue("Unknown port " + portURI,
-					expectedPortUris.contains(portURI));
-			
-			URI dataType = portDef.getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType"));
-			assertEquals(ACTIVITY_URI.resolve("#samePrefix"), dataType.resolve("#samePrefix"));			
-			// For instance http://ns.taverna.org.uk/2010/activity/rshell#BOOL_LIST
-			dataTypes.put(portURI, dataType);
-			
-		}
-
-
-		//System.out.println(dataTypes);
-		
-		assertEquals(ACTIVITY_URI.resolve("#STRING"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("in1"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		
-		assertEquals(ACTIVITY_URI.resolve("#DOUBLE"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("in2"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#STRING"), 
-				scufl2Tools.portDefinitionFor(activity.getInputPorts().getByName("in3"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#STRING"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("out1"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#BOOL_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("out2"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		assertEquals(ACTIVITY_URI.resolve("#STRING_LIST"), 
-				scufl2Tools.portDefinitionFor(activity.getOutputPorts().getByName("out3"), profile).
-				getPropertyAsResourceURI(PORT_DEFINITION.resolve("#dataType")));
-		
-
-		PropertyResource connection = config.getJson().getPropertyAsResource(ACTIVITY_URI.resolve("#connection"));
-		assertEquals(ACTIVITY_URI.resolve("#Connection"), connection.getTypeURI());
-
-		assertEquals("localhost", connection.getPropertyAsString(ACTIVITY_URI.resolve("#hostname")));
-		
-		PropertyLiteral portLiteral = connection.getPropertyAsLiteral(ACTIVITY_URI.resolve("#port"));
-		assertEquals(6311, portLiteral.getLiteralValueAsInt());
-		assertEquals(PropertyLiteral.XSD_UNSIGNEDSHORT, portLiteral.getLiteralType());
-
-		assertEquals(false, connection.getPropertyAsLiteral(ACTIVITY_URI.resolve("#keepSessionAlive")).getLiteralValueAsBoolean());
-	}
-
-	*/
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestAnnotationParsing.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestAnnotationParsing.java b/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestAnnotationParsing.java
deleted file mode 100644
index 2a936f3..0000000
--- a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestAnnotationParsing.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.apache.taverna.scufl2.translator.t2flow;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.taverna.scufl2.api.annotation.Annotation;
-import org.apache.taverna.scufl2.api.annotation.Revision;
-import org.apache.taverna.scufl2.api.common.URITools;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.translator.t2flow.T2FlowParser;
-import org.junit.Test;
-
-
-public class TestAnnotationParsing {
-
-	private static final String WF_T3_1226 = "/T3-1226-annotations-with-quotes.t2flow";
-
-	private static final String WF_ANNOTATION_WITH_BACKSLASH_T2FLOW = "/annotation_with_backslash.t2flow";
-
-	private static final String WF_RANDOM = "/random.t2flow";
-	
-	private static final String WF_ANNOTATED = "/annotated2.2.t2flow";
-	private static final String SEMANTIC_ANNOTATIONS = "/semantic_annotations__eclipse.t2flow";
-	
-	
-	private static URITools uriTools = new URITools();
-
-	@Test
-	public void readSimpleWorkflow() throws Exception {
-		URL wfResource = getClass().getResource(WF_ANNOTATED);
-		assertNotNull("Could not find workflow " + WF_ANNOTATED, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream());
-		List<String> expectedRevisions = Arrays.asList(
-				"9e1f7ffd-3bf9-4ba8-9c63-03b79b1858ad",
-				"bb902d82-b0e4-46fc-bed5-950a3b38bb98");
-
-		List<String> foundRevisions = new ArrayList<String>();
-
-		Revision revision = wfBundle.getMainWorkflow().getCurrentRevision();
-		while (revision != null) {
-			URI revisionUri = revision.getIdentifier();
-			String revisionUUID = uriTools
-					.relativePath(Workflow.WORKFLOW_ROOT, revisionUri)
-					.toASCIIString().replace("/", "");
-			foundRevisions.add(revisionUUID);
-			revision = revision.getPreviousRevision();
-		}
-		assertEquals(expectedRevisions, foundRevisions);
-
-	}
-
-	@Test
-	public void readWorkflowWithEscapes() throws Exception {
-		URL wfResource = getClass().getResource(WF_ANNOTATION_WITH_BACKSLASH_T2FLOW);
-		assertNotNull("Could not find workflow " + WF_ANNOTATION_WITH_BACKSLASH_T2FLOW, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream());
-		Annotation ann = wfBundle.getAnnotations().iterator().next();		
-		String annStr  = wfBundle.getResources().getResourceAsString(ann.getBody().toString());
-		System.out.println(annStr);
-		// """c:\\Program Files\\"""
-		assertTrue(annStr.contains("\"\"\"c:\\\\Program Files\\\\\"\"\""));
-	}
-	
-	@Test
-	public void readWorkflowWithQuotesInAnnotations() throws Exception {
-		URL wfResource = getClass().getResource(WF_T3_1226);
-		assertNotNull("Could not find workflow " + WF_T3_1226, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream());
-		Workflow wf = wfBundle.getMainWorkflow();
-		Collection<Annotation> wfAnnotations = wf.getAnnotations();
-		assertEquals(3, wfAnnotations.size());
-		for (Annotation ann : wfAnnotations) {
-			String content = ann.getRDFContent();
-			System.out.println(content);
-			if (content.contains("dc/terms/title")) {
-				assertTrue("Single 'quote' should not be escaped", content.contains("with 'single quote'"));
-			} else if (content.contains("dc/terms/description")) {
-				assertTrue("Triple quotes inside should be escaped", content.contains("contains \\\"\\\"\\\"triple quotes\\\"\\\"\\\" inside"));
-			} else if (content.contains("elements/1.1/creator")) {
-				assertTrue("Unexpected escaping", content.contains("\"\"\"Stian Soiland-Reyes\"\"\""));
-			} else {
-				fail("Unexpected annotation content: " + content);
-			}
-		}
-		
-		
-		Collection<Annotation> portAnnotations = wf.getInputPorts().getByName("a").getAnnotations();
-		assertEquals(2, portAnnotations.size());
-		for (Annotation ann : portAnnotations) {
-			String content = ann.getRDFContent();
-			System.out.println(content);
-			if (content.contains("dc/terms/description")) {
-				assertTrue("Quote at start was not escaped", content.contains("description> \"\"\"\\\"quote at the start"));
-			} else if (content.contains("attribute/exampleData")) {
-				assertTrue("Quote at end was not escaped", content.contains("quote at the end\\\"\"\"\" ."));
-			} else {
-				fail("Unexpected annotation content: " + content);
-			}
-		}
-		
-	}
-	
-
-	@Test
-	public void readSemanticAnnotations() throws Exception {
-		URL wfResource = getClass().getResource(SEMANTIC_ANNOTATIONS);
-		assertNotNull("Could not find workflow " + SEMANTIC_ANNOTATIONS, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(false);
-		WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream());
-		assertEquals(4, wfBundle.getAnnotations().size());
-		for (Annotation x : wfBundle.getAnnotations()) {
-			System.out.println(x.getTarget());
-//			System.out.println(x.getBodyStatements().get(0));
-		}
-		File f = File.createTempFile("annotation", ".wfbundle");
-		System.err.println(f);
-		new WorkflowBundleIO().writeBundle(wfBundle, f, "application/vnd.taverna.scufl2.workflow-bundle");
-	}
-
-
-	@Test
-	public void workflowWithoutRevisions() throws Exception {
-		URL wfResource = getClass().getResource(WF_RANDOM);
-		assertNotNull("Could not find workflow " + WF_RANDOM, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle wfBundle = parser.parseT2Flow(wfResource.openStream());
-		List<String> expectedRevisions = Arrays.asList(
-				"e87de19a-02c7-4106-ae81-0b8e28efb22c");
-
-		List<String> foundRevisions = new ArrayList<String>();
-
-		Revision revision = wfBundle.getMainWorkflow().getCurrentRevision();
-		while (revision != null) {
-			URI revisionUri = revision.getIdentifier();
-			String revisionUUID = uriTools
-					.relativePath(Workflow.WORKFLOW_ROOT, revisionUri)
-					.toASCIIString().replace("/", "");
-			foundRevisions.add(revisionUUID);
-			revision = revision.getPreviousRevision();
-		}
-		assertEquals(expectedRevisions, foundRevisions);
-
-	}
-	
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestBeanshellActivityParser.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestBeanshellActivityParser.java b/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestBeanshellActivityParser.java
deleted file mode 100644
index 530b0ad..0000000
--- a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestBeanshellActivityParser.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package org.apache.taverna.scufl2.translator.t2flow;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-import static org.apache.taverna.scufl2.translator.t2flow.defaultactivities.BeanshellActivityParser.ACTIVITY_URI;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-
-import java.net.URL;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.configurations.Configuration;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.port.InputActivityPort;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-import org.apache.taverna.scufl2.translator.t2flow.T2FlowParser;
-import org.junit.Test;
-
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class TestBeanshellActivityParser {
-
-	private static final String WF_AS = "/as.t2flow";
-	private static final String WF_BEANSHELL_DEPS = "/beanshell-deps.t2flow";
-
-	private static Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-	@Test
-	public void parseBeanshellScript() throws Exception {
-		URL wfResource = getClass().getResource(WF_AS);
-		assertNotNull("Could not find workflow " + WF_AS, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle researchObj = parser
-				.parseT2Flow(wfResource.openStream());
-		// System.out.println(researchObj.getProfiles().iterator().next()
-		// .getConfigurations());
-		Profile profile = researchObj.getProfiles().getByName("taverna-2.1.0");
-		// Processors: [Workflow19, Echo_List, Concatenate_two_strings,
-		// Concatenate_two_strings_2, Concatenate_two_strings_3,
-		// Concatenate_two_strings_4, Create_Lots_Of_Strings, String_constant]
-		Processor concat = researchObj.getMainWorkflow().getProcessors()
-				.getByName("Concatenate_two_strings");
-
-		Configuration concatConfig = scufl2Tools
-				.configurationForActivityBoundToProcessor(concat, profile);		
-		Activity concatAct = (Activity) concatConfig.getConfigures();
-		assertEquals(ACTIVITY_URI,
-				concatAct.getType());
-
-		ObjectNode configResource = concatConfig.getJsonAsObjectNode();
-		assertEquals(ACTIVITY_URI.resolve("#Config"), concatConfig.getType());
-		
-		assertEquals("http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.StringConcat", 
-				configResource.get("derivedFrom").asText());
-		
-		String script = configResource.get("script").asText();
-		assertEquals("output = string1 + string2;", script);
-
-		assertFalse(configResource.has("classLoader"));
-		assertFalse(configResource.has("dependency"));
-
-		
-		Set<String> expectedInputs = new HashSet<String>(Arrays.asList(
-				"string1", "string2"));
-		assertEquals(expectedInputs, concatAct.getInputPorts().getNames());
-		InputActivityPort s1 = concatAct.getInputPorts().getByName("string1");
-		assertEquals(0, s1.getDepth().intValue());
-		InputActivityPort s2 = concatAct.getInputPorts().getByName("string2");
-		assertEquals(0, s2.getDepth().intValue());
-
-		/** TODO: Update tests
-		Set<PropertyResource> inputDef = configResource
-				.getPropertiesAsResources(
-						PORT_DEFINITION.resolve("#inputPortDefinition"));
-		assertEquals(2, inputDef.size());
-
-		Set<URI> expectedPortUris = new HashSet<URI>();
-		for (InputActivityPort inPort : concatAct.getInputPorts()) {
-			expectedPortUris.add(new URITools().relativeUriForBean(inPort,
-					concatConfig));
-		}
-		assertEquals(2, expectedPortUris.size());
-		assertEquals(2, inputDef.size());
-		for (PropertyResource portDef : inputDef) {
-			assertEquals(PORT_DEFINITION.resolve("#InputPortDefinition"),
-					portDef.getTypeURI());
-			assertNull(portDef.getResourceURI());
-			URI dataType = portDef.getPropertyAsResourceURI(PORT_DEFINITION
-					.resolve("#dataType"));
-
-			assertEquals("java", dataType.getScheme());
-			assertEquals("java.lang.String", dataType
-					.getSchemeSpecificPart());
-
-			URI portURI = portDef.getPropertyAsResourceURI(PORT_DEFINITION
-					.resolve("#definesInputPort"));
-			assertTrue("Unknown port " + portURI,
-					expectedPortUris.contains(portURI));
-			
-		}
-
-		// TODO: Is java class here OK? It's a beanshell script after all..
-
-		Set<String> expectedOutputs = new HashSet<String>(
-				Arrays.asList("output"));
-		assertEquals(expectedOutputs, concatAct.getOutputPorts().getNames());
-		OutputActivityPort out = concatAct.getOutputPorts().getByName("output");
-		assertEquals(0, out.getDepth().intValue());
-
-		Set<PropertyResource> outputDef = configResource
-				.getPropertiesAsResources(
-						PORT_DEFINITION.resolve("#outputPortDefinition"));
-		assertEquals(1, outputDef.size());
-		PropertyResource out1Def = outputDef.iterator().next();
-		assertEquals(PORT_DEFINITION.resolve("#OutputPortDefinition"),
-				out1Def.getTypeURI());
-
-		Set<URI> mimeTypes = out1Def.getPropertiesAsResourceURIs(PORT_DEFINITION
-				.resolve("#expectedMimeType"));
-		assertEquals(1, mimeTypes.size());
-
-		assertEquals(URI.create("http://purl.org/NET/mediatypes/text/plain"),
-				mimeTypes.iterator().next());
-
-		 */
-
-		Processor echoList = researchObj.getMainWorkflow().getProcessors()
-				.getByName("Echo_List");
-		Configuration echoConfig = scufl2Tools
-				.configurationForActivityBoundToProcessor(echoList, profile);
-		Activity echoAct = (Activity) echoConfig.getConfigures();
-
-		expectedInputs = new HashSet<String>(Arrays.asList("inputlist"));
-		assertEquals(expectedInputs, echoAct.getInputPorts().getNames());
-		InputActivityPort inputList = echoAct.getInputPorts().getByName(
-				"inputlist");
-		assertEquals(1, inputList.getDepth().intValue());
-		/* TODO: Update tests
-		expectedOutputs = new HashSet<String>(Arrays.asList("outputlist"));
-		assertEquals(expectedOutputs, echoAct.getOutputPorts().getNames());
-		OutputActivityPort outputList = echoAct.getOutputPorts().getByName(
-				"outputlist");
-		assertEquals(1, outputList.getDepth().intValue());
-		*/
-	}
-	
-
-	@Test
-	public void beanshellDependencies() throws Exception {
-		URL wfResource = getClass().getResource(WF_BEANSHELL_DEPS);
-		assertNotNull("Could not find workflow " + WF_BEANSHELL_DEPS, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle wfBundle = parser
-				.parseT2Flow(wfResource.openStream());
-
-		Profile profile = wfBundle.getMainProfile();
-		// Processors: [Workflow19, Echo_List, Concatenate_two_strings,
-		// Concatenate_two_strings_2, Concatenate_two_strings_3,
-		// Concatenate_two_strings_4, Create_Lots_Of_Strings, String_constant]
-		Processor a_c_workflow = wfBundle.getMainWorkflow().getProcessors()
-				.getByName("A_C_workflow");
-		Configuration a_c_config = scufl2Tools
-				.configurationForActivityBoundToProcessor(a_c_workflow, profile);
-		assertNotNull(a_c_config);
-		Configuration c2 = a_c_workflow.getActivityConfiguration(profile);
-		assertEquals(a_c_config,c2);
-/* TODO: Update tests
-		PropertyResource a_c_configResource = a_c_config.getJson();
-		
-		assertFalse(a_c_configResource.hasProperty(ACTIVITY_URI.resolve("#derivedFrom")));
-		SortedSet<PropertyResource> deps = a_c_configResource.getPropertiesAsResources(DEPENDENCY_URI.resolve("#dependency"));
-		Set<String> jars = new HashSet<String>();
-		for (PropertyResource dep : deps) {
-			assertEquals(DEPENDENCY_URI.resolve("#LocalJarDependency"), dep.getTypeURI());
-			jars.add(dep.getPropertyAsString(DEPENDENCY_URI.resolve("#jarFile")));
-		}
-		assertEquals(new HashSet<String>(Arrays.asList("libraryA.jar", "libraryC.jar")),
-				jars);
-		assertFalse(a_c_configResource.hasProperty(DEPENDENCY_URI.resolve("#classLoader")));
-
-		
-		Processor b_system = wfBundle.getMainWorkflow().getProcessors()
-				.getByName("B_system");
-		Configuration b_config = scufl2Tools
-				.configurationForActivityBoundToProcessor(b_system, profile);		
-
-		PropertyResource b_configResource = b_config.getJson();
-		
-		deps = b_configResource.getPropertiesAsResources(DEPENDENCY_URI.resolve("#dependency"));
-		jars = new HashSet<String>();
-		for (PropertyResource dep : deps) {
-			assertEquals(DEPENDENCY_URI.resolve("#LocalJarDependency"), dep.getTypeURI());
-			jars.add(dep.getPropertyAsString(DEPENDENCY_URI.resolve("#jarFile")));
-		}
-		assertEquals(new HashSet<String>(Arrays.asList("libraryB.jar")),
-				jars);
-		assertTrue(b_configResource.hasProperty(DEPENDENCY_URI.resolve("#classLoader")));
-		assertEquals(DEPENDENCY_URI.resolve("#SystemClassLoader"), 
-				b_configResource.getPropertyAsResourceURI(DEPENDENCY_URI.resolve("#classLoader")));
-		
- */
-		
-	}
-	
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestComponentActivityParser.java
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestComponentActivityParser.java b/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestComponentActivityParser.java
deleted file mode 100644
index 25acb64..0000000
--- a/taverna-scufl2-t2flow/src/test/java/org/apache/taverna/scufl2/translator/t2flow/TestComponentActivityParser.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.apache.taverna.scufl2.translator.t2flow;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-import static org.apache.taverna.scufl2.translator.t2flow.defaultactivities.ComponentActivityParser.ACTIVITY_URI;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.net.URL;
-import java.util.Iterator;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.configurations.Configuration;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-import org.apache.taverna.scufl2.translator.t2flow.T2FlowParser;
-import org.junit.Test;
-
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class TestComponentActivityParser {
-	private static final String WF_SIMPLE_COMPONENT = "/component_simple.t2flow";
-	private static Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-	private WorkflowBundle parseWorkflow(String wfPath) throws Exception {
-		URL wfResource = getClass().getResource(wfPath);
-		assertNotNull("could not find workflow " + wfPath, wfResource);
-		T2FlowParser parser = new T2FlowParser();
-		parser.setValidating(true);
-		parser.setStrict(true);
-		WorkflowBundle researchObj = parser
-				.parseT2Flow(wfResource.openStream());
-		return researchObj;
-	}
-
-	@Test
-	public void parseSimpleTell() throws Exception {
-		WorkflowBundle researchObj = parseWorkflow(WF_SIMPLE_COMPONENT);
-		Profile profile = researchObj.getMainProfile();
-		assertNotNull("could not find profile in bundle", profile);
-
-		Processor comp = researchObj.getMainWorkflow().getProcessors()
-				.getByName("combiner");
-		assertNotNull("could not find processor 'combiner'", comp);
-
-		Configuration config = scufl2Tools
-				.configurationForActivityBoundToProcessor(comp, profile);
-
-		Activity act = (Activity) config.getConfigures();
-		assertEquals(ACTIVITY_URI, act.getType());
-
-		ObjectNode resource = config.getJsonAsObjectNode();
-		assertEquals(ACTIVITY_URI.resolve("#Config"), config.getType());
-
-		int length = 0;
-		Iterator<?> i = resource.fieldNames();
-		while (i.hasNext()) {
-			i.next();
-			length++;
-		}
-		assertEquals("must be exactly 4 items in the translated component", 4,
-				length);
-
-		assertEquals("http://www.myexperiment.org", resource
-				.get("registryBase").textValue());
-		assertEquals("SCAPE Utility Components", resource.get("familyName")
-				.textValue());
-		assertEquals("MeasuresDocCombiner", resource.get("componentName")
-				.textValue());
-		assertEquals(1, resource.get("componentVersion").asInt());
-
-		assertEquals(2, comp.getInputPorts().size());
-		assertEquals(1, comp.getOutputPorts().size());
-	}
-}