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 2016/02/02 22:57:57 UTC
[01/11] incubator-taverna-language git commit: taverna language
commandline module renamed -> tavlangtool
Repository: incubator-taverna-language
Updated Branches:
refs/heads/master 99156bd0e -> 92ccd6b3c
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
new file mode 100644
index 0000000..483d4c3
--- /dev/null
+++ b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
@@ -0,0 +1,80 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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.util.HashMap;
+
+import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
+import org.junit.Test;
+import org.junit.*;
+
+/*
+ * Test cases for the Tools Class.
+ * Input :- The output file format
+ * Output:- The relevant writer media type for that file format
+ *
+ * */
+
+public class TestTools {
+
+ private ConvertionTools tools;
+ private HashMap<String, String> map = new HashMap<>();
+
+
+ @Before
+ public void setMap(){
+ this.map.put("wfdesc", "text/vnd.wf4ever.wfdesc+turtle");
+ this.map.put("iwir", "application/vnd.shiwa.iwir+xml");
+ this.map.put("json", "application/ld+json");
+ this.map.put("wfbundle", "application/vnd.taverna.scufl2.workflow-bundle");
+ this.map.put("robundle", null);
+ }
+
+
+ @Test
+ public void testWfdesc() {
+ assertEquals(map.get("wfdesc"), ConvertionTools.valueOf("wfdesc").getMediaType(tools));
+ }
+
+ @Test
+ public void testIwir() {
+ assertEquals(map.get("iwir"), ConvertionTools.valueOf("iwir").getMediaType(tools));
+ }
+
+ @Test
+ public void testJson() {
+ assertEquals(map.get("json"), ConvertionTools.valueOf("json").getMediaType(tools));
+ }
+
+
+ @Test
+ public void testWfbundle() {
+ assertEquals(map.get("wfbundle"), ConvertionTools.valueOf("wfbundle").getMediaType(tools));
+ }
+
+
+ @Test
+ public void testRobundle() {
+ assertEquals(map.get("robundle"), ConvertionTools.valueOf("robundle").getMediaType(tools));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
new file mode 100644
index 0000000..58e0d3f
--- /dev/null
+++ b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
@@ -0,0 +1,49 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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.awt.List;
+import java.util.ArrayList;
+
+import org.apache.taverna.robundle.Bundle;
+import org.apache.taverna.tavlang.tools.validate.Validate;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+public class TestValidate {
+
+
+
+ @Test
+ public void test() {
+ ArrayList<String> list = Lists.newArrayList();
+ list.add("src/test/resources/workflows/t2flow/as.t2flow");
+ Validate val = new Validate(list, null, false);
+
+ assertEquals(false, val.getCheck());
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/resources/.gitignore b/taverna-tavlangtool/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow b/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow
new file mode 100644
index 0000000..2d9f127
--- /dev/null
+++ b/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow
@@ -0,0 +1,1674 @@
+<?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.
+-->
+<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.1.0">
+ <dataflow id="92c5e8d5-8360-4f86-a845-09c9849cbdc5" role="top">
+ <name>Workflow1</name>
+ <inputPorts />
+ <outputPorts>
+ <port>
+ <name>asdasd</name>
+ <annotations />
+ </port>
+ </outputPorts>
+ <processors>
+ <processor>
+ <name>Workflow19</name>
+ <inputPorts>
+ <port>
+ <name>lk</name>
+ <depth>0</depth>
+ </port>
+ </inputPorts>
+ <outputPorts>
+ <port>
+ <name>kk</name>
+ <depth>0</depth>
+ <granularDepth>0</granularDepth>
+ </port>
+ <port>
+ <name>String_constant_value</name>
+ <depth>0</depth>
+ <granularDepth>0</granularDepth>
+ </port>
+ </outputPorts>
+ <annotations />
+ <activities>
+ <activity>
+ <raven>
+ <group>net.sf.taverna.t2.activities</group>
+ <artifact>dataflow-activity</artifact>
+ <version>1.0</version>
+ </raven>
+ <class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class>
+ <inputMap>
+ <map from="lk" to="lk" />
+ </inputMap>
+ <outputMap>
+ <map from="String_constant_value" to="String_constant_value" />
+ <map from="kk" to="kk" />
+ </outputMap>
+ <configBean encoding="dataflow">
+ <dataflow ref="c451b1cf-1c95-47e5-b89c-537a5501a1ef" />
+ </configBean>
+ <annotations />
+ </activity>
+ </activities>
+ <dispatchStack>
+ <dispatchLayer>
+ <raven>
+ <group>net.sf.taverna.t2.core</group>
+ <artifact>workflowmodel-impl</artifact>
+ <version>1.0</version>
+ </raven>
+ <class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+ <configBean encoding="xstream">
+ <net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+ </configBean>
+ </dispatchLayer>
+ <dispatchLayer>
+ <raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="lk" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings</name>
+<inputPorts>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string2" depth="0" />
+<port name="string1" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings_2</name>
+<inputPorts>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string2" depth="0" />
+<port name="string1" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Create_Lots_Of_Strings</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>strings</name>
+<depth>1</depth>
+<granularDepth>1</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap />
+<outputMap>
+<map from="strings" to="strings" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName>
+ <script>List strings = new ArrayList();
+for (int i = 0; i < 40; i++) {
+ strings.add("String" + i);
+}
+</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs />
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>1</granularDepth>
+ <name>strings</name>
+ <depth>1</depth>
+ <mimeTypes>
+ <string>l('text/plain')</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings_3</name>
+<inputPorts>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string1" depth="0" />
+<port name="string2" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>String_constant</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>value</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>stringconstant-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
+<inputMap />
+<outputMap>
+<map from="value" to="value" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+ <value>Add your own value here</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings_4</name>
+<inputPorts>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string1" depth="0" />
+<port name="string2" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Echo_List</name>
+<inputPorts>
+<port>
+<name>inputlist</name>
+<depth>1</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>outputlist</name>
+<depth>1</depth>
+<granularDepth>1</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="inputlist" to="inputlist" />
+</inputMap>
+<outputMap>
+<map from="outputlist" to="outputlist" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.EchoList</localworkerName>
+ <script>outputlist = inputlist;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>[B</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>inputlist</name>
+ <depth>1</depth>
+ <mimeTypes>
+ <string>l('')</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>1</granularDepth>
+ <name>outputlist</name>
+ <depth>1</depth>
+ <mimeTypes>
+ <string>l('')</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="inputlist" depth="1" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+</processors>
+<conditions />
+<datalinks>
+<datalink>
+<sink type="processor">
+<processor>Workflow19</processor>
+<port>lk</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings_2</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>Create_Lots_Of_Strings</processor>
+<port>strings</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_2</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>Create_Lots_Of_Strings</processor>
+<port>strings</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_2</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>Create_Lots_Of_Strings</processor>
+<port>strings</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_3</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>Workflow19</processor>
+<port>kk</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_3</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>String_constant</processor>
+<port>value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_4</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>String_constant</processor>
+<port>value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_4</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>Workflow19</processor>
+<port>String_constant_value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="merge">
+<processor>Echo_List</processor>
+<port>inputlist</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings_4</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="merge">
+<processor>Echo_List</processor>
+<port>inputlist</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings_3</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="dataflow">
+<port>asdasd</port>
+</sink>
+<source type="processor">
+<processor>Echo_List</processor>
+<port>outputlist</port>
+</source>
+</datalink>
+</datalinks>
+<annotations />
+</dataflow>
+<dataflow id="c451b1cf-1c95-47e5-b89c-537a5501a1ef" role="nested">
+<name>Workflow19</name>
+<inputPorts>
+<port>
+<name>lk</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+<annotations />
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>kk</name>
+<annotations />
+</port>
+<port>
+<name>String_constant_value</name>
+<annotations />
+</port>
+</outputPorts>
+<processors>
+<processor>
+<name>Concatenate_two_strings</name>
+<inputPorts>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string1" depth="0" />
+<port name="string2" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>string1_value</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>value</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>stringconstant-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
+<inputMap />
+<outputMap>
+<map from="value" to="value" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+ <value>kjkj</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>String_constant</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>value</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>stringconstant-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
+<inputMap />
+<outputMap>
+<map from="value" to="value" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+ <value>Add your own value here</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+</processors>
+<conditions>
+<condition control="Concatenate_two_strings" target="String_constant" />
+</conditions>
+<datalinks>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>string1_value</processor>
+<port>value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string2</port>
+</sink>
+<source type="dataflow">
+<port>lk</port>
+</source>
+</datalink>
+<datalink>
+<sink type="dataflow">
+<port>kk</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="dataflow">
+<port>String_constant_value</port>
+</sink>
+<source type="processor">
+<processor>String_constant</processor>
+<port>value</port>
+</source>
+</datalink>
+</datalinks>
+<annotations />
+</dataflow>
+</workflow>
\ No newline at end of file
[03/11] incubator-taverna-language git commit: Taverna language
commandline tool module rename added
Posted by st...@apache.org.
Taverna language commandline tool module rename added
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/021fcd53
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/021fcd53
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/021fcd53
Branch: refs/heads/master
Commit: 021fcd53ffebc1c5cc3a41d3b360da9a53619a41
Parents: 1e13219
Author: Menaka Madushanka <me...@gmail.com>
Authored: Tue Feb 2 11:47:13 2016 +0530
Committer: Menaka Madushanka <me...@gmail.com>
Committed: Tue Feb 2 11:47:13 2016 +0530
----------------------------------------------------------------------
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/021fcd53/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 01bbdf1..20f6b71 100644
--- a/pom.xml
+++ b/pom.xml
@@ -257,7 +257,7 @@
<module>taverna-scufl2-t2flow</module>
<module>taverna-scufl2-ucfpackage</module>
<module>taverna-scufl2-wfbundle</module>
- <module>taverna-language-commandline</module>
+ <module>taverna-tavlangtool</module>
<!-- Disabled temporarily due to dependency overload..
<module>taverna-scufl2-wfdesc</module>
-->
[10/11] incubator-taverna-language git commit: taverna-tavlang-tool
module added to parent pom
Posted by st...@apache.org.
taverna-tavlang-tool module added to parent pom
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/2f6f4658
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/2f6f4658
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/2f6f4658
Branch: refs/heads/master
Commit: 2f6f465853c49e3fe1042da2ea1f4327fe37ce50
Parents: 6e2aa82
Author: Menaka Madushanka <me...@gmail.com>
Authored: Tue Feb 2 12:01:11 2016 +0530
Committer: Menaka Madushanka <me...@gmail.com>
Committed: Tue Feb 2 12:01:11 2016 +0530
----------------------------------------------------------------------
pom.xml | 2 +-
taverna-tavlangtool/.gitignore | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/2f6f4658/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 20f6b71..30baeb1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -257,7 +257,7 @@
<module>taverna-scufl2-t2flow</module>
<module>taverna-scufl2-ucfpackage</module>
<module>taverna-scufl2-wfbundle</module>
- <module>taverna-tavlangtool</module>
+ <module>taverna-tavlang-tool</module>
<!-- Disabled temporarily due to dependency overload..
<module>taverna-scufl2-wfdesc</module>
-->
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/2f6f4658/taverna-tavlangtool/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/.gitignore b/taverna-tavlangtool/.gitignore
deleted file mode 100644
index 916e17c..0000000
--- a/taverna-tavlangtool/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-dependency-reduced-pom.xml
[05/11] incubator-taverna-language git commit: Command line module
removed
Posted by st...@apache.org.
Command line module removed
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/66a8cfd1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/66a8cfd1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/66a8cfd1
Branch: refs/heads/master
Commit: 66a8cfd1fb33925c99a24c8b63a1cc9dda9e8c0f
Parents: 021fcd5
Author: Menaka Madushanka <me...@gmail.com>
Authored: Tue Feb 2 11:49:46 2016 +0530
Committer: Menaka Madushanka <me...@gmail.com>
Committed: Tue Feb 2 11:49:46 2016 +0530
----------------------------------------------------------------------
taverna-language-commandline/.gitignore | 1 -
taverna-language-commandline/README.md | 425 -----
taverna-language-commandline/pom.xml | 213 ---
.../src/main/java/.gitignore | 0
.../apache/taverna/tavlang/CommandLineTool.java | 350 ----
.../taverna/tavlang/TavernaCommandline.java | 29 -
.../org/apache/taverna/tavlang/tools/Tools.java | 88 -
.../tavlang/tools/convert/Scufl2Convert.java | 206 ---
.../taverna/tavlang/tools/convert/ToJson.java | 298 ----
.../tavlang/tools/convert/ToRobundle.java | 66 -
.../tavlang/tools/inspect/ProcessorNames.java | 169 --
.../tavlang/tools/inspect/ServiceTypes.java | 112 --
.../taverna/tavlang/tools/stats/GetWfStat.java | 193 --
.../tavlang/tools/validate/Validate.java | 151 --
.../src/main/resources/.gitignore | 0
.../src/main/resources/META-INF/NOTICE | 7 -
.../src/test/java/.gitignore | 0
.../taverna/tavlang/test/CommandLineTest.java | 43 -
.../taverna/tavlang/test/TestConvert.java | 34 -
.../apache/taverna/tavlang/test/TestStats.java | 34 -
.../apache/taverna/tavlang/test/TestTools.java | 80 -
.../taverna/tavlang/test/TestValidate.java | 49 -
.../src/test/resources/.gitignore | 0
.../test/resources/workflows/t2flow/as.t2flow | 1674 ------------------
24 files changed, 4222 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/.gitignore b/taverna-language-commandline/.gitignore
deleted file mode 100644
index 916e17c..0000000
--- a/taverna-language-commandline/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-dependency-reduced-pom.xml
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/README.md
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/README.md b/taverna-language-commandline/README.md
deleted file mode 100644
index e76cbcd..0000000
--- a/taverna-language-commandline/README.md
+++ /dev/null
@@ -1,425 +0,0 @@
-<!--
- 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.
--->
-
-# Apache Taverna Language Command Line
-
-
-This is planned as a command line for the
-[Apache Taverna Language](https://github.com/apache/incubator-taverna-language/),
-an API for the
-[Apache Taverna](http://taverna.incubator.apache.org/) workflows.
-
-This module is a **work in progress** as part of Google Summer of Code 2015.
-
-
-
-## License
-
-(c) 2015 Apache Software Foundation
-
-This product includes software developed at The [Apache Software
-Foundation](http://www.apache.org/).
-
-Licensed under the [Apache License
-2.0](https://www.apache.org/licenses/LICENSE-2.0), see the file
-[../LICENSE](../LICENSE) for details.
-
-The file [NOTICE](src/main/resources/NOTICE) contains any additional attributions and
-details about embedded third-party libraries and source code.
-
-
-# Contribute
-
-Please subscribe to and contact the
-[dev@taverna](http://taverna.incubator.apache.org/community/lists#dev%20mailing%20list)
-for any questions, suggestions and discussions about
-Apache Taverna Language Commandline.
-
-Bugs and planned features are tracked in the Jira
-[Issue tracker](https://issues.apache.org/jira/browse/TAVERNA/component/12326903)
-under the `TAVERNA` component _GSOC Taverna Language Command line_. Feel free
-to add an issue!
-
-To suggest changes to this source code, feel free to raise a
-[GitHub pull request](https://github.com/apache/incubator-taverna-mobile/pulls).
-Any contributions received are assumed to be covered by the [Apache License
-2.0](https://www.apache.org/licenses/LICENSE-2.0). We might ask you
-to sign a [Contributor License Agreement](https://www.apache.org/licenses/#clas)
-before accepting a larger contribution.
-
-
-# Building and install requirements
-
-## Requisites
-
-* Java 1.7 or newer
-* [Apache Maven](https://maven.apache.org/download.html) 3.2.5 or newer (older
- versions probably also work)
-
-
-## Building
-
-To build, run:
-
- mvn clean install
-
-
-# Usage
-
- usage: tavlang <command> [<args>]
-
- The most commonly used tavlang commands are:
- convert Convert the given workflow
- help Display help information about Tvarna
- inspect Inspect the given workflow and show the results on the terminal
- validate Validate the given workflow
- version Show version informantion
-
- See 'tavlang help <command>' for more information on a specific command.
-
-# Documentation
-
-The Taverna language command line tool is for accessing the features of the Taverna language modules.
-The tool has the following functions:
-
-* Conversion
-* Inspection
-* Validation
-* Viewing workflow statistics.
-
-## Command line structure
-
- $tavlang <command> <options> [arguments and parameters]
-
-Each command has its own set of options.
-
-###Commands and Options
-The tool has the following major commands:
-
-* convert: Options {-r -- recursive, -i --input, -o --output,}
-* inspect: Options {-l --log}
-* validate: Options {-l --log, -v --verbose}
-* stats: Options {-l --log, -v --verbose}
-
-## Commands in detail
-
-### convert ------------------------------------------------------
-
-Convert the given workflow file/s into a specified output format.
-
-Usage:
-
- tavlang convert (--output_fomat) ([[options] [arguments]]|files...)
-
- Supported output formats are,
-
- * wfbundle
- * iwir
- * json
- * robundle
- * structure
-
-Options:
-
- * -r, --recursive : Convert all workflow files in a given directory recursively
- * -i, --input : Used with recursive case. Specify the input directory
- * -o, --output : Specify the out put directory
-
-*The tool can only convert into one format at a time
-
-There are two methods for using the conversion command.
-
-#### 1. Non-recursive method
-
-Usage:
-
- $tavlang convert (--output_format) [options] [arguments]
-
-####### Example 1: Without specifying any options
-
- $tavlang convert --structure /helloworld.t2flow
-
-Output:
-
- /converted/helloworld.structure is created
-
-Convert the helloworld.t2flow into helloworld.structure format and store in the /converted directory
-
-###### Example 2: Convert multiple workflows
-
- $tavlang convert --json /helloworld.t2flow /hello.t2flow
-
-Output:
-
- /converted/helloworld.json is created
- /converted/hello.json is created
-
-Convert both workflow files and store them in /converted directory
-
-###### Example 3: with options and arguments
-
- $tavlang convert --wfbundle /helloworld.t2flow -o /output/workflows
-
-Output:
-
- /output/workflows/helloworld.wfbundle is created
-
-Convert the workflow file/s and store them in the specified output directory
-
-#### 2. Recursive method
-
-If there are many workflows in a directory, which are needed to be converted into one single format use this method.
-
-Usage:
-
- $tavlang convert -r (--output_format) -i workflow_src_dir <options> [arguments]
-
-###### Example 4: Without options and arguments
-
- $tavlang convert -r --json -i /home/user/workflows
-
-Convert all the workflows in the input directory into the specified format and store them in the "/home/user/workflows/converted" directory.
-
-Output: Suppose that there are 2 workflow files in the dir 1.t2flow and 2.t2flow
-
- /home/workflows/converted/1.json is created
- /home/workflows/converted/2.json is created
-
-###### Example 5: with output dir is specified
-
- $tavlang convert -r --iwir -i /home/workflows -o /home/final
-
-Convert all the workflows in the input directory and store them in /home/final directory
-
-Output:
-
- /home/final/1.iwir is created
- /home/final/2.iwir is created
-
-### inspect -----------------------------------------------------------------
-
-Inspect the given workflow file/s and give the inspection report.
-Supported workflow bundle formats: .wfbundle, .t2flow
-
-Usage:-
-
- $tavlang inspect (--inspection_options) <-other-options> [arguments] workflow_undles_to_be_inspected
-
-Inspection options:
-
- * --servicetypes :- List all the service-types used in the workflow
- * --processornames :- List the tree of the processor names used in the workflow
-
-Other Options:
-
- * -l, --log :- save the inspection report in a text file
-
-###### Example 1: Without any other-options
-
-1. Inspection result for Service types
-
-
- $tavlang inspect --servicetypes helloworld.wfbundle
- Service types used in helloworld.wfbundle :
-
- http://ns.taverna.org.uk/2010/activity/constant
- **************************************************
-
-2. inspection result for Processor names
-
-
- $tavlang inspect --processornames helloworld.wfbundle
- Processor tree of helloworld.wfbundle
- + Hello_World
- - hello
-
-###### Example 2: With other options
-The output is the same but the results will be saved in the given file.
-
- $tavlang inspect --processornames helloworld.wfbundle -l results.txt
- Processor tree of helloworld.wfbundle
- + Hello_World
- - hello
-
-
-The output will be saved in results.txt in the same format.
-
-### validate ----------------------------------------------------------------------
-
-Validates the given workflow file or files and gives the validation report.
-Validate tool checks for the following problematic conditions.
-
- * Empty Iteration Strategy Top-Node Problems
- * Mismatch Configurable Type Problems
- * Non-Absolute URI Problems
- * Null Field Problems
- * Out-Of-Scope Value Problems
- * Port Mentioned Twice Problems
- * Port Missing From Iteration Strategy Stack Problems
- * Wrong Parent Problems
- * Incompatible Granular Depth Problems
-
-Usage:-
-
- $tavlang validate [options][arguments] input_files
-
-Options:-
-
- * -l, --log: Save the validation report in a text file
- * -v, --verbose: Verbose mode
-
-Supported workflow bundle formats: .t2flow and .wfbundle
-
-###### Example 1: Normal mode
-
- Validate one workflow bundle
-
- $tavlang validate helloworld.t2flow
-
-Output:
-
- Validation started....
- Validating helloworld.t2flow
- The workflow helloworld.t2flow has no errors.
-
- Validation completed.......
-
- Validate more than one workflow bundles
-
- $tavlang validate ../../workflow2.t2flow ../../workflow3.wfbundle
-
- Validation started....
- Validating ../../workflow2.t2flow
- The workflow workflow2.t2flow has no errors.
-
- Validating ../../workflow3.wfbundle
- The workflow workflow3.t2flow has no errors.
-
- Validation completed.......
-
-
-###### Example 2: Verbose mode
-
-The report is more explanatory.
-
- $tavlang validate -v ../../workflow2.t2flow
-
- Validation started....
- Validating ../../workflow2.t2flow
- The workflow workflow2.t2flow has no errors.
-
- The validation report for defaultActivitiesTaverna2.wfbundle......
- --------------------------------------------------------------------------------
- -->NegativeValueProblems:- null
-
- -->EmptyIterationStrategyTopNodeProblems:- null
-
- -->MismatchConfigurableTypeProblems:- null
-
- -->NonAbsoluteURIProblems:- null
-
- -->NullFieldProblems:- null
-
- -->OutOfScopeValueProblems:- null
-
- -->PortMentionedTwiceProblems:- null
-
- -->PortMissingFromIterationStrategyStackProblems:- null
-
- -->WrongParentProblems:- null
-
- -->IncompatibleGranularDepthProblems:- null
-
- ---------------------------------------------------------------------------------
-
-###### Example 3: Saving results to a file
-
- $tavlang validate workflow2.t2flow -l log2.txt
- Validation started....
- Validating workflow2.t2flow
- The workflow helloworld.wfbundle has no errors.
- Validation completed.......
-
- Results were saved into log2.txt
-
-### stats ----------------------------------------------------------------------------------
-
-A workflow contains several resources.
-
-* Processors
-* Input ports
-* Output ports
-* Data links
-* Control links
-
-The stats command gives a report of the resources used in the workflow.
-
-Usage:-
-
- $tavlang stats <options>[arguments] input_files...
-
-Options:-
-
- * -l, – – log : Save results in a log file
- * -v, – – verbose : verbose mode
-
-Supported workflow bundle formats:- .t2flow, .wfbundle
-
-###### Example 1: Normal mode
-
- $tavlang helloworld.wfbundle
- >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
- Name of the workflow = Hello_World
- |--> Number of Processors = 1
- |--> Number of Data Links = 1
- |--> Number of Control Links = 0
- |--> Number of Input ports = 0
- |--> Number of Output Ports = 1
-
-###### Example 2: Verbose mode
-
- $tavlang -v ../../../helloworld.wfbundle
- >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
- Name of the workflow = Hello_World
- |--> Number of Processors = 1
- | |--> Processors:
- | |--> hello
- |
- |--> Number of Data Links = 1
- | |--> Data Links
- | |--> DataLink value=>greeting
- |
- |--> Number of Control Links = 0
- |--> Number of Input ports = 0
- |--> Number of Output Ports = 1
- | |--> Output Ports
- | |--> OutputWorkflowPort "greeting"
-
-###### Example 3: Saving results in a file
-
- $tavlang -l ../../results.txt ../../../helloworld.wfbundle
- >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
- Name of the workflow = Hello_World
- |--> Number of Processors = 1
- |--> Number of Data Links = 1
- |--> Number of Control Links = 0
- |--> Number of Input ports = 0
- |--> Number of Output Ports = 1
-
- Results were saved into ../../results.txt
-
------------------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/pom.xml b/taverna-language-commandline/pom.xml
deleted file mode 100644
index 2da63ff..0000000
--- a/taverna-language-commandline/pom.xml
+++ /dev/null
@@ -1,213 +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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.taverna.language</groupId>
- <artifactId>taverna-language</artifactId>
- <version>0.15.1-incubating-SNAPSHOT</version>
- </parent>
- <artifactId>taverna-language-commandline</artifactId>
- <name>Apache Taverna Language Commandline</name>
- <description>Command line for Taverna Language (experimental)</description>
-
-
- <dependencies>
-
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
-
- <dependency>
- <groupId>${project.parent.groupId}</groupId>
- <artifactId>taverna-scufl2-api</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-scufl2-wfbundle</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-scufl2-t2flow</artifactId>
- <version>${project.version}</version>
- </dependency>
-
-<!-- <dependency> -->
-<!-- <groupId>org.shiwa.iwir</groupId> -->
-<!-- <artifactId>iwir</artifactId> -->
-<!-- <version>1.1.4</version> -->
-<!-- <scope>optional</scope> -->
-<!-- <systemPath>${project.build.directory}/taverna-language-commandline/lib/</systemPath> -->
-<!-- </dependency> -->
-
- <dependency>
- <groupId>no.s11.scufl2</groupId>
- <artifactId>scufl2-iwir</artifactId>
- <version>0.2-SNAPSHOT</version>
- <optional>true</optional>
- </dependency>
-
-
-
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.4.8</version>
- </dependency>
-
-
- <!-- <dependency> <groupId>${project.groupId}</groupId> <artifactId>taverna-scufl2-wfdesc</artifactId>
- <version>${project.version}</version> <optional>true</optional> </dependency> -->
- <!-- <dependency> <groupId>org.purl.wf4ever</groupId> <artifactId>scufl2-wfdesc</artifactId>
- <version>0.3.7</version> </dependency> -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-scufl2-ucfpackage</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-robundle</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>io.airlift</groupId>
- <artifactId>airline</artifactId>
- <!-- <version>${io.airlift.airline.version}</version> -->
- <version>0.7</version>
- </dependency>
-
-
- </dependencies>
-
- <build>
- <!-- TODO: plugins for launchers and executable jar files? -->
- <plugins>
-
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>appassembler-maven-plugin</artifactId>
- <version>1.1.1</version>
- <executions>
- <execution>
- <id>assemble</id>
- <phase>package</phase>
- <goals>
- <goal>assemble</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <repositoryLayout>flat</repositoryLayout>
- <repositoryName>lib</repositoryName>
- <assembleDirectory>${project.build.directory}/${project.artifactId}</assembleDirectory>
- <programs>
- <program>
- <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
- <name>tavlang</name>
- </program>
- </programs>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <transformers>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
- </transformer>
- <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
- <addHeader>false</addHeader>
- </transformer>
- </transformers>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
-
- </plugins>
- </build>
-
- <repositories>
- <repository>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots />
- <id>mygrid-repository</id>
- <name>myGrid Repository</name>
- <url>http://www.mygrid.org.uk/maven/repository</url>
- </repository>
-
- <repository>
- <id>mygrid-snapshot-repository</id>
- <name>myGrid Snapshot Repository</name>
- <url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots />
- </repository>
-
- <repository>
- <id>apache.snapshots</id>
- <name>Apache Snapshot Repository</name>
- <url>http://repository.apache.org/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
-
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/.gitignore b/taverna-language-commandline/src/main/java/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
deleted file mode 100644
index 068c933..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
+++ /dev/null
@@ -1,350 +0,0 @@
-package org.apache.taverna.tavlang;
-
-/*
- * 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 io.airlift.airline.Arguments;
-import io.airlift.airline.Cli;
-import io.airlift.airline.Cli.CliBuilder;
-import io.airlift.airline.Command;
-import io.airlift.airline.Help;
-import io.airlift.airline.Option;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.JAXBException;
-
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.tavlang.tools.convert.Scufl2Convert;
-import org.apache.taverna.tavlang.tools.convert.ToRobundle;
-import org.apache.taverna.tavlang.tools.inspect.ProcessorNames;
-import org.apache.taverna.tavlang.tools.inspect.ServiceTypes;
-import org.apache.taverna.tavlang.tools.stats.GetWfStat;
-import org.apache.taverna.tavlang.tools.validate.Validate;
-
-import com.google.common.collect.Lists;
-
-/*
- * The command line options for convert, validate and inspect workflows.
- * Use the airlift/airline library
- * */
-
-public class CommandLineTool {
-
- private static Cli<TvnLangTool> parser() {
- CliBuilder<TvnLangTool> build = Cli.<TvnLangTool> builder("tavlang")
- .withDescription("Convert, manage workflows")
- .withDefaultCommand(HelpCommand.class)
- .withCommand(CommandConvert.class) // Conversion
- .withCommand(HelpCommand.class) // Help
- .withCommand(CommandInspect.class) // Inspect
- .withCommand(CommandValidate.class) // Validate
- .withCommand(CommandVersion.class) // Version
- .withCommand(CommandStat.class); // Statistics
-
- return build.build();
- }
-
- public CommandLineTool() {
- };
-
- public void parse(String... args) {
- TvnLangTool command = parser().parse(args);
- command.execute();
- System.out.println();
- }
-
- public static abstract class TvnLangTool {
-
- public abstract void execute();
- }
-
- // placeholder for output file types
- public static class Filetypes {
- @Option(name = "--wfdesc", description = "Convert the workflow file to wfdesc-turtle")
- public static boolean isWfdesc = false;
-
- @Option(name = "--wfbundle", description = "Convert the workflow file to wfbundle")
- public static boolean isWfbundle = false;
-
- @Option(name = "--robundle", description = "Convert given bundle in to Research Object bundle")
- public static boolean isRo = false;
-
- @Option(name = "--structure", description = "Convert the workflow into *.structure")
- public static boolean isStructure = false;
-
- @Option(name = "--json", description = "Convert the workflow into json")
- public static boolean isJson = false;
-
-
- @Option(name = "--iwir", description = "Convert scufl2 workflows into IWIR 1.1 specification")
- public static boolean isIwir = false;
-
-
- // The tool can only handle one output format at a time.
- // Return the file type which is selected
- public static String isTrue() {
- if (isWfdesc)
- return "wfdesc";
- else if (isWfbundle)
- return "wfbundle";
- else if (isRo)
- return "robundle";
- else if (isStructure)
- return "structure";
- else if (isJson)
- return "json";
-
- else if (isIwir)
- return "iwir";
-
-
- else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "convert");
- command.execute();
- return null;
- }
-
- }
-
- }
-
- public static class Inspect {
- @Option(name = "--servicetypes", description = "List the service types used in workflow")
- public static boolean servicetypes = false;
-
- @Option(name = "--processornames", description = "List a tree of processor names used in workflow")
- public static boolean processor = false;
-
- public String getWay() {
- if (servicetypes)
- return "servicetypes";
- else if (processor)
- return "processornames";
- else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "inspect");
- command.execute();
- return null;
-
- }
-
- }
-
- }
-
- // Placeholder for optional parameters: Ex: -i, -o
- public static class Optional {
-
- // The input file or directory
- @Option(name = { "-i", "--input" }, description = "Input file/ file dir for conversion")
- public static String in_file_dir;
-
- // The out put file or directory. When this is set, all the converted
- // files will be saved into the directory that specified.
- @Option(name = { "-o", "--output" }, description = "Output file/ directory")
- public static String out_file_dir;
-
- public static String getInFile() {
- return in_file_dir;
- }
-
- public static String getOutFile() {
- return out_file_dir;
- }
-
- }
-
- @Command(name = "help", description = "Display help information about Tvarna")
- public static class HelpCommand extends TvnLangTool {
- @Inject
- public Help help;
-
- @Override
- public void execute() {
- help.call();
- }
- }
-
- // Command for convert workflows
- @Command(name = "convert", description = "Convert the given workflow")
- public static class CommandConvert extends TvnLangTool {
- @Inject
- Optional optional = new Optional();
-
- @Inject
- Filetypes filetypes = new Filetypes();
-
- @Arguments(usage = "<output format> <input files> ", description = "List of files to be converted.\n "
- + "Give the list of files to be converted without -i/-o and the converted files will be saved in to /converted folder in the same dir")
- public final List<String> files = Lists.newArrayList();
-
- // When this is true, the command will run recursively in a directory.
- @Option(name = { "-r", "--recursive" }, description = "Execute the command recursively")
- public boolean recurse = false;
-
- // Option for validate the given workflow when converting
- @Option(name = { "-V", "--validate" }, description = "Validate the workflow before convert")
- public boolean validate = false;
-
- @Override
- public void execute() {
-
- //Validate before convert
- if(validate){
- Validate validate = new Validate(files, null, false);
- if(validate.getCheck()){
- System.out.println("Conversion failed...! Workflow bundle has errors");
- return;
- }else{
- runcommand();
- }
- }
- }
-
- public void runcommand(){
- if (Filetypes.isRo) {
- try {
- new ToRobundle(files, Optional.getOutFile());
- } catch (Exception e) {
- e.printStackTrace();
- }
-// else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc)
- } else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc){
- if (recurse) {
- new Scufl2Convert(Filetypes.isTrue(),
- Optional.getInFile(), Optional.getOutFile());
- } else {
- new Scufl2Convert(Filetypes.isTrue(), files,
- Optional.getOutFile());
- }
- }else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "convert");
- command.execute();
- }
-
- }
-
-
-
- }
-
- // Version command
- @Command(name = "version", description = "Show version informantion")
- public static class CommandVersion extends TvnLangTool {
-
- @Override
- public void execute() {
- System.out.print(getClass().getPackage().getImplementationTitle());
- System.out.println(" " + getClass().getPackage().getImplementationVersion());
- }
-
- }
-
- // Command for inspection of workflows....!!
- @Command(name = "inspect", description = "Inspect the given workflow and show the results on the terminal")
- public static class CommandInspect extends TvnLangTool {
-
- @Inject
- Inspect inspect = new Inspect();
-
- @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
- public String file;
-
- @Arguments(usage = "<option> <input files>", description = "Inspect the given workflow")
- public List<String> toInspect = Lists.newArrayList();
-
- @Override
- public void execute() {
- if (Inspect.processor) {
- try {
- new ProcessorNames(toInspect, file);
-
- } catch (ReaderException | IOException | JAXBException e) {
- e.printStackTrace();
- }
- } else if (Inspect.servicetypes) {
- try {
- new ServiceTypes(toInspect, file);
- } catch (IOException | ReaderException e) {
- e.printStackTrace();
- }
-
- }else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "inspect");
- command.execute();
- }
-
- }
-
- }
-
- // Command for validation
- @Command(name = "validate", description = "validate the given workflow")
- public static class CommandValidate extends TvnLangTool{
-
- @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
- public String file;
-
- @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
- public boolean verbose;
-
-// @Arguments(usage = "<option> <input files> <output dir>", description = "Validate the given workflow file/s")
- @Arguments(usage = "input files", description = "Validate the given workflow file/s")
- public List<String> toValidate = Lists.newArrayList();
-
- @Override
- public void execute() {
-
- Validate validate = new Validate(toValidate, file, verbose);
-
-
- }
-
- }
-
- //Command for getting workflow stats
- @Command (name = "stats", description = "Shows the workflow statistics")
- public static class CommandStat extends TvnLangTool{
-
-
- @Option(name = {"-l", "--log"}, description ="Save the workflow statictics in a file")
- public String file;
-
- @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
- public boolean verbose;
-
- @Arguments(usage="input files", description = "Enter the workflow bundle files")
- public List<String> files;
-
- @Override
- public void execute() {
-
- GetWfStat stat = new GetWfStat(files, file, verbose);
-
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
deleted file mode 100644
index 016488c..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.apache.taverna.tavlang;
-
-/*
- * 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.
- */
-
-public class TavernaCommandline {
-
- public static void main(String args[]){
- CommandLineTool tool = new CommandLineTool();
- tool.parse(args);
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/Tools.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
deleted file mode 100644
index c78c7a2..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.taverna.tavlang.tools;
-
-/*
- * 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.
- */
-
-
-
-public class Tools {
-
- public static enum ConvertionTools {
- wfbundle{
- public String mediaType = "application/vnd.taverna.scufl2.workflow-bundle";
-
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return this.mediaType;
- }
- },
- json{
- public String mediaType = "application/ld+json";
-
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return mediaType;
- }
- },
- wfdesc{
- public String mediaType = "text/vnd.wf4ever.wfdesc+turtle";
-
-
- @Override
- public String getMediaType(ConvertionTools t) {
- // TODO Auto-generated method stub
-// System.out.println(mediaType);
- return mediaType;
- }
- },
- robundle{
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return null;
- }
-
- },
- structure{
- public String mediaType = "text/vnd.taverna.scufl2.structure";
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return mediaType;
- }
- },
-
- iwir{
- public String mediaType = "application/vnd.shiwa.iwir+xml";
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return mediaType;
- }
- };
-
- ConvertionTools(){}
-
- public abstract String getMediaType(ConvertionTools t);
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
deleted file mode 100644
index da4dff0..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.apache.taverna.tavlang.tools.convert;
-
-/*
- * 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 java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.io.WriterException;
-import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
-
-
-/*
- * Converts
- * .t2flow --> .wfbundle
- * .t2flow --> .structure
- * .wfbundle --> .structure
- * .wfbundle/ .t2flow -> .iwir
- * two constructors.
- * Scufl2Convert(List<String> list, String out) --> will save the converted files in 'out folder or a directory named /converted in the same folder.
- * Scufl2Convert(String in, String out) --> Will convert all the files in the 'in' folder and save them in 'out' folder --> -r must be true.
- *
- * */
-public class Scufl2Convert{
-
- private ConvertionTools t;
- private String MEDIA_TYPE;
- private String input;
- private String output;
- private String type;
- private List<String> filesList;
-
- public Scufl2Convert(String type, List<String> files, String out){
- this.filesList = files;
- this.output = out;
- this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
- this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t);
- this.convert();
- }
-
- //When recursive case is on....
- public Scufl2Convert(String type, String in, String out){
- this.input = in;
- this.output = out;
- this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
- this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t); //Determine the writer media type
-
- this.createdir();
- }
-
- //Create the dir if not exists
- public void createdir(){
- if(output == null){
- File outFile = new File(this.input, "converted");
- try {
- FileUtils.forceMkdir(outFile);
- this.output = outFile.getAbsolutePath();
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!!");
- e1.printStackTrace();
- }
- }else{
- File outFile = new File(this.output);
- try {
- FileUtils.forceMkdir(outFile);
-
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!!");
- e1.printStackTrace();
- }
- }
- this.rec_convert(this.input);
- }
-
- //Convert the given file. Return in case of an exception.
- public boolean convert(){
-
- boolean check = false;
- // If the output folder is given, save the converted files in to that folder.
-
- if(this.filesList.size()>0 && this.output != null){
- File outFile = new File(this.output);
- try {
- FileUtils.forceMkdir(outFile);
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!");
- }
- for(String file : this.filesList){
- File t2File = new File(file);
-
- convertFile(t2File, outFile);
-
- }
-
- }
-
- /* If the output file is not given, save the converted files in
- * '/converted' folder.
- */
-
- else if(this.filesList.size()>0 && this.output == null){
- for(String file : this.filesList){
- File t2File = new File(file);
-
- File outFile = new File(t2File.getParentFile(), "converted");
- try {
- FileUtils.forceMkdir(outFile);
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!");
- }
-
- convertFile(t2File, outFile);
-
- }
- }else{
- System.err.println("Error: Argument mismatch");
- check = false;
- }
-
- return check;
- }
-
- //Convert the files in a given directory and save the converted files in to specified dir or /converted folder.
- //Recursive conversion
- public void rec_convert(String dir){
-
- File parent = new File(this.input);
- if(!parent.exists()){
- System.err.println("Error: Input directory not found");
- }else{
- for(File file : parent.listFiles()){
- if(!file.isDirectory())
- {
- File outFile = new File(this.output);
- convertFile(file, outFile);
- }
- }
- }
- }
-
- //Convert the file
- public void convertFile(File t2File, File outFile){
-
- //Check weather the input files are in valid format...!!!
- String ext = FilenameUtils.getExtension(t2File.getName());
- if(!ext.equalsIgnoreCase("t2flow")&&!ext.equalsIgnoreCase("wfbundle")){
- System.err.println("Error: Invalid input file format...!!!");
- return;
- }
-
- WorkflowBundleIO wfbio = new WorkflowBundleIO();
- String filename = t2File.getName();
- filename = filename.replaceFirst("\\..*", this.type);
- File scufl2File = new File(outFile.getAbsolutePath(), filename);
-
- WorkflowBundle wfBundle;
- try {
- wfBundle = wfbio.readBundle(t2File, null);// null --> will guess the media type for reading.
-
-// if(this.type.equals(".iwir")){
-// IwirWriter iww = new IwirWriter();
-// iww.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
-// }else
-
- if(this.type.equals(".json")){
- ToJson toJ = new ToJson();
- toJ.convert(t2File, outFile);
- }
- else{
- wfbio.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
- }
- System.out.println(scufl2File.getPath() + " is created.");
- }catch (ReaderException e){
- System.err.println("Error: Connot read the file");
- }catch(IOException e){
- System.err.println("Error: File not found");
- }catch(WriterException e) {
- System.err.println("Error: Cannot write to the file");
-// e.printStackTrace();
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
deleted file mode 100644
index f11424c..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
+++ /dev/null
@@ -1,298 +0,0 @@
-package org.apache.taverna.tavlang.tools.convert;
-
-/*
- * 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 java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.taverna.scufl2.api.annotation.Annotation;
-import org.apache.taverna.scufl2.api.annotation.Revision;
-import org.apache.taverna.scufl2.api.common.Child;
-import org.apache.taverna.scufl2.api.common.Ported;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.common.URITools;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.BlockingControlLink;
-import org.apache.taverna.scufl2.api.core.ControlLink;
-import org.apache.taverna.scufl2.api.core.DataLink;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleWriter;
-import org.apache.taverna.scufl2.api.io.WriterException;
-import org.apache.taverna.scufl2.api.port.DepthPort;
-import org.apache.taverna.scufl2.api.port.GranularDepthPort;
-import org.apache.taverna.scufl2.api.port.Port;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-
-public class ToJson {
- public class JsonWriter implements WorkflowBundleWriter {
-
- @Override
- public Set<String> getMediaTypes() {
- return new HashSet<String>(Arrays.asList("application/ld+json",
- "application/json"));
- }
-
- @Override
- public void writeBundle(WorkflowBundle wfBundle, File destination,
- String mediaType) throws WriterException, IOException {
- ObjectNode json = toJson(wfBundle);
- mapper.writeValue(destination, json);
- }
-
- @Override
- public void writeBundle(WorkflowBundle wfBundle, OutputStream output,
- String mediaType) throws WriterException, IOException {
- ObjectNode json = toJson(wfBundle);
- mapper.writeValue(output, json);
- }
-
- }
-
-
- private WorkflowBundleIO io = new WorkflowBundleIO();;
-
- private WorkflowBundleWriter jsonWriter = new JsonWriter();
-
- private ObjectMapper mapper = new ObjectMapper();
-
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
- private URITools uriTools = new URITools();
-
- public ToJson() {
- mapper.enable(SerializationFeature.INDENT_OUTPUT);
- mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
- mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
-
- mapper.setDateFormat(new ISO8601DateFormat());
-
- // Adding custom writer dynamically
- List<WorkflowBundleWriter> writers = io.getWriters();
- writers.add(jsonWriter);
- io.setWriters(writers);
- }
-
- protected void addPorts(Ported ported, ObjectNode p) {
- ArrayNode inputs = mapper.createArrayNode();
- for (Port port : ported.getInputPorts()) {
- inputs.add(toJson(port));
- }
- p.put("inputs", inputs);
-
- ArrayNode outputs = mapper.createArrayNode();
- for (Port port : ported.getOutputPorts()) {
- outputs.add(toJson(port));
- // FIXME: Do we need the id for ports? Needed if we add datalinks
- }
- p.put("outputs", outputs);
- }
-
- protected ObjectNode annotations(Child<?> bean) {
- ObjectNode node = mapper.createObjectNode();
- for (Annotation ann : scufl2Tools.annotationsFor(bean)) {
- URI annUri = uriTools.uriForBean(ann);
-
- // TODO: include annotation body?
- }
- return node;
- }
-
- public void convert(File in, File out) throws ReaderException, IOException,
- WriterException {
- String filename = in.getName();
- filename = filename.replaceFirst("\\..*", ".json");
- File workflowFile = new File(out.getAbsolutePath(), filename);
-
- WorkflowBundle wfBundle = io.readBundle(in, null);
- io.writeBundle(wfBundle, workflowFile, "application/ld+json");
-// System.out.println(workflowFile);
-
- }
-
- protected ObjectNode toJson(Port port) {
- ObjectNode p = mapper.createObjectNode();
- p.put("name", port.getName());
- p.putPOJO("id",
- uriTools.relativeUriForBean(port, scufl2Tools.findParent(
- WorkflowBundle.class, ((Child<?>) port))));
-
- if (port instanceof DepthPort) {
- DepthPort depthPort = (DepthPort) port;
- if (depthPort.getDepth() != null) {
- p.put("depth", depthPort.getDepth());
- }
- }
- if (port instanceof GranularDepthPort) {
- GranularDepthPort granularDepthPort = (GranularDepthPort) port;
- if (granularDepthPort.getGranularDepth() != null
- && !granularDepthPort.getGranularDepth().equals(
- granularDepthPort.getDepth())) {
- p.put("granularDepth", granularDepthPort.getGranularDepth());
- }
- }
- p.putAll(annotations((Child<?>) port));
- return p;
- }
-
- protected JsonNode toJson(Processor proc) {
- ObjectNode p = mapper.createObjectNode();
- p.putPOJO("id",
- uriTools.relativeUriForBean(proc, proc.getParent().getParent()));
- p.put("name", proc.getName());
- addPorts(proc, p);
- p.putAll(annotations(proc));
-
- List<Workflow> nested = scufl2Tools.nestedWorkflowsForProcessor(proc,
- proc.getParent().getParent().getMainProfile());
- if (!nested.isEmpty()) {
- if (nested.size() == 1) {
- p.put("nestedWorkflow", toJson(nested.iterator().next()));
- } else {
- ArrayNode list = mapper.createArrayNode();
- for (Workflow w : nested) {
- list.add(toJson(w));
- }
- p.put("nestedWorkflow", list);
- }
- }
- return p;
- }
-
- protected JsonNode toJson(Revision currentRevision) {
- ArrayNode revisions = mapper.createArrayNode();
- while (currentRevision != null) {
- ObjectNode rev = mapper.createObjectNode();
- rev.putPOJO("id", currentRevision.getIdentifier());
- if (currentRevision.getGeneratedAtTime() != null) {
- rev.putPOJO("generatedAtTime",
- currentRevision.getGeneratedAtTime());
- }
- currentRevision = currentRevision.getPreviousRevision();
- if (currentRevision != null) {
- rev.putPOJO("wasRevisionOf", currentRevision.getIdentifier());
- }
- revisions.add(rev);
- }
- return revisions;
- }
-
- protected ObjectNode toJson(Workflow workflow) {
- ObjectNode wf = mapper.createObjectNode();
-
- wf.putPOJO("id",
- uriTools.relativeUriForBean(workflow, workflow.getParent()));
-
- wf.put("name", workflow.getName());
- wf.put("revisions", toJson(workflow.getCurrentRevision()));
-
- ArrayNode processors = mapper.createArrayNode();
- for (Processor p : workflow.getProcessors()) {
- processors.add(toJson(p));
- }
- addPorts(workflow, wf);
- wf.put("processors", processors);
-
- ArrayNode datalinks = mapper.createArrayNode();
- for (DataLink link : workflow.getDataLinks()) {
- datalinks.add(toJson(link));
- }
- wf.put("datalinks", datalinks);
-
- ArrayNode controlLinks = mapper.createArrayNode();
- for (ControlLink link : workflow.getControlLinks()) {
- controlLinks.add(toJson(link));
- }
- wf.put("controllinks", controlLinks);
-
- wf.putAll(annotations(workflow));
-
- return wf;
- }
-
- protected JsonNode toJson(ControlLink link) {
- ObjectNode l = mapper.createObjectNode();
- if (link instanceof BlockingControlLink) {
- BlockingControlLink controlLink = (BlockingControlLink) link;
- l.putPOJO("block", uriTools.relativeUriForBean(
- controlLink.getBlock(), link.getParent().getParent()));
- l.putPOJO("untilFinished", uriTools.relativeUriForBean(controlLink
- .getUntilFinished(), link.getParent().getParent()));
- }
- return l;
- }
-
- protected JsonNode toJson(DataLink link) {
- ObjectNode l = mapper.createObjectNode();
- l.putPOJO("receivesFrom", uriTools.relativeUriForBean(
- link.getReceivesFrom(), link.getParent().getParent()));
- l.putPOJO("sendsTo", uriTools.relativeUriForBean(link.getSendsTo(),
- link.getParent().getParent()));
- if (link.getMergePosition() != null) {
- l.put("mergePosition", link.getMergePosition());
- }
- return l;
- }
-
- public ObjectNode toJson(WorkflowBundle wfBundle) {
-
- ObjectNode root = mapper.createObjectNode();
- ArrayNode contextList = root.arrayNode();
- root.put("@context", contextList);
- ObjectNode context = root.objectNode();
- contextList.add("https://w3id.org/scufl2/context");
- contextList.add(context);
- URI base = wfBundle.getGlobalBaseURI();
- context.put("@base", base.toASCIIString());
- root.put("id", base.toASCIIString());
-
- // root.put("name", wfBundle.getName());
- // root.put("revisions", toJson(wfBundle.getCurrentRevision()));
-
- root.put("workflow", toJson(wfBundle.getMainWorkflow()));
- root.put("profile", toJson(wfBundle.getMainProfile()));
-
- return root;
- }
-
- private JsonNode toJson(Profile profile) {
- ObjectNode pf = mapper.createObjectNode();
-
- pf.putPOJO("id",
- uriTools.relativeUriForBean(profile, profile.getParent()));
- // TODO: Activities and configurations
- return pf;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
deleted file mode 100644
index 6ab14bc..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.apache.taverna.tavlang.tools.convert;
-
-/*
- * 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 java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.taverna.robundle.Bundle;
-import org.apache.taverna.robundle.Bundles;
-
-public class ToRobundle{
-
- public ToRobundle(List<String> files, String out) throws Exception{
-
- Logger logger = Logger.getLogger("");
- //logger.setLevel(Level.FINER);
- ConsoleHandler console = new ConsoleHandler();
- console.setLevel(Level.FINEST);
- logger.addHandler(console);
- Logger.getLogger("org.researchobject").setLevel(Level.FINEST);
-
- for(String f : files){
- Path file = Paths.get(f);
- convert(file);
- }
- }
-
- //Recursive conversion
- public ToRobundle(String type, String in, String out) {
-
- }
-
- public void convert(Path file) throws IOException{
- try (Bundle bundle = Bundles.openBundle(file)) {
-
-// System.out.println(bundle.getManifest().toString());
- bundle.getManifest().writeAsJsonLD();
- bundle.getManifest().writeAsCombineManifest();
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
deleted file mode 100644
index f93aadc..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package org.apache.taverna.tavlang.tools.inspect;
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeModel;
-import javax.xml.bind.JAXBException;
-
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.common.URITools;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-
-/*
- * list the processor names used in the workflow.
- * Supported formats: .t2flow, .wfbundle
- * */
-
-public class ProcessorNames {
-
- private List<String> fileList;
-
- private String file2;
-
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
- private URITools uriTools = new URITools();
-
- public ProcessorNames(List<String> fileList, String file) throws ReaderException, IOException, JAXBException{
- this.fileList = fileList;
- this.file2 = file;
- this.show();
- }
-
- public void show() throws ReaderException, IOException, JAXBException{
- WorkflowBundleIO io = new WorkflowBundleIO();
- StringBuilder sb = new StringBuilder();
-
- for(String file : this.fileList){
- File file2 = new File(file);
- if(file2.isDirectory()){
- for(File f : file2.listFiles()){
- WorkflowBundle wfb = io.readBundle(f, null);
- System.out.println("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb));
- sb.append("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb) + "\n");
- }
- }else{
- WorkflowBundle wfb = io.readBundle(new File(file), null);
- System.out.println("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb));
- sb.append("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb) + "\n");
- }
-
-
- }
-
- if(this.file2!=null){
- File log = new File(file2);
- FileWriter fw = new FileWriter(log);
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(sb.toString());
- bw.close();
- fw.close();
- System.out.println("Results were saved into " + file2);
- }
- }
-
- private Workflow findNestedWorkflow(Processor processor) {
- Profile profile = processor.getParent().getParent().getMainProfile();
- return scufl2Tools.nestedWorkflowForProcessor(processor, profile);
- }
-
- private void findProcessors(WorkflowBundle ro, Workflow workflow,
- DefaultMutableTreeNode parent) {
- for (Processor processor : workflow.getProcessors()) {
- DefaultMutableTreeNode processorNode = new DefaultMutableTreeNode(
- processor.getName());
- parent.add(processorNode);
- Workflow wf = findNestedWorkflow(processor);
- if (wf != null) {
- findProcessors(ro, wf, processorNode);
- }
- }
-
- }
-
- public TreeModel makeProcessorTree(WorkflowBundle workflowBundle)
- throws JAXBException, IOException {
- Workflow workflow = workflowBundle.getMainWorkflow();
- TreeModel treeModel = new DefaultTreeModel(new DefaultMutableTreeNode(
- workflow.getName()));
- DefaultMutableTreeNode parent = (DefaultMutableTreeNode) treeModel
- .getRoot();
-
- findProcessors(workflowBundle, workflow, parent);
- return treeModel;
- }
-
- public List<String> showProcessorNames(WorkflowBundle ro)
- throws JAXBException, IOException {
- ArrayList<String> names = new ArrayList<String>();
- for (Processor processor : ro.getMainWorkflow().getProcessors()) {
- names.add(processor.getName());
- }
- Collections.sort(names);
- return names;
- }
-
- public String showProcessorTree(WorkflowBundle ro) throws JAXBException,
- IOException {
- TreeModel treeModel = makeProcessorTree(ro);
- return treeModelAsString(treeModel);
- }
-
- public String treeModelAsString(TreeModel treeModel) {
- StringBuffer sb = new StringBuffer();
- Object root = treeModel.getRoot();
- treeModelAsString(treeModel, root, sb, "");
- return sb.toString();
- }
-
- protected void treeModelAsString(TreeModel treeModel, Object parent,
- StringBuffer sb, String indentation) {
- sb.append(indentation);
- int childCount = treeModel.getChildCount(parent);
- if (childCount == 0) {
- sb.append("- ");
- } else {
- sb.append("+ ");
- indentation = indentation + " ";
- }
- sb.append(parent);
- sb.append("\n");
- for (int i = 0; i < childCount; i++) {
- Object child = treeModel.getChild(parent, i);
- treeModelAsString(treeModel, child, sb, indentation);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
deleted file mode 100644
index ddff2ab..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.apache.taverna.tavlang.tools.inspect;
-
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-
-/*
- * List the service types used in workflow.
- * Supported file formats : .wfbundle, .t2flow
- * */
-
-public class ServiceTypes {
-
- private List<String> filesList;
- private Set<String> types = new LinkedHashSet<String>();
- private String save;
-
- public ServiceTypes(List<String> filesList, String file) throws IOException, ReaderException{
- this.filesList = filesList;
- this.save = file;
- this.service();
-
- }
-
- public void service() throws ReaderException, IOException{
- WorkflowBundleIO io = new WorkflowBundleIO();
- StringBuilder sb = new StringBuilder();
-
- for (String filepath : filesList) {
- File file = new File(filepath);
-
- if(file.isDirectory()){
- for(File f : file.listFiles()){
- WorkflowBundle wfBundle = io.readBundle(f, null);
- System.out.println("Service types used in " + f.getCanonicalPath() + " :" +"\n");
- sb.append("Service types used in " + f.getCanonicalPath() + " :");
- for (Profile profile : wfBundle.getProfiles()) {
- for (Activity activity : profile.getActivities()) {
- this.types.add(activity.getType().toASCIIString());
- }
- }
- for(String t : types){
- System.out.println(t);
- sb.append(t + "\n");
- }
- System.out.println("\n**************************************************\n");
- sb.append("\n**************************************************\n");
- }
- }else{
- // mediaType = null --> guess
- WorkflowBundle wfBundle = io.readBundle(file, null);
- System.out.println("Service types used in " + file.getCanonicalPath() + " :" + "\n");
- sb.append("Service types used in " + file.getCanonicalPath() + " :");
- for (Profile profile : wfBundle.getProfiles()) {
- for (Activity activity : profile.getActivities()) {
- this.types.add(activity.getType().toASCIIString());
- }
- }
- for(String t : types){
- System.out.println(t);
- sb.append(t + "\n");
- }
-
- System.out.println("\n**************************************************\n");
- sb.append("\n**************************************************\n");
- }
- }
-
- if(save!=null){
- File log = new File(save);
- FileWriter fw = new FileWriter(log);
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(sb.toString());
- bw.close();
- fw.close();
- System.out.println("Results were saved into " + save);
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
deleted file mode 100644
index 7daa38e..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package org.apache.taverna.tavlang.tools.stats;
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.taverna.scufl2.api.common.NamedSet;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.ControlLink;
-import org.apache.taverna.scufl2.api.core.DataLink;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.port.InputPort;
-import org.apache.taverna.scufl2.api.port.OutputPort;
-
-public class GetWfStat {
-
- private NamedSet<Workflow> set;
- private String logFile;
- private boolean verbose;
- private StringBuilder str_verb = new StringBuilder();
- private StringBuilder str_nverb = new StringBuilder();
-
-
- //If given file is a workflow file
- public GetWfStat(List<String> wf_files, String log, boolean verbose){
- this.logFile = log;
- this.verbose = verbose;
-
- for(String files : wf_files){
- File f = new File(files);
- if(f.isFile()){
- this.read(f);
-
- }else{
- System.err.println("Error reading the file " + f.getName());
- }
- }
-
- this.isVerbose();
-
- if(log!=null){
- this.writefile(this.str_verb.toString(), this.logFile);
- }
- }
-
- //Read the workflow file and extract the resources.
- //And append them to a String builder
- public void read(File file){
- WorkflowBundleIO io = new WorkflowBundleIO();
- try {
- WorkflowBundle wf = io.readBundle(file, null);
- this.set = wf.getWorkflows();
-
- //String to be written to a file.
- this.str_nverb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
- this.str_verb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
-
- for(Workflow wrf : set){
- //TODO :- Take each type of resource and make a system to view them to the user.
- String name = "Name of the workflow = " + wrf.getName();
- this.str_verb.append(name + "\n");
- this.str_nverb.append(name + "\n");
-
-
- String noP = " |--> Number of Processors = " + wrf.getProcessors().size();
- this.str_verb.append(noP + "\n");
- this.str_nverb.append(noP + "\n");
-
- if(this.verbose && wrf.getProcessors().size()!=0){
- this.str_verb.append(" | |--> Processors: " + "\n");
-
- for(Processor p : wrf.getProcessors()){
- this.str_verb.append(" | |--> " + p.getName() + "\n");
- }
- this.str_verb.append(" |" + "\n");
- }
-
- this.str_verb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
- this.str_nverb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
-
- if(this.verbose && wrf.getDataLinks().size()!=0){
- this.str_verb.append(" | |--> Data Links" + "\n");
-
- for(DataLink link : wrf.getDataLinks()){
- this.str_verb.append(" | |--> " + link + "\n");
- }
- this.str_verb.append(" |" + "\n");
- }
-
- this.str_nverb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
- this.str_verb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
-
-
- if(this.verbose && wrf.getControlLinks().size()!=0){
- this.str_verb.append(" | |--> Control Links\n");
- for(ControlLink link : wrf.getControlLinks()){
- this.str_verb.append(" | |--> " + link + "\n");
- }
- this.str_verb.append(" |\n");
- }
-
- this.str_nverb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
- this.str_verb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
-
-
- if(this.verbose && wrf.getInputPorts().size()!=0){
- this.str_verb.append(" | |--> Input Ports\n");
- for(InputPort iport : wrf.getInputPorts()){
- this.str_verb.append(" | |--> " + iport.toString()+"\n");
- }
- this.str_verb.append(" |\n");
- }
-
- this.str_nverb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
- this.str_verb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
-
- if(this.verbose && wrf.getOutputPorts().size()!=0){
- this.str_verb.append(" | |--> Output Ports\n");
- for(OutputPort o_port : wrf.getOutputPorts()){
- this.str_verb.append(" | |--> " + o_port.toString()+"\n");
- }
-
- this.str_verb.append("\n");
- }
-
- this.str_nverb.append("\n");
- this.str_verb.append("\n");
- }
-
- } catch (ReaderException | IOException e) {
- e.printStackTrace();
- }
- }
-
-
- //Saving the output into a log
- public void writefile(String report, String url){
-
- File file = new File(url);
-
- if(!file.isFile()){
- System.err.println("Error in writing the log file...");
- }
-
- FileWriter writer;
- BufferedWriter bfw;
- try {
- writer = new FileWriter(file);
- bfw = new BufferedWriter(writer);
- bfw.write(report);
- bfw.close();
- writer.close();
- System.out.println("Results were saved into " + file.getPath());
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
- public void isVerbose(){
- if(verbose)
- System.out.println(this.str_verb.toString());
- else
- System.out.println(this.str_nverb.toString());
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java b/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
deleted file mode 100644
index fc05e3b..0000000
--- a/taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.apache.taverna.tavlang.tools.validate;
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidationListener;
-import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidator;
-import org.apache.taverna.scufl2.validation.correctness.ReportCorrectnessValidationListener;
-
-/*
- * Takes .wfbundle/ .t2flow as the input
- * */
-public class Validate {
-
- private String logfile;
- private String nonVerbose = "";
- private String finalrep = "";
- private boolean verbose;
- private boolean check = false;
-
-
- public Validate(List<String> files, String file, boolean verbose) {
- this.verbose = verbose;
- this.logfile = file;
- System.out.println("Validation started....");
- for (String f : files) {
- System.out.println("Validating " + f);
- File wfile = new File(f);
- read(wfile);
-
- }
- System.out.println("Validation completed.......");
-
-
- if (this.logfile != null) {
- saveToLog(this.finalrep);
- }
- }
-
- public void read(File file) {
- WorkflowBundleIO io = new WorkflowBundleIO();
- try {
- this.finalrep += validate(io.readBundle(file, null), file.getName());
-
- } catch (ReaderException e) {
- System.err.println(e.getMessage());
-
- } catch (IOException e) {
- System.err.println("Workflow bundle not found!");
- System.err.println(e.getMessage());
-
- }
- }
-
- public String validate(WorkflowBundle wfb, String file) {
-
- StringBuilder report2 = new StringBuilder();
- CorrectnessValidationListener correctnessValidationListener = new ReportCorrectnessValidationListener();
- CorrectnessValidator correctnessValidator = new CorrectnessValidator();
- correctnessValidationListener = correctnessValidator.validate(wfb);
- String report = correctnessValidationListener.toString().replace(
- "ReportCorrectnessValidationListener [", "");
-
- String[] sections = report.split(", ");
-
-
-
- boolean detect = correctnessValidationListener.detectedProblems();
- if (!detect){
- report2.append("The workflow " + file + " has no errors. \n\n");
- this.nonVerbose = "The workflow " + file + " has no errors. \n";
- }
-
-
-// System.out.println("The validation report for " + file);
- report2.append("The validation report for " + file + "......\n");
- report2.append("-------------------------------------------------------------------------------- \n");
- for (int i = 0; i < sections.length; i++) {
- String line = "-->"+sections[i].split("=")[0].replace("()", "").replace(
- "get", "")
- + ":- ";
- report2.append(line);
- String line2 = sections[i].split("=")[1].replace("[", "").replace("]","");
- if(line2.equals("")) report2.append("null \n\n");
- else report2.append("\t").append(line2).append("\n");
-
-
- }
- report2.append("--------------------------------------------------------------------------------- \n\n");
-
- if(detect){
- System.out.println("The workflow bundle has following problems: \n"+report2.toString());
- check = true;
- }
-
- if(verbose){
- System.out.println(report2.toString());
- }else{
- System.out.println(this.nonVerbose);
- }
-
- return report2.toString();
-
- }
-
- public void saveToLog(String s) {
- File logFile = new File(this.logfile);
- FileWriter logwriter;
- try {
- logwriter = new FileWriter(logFile);
- BufferedWriter blw = new BufferedWriter(logwriter);
- blw.write(s);
- blw.close();
- logwriter.close();
- System.out.println("Results were saved into " + logFile.getPath());
- } catch (IOException e) {
- System.err.println("Error writing to the file \n" + e.getMessage());
- }
-
- }
-
- public boolean getCheck(){
- return this.check;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/resources/.gitignore b/taverna-language-commandline/src/main/resources/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/main/resources/META-INF/NOTICE b/taverna-language-commandline/src/main/resources/META-INF/NOTICE
deleted file mode 100644
index 370a8fc..0000000
--- a/taverna-language-commandline/src/main/resources/META-INF/NOTICE
+++ /dev/null
@@ -1,7 +0,0 @@
-Apache Taverna Language
-Copyright 2010-2014 University of Manchester, UK
-Copyright 2014-2015 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/.gitignore b/taverna-language-commandline/src/test/java/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
deleted file mode 100644
index 6beaa8e..0000000
--- a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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 org.apache.taverna.tavlang.CommandLineTool;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class CommandLineTest {
- CommandLineTool commandLineTool = new CommandLineTool();
-
- @Test
- public void testHelp(){
- commandLineTool.parse();
- commandLineTool.parse("version");
- commandLineTool.parse("help");
- commandLineTool.parse("help", "convert");
- commandLineTool.parse("help", "inspect");
- commandLineTool.parse("help", "validate");
- commandLineTool.parse("help", "help");
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
deleted file mode 100644
index a920db2..0000000
--- a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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 org.junit.Test;
-
-public class TestConvert{
-
- @Test
- public void testConvertS() {
-// fail("Not yet implemented");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestStats.java b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
deleted file mode 100644
index 4c22377..0000000
--- a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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 org.junit.Test;
-
-public class TestStats {
-
- @Test
- public void test() {
-// fail("Not yet implemented");
- }
-
-}
[02/11] incubator-taverna-language git commit: taverna language
commandline module renamed -> tavlangtool
Posted by st...@apache.org.
taverna language commandline module renamed -> tavlangtool
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/1e13219f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/1e13219f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/1e13219f
Branch: refs/heads/master
Commit: 1e13219f7214e31510dcdc9f446de12920dd3c3a
Parents: 99156bd
Author: Menaka Madushanka <me...@gmail.com>
Authored: Tue Feb 2 11:46:15 2016 +0530
Committer: Menaka Madushanka <me...@gmail.com>
Committed: Tue Feb 2 11:46:15 2016 +0530
----------------------------------------------------------------------
taverna-tavlangtool/.gitignore | 1 +
taverna-tavlangtool/README.md | 425 +++++
taverna-tavlangtool/pom.xml | 213 +++
taverna-tavlangtool/src/main/java/.gitignore | 0
.../apache/taverna/tavlang/CommandLineTool.java | 350 ++++
.../taverna/tavlang/TavernaCommandline.java | 29 +
.../org/apache/taverna/tavlang/tools/Tools.java | 88 +
.../tavlang/tools/convert/Scufl2Convert.java | 206 +++
.../taverna/tavlang/tools/convert/ToJson.java | 298 ++++
.../tavlang/tools/convert/ToRobundle.java | 66 +
.../tavlang/tools/inspect/ProcessorNames.java | 169 ++
.../tavlang/tools/inspect/ServiceTypes.java | 112 ++
.../taverna/tavlang/tools/stats/GetWfStat.java | 193 ++
.../tavlang/tools/validate/Validate.java | 151 ++
.../src/main/resources/.gitignore | 0
.../src/main/resources/META-INF/NOTICE | 7 +
taverna-tavlangtool/src/test/java/.gitignore | 0
.../taverna/tavlang/test/CommandLineTest.java | 43 +
.../taverna/tavlang/test/TestConvert.java | 34 +
.../apache/taverna/tavlang/test/TestStats.java | 34 +
.../apache/taverna/tavlang/test/TestTools.java | 80 +
.../taverna/tavlang/test/TestValidate.java | 49 +
.../src/test/resources/.gitignore | 0
.../test/resources/workflows/t2flow/as.t2flow | 1674 ++++++++++++++++++
24 files changed, 4222 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/.gitignore b/taverna-tavlangtool/.gitignore
new file mode 100644
index 0000000..916e17c
--- /dev/null
+++ b/taverna-tavlangtool/.gitignore
@@ -0,0 +1 @@
+dependency-reduced-pom.xml
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/README.md
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/README.md b/taverna-tavlangtool/README.md
new file mode 100644
index 0000000..e76cbcd
--- /dev/null
+++ b/taverna-tavlangtool/README.md
@@ -0,0 +1,425 @@
+<!--
+ 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.
+-->
+
+# Apache Taverna Language Command Line
+
+
+This is planned as a command line for the
+[Apache Taverna Language](https://github.com/apache/incubator-taverna-language/),
+an API for the
+[Apache Taverna](http://taverna.incubator.apache.org/) workflows.
+
+This module is a **work in progress** as part of Google Summer of Code 2015.
+
+
+
+## License
+
+(c) 2015 Apache Software Foundation
+
+This product includes software developed at The [Apache Software
+Foundation](http://www.apache.org/).
+
+Licensed under the [Apache License
+2.0](https://www.apache.org/licenses/LICENSE-2.0), see the file
+[../LICENSE](../LICENSE) for details.
+
+The file [NOTICE](src/main/resources/NOTICE) contains any additional attributions and
+details about embedded third-party libraries and source code.
+
+
+# Contribute
+
+Please subscribe to and contact the
+[dev@taverna](http://taverna.incubator.apache.org/community/lists#dev%20mailing%20list)
+for any questions, suggestions and discussions about
+Apache Taverna Language Commandline.
+
+Bugs and planned features are tracked in the Jira
+[Issue tracker](https://issues.apache.org/jira/browse/TAVERNA/component/12326903)
+under the `TAVERNA` component _GSOC Taverna Language Command line_. Feel free
+to add an issue!
+
+To suggest changes to this source code, feel free to raise a
+[GitHub pull request](https://github.com/apache/incubator-taverna-mobile/pulls).
+Any contributions received are assumed to be covered by the [Apache License
+2.0](https://www.apache.org/licenses/LICENSE-2.0). We might ask you
+to sign a [Contributor License Agreement](https://www.apache.org/licenses/#clas)
+before accepting a larger contribution.
+
+
+# Building and install requirements
+
+## Requisites
+
+* Java 1.7 or newer
+* [Apache Maven](https://maven.apache.org/download.html) 3.2.5 or newer (older
+ versions probably also work)
+
+
+## Building
+
+To build, run:
+
+ mvn clean install
+
+
+# Usage
+
+ usage: tavlang <command> [<args>]
+
+ The most commonly used tavlang commands are:
+ convert Convert the given workflow
+ help Display help information about Tvarna
+ inspect Inspect the given workflow and show the results on the terminal
+ validate Validate the given workflow
+ version Show version informantion
+
+ See 'tavlang help <command>' for more information on a specific command.
+
+# Documentation
+
+The Taverna language command line tool is for accessing the features of the Taverna language modules.
+The tool has the following functions:
+
+* Conversion
+* Inspection
+* Validation
+* Viewing workflow statistics.
+
+## Command line structure
+
+ $tavlang <command> <options> [arguments and parameters]
+
+Each command has its own set of options.
+
+###Commands and Options
+The tool has the following major commands:
+
+* convert: Options {-r -- recursive, -i --input, -o --output,}
+* inspect: Options {-l --log}
+* validate: Options {-l --log, -v --verbose}
+* stats: Options {-l --log, -v --verbose}
+
+## Commands in detail
+
+### convert ------------------------------------------------------
+
+Convert the given workflow file/s into a specified output format.
+
+Usage:
+
+ tavlang convert (--output_fomat) ([[options] [arguments]]|files...)
+
+ Supported output formats are,
+
+ * wfbundle
+ * iwir
+ * json
+ * robundle
+ * structure
+
+Options:
+
+ * -r, --recursive : Convert all workflow files in a given directory recursively
+ * -i, --input : Used with recursive case. Specify the input directory
+ * -o, --output : Specify the out put directory
+
+*The tool can only convert into one format at a time
+
+There are two methods for using the conversion command.
+
+#### 1. Non-recursive method
+
+Usage:
+
+ $tavlang convert (--output_format) [options] [arguments]
+
+####### Example 1: Without specifying any options
+
+ $tavlang convert --structure /helloworld.t2flow
+
+Output:
+
+ /converted/helloworld.structure is created
+
+Convert the helloworld.t2flow into helloworld.structure format and store in the /converted directory
+
+###### Example 2: Convert multiple workflows
+
+ $tavlang convert --json /helloworld.t2flow /hello.t2flow
+
+Output:
+
+ /converted/helloworld.json is created
+ /converted/hello.json is created
+
+Convert both workflow files and store them in /converted directory
+
+###### Example 3: with options and arguments
+
+ $tavlang convert --wfbundle /helloworld.t2flow -o /output/workflows
+
+Output:
+
+ /output/workflows/helloworld.wfbundle is created
+
+Convert the workflow file/s and store them in the specified output directory
+
+#### 2. Recursive method
+
+If there are many workflows in a directory, which are needed to be converted into one single format use this method.
+
+Usage:
+
+ $tavlang convert -r (--output_format) -i workflow_src_dir <options> [arguments]
+
+###### Example 4: Without options and arguments
+
+ $tavlang convert -r --json -i /home/user/workflows
+
+Convert all the workflows in the input directory into the specified format and store them in the "/home/user/workflows/converted" directory.
+
+Output: Suppose that there are 2 workflow files in the dir 1.t2flow and 2.t2flow
+
+ /home/workflows/converted/1.json is created
+ /home/workflows/converted/2.json is created
+
+###### Example 5: with output dir is specified
+
+ $tavlang convert -r --iwir -i /home/workflows -o /home/final
+
+Convert all the workflows in the input directory and store them in /home/final directory
+
+Output:
+
+ /home/final/1.iwir is created
+ /home/final/2.iwir is created
+
+### inspect -----------------------------------------------------------------
+
+Inspect the given workflow file/s and give the inspection report.
+Supported workflow bundle formats: .wfbundle, .t2flow
+
+Usage:-
+
+ $tavlang inspect (--inspection_options) <-other-options> [arguments] workflow_undles_to_be_inspected
+
+Inspection options:
+
+ * --servicetypes :- List all the service-types used in the workflow
+ * --processornames :- List the tree of the processor names used in the workflow
+
+Other Options:
+
+ * -l, --log :- save the inspection report in a text file
+
+###### Example 1: Without any other-options
+
+1. Inspection result for Service types
+
+
+ $tavlang inspect --servicetypes helloworld.wfbundle
+ Service types used in helloworld.wfbundle :
+
+ http://ns.taverna.org.uk/2010/activity/constant
+ **************************************************
+
+2. inspection result for Processor names
+
+
+ $tavlang inspect --processornames helloworld.wfbundle
+ Processor tree of helloworld.wfbundle
+ + Hello_World
+ - hello
+
+###### Example 2: With other options
+The output is the same but the results will be saved in the given file.
+
+ $tavlang inspect --processornames helloworld.wfbundle -l results.txt
+ Processor tree of helloworld.wfbundle
+ + Hello_World
+ - hello
+
+
+The output will be saved in results.txt in the same format.
+
+### validate ----------------------------------------------------------------------
+
+Validates the given workflow file or files and gives the validation report.
+Validate tool checks for the following problematic conditions.
+
+ * Empty Iteration Strategy Top-Node Problems
+ * Mismatch Configurable Type Problems
+ * Non-Absolute URI Problems
+ * Null Field Problems
+ * Out-Of-Scope Value Problems
+ * Port Mentioned Twice Problems
+ * Port Missing From Iteration Strategy Stack Problems
+ * Wrong Parent Problems
+ * Incompatible Granular Depth Problems
+
+Usage:-
+
+ $tavlang validate [options][arguments] input_files
+
+Options:-
+
+ * -l, --log: Save the validation report in a text file
+ * -v, --verbose: Verbose mode
+
+Supported workflow bundle formats: .t2flow and .wfbundle
+
+###### Example 1: Normal mode
+
+ Validate one workflow bundle
+
+ $tavlang validate helloworld.t2flow
+
+Output:
+
+ Validation started....
+ Validating helloworld.t2flow
+ The workflow helloworld.t2flow has no errors.
+
+ Validation completed.......
+
+ Validate more than one workflow bundles
+
+ $tavlang validate ../../workflow2.t2flow ../../workflow3.wfbundle
+
+ Validation started....
+ Validating ../../workflow2.t2flow
+ The workflow workflow2.t2flow has no errors.
+
+ Validating ../../workflow3.wfbundle
+ The workflow workflow3.t2flow has no errors.
+
+ Validation completed.......
+
+
+###### Example 2: Verbose mode
+
+The report is more explanatory.
+
+ $tavlang validate -v ../../workflow2.t2flow
+
+ Validation started....
+ Validating ../../workflow2.t2flow
+ The workflow workflow2.t2flow has no errors.
+
+ The validation report for defaultActivitiesTaverna2.wfbundle......
+ --------------------------------------------------------------------------------
+ -->NegativeValueProblems:- null
+
+ -->EmptyIterationStrategyTopNodeProblems:- null
+
+ -->MismatchConfigurableTypeProblems:- null
+
+ -->NonAbsoluteURIProblems:- null
+
+ -->NullFieldProblems:- null
+
+ -->OutOfScopeValueProblems:- null
+
+ -->PortMentionedTwiceProblems:- null
+
+ -->PortMissingFromIterationStrategyStackProblems:- null
+
+ -->WrongParentProblems:- null
+
+ -->IncompatibleGranularDepthProblems:- null
+
+ ---------------------------------------------------------------------------------
+
+###### Example 3: Saving results to a file
+
+ $tavlang validate workflow2.t2flow -l log2.txt
+ Validation started....
+ Validating workflow2.t2flow
+ The workflow helloworld.wfbundle has no errors.
+ Validation completed.......
+
+ Results were saved into log2.txt
+
+### stats ----------------------------------------------------------------------------------
+
+A workflow contains several resources.
+
+* Processors
+* Input ports
+* Output ports
+* Data links
+* Control links
+
+The stats command gives a report of the resources used in the workflow.
+
+Usage:-
+
+ $tavlang stats <options>[arguments] input_files...
+
+Options:-
+
+ * -l, – – log : Save results in a log file
+ * -v, – – verbose : verbose mode
+
+Supported workflow bundle formats:- .t2flow, .wfbundle
+
+###### Example 1: Normal mode
+
+ $tavlang helloworld.wfbundle
+ >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
+ Name of the workflow = Hello_World
+ |--> Number of Processors = 1
+ |--> Number of Data Links = 1
+ |--> Number of Control Links = 0
+ |--> Number of Input ports = 0
+ |--> Number of Output Ports = 1
+
+###### Example 2: Verbose mode
+
+ $tavlang -v ../../../helloworld.wfbundle
+ >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
+ Name of the workflow = Hello_World
+ |--> Number of Processors = 1
+ | |--> Processors:
+ | |--> hello
+ |
+ |--> Number of Data Links = 1
+ | |--> Data Links
+ | |--> DataLink value=>greeting
+ |
+ |--> Number of Control Links = 0
+ |--> Number of Input ports = 0
+ |--> Number of Output Ports = 1
+ | |--> Output Ports
+ | |--> OutputWorkflowPort "greeting"
+
+###### Example 3: Saving results in a file
+
+ $tavlang -l ../../results.txt ../../../helloworld.wfbundle
+ >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
+ Name of the workflow = Hello_World
+ |--> Number of Processors = 1
+ |--> Number of Data Links = 1
+ |--> Number of Control Links = 0
+ |--> Number of Input ports = 0
+ |--> Number of Output Ports = 1
+
+ Results were saved into ../../results.txt
+
+-----------------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/pom.xml b/taverna-tavlangtool/pom.xml
new file mode 100644
index 0000000..c23c35f
--- /dev/null
+++ b/taverna-tavlangtool/pom.xml
@@ -0,0 +1,213 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.taverna.language</groupId>
+ <artifactId>taverna-language</artifactId>
+ <version>0.15.1-incubating-SNAPSHOT</version>
+ </parent>
+ <artifactId>taverna-tavlangtool</artifactId>
+ <name>Apache Taverna Language Commandline</name>
+ <description>Command line for Taverna Language (experimental)</description>
+
+
+ <dependencies>
+
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>taverna-scufl2-api</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-scufl2-wfbundle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-scufl2-t2flow</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+<!-- <dependency> -->
+<!-- <groupId>org.shiwa.iwir</groupId> -->
+<!-- <artifactId>iwir</artifactId> -->
+<!-- <version>1.1.4</version> -->
+<!-- <scope>optional</scope> -->
+<!-- <systemPath>${project.build.directory}/taverna-language-commandline/lib/</systemPath> -->
+<!-- </dependency> -->
+
+ <dependency>
+ <groupId>no.s11.scufl2</groupId>
+ <artifactId>scufl2-iwir</artifactId>
+ <version>0.2-SNAPSHOT</version>
+ <optional>true</optional>
+ </dependency>
+
+
+
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.8</version>
+ </dependency>
+
+
+ <!-- <dependency> <groupId>${project.groupId}</groupId> <artifactId>taverna-scufl2-wfdesc</artifactId>
+ <version>${project.version}</version> <optional>true</optional> </dependency> -->
+ <!-- <dependency> <groupId>org.purl.wf4ever</groupId> <artifactId>scufl2-wfdesc</artifactId>
+ <version>0.3.7</version> </dependency> -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-scufl2-ucfpackage</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-robundle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>io.airlift</groupId>
+ <artifactId>airline</artifactId>
+ <!-- <version>${io.airlift.airline.version}</version> -->
+ <version>0.7</version>
+ </dependency>
+
+
+ </dependencies>
+
+ <build>
+ <!-- TODO: plugins for launchers and executable jar files? -->
+ <plugins>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>appassembler-maven-plugin</artifactId>
+ <version>1.1.1</version>
+ <executions>
+ <execution>
+ <id>assemble</id>
+ <phase>package</phase>
+ <goals>
+ <goal>assemble</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <repositoryLayout>flat</repositoryLayout>
+ <repositoryName>lib</repositoryName>
+ <assembleDirectory>${project.build.directory}/${project.artifactId}</assembleDirectory>
+ <programs>
+ <program>
+ <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
+ <name>tavlang</name>
+ </program>
+ </programs>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>2.3</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <transformers>
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
+ </transformer>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
+ <addHeader>false</addHeader>
+ </transformer>
+ </transformers>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots />
+ <id>mygrid-repository</id>
+ <name>myGrid Repository</name>
+ <url>http://www.mygrid.org.uk/maven/repository</url>
+ </repository>
+
+ <repository>
+ <id>mygrid-snapshot-repository</id>
+ <name>myGrid Snapshot Repository</name>
+ <url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots />
+ </repository>
+
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/.gitignore b/taverna-tavlangtool/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
new file mode 100644
index 0000000..068c933
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
@@ -0,0 +1,350 @@
+package org.apache.taverna.tavlang;
+
+/*
+ * 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 io.airlift.airline.Arguments;
+import io.airlift.airline.Cli;
+import io.airlift.airline.Cli.CliBuilder;
+import io.airlift.airline.Command;
+import io.airlift.airline.Help;
+import io.airlift.airline.Option;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.JAXBException;
+
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.tavlang.tools.convert.Scufl2Convert;
+import org.apache.taverna.tavlang.tools.convert.ToRobundle;
+import org.apache.taverna.tavlang.tools.inspect.ProcessorNames;
+import org.apache.taverna.tavlang.tools.inspect.ServiceTypes;
+import org.apache.taverna.tavlang.tools.stats.GetWfStat;
+import org.apache.taverna.tavlang.tools.validate.Validate;
+
+import com.google.common.collect.Lists;
+
+/*
+ * The command line options for convert, validate and inspect workflows.
+ * Use the airlift/airline library
+ * */
+
+public class CommandLineTool {
+
+ private static Cli<TvnLangTool> parser() {
+ CliBuilder<TvnLangTool> build = Cli.<TvnLangTool> builder("tavlang")
+ .withDescription("Convert, manage workflows")
+ .withDefaultCommand(HelpCommand.class)
+ .withCommand(CommandConvert.class) // Conversion
+ .withCommand(HelpCommand.class) // Help
+ .withCommand(CommandInspect.class) // Inspect
+ .withCommand(CommandValidate.class) // Validate
+ .withCommand(CommandVersion.class) // Version
+ .withCommand(CommandStat.class); // Statistics
+
+ return build.build();
+ }
+
+ public CommandLineTool() {
+ };
+
+ public void parse(String... args) {
+ TvnLangTool command = parser().parse(args);
+ command.execute();
+ System.out.println();
+ }
+
+ public static abstract class TvnLangTool {
+
+ public abstract void execute();
+ }
+
+ // placeholder for output file types
+ public static class Filetypes {
+ @Option(name = "--wfdesc", description = "Convert the workflow file to wfdesc-turtle")
+ public static boolean isWfdesc = false;
+
+ @Option(name = "--wfbundle", description = "Convert the workflow file to wfbundle")
+ public static boolean isWfbundle = false;
+
+ @Option(name = "--robundle", description = "Convert given bundle in to Research Object bundle")
+ public static boolean isRo = false;
+
+ @Option(name = "--structure", description = "Convert the workflow into *.structure")
+ public static boolean isStructure = false;
+
+ @Option(name = "--json", description = "Convert the workflow into json")
+ public static boolean isJson = false;
+
+
+ @Option(name = "--iwir", description = "Convert scufl2 workflows into IWIR 1.1 specification")
+ public static boolean isIwir = false;
+
+
+ // The tool can only handle one output format at a time.
+ // Return the file type which is selected
+ public static String isTrue() {
+ if (isWfdesc)
+ return "wfdesc";
+ else if (isWfbundle)
+ return "wfbundle";
+ else if (isRo)
+ return "robundle";
+ else if (isStructure)
+ return "structure";
+ else if (isJson)
+ return "json";
+
+ else if (isIwir)
+ return "iwir";
+
+
+ else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "convert");
+ command.execute();
+ return null;
+ }
+
+ }
+
+ }
+
+ public static class Inspect {
+ @Option(name = "--servicetypes", description = "List the service types used in workflow")
+ public static boolean servicetypes = false;
+
+ @Option(name = "--processornames", description = "List a tree of processor names used in workflow")
+ public static boolean processor = false;
+
+ public String getWay() {
+ if (servicetypes)
+ return "servicetypes";
+ else if (processor)
+ return "processornames";
+ else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "inspect");
+ command.execute();
+ return null;
+
+ }
+
+ }
+
+ }
+
+ // Placeholder for optional parameters: Ex: -i, -o
+ public static class Optional {
+
+ // The input file or directory
+ @Option(name = { "-i", "--input" }, description = "Input file/ file dir for conversion")
+ public static String in_file_dir;
+
+ // The out put file or directory. When this is set, all the converted
+ // files will be saved into the directory that specified.
+ @Option(name = { "-o", "--output" }, description = "Output file/ directory")
+ public static String out_file_dir;
+
+ public static String getInFile() {
+ return in_file_dir;
+ }
+
+ public static String getOutFile() {
+ return out_file_dir;
+ }
+
+ }
+
+ @Command(name = "help", description = "Display help information about Tvarna")
+ public static class HelpCommand extends TvnLangTool {
+ @Inject
+ public Help help;
+
+ @Override
+ public void execute() {
+ help.call();
+ }
+ }
+
+ // Command for convert workflows
+ @Command(name = "convert", description = "Convert the given workflow")
+ public static class CommandConvert extends TvnLangTool {
+ @Inject
+ Optional optional = new Optional();
+
+ @Inject
+ Filetypes filetypes = new Filetypes();
+
+ @Arguments(usage = "<output format> <input files> ", description = "List of files to be converted.\n "
+ + "Give the list of files to be converted without -i/-o and the converted files will be saved in to /converted folder in the same dir")
+ public final List<String> files = Lists.newArrayList();
+
+ // When this is true, the command will run recursively in a directory.
+ @Option(name = { "-r", "--recursive" }, description = "Execute the command recursively")
+ public boolean recurse = false;
+
+ // Option for validate the given workflow when converting
+ @Option(name = { "-V", "--validate" }, description = "Validate the workflow before convert")
+ public boolean validate = false;
+
+ @Override
+ public void execute() {
+
+ //Validate before convert
+ if(validate){
+ Validate validate = new Validate(files, null, false);
+ if(validate.getCheck()){
+ System.out.println("Conversion failed...! Workflow bundle has errors");
+ return;
+ }else{
+ runcommand();
+ }
+ }
+ }
+
+ public void runcommand(){
+ if (Filetypes.isRo) {
+ try {
+ new ToRobundle(files, Optional.getOutFile());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+// else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc)
+ } else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc){
+ if (recurse) {
+ new Scufl2Convert(Filetypes.isTrue(),
+ Optional.getInFile(), Optional.getOutFile());
+ } else {
+ new Scufl2Convert(Filetypes.isTrue(), files,
+ Optional.getOutFile());
+ }
+ }else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "convert");
+ command.execute();
+ }
+
+ }
+
+
+
+ }
+
+ // Version command
+ @Command(name = "version", description = "Show version informantion")
+ public static class CommandVersion extends TvnLangTool {
+
+ @Override
+ public void execute() {
+ System.out.print(getClass().getPackage().getImplementationTitle());
+ System.out.println(" " + getClass().getPackage().getImplementationVersion());
+ }
+
+ }
+
+ // Command for inspection of workflows....!!
+ @Command(name = "inspect", description = "Inspect the given workflow and show the results on the terminal")
+ public static class CommandInspect extends TvnLangTool {
+
+ @Inject
+ Inspect inspect = new Inspect();
+
+ @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
+ public String file;
+
+ @Arguments(usage = "<option> <input files>", description = "Inspect the given workflow")
+ public List<String> toInspect = Lists.newArrayList();
+
+ @Override
+ public void execute() {
+ if (Inspect.processor) {
+ try {
+ new ProcessorNames(toInspect, file);
+
+ } catch (ReaderException | IOException | JAXBException e) {
+ e.printStackTrace();
+ }
+ } else if (Inspect.servicetypes) {
+ try {
+ new ServiceTypes(toInspect, file);
+ } catch (IOException | ReaderException e) {
+ e.printStackTrace();
+ }
+
+ }else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "inspect");
+ command.execute();
+ }
+
+ }
+
+ }
+
+ // Command for validation
+ @Command(name = "validate", description = "validate the given workflow")
+ public static class CommandValidate extends TvnLangTool{
+
+ @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
+ public String file;
+
+ @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
+ public boolean verbose;
+
+// @Arguments(usage = "<option> <input files> <output dir>", description = "Validate the given workflow file/s")
+ @Arguments(usage = "input files", description = "Validate the given workflow file/s")
+ public List<String> toValidate = Lists.newArrayList();
+
+ @Override
+ public void execute() {
+
+ Validate validate = new Validate(toValidate, file, verbose);
+
+
+ }
+
+ }
+
+ //Command for getting workflow stats
+ @Command (name = "stats", description = "Shows the workflow statistics")
+ public static class CommandStat extends TvnLangTool{
+
+
+ @Option(name = {"-l", "--log"}, description ="Save the workflow statictics in a file")
+ public String file;
+
+ @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
+ public boolean verbose;
+
+ @Arguments(usage="input files", description = "Enter the workflow bundle files")
+ public List<String> files;
+
+ @Override
+ public void execute() {
+
+ GetWfStat stat = new GetWfStat(files, file, verbose);
+
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
new file mode 100644
index 0000000..016488c
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
@@ -0,0 +1,29 @@
+package org.apache.taverna.tavlang;
+
+/*
+ * 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.
+ */
+
+public class TavernaCommandline {
+
+ public static void main(String args[]){
+ CommandLineTool tool = new CommandLineTool();
+ tool.parse(args);
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
new file mode 100644
index 0000000..c78c7a2
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
@@ -0,0 +1,88 @@
+package org.apache.taverna.tavlang.tools;
+
+/*
+ * 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.
+ */
+
+
+
+public class Tools {
+
+ public static enum ConvertionTools {
+ wfbundle{
+ public String mediaType = "application/vnd.taverna.scufl2.workflow-bundle";
+
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return this.mediaType;
+ }
+ },
+ json{
+ public String mediaType = "application/ld+json";
+
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return mediaType;
+ }
+ },
+ wfdesc{
+ public String mediaType = "text/vnd.wf4ever.wfdesc+turtle";
+
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ // TODO Auto-generated method stub
+// System.out.println(mediaType);
+ return mediaType;
+ }
+ },
+ robundle{
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return null;
+ }
+
+ },
+ structure{
+ public String mediaType = "text/vnd.taverna.scufl2.structure";
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return mediaType;
+ }
+ },
+
+ iwir{
+ public String mediaType = "application/vnd.shiwa.iwir+xml";
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return mediaType;
+ }
+ };
+
+ ConvertionTools(){}
+
+ public abstract String getMediaType(ConvertionTools t);
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
new file mode 100644
index 0000000..da4dff0
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
@@ -0,0 +1,206 @@
+package org.apache.taverna.tavlang.tools.convert;
+
+/*
+ * 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 java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.io.WriterException;
+import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
+
+
+/*
+ * Converts
+ * .t2flow --> .wfbundle
+ * .t2flow --> .structure
+ * .wfbundle --> .structure
+ * .wfbundle/ .t2flow -> .iwir
+ * two constructors.
+ * Scufl2Convert(List<String> list, String out) --> will save the converted files in 'out folder or a directory named /converted in the same folder.
+ * Scufl2Convert(String in, String out) --> Will convert all the files in the 'in' folder and save them in 'out' folder --> -r must be true.
+ *
+ * */
+public class Scufl2Convert{
+
+ private ConvertionTools t;
+ private String MEDIA_TYPE;
+ private String input;
+ private String output;
+ private String type;
+ private List<String> filesList;
+
+ public Scufl2Convert(String type, List<String> files, String out){
+ this.filesList = files;
+ this.output = out;
+ this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
+ this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t);
+ this.convert();
+ }
+
+ //When recursive case is on....
+ public Scufl2Convert(String type, String in, String out){
+ this.input = in;
+ this.output = out;
+ this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
+ this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t); //Determine the writer media type
+
+ this.createdir();
+ }
+
+ //Create the dir if not exists
+ public void createdir(){
+ if(output == null){
+ File outFile = new File(this.input, "converted");
+ try {
+ FileUtils.forceMkdir(outFile);
+ this.output = outFile.getAbsolutePath();
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!!");
+ e1.printStackTrace();
+ }
+ }else{
+ File outFile = new File(this.output);
+ try {
+ FileUtils.forceMkdir(outFile);
+
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!!");
+ e1.printStackTrace();
+ }
+ }
+ this.rec_convert(this.input);
+ }
+
+ //Convert the given file. Return in case of an exception.
+ public boolean convert(){
+
+ boolean check = false;
+ // If the output folder is given, save the converted files in to that folder.
+
+ if(this.filesList.size()>0 && this.output != null){
+ File outFile = new File(this.output);
+ try {
+ FileUtils.forceMkdir(outFile);
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!");
+ }
+ for(String file : this.filesList){
+ File t2File = new File(file);
+
+ convertFile(t2File, outFile);
+
+ }
+
+ }
+
+ /* If the output file is not given, save the converted files in
+ * '/converted' folder.
+ */
+
+ else if(this.filesList.size()>0 && this.output == null){
+ for(String file : this.filesList){
+ File t2File = new File(file);
+
+ File outFile = new File(t2File.getParentFile(), "converted");
+ try {
+ FileUtils.forceMkdir(outFile);
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!");
+ }
+
+ convertFile(t2File, outFile);
+
+ }
+ }else{
+ System.err.println("Error: Argument mismatch");
+ check = false;
+ }
+
+ return check;
+ }
+
+ //Convert the files in a given directory and save the converted files in to specified dir or /converted folder.
+ //Recursive conversion
+ public void rec_convert(String dir){
+
+ File parent = new File(this.input);
+ if(!parent.exists()){
+ System.err.println("Error: Input directory not found");
+ }else{
+ for(File file : parent.listFiles()){
+ if(!file.isDirectory())
+ {
+ File outFile = new File(this.output);
+ convertFile(file, outFile);
+ }
+ }
+ }
+ }
+
+ //Convert the file
+ public void convertFile(File t2File, File outFile){
+
+ //Check weather the input files are in valid format...!!!
+ String ext = FilenameUtils.getExtension(t2File.getName());
+ if(!ext.equalsIgnoreCase("t2flow")&&!ext.equalsIgnoreCase("wfbundle")){
+ System.err.println("Error: Invalid input file format...!!!");
+ return;
+ }
+
+ WorkflowBundleIO wfbio = new WorkflowBundleIO();
+ String filename = t2File.getName();
+ filename = filename.replaceFirst("\\..*", this.type);
+ File scufl2File = new File(outFile.getAbsolutePath(), filename);
+
+ WorkflowBundle wfBundle;
+ try {
+ wfBundle = wfbio.readBundle(t2File, null);// null --> will guess the media type for reading.
+
+// if(this.type.equals(".iwir")){
+// IwirWriter iww = new IwirWriter();
+// iww.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
+// }else
+
+ if(this.type.equals(".json")){
+ ToJson toJ = new ToJson();
+ toJ.convert(t2File, outFile);
+ }
+ else{
+ wfbio.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
+ }
+ System.out.println(scufl2File.getPath() + " is created.");
+ }catch (ReaderException e){
+ System.err.println("Error: Connot read the file");
+ }catch(IOException e){
+ System.err.println("Error: File not found");
+ }catch(WriterException e) {
+ System.err.println("Error: Cannot write to the file");
+// e.printStackTrace();
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
new file mode 100644
index 0000000..f11424c
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
@@ -0,0 +1,298 @@
+package org.apache.taverna.tavlang.tools.convert;
+
+/*
+ * 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 java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.taverna.scufl2.api.annotation.Annotation;
+import org.apache.taverna.scufl2.api.annotation.Revision;
+import org.apache.taverna.scufl2.api.common.Child;
+import org.apache.taverna.scufl2.api.common.Ported;
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.common.URITools;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.BlockingControlLink;
+import org.apache.taverna.scufl2.api.core.ControlLink;
+import org.apache.taverna.scufl2.api.core.DataLink;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleWriter;
+import org.apache.taverna.scufl2.api.io.WriterException;
+import org.apache.taverna.scufl2.api.port.DepthPort;
+import org.apache.taverna.scufl2.api.port.GranularDepthPort;
+import org.apache.taverna.scufl2.api.port.Port;
+import org.apache.taverna.scufl2.api.profiles.Profile;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
+
+public class ToJson {
+ public class JsonWriter implements WorkflowBundleWriter {
+
+ @Override
+ public Set<String> getMediaTypes() {
+ return new HashSet<String>(Arrays.asList("application/ld+json",
+ "application/json"));
+ }
+
+ @Override
+ public void writeBundle(WorkflowBundle wfBundle, File destination,
+ String mediaType) throws WriterException, IOException {
+ ObjectNode json = toJson(wfBundle);
+ mapper.writeValue(destination, json);
+ }
+
+ @Override
+ public void writeBundle(WorkflowBundle wfBundle, OutputStream output,
+ String mediaType) throws WriterException, IOException {
+ ObjectNode json = toJson(wfBundle);
+ mapper.writeValue(output, json);
+ }
+
+ }
+
+
+ private WorkflowBundleIO io = new WorkflowBundleIO();;
+
+ private WorkflowBundleWriter jsonWriter = new JsonWriter();
+
+ private ObjectMapper mapper = new ObjectMapper();
+
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ private URITools uriTools = new URITools();
+
+ public ToJson() {
+ mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+ mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ mapper.setDateFormat(new ISO8601DateFormat());
+
+ // Adding custom writer dynamically
+ List<WorkflowBundleWriter> writers = io.getWriters();
+ writers.add(jsonWriter);
+ io.setWriters(writers);
+ }
+
+ protected void addPorts(Ported ported, ObjectNode p) {
+ ArrayNode inputs = mapper.createArrayNode();
+ for (Port port : ported.getInputPorts()) {
+ inputs.add(toJson(port));
+ }
+ p.put("inputs", inputs);
+
+ ArrayNode outputs = mapper.createArrayNode();
+ for (Port port : ported.getOutputPorts()) {
+ outputs.add(toJson(port));
+ // FIXME: Do we need the id for ports? Needed if we add datalinks
+ }
+ p.put("outputs", outputs);
+ }
+
+ protected ObjectNode annotations(Child<?> bean) {
+ ObjectNode node = mapper.createObjectNode();
+ for (Annotation ann : scufl2Tools.annotationsFor(bean)) {
+ URI annUri = uriTools.uriForBean(ann);
+
+ // TODO: include annotation body?
+ }
+ return node;
+ }
+
+ public void convert(File in, File out) throws ReaderException, IOException,
+ WriterException {
+ String filename = in.getName();
+ filename = filename.replaceFirst("\\..*", ".json");
+ File workflowFile = new File(out.getAbsolutePath(), filename);
+
+ WorkflowBundle wfBundle = io.readBundle(in, null);
+ io.writeBundle(wfBundle, workflowFile, "application/ld+json");
+// System.out.println(workflowFile);
+
+ }
+
+ protected ObjectNode toJson(Port port) {
+ ObjectNode p = mapper.createObjectNode();
+ p.put("name", port.getName());
+ p.putPOJO("id",
+ uriTools.relativeUriForBean(port, scufl2Tools.findParent(
+ WorkflowBundle.class, ((Child<?>) port))));
+
+ if (port instanceof DepthPort) {
+ DepthPort depthPort = (DepthPort) port;
+ if (depthPort.getDepth() != null) {
+ p.put("depth", depthPort.getDepth());
+ }
+ }
+ if (port instanceof GranularDepthPort) {
+ GranularDepthPort granularDepthPort = (GranularDepthPort) port;
+ if (granularDepthPort.getGranularDepth() != null
+ && !granularDepthPort.getGranularDepth().equals(
+ granularDepthPort.getDepth())) {
+ p.put("granularDepth", granularDepthPort.getGranularDepth());
+ }
+ }
+ p.putAll(annotations((Child<?>) port));
+ return p;
+ }
+
+ protected JsonNode toJson(Processor proc) {
+ ObjectNode p = mapper.createObjectNode();
+ p.putPOJO("id",
+ uriTools.relativeUriForBean(proc, proc.getParent().getParent()));
+ p.put("name", proc.getName());
+ addPorts(proc, p);
+ p.putAll(annotations(proc));
+
+ List<Workflow> nested = scufl2Tools.nestedWorkflowsForProcessor(proc,
+ proc.getParent().getParent().getMainProfile());
+ if (!nested.isEmpty()) {
+ if (nested.size() == 1) {
+ p.put("nestedWorkflow", toJson(nested.iterator().next()));
+ } else {
+ ArrayNode list = mapper.createArrayNode();
+ for (Workflow w : nested) {
+ list.add(toJson(w));
+ }
+ p.put("nestedWorkflow", list);
+ }
+ }
+ return p;
+ }
+
+ protected JsonNode toJson(Revision currentRevision) {
+ ArrayNode revisions = mapper.createArrayNode();
+ while (currentRevision != null) {
+ ObjectNode rev = mapper.createObjectNode();
+ rev.putPOJO("id", currentRevision.getIdentifier());
+ if (currentRevision.getGeneratedAtTime() != null) {
+ rev.putPOJO("generatedAtTime",
+ currentRevision.getGeneratedAtTime());
+ }
+ currentRevision = currentRevision.getPreviousRevision();
+ if (currentRevision != null) {
+ rev.putPOJO("wasRevisionOf", currentRevision.getIdentifier());
+ }
+ revisions.add(rev);
+ }
+ return revisions;
+ }
+
+ protected ObjectNode toJson(Workflow workflow) {
+ ObjectNode wf = mapper.createObjectNode();
+
+ wf.putPOJO("id",
+ uriTools.relativeUriForBean(workflow, workflow.getParent()));
+
+ wf.put("name", workflow.getName());
+ wf.put("revisions", toJson(workflow.getCurrentRevision()));
+
+ ArrayNode processors = mapper.createArrayNode();
+ for (Processor p : workflow.getProcessors()) {
+ processors.add(toJson(p));
+ }
+ addPorts(workflow, wf);
+ wf.put("processors", processors);
+
+ ArrayNode datalinks = mapper.createArrayNode();
+ for (DataLink link : workflow.getDataLinks()) {
+ datalinks.add(toJson(link));
+ }
+ wf.put("datalinks", datalinks);
+
+ ArrayNode controlLinks = mapper.createArrayNode();
+ for (ControlLink link : workflow.getControlLinks()) {
+ controlLinks.add(toJson(link));
+ }
+ wf.put("controllinks", controlLinks);
+
+ wf.putAll(annotations(workflow));
+
+ return wf;
+ }
+
+ protected JsonNode toJson(ControlLink link) {
+ ObjectNode l = mapper.createObjectNode();
+ if (link instanceof BlockingControlLink) {
+ BlockingControlLink controlLink = (BlockingControlLink) link;
+ l.putPOJO("block", uriTools.relativeUriForBean(
+ controlLink.getBlock(), link.getParent().getParent()));
+ l.putPOJO("untilFinished", uriTools.relativeUriForBean(controlLink
+ .getUntilFinished(), link.getParent().getParent()));
+ }
+ return l;
+ }
+
+ protected JsonNode toJson(DataLink link) {
+ ObjectNode l = mapper.createObjectNode();
+ l.putPOJO("receivesFrom", uriTools.relativeUriForBean(
+ link.getReceivesFrom(), link.getParent().getParent()));
+ l.putPOJO("sendsTo", uriTools.relativeUriForBean(link.getSendsTo(),
+ link.getParent().getParent()));
+ if (link.getMergePosition() != null) {
+ l.put("mergePosition", link.getMergePosition());
+ }
+ return l;
+ }
+
+ public ObjectNode toJson(WorkflowBundle wfBundle) {
+
+ ObjectNode root = mapper.createObjectNode();
+ ArrayNode contextList = root.arrayNode();
+ root.put("@context", contextList);
+ ObjectNode context = root.objectNode();
+ contextList.add("https://w3id.org/scufl2/context");
+ contextList.add(context);
+ URI base = wfBundle.getGlobalBaseURI();
+ context.put("@base", base.toASCIIString());
+ root.put("id", base.toASCIIString());
+
+ // root.put("name", wfBundle.getName());
+ // root.put("revisions", toJson(wfBundle.getCurrentRevision()));
+
+ root.put("workflow", toJson(wfBundle.getMainWorkflow()));
+ root.put("profile", toJson(wfBundle.getMainProfile()));
+
+ return root;
+ }
+
+ private JsonNode toJson(Profile profile) {
+ ObjectNode pf = mapper.createObjectNode();
+
+ pf.putPOJO("id",
+ uriTools.relativeUriForBean(profile, profile.getParent()));
+ // TODO: Activities and configurations
+ return pf;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
new file mode 100644
index 0000000..6ab14bc
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
@@ -0,0 +1,66 @@
+package org.apache.taverna.tavlang.tools.convert;
+
+/*
+ * 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 java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.taverna.robundle.Bundle;
+import org.apache.taverna.robundle.Bundles;
+
+public class ToRobundle{
+
+ public ToRobundle(List<String> files, String out) throws Exception{
+
+ Logger logger = Logger.getLogger("");
+ //logger.setLevel(Level.FINER);
+ ConsoleHandler console = new ConsoleHandler();
+ console.setLevel(Level.FINEST);
+ logger.addHandler(console);
+ Logger.getLogger("org.researchobject").setLevel(Level.FINEST);
+
+ for(String f : files){
+ Path file = Paths.get(f);
+ convert(file);
+ }
+ }
+
+ //Recursive conversion
+ public ToRobundle(String type, String in, String out) {
+
+ }
+
+ public void convert(Path file) throws IOException{
+ try (Bundle bundle = Bundles.openBundle(file)) {
+
+// System.out.println(bundle.getManifest().toString());
+ bundle.getManifest().writeAsJsonLD();
+ bundle.getManifest().writeAsCombineManifest();
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
new file mode 100644
index 0000000..f93aadc
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
@@ -0,0 +1,169 @@
+package org.apache.taverna.tavlang.tools.inspect;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import javax.xml.bind.JAXBException;
+
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.common.URITools;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.profiles.Profile;
+
+/*
+ * list the processor names used in the workflow.
+ * Supported formats: .t2flow, .wfbundle
+ * */
+
+public class ProcessorNames {
+
+ private List<String> fileList;
+
+ private String file2;
+
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ private URITools uriTools = new URITools();
+
+ public ProcessorNames(List<String> fileList, String file) throws ReaderException, IOException, JAXBException{
+ this.fileList = fileList;
+ this.file2 = file;
+ this.show();
+ }
+
+ public void show() throws ReaderException, IOException, JAXBException{
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ StringBuilder sb = new StringBuilder();
+
+ for(String file : this.fileList){
+ File file2 = new File(file);
+ if(file2.isDirectory()){
+ for(File f : file2.listFiles()){
+ WorkflowBundle wfb = io.readBundle(f, null);
+ System.out.println("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb));
+ sb.append("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb) + "\n");
+ }
+ }else{
+ WorkflowBundle wfb = io.readBundle(new File(file), null);
+ System.out.println("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb));
+ sb.append("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb) + "\n");
+ }
+
+
+ }
+
+ if(this.file2!=null){
+ File log = new File(file2);
+ FileWriter fw = new FileWriter(log);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(sb.toString());
+ bw.close();
+ fw.close();
+ System.out.println("Results were saved into " + file2);
+ }
+ }
+
+ private Workflow findNestedWorkflow(Processor processor) {
+ Profile profile = processor.getParent().getParent().getMainProfile();
+ return scufl2Tools.nestedWorkflowForProcessor(processor, profile);
+ }
+
+ private void findProcessors(WorkflowBundle ro, Workflow workflow,
+ DefaultMutableTreeNode parent) {
+ for (Processor processor : workflow.getProcessors()) {
+ DefaultMutableTreeNode processorNode = new DefaultMutableTreeNode(
+ processor.getName());
+ parent.add(processorNode);
+ Workflow wf = findNestedWorkflow(processor);
+ if (wf != null) {
+ findProcessors(ro, wf, processorNode);
+ }
+ }
+
+ }
+
+ public TreeModel makeProcessorTree(WorkflowBundle workflowBundle)
+ throws JAXBException, IOException {
+ Workflow workflow = workflowBundle.getMainWorkflow();
+ TreeModel treeModel = new DefaultTreeModel(new DefaultMutableTreeNode(
+ workflow.getName()));
+ DefaultMutableTreeNode parent = (DefaultMutableTreeNode) treeModel
+ .getRoot();
+
+ findProcessors(workflowBundle, workflow, parent);
+ return treeModel;
+ }
+
+ public List<String> showProcessorNames(WorkflowBundle ro)
+ throws JAXBException, IOException {
+ ArrayList<String> names = new ArrayList<String>();
+ for (Processor processor : ro.getMainWorkflow().getProcessors()) {
+ names.add(processor.getName());
+ }
+ Collections.sort(names);
+ return names;
+ }
+
+ public String showProcessorTree(WorkflowBundle ro) throws JAXBException,
+ IOException {
+ TreeModel treeModel = makeProcessorTree(ro);
+ return treeModelAsString(treeModel);
+ }
+
+ public String treeModelAsString(TreeModel treeModel) {
+ StringBuffer sb = new StringBuffer();
+ Object root = treeModel.getRoot();
+ treeModelAsString(treeModel, root, sb, "");
+ return sb.toString();
+ }
+
+ protected void treeModelAsString(TreeModel treeModel, Object parent,
+ StringBuffer sb, String indentation) {
+ sb.append(indentation);
+ int childCount = treeModel.getChildCount(parent);
+ if (childCount == 0) {
+ sb.append("- ");
+ } else {
+ sb.append("+ ");
+ indentation = indentation + " ";
+ }
+ sb.append(parent);
+ sb.append("\n");
+ for (int i = 0; i < childCount; i++) {
+ Object child = treeModel.getChild(parent, i);
+ treeModelAsString(treeModel, child, sb, indentation);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
new file mode 100644
index 0000000..ddff2ab
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
@@ -0,0 +1,112 @@
+package org.apache.taverna.tavlang.tools.inspect;
+
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.activity.Activity;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.profiles.Profile;
+
+/*
+ * List the service types used in workflow.
+ * Supported file formats : .wfbundle, .t2flow
+ * */
+
+public class ServiceTypes {
+
+ private List<String> filesList;
+ private Set<String> types = new LinkedHashSet<String>();
+ private String save;
+
+ public ServiceTypes(List<String> filesList, String file) throws IOException, ReaderException{
+ this.filesList = filesList;
+ this.save = file;
+ this.service();
+
+ }
+
+ public void service() throws ReaderException, IOException{
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ StringBuilder sb = new StringBuilder();
+
+ for (String filepath : filesList) {
+ File file = new File(filepath);
+
+ if(file.isDirectory()){
+ for(File f : file.listFiles()){
+ WorkflowBundle wfBundle = io.readBundle(f, null);
+ System.out.println("Service types used in " + f.getCanonicalPath() + " :" +"\n");
+ sb.append("Service types used in " + f.getCanonicalPath() + " :");
+ for (Profile profile : wfBundle.getProfiles()) {
+ for (Activity activity : profile.getActivities()) {
+ this.types.add(activity.getType().toASCIIString());
+ }
+ }
+ for(String t : types){
+ System.out.println(t);
+ sb.append(t + "\n");
+ }
+ System.out.println("\n**************************************************\n");
+ sb.append("\n**************************************************\n");
+ }
+ }else{
+ // mediaType = null --> guess
+ WorkflowBundle wfBundle = io.readBundle(file, null);
+ System.out.println("Service types used in " + file.getCanonicalPath() + " :" + "\n");
+ sb.append("Service types used in " + file.getCanonicalPath() + " :");
+ for (Profile profile : wfBundle.getProfiles()) {
+ for (Activity activity : profile.getActivities()) {
+ this.types.add(activity.getType().toASCIIString());
+ }
+ }
+ for(String t : types){
+ System.out.println(t);
+ sb.append(t + "\n");
+ }
+
+ System.out.println("\n**************************************************\n");
+ sb.append("\n**************************************************\n");
+ }
+ }
+
+ if(save!=null){
+ File log = new File(save);
+ FileWriter fw = new FileWriter(log);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(sb.toString());
+ bw.close();
+ fw.close();
+ System.out.println("Results were saved into " + save);
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
new file mode 100644
index 0000000..7daa38e
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
@@ -0,0 +1,193 @@
+package org.apache.taverna.tavlang.tools.stats;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.taverna.scufl2.api.common.NamedSet;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.ControlLink;
+import org.apache.taverna.scufl2.api.core.DataLink;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.port.InputPort;
+import org.apache.taverna.scufl2.api.port.OutputPort;
+
+public class GetWfStat {
+
+ private NamedSet<Workflow> set;
+ private String logFile;
+ private boolean verbose;
+ private StringBuilder str_verb = new StringBuilder();
+ private StringBuilder str_nverb = new StringBuilder();
+
+
+ //If given file is a workflow file
+ public GetWfStat(List<String> wf_files, String log, boolean verbose){
+ this.logFile = log;
+ this.verbose = verbose;
+
+ for(String files : wf_files){
+ File f = new File(files);
+ if(f.isFile()){
+ this.read(f);
+
+ }else{
+ System.err.println("Error reading the file " + f.getName());
+ }
+ }
+
+ this.isVerbose();
+
+ if(log!=null){
+ this.writefile(this.str_verb.toString(), this.logFile);
+ }
+ }
+
+ //Read the workflow file and extract the resources.
+ //And append them to a String builder
+ public void read(File file){
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ try {
+ WorkflowBundle wf = io.readBundle(file, null);
+ this.set = wf.getWorkflows();
+
+ //String to be written to a file.
+ this.str_nverb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
+ this.str_verb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
+
+ for(Workflow wrf : set){
+ //TODO :- Take each type of resource and make a system to view them to the user.
+ String name = "Name of the workflow = " + wrf.getName();
+ this.str_verb.append(name + "\n");
+ this.str_nverb.append(name + "\n");
+
+
+ String noP = " |--> Number of Processors = " + wrf.getProcessors().size();
+ this.str_verb.append(noP + "\n");
+ this.str_nverb.append(noP + "\n");
+
+ if(this.verbose && wrf.getProcessors().size()!=0){
+ this.str_verb.append(" | |--> Processors: " + "\n");
+
+ for(Processor p : wrf.getProcessors()){
+ this.str_verb.append(" | |--> " + p.getName() + "\n");
+ }
+ this.str_verb.append(" |" + "\n");
+ }
+
+ this.str_verb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
+ this.str_nverb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
+
+ if(this.verbose && wrf.getDataLinks().size()!=0){
+ this.str_verb.append(" | |--> Data Links" + "\n");
+
+ for(DataLink link : wrf.getDataLinks()){
+ this.str_verb.append(" | |--> " + link + "\n");
+ }
+ this.str_verb.append(" |" + "\n");
+ }
+
+ this.str_nverb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
+ this.str_verb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
+
+
+ if(this.verbose && wrf.getControlLinks().size()!=0){
+ this.str_verb.append(" | |--> Control Links\n");
+ for(ControlLink link : wrf.getControlLinks()){
+ this.str_verb.append(" | |--> " + link + "\n");
+ }
+ this.str_verb.append(" |\n");
+ }
+
+ this.str_nverb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
+ this.str_verb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
+
+
+ if(this.verbose && wrf.getInputPorts().size()!=0){
+ this.str_verb.append(" | |--> Input Ports\n");
+ for(InputPort iport : wrf.getInputPorts()){
+ this.str_verb.append(" | |--> " + iport.toString()+"\n");
+ }
+ this.str_verb.append(" |\n");
+ }
+
+ this.str_nverb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
+ this.str_verb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
+
+ if(this.verbose && wrf.getOutputPorts().size()!=0){
+ this.str_verb.append(" | |--> Output Ports\n");
+ for(OutputPort o_port : wrf.getOutputPorts()){
+ this.str_verb.append(" | |--> " + o_port.toString()+"\n");
+ }
+
+ this.str_verb.append("\n");
+ }
+
+ this.str_nverb.append("\n");
+ this.str_verb.append("\n");
+ }
+
+ } catch (ReaderException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ //Saving the output into a log
+ public void writefile(String report, String url){
+
+ File file = new File(url);
+
+ if(!file.isFile()){
+ System.err.println("Error in writing the log file...");
+ }
+
+ FileWriter writer;
+ BufferedWriter bfw;
+ try {
+ writer = new FileWriter(file);
+ bfw = new BufferedWriter(writer);
+ bfw.write(report);
+ bfw.close();
+ writer.close();
+ System.out.println("Results were saved into " + file.getPath());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public void isVerbose(){
+ if(verbose)
+ System.out.println(this.str_verb.toString());
+ else
+ System.out.println(this.str_nverb.toString());
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
new file mode 100644
index 0000000..fc05e3b
--- /dev/null
+++ b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
@@ -0,0 +1,151 @@
+package org.apache.taverna.tavlang.tools.validate;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidationListener;
+import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidator;
+import org.apache.taverna.scufl2.validation.correctness.ReportCorrectnessValidationListener;
+
+/*
+ * Takes .wfbundle/ .t2flow as the input
+ * */
+public class Validate {
+
+ private String logfile;
+ private String nonVerbose = "";
+ private String finalrep = "";
+ private boolean verbose;
+ private boolean check = false;
+
+
+ public Validate(List<String> files, String file, boolean verbose) {
+ this.verbose = verbose;
+ this.logfile = file;
+ System.out.println("Validation started....");
+ for (String f : files) {
+ System.out.println("Validating " + f);
+ File wfile = new File(f);
+ read(wfile);
+
+ }
+ System.out.println("Validation completed.......");
+
+
+ if (this.logfile != null) {
+ saveToLog(this.finalrep);
+ }
+ }
+
+ public void read(File file) {
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ try {
+ this.finalrep += validate(io.readBundle(file, null), file.getName());
+
+ } catch (ReaderException e) {
+ System.err.println(e.getMessage());
+
+ } catch (IOException e) {
+ System.err.println("Workflow bundle not found!");
+ System.err.println(e.getMessage());
+
+ }
+ }
+
+ public String validate(WorkflowBundle wfb, String file) {
+
+ StringBuilder report2 = new StringBuilder();
+ CorrectnessValidationListener correctnessValidationListener = new ReportCorrectnessValidationListener();
+ CorrectnessValidator correctnessValidator = new CorrectnessValidator();
+ correctnessValidationListener = correctnessValidator.validate(wfb);
+ String report = correctnessValidationListener.toString().replace(
+ "ReportCorrectnessValidationListener [", "");
+
+ String[] sections = report.split(", ");
+
+
+
+ boolean detect = correctnessValidationListener.detectedProblems();
+ if (!detect){
+ report2.append("The workflow " + file + " has no errors. \n\n");
+ this.nonVerbose = "The workflow " + file + " has no errors. \n";
+ }
+
+
+// System.out.println("The validation report for " + file);
+ report2.append("The validation report for " + file + "......\n");
+ report2.append("-------------------------------------------------------------------------------- \n");
+ for (int i = 0; i < sections.length; i++) {
+ String line = "-->"+sections[i].split("=")[0].replace("()", "").replace(
+ "get", "")
+ + ":- ";
+ report2.append(line);
+ String line2 = sections[i].split("=")[1].replace("[", "").replace("]","");
+ if(line2.equals("")) report2.append("null \n\n");
+ else report2.append("\t").append(line2).append("\n");
+
+
+ }
+ report2.append("--------------------------------------------------------------------------------- \n\n");
+
+ if(detect){
+ System.out.println("The workflow bundle has following problems: \n"+report2.toString());
+ check = true;
+ }
+
+ if(verbose){
+ System.out.println(report2.toString());
+ }else{
+ System.out.println(this.nonVerbose);
+ }
+
+ return report2.toString();
+
+ }
+
+ public void saveToLog(String s) {
+ File logFile = new File(this.logfile);
+ FileWriter logwriter;
+ try {
+ logwriter = new FileWriter(logFile);
+ BufferedWriter blw = new BufferedWriter(logwriter);
+ blw.write(s);
+ blw.close();
+ logwriter.close();
+ System.out.println("Results were saved into " + logFile.getPath());
+ } catch (IOException e) {
+ System.err.println("Error writing to the file \n" + e.getMessage());
+ }
+
+ }
+
+ public boolean getCheck(){
+ return this.check;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/resources/.gitignore b/taverna-tavlangtool/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/resources/META-INF/NOTICE b/taverna-tavlangtool/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000..370a8fc
--- /dev/null
+++ b/taverna-tavlangtool/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,7 @@
+Apache Taverna Language
+Copyright 2010-2014 University of Manchester, UK
+Copyright 2014-2015 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/.gitignore b/taverna-tavlangtool/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
new file mode 100644
index 0000000..6beaa8e
--- /dev/null
+++ b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
@@ -0,0 +1,43 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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 org.apache.taverna.tavlang.CommandLineTool;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CommandLineTest {
+ CommandLineTool commandLineTool = new CommandLineTool();
+
+ @Test
+ public void testHelp(){
+ commandLineTool.parse();
+ commandLineTool.parse("version");
+ commandLineTool.parse("help");
+ commandLineTool.parse("help", "convert");
+ commandLineTool.parse("help", "inspect");
+ commandLineTool.parse("help", "validate");
+ commandLineTool.parse("help", "help");
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
new file mode 100644
index 0000000..a920db2
--- /dev/null
+++ b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
@@ -0,0 +1,34 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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 org.junit.Test;
+
+public class TestConvert{
+
+ @Test
+ public void testConvertS() {
+// fail("Not yet implemented");
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1e13219f/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
new file mode 100644
index 0000000..4c22377
--- /dev/null
+++ b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
@@ -0,0 +1,34 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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 org.junit.Test;
+
+public class TestStats {
+
+ @Test
+ public void test() {
+// fail("Not yet implemented");
+ }
+
+}
[08/11] incubator-taverna-language git commit: taverna-tavlangtool
module removed
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
deleted file mode 100644
index 483d4c3..0000000
--- a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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.util.HashMap;
-
-import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
-import org.junit.Test;
-import org.junit.*;
-
-/*
- * Test cases for the Tools Class.
- * Input :- The output file format
- * Output:- The relevant writer media type for that file format
- *
- * */
-
-public class TestTools {
-
- private ConvertionTools tools;
- private HashMap<String, String> map = new HashMap<>();
-
-
- @Before
- public void setMap(){
- this.map.put("wfdesc", "text/vnd.wf4ever.wfdesc+turtle");
- this.map.put("iwir", "application/vnd.shiwa.iwir+xml");
- this.map.put("json", "application/ld+json");
- this.map.put("wfbundle", "application/vnd.taverna.scufl2.workflow-bundle");
- this.map.put("robundle", null);
- }
-
-
- @Test
- public void testWfdesc() {
- assertEquals(map.get("wfdesc"), ConvertionTools.valueOf("wfdesc").getMediaType(tools));
- }
-
- @Test
- public void testIwir() {
- assertEquals(map.get("iwir"), ConvertionTools.valueOf("iwir").getMediaType(tools));
- }
-
- @Test
- public void testJson() {
- assertEquals(map.get("json"), ConvertionTools.valueOf("json").getMediaType(tools));
- }
-
-
- @Test
- public void testWfbundle() {
- assertEquals(map.get("wfbundle"), ConvertionTools.valueOf("wfbundle").getMediaType(tools));
- }
-
-
- @Test
- public void testRobundle() {
- assertEquals(map.get("robundle"), ConvertionTools.valueOf("robundle").getMediaType(tools));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
deleted file mode 100644
index 58e0d3f..0000000
--- a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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.awt.List;
-import java.util.ArrayList;
-
-import org.apache.taverna.robundle.Bundle;
-import org.apache.taverna.tavlang.tools.validate.Validate;
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.google.common.collect.Lists;
-
-public class TestValidate {
-
-
-
- @Test
- public void test() {
- ArrayList<String> list = Lists.newArrayList();
- list.add("src/test/resources/workflows/t2flow/as.t2flow");
- Validate val = new Validate(list, null, false);
-
- assertEquals(false, val.getCheck());
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/resources/.gitignore b/taverna-tavlangtool/src/test/resources/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow b/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow
deleted file mode 100644
index 2d9f127..0000000
--- a/taverna-tavlangtool/src/test/resources/workflows/t2flow/as.t2flow
+++ /dev/null
@@ -1,1674 +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.
--->
-<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.1.0">
- <dataflow id="92c5e8d5-8360-4f86-a845-09c9849cbdc5" role="top">
- <name>Workflow1</name>
- <inputPorts />
- <outputPorts>
- <port>
- <name>asdasd</name>
- <annotations />
- </port>
- </outputPorts>
- <processors>
- <processor>
- <name>Workflow19</name>
- <inputPorts>
- <port>
- <name>lk</name>
- <depth>0</depth>
- </port>
- </inputPorts>
- <outputPorts>
- <port>
- <name>kk</name>
- <depth>0</depth>
- <granularDepth>0</granularDepth>
- </port>
- <port>
- <name>String_constant_value</name>
- <depth>0</depth>
- <granularDepth>0</granularDepth>
- </port>
- </outputPorts>
- <annotations />
- <activities>
- <activity>
- <raven>
- <group>net.sf.taverna.t2.activities</group>
- <artifact>dataflow-activity</artifact>
- <version>1.0</version>
- </raven>
- <class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class>
- <inputMap>
- <map from="lk" to="lk" />
- </inputMap>
- <outputMap>
- <map from="String_constant_value" to="String_constant_value" />
- <map from="kk" to="kk" />
- </outputMap>
- <configBean encoding="dataflow">
- <dataflow ref="c451b1cf-1c95-47e5-b89c-537a5501a1ef" />
- </configBean>
- <annotations />
- </activity>
- </activities>
- <dispatchStack>
- <dispatchLayer>
- <raven>
- <group>net.sf.taverna.t2.core</group>
- <artifact>workflowmodel-impl</artifact>
- <version>1.0</version>
- </raven>
- <class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
- <configBean encoding="xstream">
- <net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
- </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
- </configBean>
- </dispatchLayer>
- <dispatchLayer>
- <raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="lk" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings</name>
-<inputPorts>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string2" depth="0" />
-<port name="string1" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings_2</name>
-<inputPorts>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string2" depth="0" />
-<port name="string1" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Create_Lots_Of_Strings</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>strings</name>
-<depth>1</depth>
-<granularDepth>1</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap />
-<outputMap>
-<map from="strings" to="strings" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName>
- <script>List strings = new ArrayList();
-for (int i = 0; i < 40; i++) {
- strings.add("String" + i);
-}
-</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs />
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>1</granularDepth>
- <name>strings</name>
- <depth>1</depth>
- <mimeTypes>
- <string>l('text/plain')</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings_3</name>
-<inputPorts>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string1" depth="0" />
-<port name="string2" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>String_constant</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>value</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>stringconstant-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
-<inputMap />
-<outputMap>
-<map from="value" to="value" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
- <value>Add your own value here</value>
-</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings_4</name>
-<inputPorts>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string1" depth="0" />
-<port name="string2" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Echo_List</name>
-<inputPorts>
-<port>
-<name>inputlist</name>
-<depth>1</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>outputlist</name>
-<depth>1</depth>
-<granularDepth>1</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="inputlist" to="inputlist" />
-</inputMap>
-<outputMap>
-<map from="outputlist" to="outputlist" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.EchoList</localworkerName>
- <script>outputlist = inputlist;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>[B</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>inputlist</name>
- <depth>1</depth>
- <mimeTypes>
- <string>l('')</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>1</granularDepth>
- <name>outputlist</name>
- <depth>1</depth>
- <mimeTypes>
- <string>l('')</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="inputlist" depth="1" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-</processors>
-<conditions />
-<datalinks>
-<datalink>
-<sink type="processor">
-<processor>Workflow19</processor>
-<port>lk</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings_2</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>Create_Lots_Of_Strings</processor>
-<port>strings</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_2</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>Create_Lots_Of_Strings</processor>
-<port>strings</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_2</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>Create_Lots_Of_Strings</processor>
-<port>strings</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_3</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>Workflow19</processor>
-<port>kk</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_3</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>String_constant</processor>
-<port>value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_4</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>String_constant</processor>
-<port>value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_4</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>Workflow19</processor>
-<port>String_constant_value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="merge">
-<processor>Echo_List</processor>
-<port>inputlist</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings_4</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="merge">
-<processor>Echo_List</processor>
-<port>inputlist</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings_3</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="dataflow">
-<port>asdasd</port>
-</sink>
-<source type="processor">
-<processor>Echo_List</processor>
-<port>outputlist</port>
-</source>
-</datalink>
-</datalinks>
-<annotations />
-</dataflow>
-<dataflow id="c451b1cf-1c95-47e5-b89c-537a5501a1ef" role="nested">
-<name>Workflow19</name>
-<inputPorts>
-<port>
-<name>lk</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-<annotations />
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>kk</name>
-<annotations />
-</port>
-<port>
-<name>String_constant_value</name>
-<annotations />
-</port>
-</outputPorts>
-<processors>
-<processor>
-<name>Concatenate_two_strings</name>
-<inputPorts>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string1" depth="0" />
-<port name="string2" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>string1_value</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>value</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>stringconstant-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
-<inputMap />
-<outputMap>
-<map from="value" to="value" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
- <value>kjkj</value>
-</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>String_constant</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>value</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>stringconstant-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
-<inputMap />
-<outputMap>
-<map from="value" to="value" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
- <value>Add your own value here</value>
-</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-</processors>
-<conditions>
-<condition control="Concatenate_two_strings" target="String_constant" />
-</conditions>
-<datalinks>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>string1_value</processor>
-<port>value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string2</port>
-</sink>
-<source type="dataflow">
-<port>lk</port>
-</source>
-</datalink>
-<datalink>
-<sink type="dataflow">
-<port>kk</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="dataflow">
-<port>String_constant_value</port>
-</sink>
-<source type="processor">
-<processor>String_constant</processor>
-<port>value</port>
-</source>
-</datalink>
-</datalinks>
-<annotations />
-</dataflow>
-</workflow>
\ No newline at end of file
[09/11] incubator-taverna-language git commit: taverna-tavlangtool
module removed
Posted by st...@apache.org.
taverna-tavlangtool module removed
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/6e2aa825
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/6e2aa825
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/6e2aa825
Branch: refs/heads/master
Commit: 6e2aa825256b26d1622ed9b6f6b8319d3620b3cc
Parents: 3aa91bf
Author: Menaka Madushanka <me...@gmail.com>
Authored: Tue Feb 2 12:00:44 2016 +0530
Committer: Menaka Madushanka <me...@gmail.com>
Committed: Tue Feb 2 12:00:44 2016 +0530
----------------------------------------------------------------------
taverna-tavlangtool/README.md | 425 -----
taverna-tavlangtool/pom.xml | 213 ---
taverna-tavlangtool/src/main/java/.gitignore | 0
.../apache/taverna/tavlang/CommandLineTool.java | 350 ----
.../taverna/tavlang/TavernaCommandline.java | 29 -
.../org/apache/taverna/tavlang/tools/Tools.java | 88 -
.../tavlang/tools/convert/Scufl2Convert.java | 206 ---
.../taverna/tavlang/tools/convert/ToJson.java | 298 ----
.../tavlang/tools/convert/ToRobundle.java | 66 -
.../tavlang/tools/inspect/ProcessorNames.java | 169 --
.../tavlang/tools/inspect/ServiceTypes.java | 112 --
.../taverna/tavlang/tools/stats/GetWfStat.java | 193 --
.../tavlang/tools/validate/Validate.java | 151 --
.../src/main/resources/.gitignore | 0
.../src/main/resources/META-INF/NOTICE | 7 -
taverna-tavlangtool/src/test/java/.gitignore | 0
.../taverna/tavlang/test/CommandLineTest.java | 43 -
.../taverna/tavlang/test/TestConvert.java | 34 -
.../apache/taverna/tavlang/test/TestStats.java | 34 -
.../apache/taverna/tavlang/test/TestTools.java | 80 -
.../taverna/tavlang/test/TestValidate.java | 49 -
.../src/test/resources/.gitignore | 0
.../test/resources/workflows/t2flow/as.t2flow | 1674 ------------------
23 files changed, 4221 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/README.md
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/README.md b/taverna-tavlangtool/README.md
deleted file mode 100644
index e76cbcd..0000000
--- a/taverna-tavlangtool/README.md
+++ /dev/null
@@ -1,425 +0,0 @@
-<!--
- 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.
--->
-
-# Apache Taverna Language Command Line
-
-
-This is planned as a command line for the
-[Apache Taverna Language](https://github.com/apache/incubator-taverna-language/),
-an API for the
-[Apache Taverna](http://taverna.incubator.apache.org/) workflows.
-
-This module is a **work in progress** as part of Google Summer of Code 2015.
-
-
-
-## License
-
-(c) 2015 Apache Software Foundation
-
-This product includes software developed at The [Apache Software
-Foundation](http://www.apache.org/).
-
-Licensed under the [Apache License
-2.0](https://www.apache.org/licenses/LICENSE-2.0), see the file
-[../LICENSE](../LICENSE) for details.
-
-The file [NOTICE](src/main/resources/NOTICE) contains any additional attributions and
-details about embedded third-party libraries and source code.
-
-
-# Contribute
-
-Please subscribe to and contact the
-[dev@taverna](http://taverna.incubator.apache.org/community/lists#dev%20mailing%20list)
-for any questions, suggestions and discussions about
-Apache Taverna Language Commandline.
-
-Bugs and planned features are tracked in the Jira
-[Issue tracker](https://issues.apache.org/jira/browse/TAVERNA/component/12326903)
-under the `TAVERNA` component _GSOC Taverna Language Command line_. Feel free
-to add an issue!
-
-To suggest changes to this source code, feel free to raise a
-[GitHub pull request](https://github.com/apache/incubator-taverna-mobile/pulls).
-Any contributions received are assumed to be covered by the [Apache License
-2.0](https://www.apache.org/licenses/LICENSE-2.0). We might ask you
-to sign a [Contributor License Agreement](https://www.apache.org/licenses/#clas)
-before accepting a larger contribution.
-
-
-# Building and install requirements
-
-## Requisites
-
-* Java 1.7 or newer
-* [Apache Maven](https://maven.apache.org/download.html) 3.2.5 or newer (older
- versions probably also work)
-
-
-## Building
-
-To build, run:
-
- mvn clean install
-
-
-# Usage
-
- usage: tavlang <command> [<args>]
-
- The most commonly used tavlang commands are:
- convert Convert the given workflow
- help Display help information about Tvarna
- inspect Inspect the given workflow and show the results on the terminal
- validate Validate the given workflow
- version Show version informantion
-
- See 'tavlang help <command>' for more information on a specific command.
-
-# Documentation
-
-The Taverna language command line tool is for accessing the features of the Taverna language modules.
-The tool has the following functions:
-
-* Conversion
-* Inspection
-* Validation
-* Viewing workflow statistics.
-
-## Command line structure
-
- $tavlang <command> <options> [arguments and parameters]
-
-Each command has its own set of options.
-
-###Commands and Options
-The tool has the following major commands:
-
-* convert: Options {-r -- recursive, -i --input, -o --output,}
-* inspect: Options {-l --log}
-* validate: Options {-l --log, -v --verbose}
-* stats: Options {-l --log, -v --verbose}
-
-## Commands in detail
-
-### convert ------------------------------------------------------
-
-Convert the given workflow file/s into a specified output format.
-
-Usage:
-
- tavlang convert (--output_fomat) ([[options] [arguments]]|files...)
-
- Supported output formats are,
-
- * wfbundle
- * iwir
- * json
- * robundle
- * structure
-
-Options:
-
- * -r, --recursive : Convert all workflow files in a given directory recursively
- * -i, --input : Used with recursive case. Specify the input directory
- * -o, --output : Specify the out put directory
-
-*The tool can only convert into one format at a time
-
-There are two methods for using the conversion command.
-
-#### 1. Non-recursive method
-
-Usage:
-
- $tavlang convert (--output_format) [options] [arguments]
-
-####### Example 1: Without specifying any options
-
- $tavlang convert --structure /helloworld.t2flow
-
-Output:
-
- /converted/helloworld.structure is created
-
-Convert the helloworld.t2flow into helloworld.structure format and store in the /converted directory
-
-###### Example 2: Convert multiple workflows
-
- $tavlang convert --json /helloworld.t2flow /hello.t2flow
-
-Output:
-
- /converted/helloworld.json is created
- /converted/hello.json is created
-
-Convert both workflow files and store them in /converted directory
-
-###### Example 3: with options and arguments
-
- $tavlang convert --wfbundle /helloworld.t2flow -o /output/workflows
-
-Output:
-
- /output/workflows/helloworld.wfbundle is created
-
-Convert the workflow file/s and store them in the specified output directory
-
-#### 2. Recursive method
-
-If there are many workflows in a directory, which are needed to be converted into one single format use this method.
-
-Usage:
-
- $tavlang convert -r (--output_format) -i workflow_src_dir <options> [arguments]
-
-###### Example 4: Without options and arguments
-
- $tavlang convert -r --json -i /home/user/workflows
-
-Convert all the workflows in the input directory into the specified format and store them in the "/home/user/workflows/converted" directory.
-
-Output: Suppose that there are 2 workflow files in the dir 1.t2flow and 2.t2flow
-
- /home/workflows/converted/1.json is created
- /home/workflows/converted/2.json is created
-
-###### Example 5: with output dir is specified
-
- $tavlang convert -r --iwir -i /home/workflows -o /home/final
-
-Convert all the workflows in the input directory and store them in /home/final directory
-
-Output:
-
- /home/final/1.iwir is created
- /home/final/2.iwir is created
-
-### inspect -----------------------------------------------------------------
-
-Inspect the given workflow file/s and give the inspection report.
-Supported workflow bundle formats: .wfbundle, .t2flow
-
-Usage:-
-
- $tavlang inspect (--inspection_options) <-other-options> [arguments] workflow_undles_to_be_inspected
-
-Inspection options:
-
- * --servicetypes :- List all the service-types used in the workflow
- * --processornames :- List the tree of the processor names used in the workflow
-
-Other Options:
-
- * -l, --log :- save the inspection report in a text file
-
-###### Example 1: Without any other-options
-
-1. Inspection result for Service types
-
-
- $tavlang inspect --servicetypes helloworld.wfbundle
- Service types used in helloworld.wfbundle :
-
- http://ns.taverna.org.uk/2010/activity/constant
- **************************************************
-
-2. inspection result for Processor names
-
-
- $tavlang inspect --processornames helloworld.wfbundle
- Processor tree of helloworld.wfbundle
- + Hello_World
- - hello
-
-###### Example 2: With other options
-The output is the same but the results will be saved in the given file.
-
- $tavlang inspect --processornames helloworld.wfbundle -l results.txt
- Processor tree of helloworld.wfbundle
- + Hello_World
- - hello
-
-
-The output will be saved in results.txt in the same format.
-
-### validate ----------------------------------------------------------------------
-
-Validates the given workflow file or files and gives the validation report.
-Validate tool checks for the following problematic conditions.
-
- * Empty Iteration Strategy Top-Node Problems
- * Mismatch Configurable Type Problems
- * Non-Absolute URI Problems
- * Null Field Problems
- * Out-Of-Scope Value Problems
- * Port Mentioned Twice Problems
- * Port Missing From Iteration Strategy Stack Problems
- * Wrong Parent Problems
- * Incompatible Granular Depth Problems
-
-Usage:-
-
- $tavlang validate [options][arguments] input_files
-
-Options:-
-
- * -l, --log: Save the validation report in a text file
- * -v, --verbose: Verbose mode
-
-Supported workflow bundle formats: .t2flow and .wfbundle
-
-###### Example 1: Normal mode
-
- Validate one workflow bundle
-
- $tavlang validate helloworld.t2flow
-
-Output:
-
- Validation started....
- Validating helloworld.t2flow
- The workflow helloworld.t2flow has no errors.
-
- Validation completed.......
-
- Validate more than one workflow bundles
-
- $tavlang validate ../../workflow2.t2flow ../../workflow3.wfbundle
-
- Validation started....
- Validating ../../workflow2.t2flow
- The workflow workflow2.t2flow has no errors.
-
- Validating ../../workflow3.wfbundle
- The workflow workflow3.t2flow has no errors.
-
- Validation completed.......
-
-
-###### Example 2: Verbose mode
-
-The report is more explanatory.
-
- $tavlang validate -v ../../workflow2.t2flow
-
- Validation started....
- Validating ../../workflow2.t2flow
- The workflow workflow2.t2flow has no errors.
-
- The validation report for defaultActivitiesTaverna2.wfbundle......
- --------------------------------------------------------------------------------
- -->NegativeValueProblems:- null
-
- -->EmptyIterationStrategyTopNodeProblems:- null
-
- -->MismatchConfigurableTypeProblems:- null
-
- -->NonAbsoluteURIProblems:- null
-
- -->NullFieldProblems:- null
-
- -->OutOfScopeValueProblems:- null
-
- -->PortMentionedTwiceProblems:- null
-
- -->PortMissingFromIterationStrategyStackProblems:- null
-
- -->WrongParentProblems:- null
-
- -->IncompatibleGranularDepthProblems:- null
-
- ---------------------------------------------------------------------------------
-
-###### Example 3: Saving results to a file
-
- $tavlang validate workflow2.t2flow -l log2.txt
- Validation started....
- Validating workflow2.t2flow
- The workflow helloworld.wfbundle has no errors.
- Validation completed.......
-
- Results were saved into log2.txt
-
-### stats ----------------------------------------------------------------------------------
-
-A workflow contains several resources.
-
-* Processors
-* Input ports
-* Output ports
-* Data links
-* Control links
-
-The stats command gives a report of the resources used in the workflow.
-
-Usage:-
-
- $tavlang stats <options>[arguments] input_files...
-
-Options:-
-
- * -l, – – log : Save results in a log file
- * -v, – – verbose : verbose mode
-
-Supported workflow bundle formats:- .t2flow, .wfbundle
-
-###### Example 1: Normal mode
-
- $tavlang helloworld.wfbundle
- >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
- Name of the workflow = Hello_World
- |--> Number of Processors = 1
- |--> Number of Data Links = 1
- |--> Number of Control Links = 0
- |--> Number of Input ports = 0
- |--> Number of Output Ports = 1
-
-###### Example 2: Verbose mode
-
- $tavlang -v ../../../helloworld.wfbundle
- >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
- Name of the workflow = Hello_World
- |--> Number of Processors = 1
- | |--> Processors:
- | |--> hello
- |
- |--> Number of Data Links = 1
- | |--> Data Links
- | |--> DataLink value=>greeting
- |
- |--> Number of Control Links = 0
- |--> Number of Input ports = 0
- |--> Number of Output Ports = 1
- | |--> Output Ports
- | |--> OutputWorkflowPort "greeting"
-
-###### Example 3: Saving results in a file
-
- $tavlang -l ../../results.txt ../../../helloworld.wfbundle
- >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
- Name of the workflow = Hello_World
- |--> Number of Processors = 1
- |--> Number of Data Links = 1
- |--> Number of Control Links = 0
- |--> Number of Input ports = 0
- |--> Number of Output Ports = 1
-
- Results were saved into ../../results.txt
-
------------------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/pom.xml b/taverna-tavlangtool/pom.xml
deleted file mode 100644
index c23c35f..0000000
--- a/taverna-tavlangtool/pom.xml
+++ /dev/null
@@ -1,213 +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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.taverna.language</groupId>
- <artifactId>taverna-language</artifactId>
- <version>0.15.1-incubating-SNAPSHOT</version>
- </parent>
- <artifactId>taverna-tavlangtool</artifactId>
- <name>Apache Taverna Language Commandline</name>
- <description>Command line for Taverna Language (experimental)</description>
-
-
- <dependencies>
-
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
-
- <dependency>
- <groupId>${project.parent.groupId}</groupId>
- <artifactId>taverna-scufl2-api</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-scufl2-wfbundle</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-scufl2-t2flow</artifactId>
- <version>${project.version}</version>
- </dependency>
-
-<!-- <dependency> -->
-<!-- <groupId>org.shiwa.iwir</groupId> -->
-<!-- <artifactId>iwir</artifactId> -->
-<!-- <version>1.1.4</version> -->
-<!-- <scope>optional</scope> -->
-<!-- <systemPath>${project.build.directory}/taverna-language-commandline/lib/</systemPath> -->
-<!-- </dependency> -->
-
- <dependency>
- <groupId>no.s11.scufl2</groupId>
- <artifactId>scufl2-iwir</artifactId>
- <version>0.2-SNAPSHOT</version>
- <optional>true</optional>
- </dependency>
-
-
-
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.4.8</version>
- </dependency>
-
-
- <!-- <dependency> <groupId>${project.groupId}</groupId> <artifactId>taverna-scufl2-wfdesc</artifactId>
- <version>${project.version}</version> <optional>true</optional> </dependency> -->
- <!-- <dependency> <groupId>org.purl.wf4ever</groupId> <artifactId>scufl2-wfdesc</artifactId>
- <version>0.3.7</version> </dependency> -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-scufl2-ucfpackage</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>taverna-robundle</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>io.airlift</groupId>
- <artifactId>airline</artifactId>
- <!-- <version>${io.airlift.airline.version}</version> -->
- <version>0.7</version>
- </dependency>
-
-
- </dependencies>
-
- <build>
- <!-- TODO: plugins for launchers and executable jar files? -->
- <plugins>
-
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>appassembler-maven-plugin</artifactId>
- <version>1.1.1</version>
- <executions>
- <execution>
- <id>assemble</id>
- <phase>package</phase>
- <goals>
- <goal>assemble</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <repositoryLayout>flat</repositoryLayout>
- <repositoryName>lib</repositoryName>
- <assembleDirectory>${project.build.directory}/${project.artifactId}</assembleDirectory>
- <programs>
- <program>
- <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
- <name>tavlang</name>
- </program>
- </programs>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <transformers>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
- </transformer>
- <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
- <addHeader>false</addHeader>
- </transformer>
- </transformers>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
-
- </plugins>
- </build>
-
- <repositories>
- <repository>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots />
- <id>mygrid-repository</id>
- <name>myGrid Repository</name>
- <url>http://www.mygrid.org.uk/maven/repository</url>
- </repository>
-
- <repository>
- <id>mygrid-snapshot-repository</id>
- <name>myGrid Snapshot Repository</name>
- <url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots />
- </repository>
-
- <repository>
- <id>apache.snapshots</id>
- <name>Apache Snapshot Repository</name>
- <url>http://repository.apache.org/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
-
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/.gitignore b/taverna-tavlangtool/src/main/java/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
deleted file mode 100644
index 068c933..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
+++ /dev/null
@@ -1,350 +0,0 @@
-package org.apache.taverna.tavlang;
-
-/*
- * 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 io.airlift.airline.Arguments;
-import io.airlift.airline.Cli;
-import io.airlift.airline.Cli.CliBuilder;
-import io.airlift.airline.Command;
-import io.airlift.airline.Help;
-import io.airlift.airline.Option;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.JAXBException;
-
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.tavlang.tools.convert.Scufl2Convert;
-import org.apache.taverna.tavlang.tools.convert.ToRobundle;
-import org.apache.taverna.tavlang.tools.inspect.ProcessorNames;
-import org.apache.taverna.tavlang.tools.inspect.ServiceTypes;
-import org.apache.taverna.tavlang.tools.stats.GetWfStat;
-import org.apache.taverna.tavlang.tools.validate.Validate;
-
-import com.google.common.collect.Lists;
-
-/*
- * The command line options for convert, validate and inspect workflows.
- * Use the airlift/airline library
- * */
-
-public class CommandLineTool {
-
- private static Cli<TvnLangTool> parser() {
- CliBuilder<TvnLangTool> build = Cli.<TvnLangTool> builder("tavlang")
- .withDescription("Convert, manage workflows")
- .withDefaultCommand(HelpCommand.class)
- .withCommand(CommandConvert.class) // Conversion
- .withCommand(HelpCommand.class) // Help
- .withCommand(CommandInspect.class) // Inspect
- .withCommand(CommandValidate.class) // Validate
- .withCommand(CommandVersion.class) // Version
- .withCommand(CommandStat.class); // Statistics
-
- return build.build();
- }
-
- public CommandLineTool() {
- };
-
- public void parse(String... args) {
- TvnLangTool command = parser().parse(args);
- command.execute();
- System.out.println();
- }
-
- public static abstract class TvnLangTool {
-
- public abstract void execute();
- }
-
- // placeholder for output file types
- public static class Filetypes {
- @Option(name = "--wfdesc", description = "Convert the workflow file to wfdesc-turtle")
- public static boolean isWfdesc = false;
-
- @Option(name = "--wfbundle", description = "Convert the workflow file to wfbundle")
- public static boolean isWfbundle = false;
-
- @Option(name = "--robundle", description = "Convert given bundle in to Research Object bundle")
- public static boolean isRo = false;
-
- @Option(name = "--structure", description = "Convert the workflow into *.structure")
- public static boolean isStructure = false;
-
- @Option(name = "--json", description = "Convert the workflow into json")
- public static boolean isJson = false;
-
-
- @Option(name = "--iwir", description = "Convert scufl2 workflows into IWIR 1.1 specification")
- public static boolean isIwir = false;
-
-
- // The tool can only handle one output format at a time.
- // Return the file type which is selected
- public static String isTrue() {
- if (isWfdesc)
- return "wfdesc";
- else if (isWfbundle)
- return "wfbundle";
- else if (isRo)
- return "robundle";
- else if (isStructure)
- return "structure";
- else if (isJson)
- return "json";
-
- else if (isIwir)
- return "iwir";
-
-
- else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "convert");
- command.execute();
- return null;
- }
-
- }
-
- }
-
- public static class Inspect {
- @Option(name = "--servicetypes", description = "List the service types used in workflow")
- public static boolean servicetypes = false;
-
- @Option(name = "--processornames", description = "List a tree of processor names used in workflow")
- public static boolean processor = false;
-
- public String getWay() {
- if (servicetypes)
- return "servicetypes";
- else if (processor)
- return "processornames";
- else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "inspect");
- command.execute();
- return null;
-
- }
-
- }
-
- }
-
- // Placeholder for optional parameters: Ex: -i, -o
- public static class Optional {
-
- // The input file or directory
- @Option(name = { "-i", "--input" }, description = "Input file/ file dir for conversion")
- public static String in_file_dir;
-
- // The out put file or directory. When this is set, all the converted
- // files will be saved into the directory that specified.
- @Option(name = { "-o", "--output" }, description = "Output file/ directory")
- public static String out_file_dir;
-
- public static String getInFile() {
- return in_file_dir;
- }
-
- public static String getOutFile() {
- return out_file_dir;
- }
-
- }
-
- @Command(name = "help", description = "Display help information about Tvarna")
- public static class HelpCommand extends TvnLangTool {
- @Inject
- public Help help;
-
- @Override
- public void execute() {
- help.call();
- }
- }
-
- // Command for convert workflows
- @Command(name = "convert", description = "Convert the given workflow")
- public static class CommandConvert extends TvnLangTool {
- @Inject
- Optional optional = new Optional();
-
- @Inject
- Filetypes filetypes = new Filetypes();
-
- @Arguments(usage = "<output format> <input files> ", description = "List of files to be converted.\n "
- + "Give the list of files to be converted without -i/-o and the converted files will be saved in to /converted folder in the same dir")
- public final List<String> files = Lists.newArrayList();
-
- // When this is true, the command will run recursively in a directory.
- @Option(name = { "-r", "--recursive" }, description = "Execute the command recursively")
- public boolean recurse = false;
-
- // Option for validate the given workflow when converting
- @Option(name = { "-V", "--validate" }, description = "Validate the workflow before convert")
- public boolean validate = false;
-
- @Override
- public void execute() {
-
- //Validate before convert
- if(validate){
- Validate validate = new Validate(files, null, false);
- if(validate.getCheck()){
- System.out.println("Conversion failed...! Workflow bundle has errors");
- return;
- }else{
- runcommand();
- }
- }
- }
-
- public void runcommand(){
- if (Filetypes.isRo) {
- try {
- new ToRobundle(files, Optional.getOutFile());
- } catch (Exception e) {
- e.printStackTrace();
- }
-// else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc)
- } else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc){
- if (recurse) {
- new Scufl2Convert(Filetypes.isTrue(),
- Optional.getInFile(), Optional.getOutFile());
- } else {
- new Scufl2Convert(Filetypes.isTrue(), files,
- Optional.getOutFile());
- }
- }else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "convert");
- command.execute();
- }
-
- }
-
-
-
- }
-
- // Version command
- @Command(name = "version", description = "Show version informantion")
- public static class CommandVersion extends TvnLangTool {
-
- @Override
- public void execute() {
- System.out.print(getClass().getPackage().getImplementationTitle());
- System.out.println(" " + getClass().getPackage().getImplementationVersion());
- }
-
- }
-
- // Command for inspection of workflows....!!
- @Command(name = "inspect", description = "Inspect the given workflow and show the results on the terminal")
- public static class CommandInspect extends TvnLangTool {
-
- @Inject
- Inspect inspect = new Inspect();
-
- @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
- public String file;
-
- @Arguments(usage = "<option> <input files>", description = "Inspect the given workflow")
- public List<String> toInspect = Lists.newArrayList();
-
- @Override
- public void execute() {
- if (Inspect.processor) {
- try {
- new ProcessorNames(toInspect, file);
-
- } catch (ReaderException | IOException | JAXBException e) {
- e.printStackTrace();
- }
- } else if (Inspect.servicetypes) {
- try {
- new ServiceTypes(toInspect, file);
- } catch (IOException | ReaderException e) {
- e.printStackTrace();
- }
-
- }else{
- System.out.println("Invalid argument....");
- TvnLangTool command = parser().parse("help", "inspect");
- command.execute();
- }
-
- }
-
- }
-
- // Command for validation
- @Command(name = "validate", description = "validate the given workflow")
- public static class CommandValidate extends TvnLangTool{
-
- @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
- public String file;
-
- @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
- public boolean verbose;
-
-// @Arguments(usage = "<option> <input files> <output dir>", description = "Validate the given workflow file/s")
- @Arguments(usage = "input files", description = "Validate the given workflow file/s")
- public List<String> toValidate = Lists.newArrayList();
-
- @Override
- public void execute() {
-
- Validate validate = new Validate(toValidate, file, verbose);
-
-
- }
-
- }
-
- //Command for getting workflow stats
- @Command (name = "stats", description = "Shows the workflow statistics")
- public static class CommandStat extends TvnLangTool{
-
-
- @Option(name = {"-l", "--log"}, description ="Save the workflow statictics in a file")
- public String file;
-
- @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
- public boolean verbose;
-
- @Arguments(usage="input files", description = "Enter the workflow bundle files")
- public List<String> files;
-
- @Override
- public void execute() {
-
- GetWfStat stat = new GetWfStat(files, file, verbose);
-
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
deleted file mode 100644
index 016488c..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.apache.taverna.tavlang;
-
-/*
- * 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.
- */
-
-public class TavernaCommandline {
-
- public static void main(String args[]){
- CommandLineTool tool = new CommandLineTool();
- tool.parse(args);
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
deleted file mode 100644
index c78c7a2..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.taverna.tavlang.tools;
-
-/*
- * 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.
- */
-
-
-
-public class Tools {
-
- public static enum ConvertionTools {
- wfbundle{
- public String mediaType = "application/vnd.taverna.scufl2.workflow-bundle";
-
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return this.mediaType;
- }
- },
- json{
- public String mediaType = "application/ld+json";
-
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return mediaType;
- }
- },
- wfdesc{
- public String mediaType = "text/vnd.wf4ever.wfdesc+turtle";
-
-
- @Override
- public String getMediaType(ConvertionTools t) {
- // TODO Auto-generated method stub
-// System.out.println(mediaType);
- return mediaType;
- }
- },
- robundle{
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return null;
- }
-
- },
- structure{
- public String mediaType = "text/vnd.taverna.scufl2.structure";
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return mediaType;
- }
- },
-
- iwir{
- public String mediaType = "application/vnd.shiwa.iwir+xml";
-
- @Override
- public String getMediaType(ConvertionTools t) {
- return mediaType;
- }
- };
-
- ConvertionTools(){}
-
- public abstract String getMediaType(ConvertionTools t);
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
deleted file mode 100644
index da4dff0..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.apache.taverna.tavlang.tools.convert;
-
-/*
- * 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 java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.io.WriterException;
-import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
-
-
-/*
- * Converts
- * .t2flow --> .wfbundle
- * .t2flow --> .structure
- * .wfbundle --> .structure
- * .wfbundle/ .t2flow -> .iwir
- * two constructors.
- * Scufl2Convert(List<String> list, String out) --> will save the converted files in 'out folder or a directory named /converted in the same folder.
- * Scufl2Convert(String in, String out) --> Will convert all the files in the 'in' folder and save them in 'out' folder --> -r must be true.
- *
- * */
-public class Scufl2Convert{
-
- private ConvertionTools t;
- private String MEDIA_TYPE;
- private String input;
- private String output;
- private String type;
- private List<String> filesList;
-
- public Scufl2Convert(String type, List<String> files, String out){
- this.filesList = files;
- this.output = out;
- this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
- this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t);
- this.convert();
- }
-
- //When recursive case is on....
- public Scufl2Convert(String type, String in, String out){
- this.input = in;
- this.output = out;
- this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
- this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t); //Determine the writer media type
-
- this.createdir();
- }
-
- //Create the dir if not exists
- public void createdir(){
- if(output == null){
- File outFile = new File(this.input, "converted");
- try {
- FileUtils.forceMkdir(outFile);
- this.output = outFile.getAbsolutePath();
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!!");
- e1.printStackTrace();
- }
- }else{
- File outFile = new File(this.output);
- try {
- FileUtils.forceMkdir(outFile);
-
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!!");
- e1.printStackTrace();
- }
- }
- this.rec_convert(this.input);
- }
-
- //Convert the given file. Return in case of an exception.
- public boolean convert(){
-
- boolean check = false;
- // If the output folder is given, save the converted files in to that folder.
-
- if(this.filesList.size()>0 && this.output != null){
- File outFile = new File(this.output);
- try {
- FileUtils.forceMkdir(outFile);
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!");
- }
- for(String file : this.filesList){
- File t2File = new File(file);
-
- convertFile(t2File, outFile);
-
- }
-
- }
-
- /* If the output file is not given, save the converted files in
- * '/converted' folder.
- */
-
- else if(this.filesList.size()>0 && this.output == null){
- for(String file : this.filesList){
- File t2File = new File(file);
-
- File outFile = new File(t2File.getParentFile(), "converted");
- try {
- FileUtils.forceMkdir(outFile);
- } catch (IOException e1) {
- System.err.println("Error: The directory cannot be created...!!!");
- }
-
- convertFile(t2File, outFile);
-
- }
- }else{
- System.err.println("Error: Argument mismatch");
- check = false;
- }
-
- return check;
- }
-
- //Convert the files in a given directory and save the converted files in to specified dir or /converted folder.
- //Recursive conversion
- public void rec_convert(String dir){
-
- File parent = new File(this.input);
- if(!parent.exists()){
- System.err.println("Error: Input directory not found");
- }else{
- for(File file : parent.listFiles()){
- if(!file.isDirectory())
- {
- File outFile = new File(this.output);
- convertFile(file, outFile);
- }
- }
- }
- }
-
- //Convert the file
- public void convertFile(File t2File, File outFile){
-
- //Check weather the input files are in valid format...!!!
- String ext = FilenameUtils.getExtension(t2File.getName());
- if(!ext.equalsIgnoreCase("t2flow")&&!ext.equalsIgnoreCase("wfbundle")){
- System.err.println("Error: Invalid input file format...!!!");
- return;
- }
-
- WorkflowBundleIO wfbio = new WorkflowBundleIO();
- String filename = t2File.getName();
- filename = filename.replaceFirst("\\..*", this.type);
- File scufl2File = new File(outFile.getAbsolutePath(), filename);
-
- WorkflowBundle wfBundle;
- try {
- wfBundle = wfbio.readBundle(t2File, null);// null --> will guess the media type for reading.
-
-// if(this.type.equals(".iwir")){
-// IwirWriter iww = new IwirWriter();
-// iww.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
-// }else
-
- if(this.type.equals(".json")){
- ToJson toJ = new ToJson();
- toJ.convert(t2File, outFile);
- }
- else{
- wfbio.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
- }
- System.out.println(scufl2File.getPath() + " is created.");
- }catch (ReaderException e){
- System.err.println("Error: Connot read the file");
- }catch(IOException e){
- System.err.println("Error: File not found");
- }catch(WriterException e) {
- System.err.println("Error: Cannot write to the file");
-// e.printStackTrace();
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
deleted file mode 100644
index f11424c..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
+++ /dev/null
@@ -1,298 +0,0 @@
-package org.apache.taverna.tavlang.tools.convert;
-
-/*
- * 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 java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.taverna.scufl2.api.annotation.Annotation;
-import org.apache.taverna.scufl2.api.annotation.Revision;
-import org.apache.taverna.scufl2.api.common.Child;
-import org.apache.taverna.scufl2.api.common.Ported;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.common.URITools;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.BlockingControlLink;
-import org.apache.taverna.scufl2.api.core.ControlLink;
-import org.apache.taverna.scufl2.api.core.DataLink;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleWriter;
-import org.apache.taverna.scufl2.api.io.WriterException;
-import org.apache.taverna.scufl2.api.port.DepthPort;
-import org.apache.taverna.scufl2.api.port.GranularDepthPort;
-import org.apache.taverna.scufl2.api.port.Port;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-
-public class ToJson {
- public class JsonWriter implements WorkflowBundleWriter {
-
- @Override
- public Set<String> getMediaTypes() {
- return new HashSet<String>(Arrays.asList("application/ld+json",
- "application/json"));
- }
-
- @Override
- public void writeBundle(WorkflowBundle wfBundle, File destination,
- String mediaType) throws WriterException, IOException {
- ObjectNode json = toJson(wfBundle);
- mapper.writeValue(destination, json);
- }
-
- @Override
- public void writeBundle(WorkflowBundle wfBundle, OutputStream output,
- String mediaType) throws WriterException, IOException {
- ObjectNode json = toJson(wfBundle);
- mapper.writeValue(output, json);
- }
-
- }
-
-
- private WorkflowBundleIO io = new WorkflowBundleIO();;
-
- private WorkflowBundleWriter jsonWriter = new JsonWriter();
-
- private ObjectMapper mapper = new ObjectMapper();
-
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
- private URITools uriTools = new URITools();
-
- public ToJson() {
- mapper.enable(SerializationFeature.INDENT_OUTPUT);
- mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
- mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
-
- mapper.setDateFormat(new ISO8601DateFormat());
-
- // Adding custom writer dynamically
- List<WorkflowBundleWriter> writers = io.getWriters();
- writers.add(jsonWriter);
- io.setWriters(writers);
- }
-
- protected void addPorts(Ported ported, ObjectNode p) {
- ArrayNode inputs = mapper.createArrayNode();
- for (Port port : ported.getInputPorts()) {
- inputs.add(toJson(port));
- }
- p.put("inputs", inputs);
-
- ArrayNode outputs = mapper.createArrayNode();
- for (Port port : ported.getOutputPorts()) {
- outputs.add(toJson(port));
- // FIXME: Do we need the id for ports? Needed if we add datalinks
- }
- p.put("outputs", outputs);
- }
-
- protected ObjectNode annotations(Child<?> bean) {
- ObjectNode node = mapper.createObjectNode();
- for (Annotation ann : scufl2Tools.annotationsFor(bean)) {
- URI annUri = uriTools.uriForBean(ann);
-
- // TODO: include annotation body?
- }
- return node;
- }
-
- public void convert(File in, File out) throws ReaderException, IOException,
- WriterException {
- String filename = in.getName();
- filename = filename.replaceFirst("\\..*", ".json");
- File workflowFile = new File(out.getAbsolutePath(), filename);
-
- WorkflowBundle wfBundle = io.readBundle(in, null);
- io.writeBundle(wfBundle, workflowFile, "application/ld+json");
-// System.out.println(workflowFile);
-
- }
-
- protected ObjectNode toJson(Port port) {
- ObjectNode p = mapper.createObjectNode();
- p.put("name", port.getName());
- p.putPOJO("id",
- uriTools.relativeUriForBean(port, scufl2Tools.findParent(
- WorkflowBundle.class, ((Child<?>) port))));
-
- if (port instanceof DepthPort) {
- DepthPort depthPort = (DepthPort) port;
- if (depthPort.getDepth() != null) {
- p.put("depth", depthPort.getDepth());
- }
- }
- if (port instanceof GranularDepthPort) {
- GranularDepthPort granularDepthPort = (GranularDepthPort) port;
- if (granularDepthPort.getGranularDepth() != null
- && !granularDepthPort.getGranularDepth().equals(
- granularDepthPort.getDepth())) {
- p.put("granularDepth", granularDepthPort.getGranularDepth());
- }
- }
- p.putAll(annotations((Child<?>) port));
- return p;
- }
-
- protected JsonNode toJson(Processor proc) {
- ObjectNode p = mapper.createObjectNode();
- p.putPOJO("id",
- uriTools.relativeUriForBean(proc, proc.getParent().getParent()));
- p.put("name", proc.getName());
- addPorts(proc, p);
- p.putAll(annotations(proc));
-
- List<Workflow> nested = scufl2Tools.nestedWorkflowsForProcessor(proc,
- proc.getParent().getParent().getMainProfile());
- if (!nested.isEmpty()) {
- if (nested.size() == 1) {
- p.put("nestedWorkflow", toJson(nested.iterator().next()));
- } else {
- ArrayNode list = mapper.createArrayNode();
- for (Workflow w : nested) {
- list.add(toJson(w));
- }
- p.put("nestedWorkflow", list);
- }
- }
- return p;
- }
-
- protected JsonNode toJson(Revision currentRevision) {
- ArrayNode revisions = mapper.createArrayNode();
- while (currentRevision != null) {
- ObjectNode rev = mapper.createObjectNode();
- rev.putPOJO("id", currentRevision.getIdentifier());
- if (currentRevision.getGeneratedAtTime() != null) {
- rev.putPOJO("generatedAtTime",
- currentRevision.getGeneratedAtTime());
- }
- currentRevision = currentRevision.getPreviousRevision();
- if (currentRevision != null) {
- rev.putPOJO("wasRevisionOf", currentRevision.getIdentifier());
- }
- revisions.add(rev);
- }
- return revisions;
- }
-
- protected ObjectNode toJson(Workflow workflow) {
- ObjectNode wf = mapper.createObjectNode();
-
- wf.putPOJO("id",
- uriTools.relativeUriForBean(workflow, workflow.getParent()));
-
- wf.put("name", workflow.getName());
- wf.put("revisions", toJson(workflow.getCurrentRevision()));
-
- ArrayNode processors = mapper.createArrayNode();
- for (Processor p : workflow.getProcessors()) {
- processors.add(toJson(p));
- }
- addPorts(workflow, wf);
- wf.put("processors", processors);
-
- ArrayNode datalinks = mapper.createArrayNode();
- for (DataLink link : workflow.getDataLinks()) {
- datalinks.add(toJson(link));
- }
- wf.put("datalinks", datalinks);
-
- ArrayNode controlLinks = mapper.createArrayNode();
- for (ControlLink link : workflow.getControlLinks()) {
- controlLinks.add(toJson(link));
- }
- wf.put("controllinks", controlLinks);
-
- wf.putAll(annotations(workflow));
-
- return wf;
- }
-
- protected JsonNode toJson(ControlLink link) {
- ObjectNode l = mapper.createObjectNode();
- if (link instanceof BlockingControlLink) {
- BlockingControlLink controlLink = (BlockingControlLink) link;
- l.putPOJO("block", uriTools.relativeUriForBean(
- controlLink.getBlock(), link.getParent().getParent()));
- l.putPOJO("untilFinished", uriTools.relativeUriForBean(controlLink
- .getUntilFinished(), link.getParent().getParent()));
- }
- return l;
- }
-
- protected JsonNode toJson(DataLink link) {
- ObjectNode l = mapper.createObjectNode();
- l.putPOJO("receivesFrom", uriTools.relativeUriForBean(
- link.getReceivesFrom(), link.getParent().getParent()));
- l.putPOJO("sendsTo", uriTools.relativeUriForBean(link.getSendsTo(),
- link.getParent().getParent()));
- if (link.getMergePosition() != null) {
- l.put("mergePosition", link.getMergePosition());
- }
- return l;
- }
-
- public ObjectNode toJson(WorkflowBundle wfBundle) {
-
- ObjectNode root = mapper.createObjectNode();
- ArrayNode contextList = root.arrayNode();
- root.put("@context", contextList);
- ObjectNode context = root.objectNode();
- contextList.add("https://w3id.org/scufl2/context");
- contextList.add(context);
- URI base = wfBundle.getGlobalBaseURI();
- context.put("@base", base.toASCIIString());
- root.put("id", base.toASCIIString());
-
- // root.put("name", wfBundle.getName());
- // root.put("revisions", toJson(wfBundle.getCurrentRevision()));
-
- root.put("workflow", toJson(wfBundle.getMainWorkflow()));
- root.put("profile", toJson(wfBundle.getMainProfile()));
-
- return root;
- }
-
- private JsonNode toJson(Profile profile) {
- ObjectNode pf = mapper.createObjectNode();
-
- pf.putPOJO("id",
- uriTools.relativeUriForBean(profile, profile.getParent()));
- // TODO: Activities and configurations
- return pf;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
deleted file mode 100644
index 6ab14bc..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.apache.taverna.tavlang.tools.convert;
-
-/*
- * 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 java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.taverna.robundle.Bundle;
-import org.apache.taverna.robundle.Bundles;
-
-public class ToRobundle{
-
- public ToRobundle(List<String> files, String out) throws Exception{
-
- Logger logger = Logger.getLogger("");
- //logger.setLevel(Level.FINER);
- ConsoleHandler console = new ConsoleHandler();
- console.setLevel(Level.FINEST);
- logger.addHandler(console);
- Logger.getLogger("org.researchobject").setLevel(Level.FINEST);
-
- for(String f : files){
- Path file = Paths.get(f);
- convert(file);
- }
- }
-
- //Recursive conversion
- public ToRobundle(String type, String in, String out) {
-
- }
-
- public void convert(Path file) throws IOException{
- try (Bundle bundle = Bundles.openBundle(file)) {
-
-// System.out.println(bundle.getManifest().toString());
- bundle.getManifest().writeAsJsonLD();
- bundle.getManifest().writeAsCombineManifest();
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
deleted file mode 100644
index f93aadc..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package org.apache.taverna.tavlang.tools.inspect;
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeModel;
-import javax.xml.bind.JAXBException;
-
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.common.URITools;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-
-/*
- * list the processor names used in the workflow.
- * Supported formats: .t2flow, .wfbundle
- * */
-
-public class ProcessorNames {
-
- private List<String> fileList;
-
- private String file2;
-
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
- private URITools uriTools = new URITools();
-
- public ProcessorNames(List<String> fileList, String file) throws ReaderException, IOException, JAXBException{
- this.fileList = fileList;
- this.file2 = file;
- this.show();
- }
-
- public void show() throws ReaderException, IOException, JAXBException{
- WorkflowBundleIO io = new WorkflowBundleIO();
- StringBuilder sb = new StringBuilder();
-
- for(String file : this.fileList){
- File file2 = new File(file);
- if(file2.isDirectory()){
- for(File f : file2.listFiles()){
- WorkflowBundle wfb = io.readBundle(f, null);
- System.out.println("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb));
- sb.append("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb) + "\n");
- }
- }else{
- WorkflowBundle wfb = io.readBundle(new File(file), null);
- System.out.println("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb));
- sb.append("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb) + "\n");
- }
-
-
- }
-
- if(this.file2!=null){
- File log = new File(file2);
- FileWriter fw = new FileWriter(log);
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(sb.toString());
- bw.close();
- fw.close();
- System.out.println("Results were saved into " + file2);
- }
- }
-
- private Workflow findNestedWorkflow(Processor processor) {
- Profile profile = processor.getParent().getParent().getMainProfile();
- return scufl2Tools.nestedWorkflowForProcessor(processor, profile);
- }
-
- private void findProcessors(WorkflowBundle ro, Workflow workflow,
- DefaultMutableTreeNode parent) {
- for (Processor processor : workflow.getProcessors()) {
- DefaultMutableTreeNode processorNode = new DefaultMutableTreeNode(
- processor.getName());
- parent.add(processorNode);
- Workflow wf = findNestedWorkflow(processor);
- if (wf != null) {
- findProcessors(ro, wf, processorNode);
- }
- }
-
- }
-
- public TreeModel makeProcessorTree(WorkflowBundle workflowBundle)
- throws JAXBException, IOException {
- Workflow workflow = workflowBundle.getMainWorkflow();
- TreeModel treeModel = new DefaultTreeModel(new DefaultMutableTreeNode(
- workflow.getName()));
- DefaultMutableTreeNode parent = (DefaultMutableTreeNode) treeModel
- .getRoot();
-
- findProcessors(workflowBundle, workflow, parent);
- return treeModel;
- }
-
- public List<String> showProcessorNames(WorkflowBundle ro)
- throws JAXBException, IOException {
- ArrayList<String> names = new ArrayList<String>();
- for (Processor processor : ro.getMainWorkflow().getProcessors()) {
- names.add(processor.getName());
- }
- Collections.sort(names);
- return names;
- }
-
- public String showProcessorTree(WorkflowBundle ro) throws JAXBException,
- IOException {
- TreeModel treeModel = makeProcessorTree(ro);
- return treeModelAsString(treeModel);
- }
-
- public String treeModelAsString(TreeModel treeModel) {
- StringBuffer sb = new StringBuffer();
- Object root = treeModel.getRoot();
- treeModelAsString(treeModel, root, sb, "");
- return sb.toString();
- }
-
- protected void treeModelAsString(TreeModel treeModel, Object parent,
- StringBuffer sb, String indentation) {
- sb.append(indentation);
- int childCount = treeModel.getChildCount(parent);
- if (childCount == 0) {
- sb.append("- ");
- } else {
- sb.append("+ ");
- indentation = indentation + " ";
- }
- sb.append(parent);
- sb.append("\n");
- for (int i = 0; i < childCount; i++) {
- Object child = treeModel.getChild(parent, i);
- treeModelAsString(treeModel, child, sb, indentation);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
deleted file mode 100644
index ddff2ab..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.apache.taverna.tavlang.tools.inspect;
-
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-
-/*
- * List the service types used in workflow.
- * Supported file formats : .wfbundle, .t2flow
- * */
-
-public class ServiceTypes {
-
- private List<String> filesList;
- private Set<String> types = new LinkedHashSet<String>();
- private String save;
-
- public ServiceTypes(List<String> filesList, String file) throws IOException, ReaderException{
- this.filesList = filesList;
- this.save = file;
- this.service();
-
- }
-
- public void service() throws ReaderException, IOException{
- WorkflowBundleIO io = new WorkflowBundleIO();
- StringBuilder sb = new StringBuilder();
-
- for (String filepath : filesList) {
- File file = new File(filepath);
-
- if(file.isDirectory()){
- for(File f : file.listFiles()){
- WorkflowBundle wfBundle = io.readBundle(f, null);
- System.out.println("Service types used in " + f.getCanonicalPath() + " :" +"\n");
- sb.append("Service types used in " + f.getCanonicalPath() + " :");
- for (Profile profile : wfBundle.getProfiles()) {
- for (Activity activity : profile.getActivities()) {
- this.types.add(activity.getType().toASCIIString());
- }
- }
- for(String t : types){
- System.out.println(t);
- sb.append(t + "\n");
- }
- System.out.println("\n**************************************************\n");
- sb.append("\n**************************************************\n");
- }
- }else{
- // mediaType = null --> guess
- WorkflowBundle wfBundle = io.readBundle(file, null);
- System.out.println("Service types used in " + file.getCanonicalPath() + " :" + "\n");
- sb.append("Service types used in " + file.getCanonicalPath() + " :");
- for (Profile profile : wfBundle.getProfiles()) {
- for (Activity activity : profile.getActivities()) {
- this.types.add(activity.getType().toASCIIString());
- }
- }
- for(String t : types){
- System.out.println(t);
- sb.append(t + "\n");
- }
-
- System.out.println("\n**************************************************\n");
- sb.append("\n**************************************************\n");
- }
- }
-
- if(save!=null){
- File log = new File(save);
- FileWriter fw = new FileWriter(log);
- BufferedWriter bw = new BufferedWriter(fw);
- bw.write(sb.toString());
- bw.close();
- fw.close();
- System.out.println("Results were saved into " + save);
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
deleted file mode 100644
index 7daa38e..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package org.apache.taverna.tavlang.tools.stats;
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.taverna.scufl2.api.common.NamedSet;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.core.ControlLink;
-import org.apache.taverna.scufl2.api.core.DataLink;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.port.InputPort;
-import org.apache.taverna.scufl2.api.port.OutputPort;
-
-public class GetWfStat {
-
- private NamedSet<Workflow> set;
- private String logFile;
- private boolean verbose;
- private StringBuilder str_verb = new StringBuilder();
- private StringBuilder str_nverb = new StringBuilder();
-
-
- //If given file is a workflow file
- public GetWfStat(List<String> wf_files, String log, boolean verbose){
- this.logFile = log;
- this.verbose = verbose;
-
- for(String files : wf_files){
- File f = new File(files);
- if(f.isFile()){
- this.read(f);
-
- }else{
- System.err.println("Error reading the file " + f.getName());
- }
- }
-
- this.isVerbose();
-
- if(log!=null){
- this.writefile(this.str_verb.toString(), this.logFile);
- }
- }
-
- //Read the workflow file and extract the resources.
- //And append them to a String builder
- public void read(File file){
- WorkflowBundleIO io = new WorkflowBundleIO();
- try {
- WorkflowBundle wf = io.readBundle(file, null);
- this.set = wf.getWorkflows();
-
- //String to be written to a file.
- this.str_nverb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
- this.str_verb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
-
- for(Workflow wrf : set){
- //TODO :- Take each type of resource and make a system to view them to the user.
- String name = "Name of the workflow = " + wrf.getName();
- this.str_verb.append(name + "\n");
- this.str_nverb.append(name + "\n");
-
-
- String noP = " |--> Number of Processors = " + wrf.getProcessors().size();
- this.str_verb.append(noP + "\n");
- this.str_nverb.append(noP + "\n");
-
- if(this.verbose && wrf.getProcessors().size()!=0){
- this.str_verb.append(" | |--> Processors: " + "\n");
-
- for(Processor p : wrf.getProcessors()){
- this.str_verb.append(" | |--> " + p.getName() + "\n");
- }
- this.str_verb.append(" |" + "\n");
- }
-
- this.str_verb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
- this.str_nverb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
-
- if(this.verbose && wrf.getDataLinks().size()!=0){
- this.str_verb.append(" | |--> Data Links" + "\n");
-
- for(DataLink link : wrf.getDataLinks()){
- this.str_verb.append(" | |--> " + link + "\n");
- }
- this.str_verb.append(" |" + "\n");
- }
-
- this.str_nverb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
- this.str_verb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
-
-
- if(this.verbose && wrf.getControlLinks().size()!=0){
- this.str_verb.append(" | |--> Control Links\n");
- for(ControlLink link : wrf.getControlLinks()){
- this.str_verb.append(" | |--> " + link + "\n");
- }
- this.str_verb.append(" |\n");
- }
-
- this.str_nverb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
- this.str_verb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
-
-
- if(this.verbose && wrf.getInputPorts().size()!=0){
- this.str_verb.append(" | |--> Input Ports\n");
- for(InputPort iport : wrf.getInputPorts()){
- this.str_verb.append(" | |--> " + iport.toString()+"\n");
- }
- this.str_verb.append(" |\n");
- }
-
- this.str_nverb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
- this.str_verb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
-
- if(this.verbose && wrf.getOutputPorts().size()!=0){
- this.str_verb.append(" | |--> Output Ports\n");
- for(OutputPort o_port : wrf.getOutputPorts()){
- this.str_verb.append(" | |--> " + o_port.toString()+"\n");
- }
-
- this.str_verb.append("\n");
- }
-
- this.str_nverb.append("\n");
- this.str_verb.append("\n");
- }
-
- } catch (ReaderException | IOException e) {
- e.printStackTrace();
- }
- }
-
-
- //Saving the output into a log
- public void writefile(String report, String url){
-
- File file = new File(url);
-
- if(!file.isFile()){
- System.err.println("Error in writing the log file...");
- }
-
- FileWriter writer;
- BufferedWriter bfw;
- try {
- writer = new FileWriter(file);
- bfw = new BufferedWriter(writer);
- bfw.write(report);
- bfw.close();
- writer.close();
- System.out.println("Results were saved into " + file.getPath());
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
- public void isVerbose(){
- if(verbose)
- System.out.println(this.str_verb.toString());
- else
- System.out.println(this.str_nverb.toString());
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java b/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
deleted file mode 100644
index fc05e3b..0000000
--- a/taverna-tavlangtool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.apache.taverna.tavlang.tools.validate;
-
-/*
- * 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 java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidationListener;
-import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidator;
-import org.apache.taverna.scufl2.validation.correctness.ReportCorrectnessValidationListener;
-
-/*
- * Takes .wfbundle/ .t2flow as the input
- * */
-public class Validate {
-
- private String logfile;
- private String nonVerbose = "";
- private String finalrep = "";
- private boolean verbose;
- private boolean check = false;
-
-
- public Validate(List<String> files, String file, boolean verbose) {
- this.verbose = verbose;
- this.logfile = file;
- System.out.println("Validation started....");
- for (String f : files) {
- System.out.println("Validating " + f);
- File wfile = new File(f);
- read(wfile);
-
- }
- System.out.println("Validation completed.......");
-
-
- if (this.logfile != null) {
- saveToLog(this.finalrep);
- }
- }
-
- public void read(File file) {
- WorkflowBundleIO io = new WorkflowBundleIO();
- try {
- this.finalrep += validate(io.readBundle(file, null), file.getName());
-
- } catch (ReaderException e) {
- System.err.println(e.getMessage());
-
- } catch (IOException e) {
- System.err.println("Workflow bundle not found!");
- System.err.println(e.getMessage());
-
- }
- }
-
- public String validate(WorkflowBundle wfb, String file) {
-
- StringBuilder report2 = new StringBuilder();
- CorrectnessValidationListener correctnessValidationListener = new ReportCorrectnessValidationListener();
- CorrectnessValidator correctnessValidator = new CorrectnessValidator();
- correctnessValidationListener = correctnessValidator.validate(wfb);
- String report = correctnessValidationListener.toString().replace(
- "ReportCorrectnessValidationListener [", "");
-
- String[] sections = report.split(", ");
-
-
-
- boolean detect = correctnessValidationListener.detectedProblems();
- if (!detect){
- report2.append("The workflow " + file + " has no errors. \n\n");
- this.nonVerbose = "The workflow " + file + " has no errors. \n";
- }
-
-
-// System.out.println("The validation report for " + file);
- report2.append("The validation report for " + file + "......\n");
- report2.append("-------------------------------------------------------------------------------- \n");
- for (int i = 0; i < sections.length; i++) {
- String line = "-->"+sections[i].split("=")[0].replace("()", "").replace(
- "get", "")
- + ":- ";
- report2.append(line);
- String line2 = sections[i].split("=")[1].replace("[", "").replace("]","");
- if(line2.equals("")) report2.append("null \n\n");
- else report2.append("\t").append(line2).append("\n");
-
-
- }
- report2.append("--------------------------------------------------------------------------------- \n\n");
-
- if(detect){
- System.out.println("The workflow bundle has following problems: \n"+report2.toString());
- check = true;
- }
-
- if(verbose){
- System.out.println(report2.toString());
- }else{
- System.out.println(this.nonVerbose);
- }
-
- return report2.toString();
-
- }
-
- public void saveToLog(String s) {
- File logFile = new File(this.logfile);
- FileWriter logwriter;
- try {
- logwriter = new FileWriter(logFile);
- BufferedWriter blw = new BufferedWriter(logwriter);
- blw.write(s);
- blw.close();
- logwriter.close();
- System.out.println("Results were saved into " + logFile.getPath());
- } catch (IOException e) {
- System.err.println("Error writing to the file \n" + e.getMessage());
- }
-
- }
-
- public boolean getCheck(){
- return this.check;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/resources/.gitignore b/taverna-tavlangtool/src/main/resources/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/main/resources/META-INF/NOTICE b/taverna-tavlangtool/src/main/resources/META-INF/NOTICE
deleted file mode 100644
index 370a8fc..0000000
--- a/taverna-tavlangtool/src/main/resources/META-INF/NOTICE
+++ /dev/null
@@ -1,7 +0,0 @@
-Apache Taverna Language
-Copyright 2010-2014 University of Manchester, UK
-Copyright 2014-2015 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/.gitignore b/taverna-tavlangtool/src/test/java/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
deleted file mode 100644
index 6beaa8e..0000000
--- a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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 org.apache.taverna.tavlang.CommandLineTool;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class CommandLineTest {
- CommandLineTool commandLineTool = new CommandLineTool();
-
- @Test
- public void testHelp(){
- commandLineTool.parse();
- commandLineTool.parse("version");
- commandLineTool.parse("help");
- commandLineTool.parse("help", "convert");
- commandLineTool.parse("help", "inspect");
- commandLineTool.parse("help", "validate");
- commandLineTool.parse("help", "help");
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
deleted file mode 100644
index a920db2..0000000
--- a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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 org.junit.Test;
-
-public class TestConvert{
-
- @Test
- public void testConvertS() {
-// fail("Not yet implemented");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/6e2aa825/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
----------------------------------------------------------------------
diff --git a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java b/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
deleted file mode 100644
index 4c22377..0000000
--- a/taverna-tavlangtool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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 org.junit.Test;
-
-public class TestStats {
-
- @Test
- public void test() {
-// fail("Not yet implemented");
- }
-
-}
[11/11] incubator-taverna-language git commit: Merge remote-tracking
branch 'menaka/master'
Posted by st...@apache.org.
Merge remote-tracking branch 'menaka/master'
This closes #30
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/92ccd6b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/92ccd6b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/92ccd6b3
Branch: refs/heads/master
Commit: 92ccd6b3cd8cd9b8dcb7029766005766616e4d10
Parents: 99156bd 2f6f465
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Tue Feb 2 21:57:35 2016 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Tue Feb 2 21:57:35 2016 +0000
----------------------------------------------------------------------
pom.xml | 2 +-
taverna-language-commandline/.gitignore | 1 -
taverna-language-commandline/README.md | 425 -----
taverna-language-commandline/pom.xml | 213 ---
.../src/main/java/.gitignore | 0
.../apache/taverna/tavlang/CommandLineTool.java | 350 ----
.../taverna/tavlang/TavernaCommandline.java | 29 -
.../org/apache/taverna/tavlang/tools/Tools.java | 88 -
.../tavlang/tools/convert/Scufl2Convert.java | 206 ---
.../taverna/tavlang/tools/convert/ToJson.java | 298 ----
.../tavlang/tools/convert/ToRobundle.java | 66 -
.../tavlang/tools/inspect/ProcessorNames.java | 169 --
.../tavlang/tools/inspect/ServiceTypes.java | 112 --
.../taverna/tavlang/tools/stats/GetWfStat.java | 193 --
.../tavlang/tools/validate/Validate.java | 151 --
.../src/main/resources/.gitignore | 0
.../src/main/resources/META-INF/NOTICE | 7 -
.../src/test/java/.gitignore | 0
.../taverna/tavlang/test/CommandLineTest.java | 43 -
.../taverna/tavlang/test/TestConvert.java | 34 -
.../apache/taverna/tavlang/test/TestStats.java | 34 -
.../apache/taverna/tavlang/test/TestTools.java | 80 -
.../taverna/tavlang/test/TestValidate.java | 49 -
.../src/test/resources/.gitignore | 0
.../test/resources/workflows/t2flow/as.t2flow | 1674 ------------------
taverna-tavlang-tool/.gitignore | 1 +
taverna-tavlang-tool/README.md | 425 +++++
taverna-tavlang-tool/pom.xml | 213 +++
taverna-tavlang-tool/src/main/java/.gitignore | 0
.../apache/taverna/tavlang/CommandLineTool.java | 350 ++++
.../taverna/tavlang/TavernaCommandline.java | 29 +
.../org/apache/taverna/tavlang/tools/Tools.java | 88 +
.../tavlang/tools/convert/Scufl2Convert.java | 206 +++
.../taverna/tavlang/tools/convert/ToJson.java | 298 ++++
.../tavlang/tools/convert/ToRobundle.java | 66 +
.../tavlang/tools/inspect/ProcessorNames.java | 169 ++
.../tavlang/tools/inspect/ServiceTypes.java | 112 ++
.../taverna/tavlang/tools/stats/GetWfStat.java | 193 ++
.../tavlang/tools/validate/Validate.java | 151 ++
.../src/main/resources/.gitignore | 0
.../src/main/resources/META-INF/NOTICE | 7 +
taverna-tavlang-tool/src/test/java/.gitignore | 0
.../taverna/tavlang/test/CommandLineTest.java | 43 +
.../taverna/tavlang/test/TestConvert.java | 34 +
.../apache/taverna/tavlang/test/TestStats.java | 34 +
.../apache/taverna/tavlang/test/TestTools.java | 80 +
.../taverna/tavlang/test/TestValidate.java | 49 +
.../src/test/resources/.gitignore | 0
.../test/resources/workflows/t2flow/as.t2flow | 1674 ++++++++++++++++++
49 files changed, 4223 insertions(+), 4223 deletions(-)
----------------------------------------------------------------------
[07/11] incubator-taverna-language git commit: Module rename : added -
Posted by st...@apache.org.
Module rename : added -
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/3aa91bf8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/3aa91bf8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/3aa91bf8
Branch: refs/heads/master
Commit: 3aa91bf883dc3b112a7e7b9a8b2154c43c8e3957
Parents: 66a8cfd
Author: Menaka Madushanka <me...@gmail.com>
Authored: Tue Feb 2 11:59:55 2016 +0530
Committer: Menaka Madushanka <me...@gmail.com>
Committed: Tue Feb 2 11:59:55 2016 +0530
----------------------------------------------------------------------
taverna-tavlang-tool/.gitignore | 1 +
taverna-tavlang-tool/README.md | 425 +++++
taverna-tavlang-tool/pom.xml | 213 +++
taverna-tavlang-tool/src/main/java/.gitignore | 0
.../apache/taverna/tavlang/CommandLineTool.java | 350 ++++
.../taverna/tavlang/TavernaCommandline.java | 29 +
.../org/apache/taverna/tavlang/tools/Tools.java | 88 +
.../tavlang/tools/convert/Scufl2Convert.java | 206 +++
.../taverna/tavlang/tools/convert/ToJson.java | 298 ++++
.../tavlang/tools/convert/ToRobundle.java | 66 +
.../tavlang/tools/inspect/ProcessorNames.java | 169 ++
.../tavlang/tools/inspect/ServiceTypes.java | 112 ++
.../taverna/tavlang/tools/stats/GetWfStat.java | 193 ++
.../tavlang/tools/validate/Validate.java | 151 ++
.../src/main/resources/.gitignore | 0
.../src/main/resources/META-INF/NOTICE | 7 +
taverna-tavlang-tool/src/test/java/.gitignore | 0
.../taverna/tavlang/test/CommandLineTest.java | 43 +
.../taverna/tavlang/test/TestConvert.java | 34 +
.../apache/taverna/tavlang/test/TestStats.java | 34 +
.../apache/taverna/tavlang/test/TestTools.java | 80 +
.../taverna/tavlang/test/TestValidate.java | 49 +
.../src/test/resources/.gitignore | 0
.../test/resources/workflows/t2flow/as.t2flow | 1674 ++++++++++++++++++
24 files changed, 4222 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/.gitignore b/taverna-tavlang-tool/.gitignore
new file mode 100644
index 0000000..916e17c
--- /dev/null
+++ b/taverna-tavlang-tool/.gitignore
@@ -0,0 +1 @@
+dependency-reduced-pom.xml
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/README.md
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/README.md b/taverna-tavlang-tool/README.md
new file mode 100644
index 0000000..e76cbcd
--- /dev/null
+++ b/taverna-tavlang-tool/README.md
@@ -0,0 +1,425 @@
+<!--
+ 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.
+-->
+
+# Apache Taverna Language Command Line
+
+
+This is planned as a command line for the
+[Apache Taverna Language](https://github.com/apache/incubator-taverna-language/),
+an API for the
+[Apache Taverna](http://taverna.incubator.apache.org/) workflows.
+
+This module is a **work in progress** as part of Google Summer of Code 2015.
+
+
+
+## License
+
+(c) 2015 Apache Software Foundation
+
+This product includes software developed at The [Apache Software
+Foundation](http://www.apache.org/).
+
+Licensed under the [Apache License
+2.0](https://www.apache.org/licenses/LICENSE-2.0), see the file
+[../LICENSE](../LICENSE) for details.
+
+The file [NOTICE](src/main/resources/NOTICE) contains any additional attributions and
+details about embedded third-party libraries and source code.
+
+
+# Contribute
+
+Please subscribe to and contact the
+[dev@taverna](http://taverna.incubator.apache.org/community/lists#dev%20mailing%20list)
+for any questions, suggestions and discussions about
+Apache Taverna Language Commandline.
+
+Bugs and planned features are tracked in the Jira
+[Issue tracker](https://issues.apache.org/jira/browse/TAVERNA/component/12326903)
+under the `TAVERNA` component _GSOC Taverna Language Command line_. Feel free
+to add an issue!
+
+To suggest changes to this source code, feel free to raise a
+[GitHub pull request](https://github.com/apache/incubator-taverna-mobile/pulls).
+Any contributions received are assumed to be covered by the [Apache License
+2.0](https://www.apache.org/licenses/LICENSE-2.0). We might ask you
+to sign a [Contributor License Agreement](https://www.apache.org/licenses/#clas)
+before accepting a larger contribution.
+
+
+# Building and install requirements
+
+## Requisites
+
+* Java 1.7 or newer
+* [Apache Maven](https://maven.apache.org/download.html) 3.2.5 or newer (older
+ versions probably also work)
+
+
+## Building
+
+To build, run:
+
+ mvn clean install
+
+
+# Usage
+
+ usage: tavlang <command> [<args>]
+
+ The most commonly used tavlang commands are:
+ convert Convert the given workflow
+ help Display help information about Tvarna
+ inspect Inspect the given workflow and show the results on the terminal
+ validate Validate the given workflow
+ version Show version informantion
+
+ See 'tavlang help <command>' for more information on a specific command.
+
+# Documentation
+
+The Taverna language command line tool is for accessing the features of the Taverna language modules.
+The tool has the following functions:
+
+* Conversion
+* Inspection
+* Validation
+* Viewing workflow statistics.
+
+## Command line structure
+
+ $tavlang <command> <options> [arguments and parameters]
+
+Each command has its own set of options.
+
+###Commands and Options
+The tool has the following major commands:
+
+* convert: Options {-r -- recursive, -i --input, -o --output,}
+* inspect: Options {-l --log}
+* validate: Options {-l --log, -v --verbose}
+* stats: Options {-l --log, -v --verbose}
+
+## Commands in detail
+
+### convert ------------------------------------------------------
+
+Convert the given workflow file/s into a specified output format.
+
+Usage:
+
+ tavlang convert (--output_fomat) ([[options] [arguments]]|files...)
+
+ Supported output formats are,
+
+ * wfbundle
+ * iwir
+ * json
+ * robundle
+ * structure
+
+Options:
+
+ * -r, --recursive : Convert all workflow files in a given directory recursively
+ * -i, --input : Used with recursive case. Specify the input directory
+ * -o, --output : Specify the out put directory
+
+*The tool can only convert into one format at a time
+
+There are two methods for using the conversion command.
+
+#### 1. Non-recursive method
+
+Usage:
+
+ $tavlang convert (--output_format) [options] [arguments]
+
+####### Example 1: Without specifying any options
+
+ $tavlang convert --structure /helloworld.t2flow
+
+Output:
+
+ /converted/helloworld.structure is created
+
+Convert the helloworld.t2flow into helloworld.structure format and store in the /converted directory
+
+###### Example 2: Convert multiple workflows
+
+ $tavlang convert --json /helloworld.t2flow /hello.t2flow
+
+Output:
+
+ /converted/helloworld.json is created
+ /converted/hello.json is created
+
+Convert both workflow files and store them in /converted directory
+
+###### Example 3: with options and arguments
+
+ $tavlang convert --wfbundle /helloworld.t2flow -o /output/workflows
+
+Output:
+
+ /output/workflows/helloworld.wfbundle is created
+
+Convert the workflow file/s and store them in the specified output directory
+
+#### 2. Recursive method
+
+If there are many workflows in a directory, which are needed to be converted into one single format use this method.
+
+Usage:
+
+ $tavlang convert -r (--output_format) -i workflow_src_dir <options> [arguments]
+
+###### Example 4: Without options and arguments
+
+ $tavlang convert -r --json -i /home/user/workflows
+
+Convert all the workflows in the input directory into the specified format and store them in the "/home/user/workflows/converted" directory.
+
+Output: Suppose that there are 2 workflow files in the dir 1.t2flow and 2.t2flow
+
+ /home/workflows/converted/1.json is created
+ /home/workflows/converted/2.json is created
+
+###### Example 5: with output dir is specified
+
+ $tavlang convert -r --iwir -i /home/workflows -o /home/final
+
+Convert all the workflows in the input directory and store them in /home/final directory
+
+Output:
+
+ /home/final/1.iwir is created
+ /home/final/2.iwir is created
+
+### inspect -----------------------------------------------------------------
+
+Inspect the given workflow file/s and give the inspection report.
+Supported workflow bundle formats: .wfbundle, .t2flow
+
+Usage:-
+
+ $tavlang inspect (--inspection_options) <-other-options> [arguments] workflow_undles_to_be_inspected
+
+Inspection options:
+
+ * --servicetypes :- List all the service-types used in the workflow
+ * --processornames :- List the tree of the processor names used in the workflow
+
+Other Options:
+
+ * -l, --log :- save the inspection report in a text file
+
+###### Example 1: Without any other-options
+
+1. Inspection result for Service types
+
+
+ $tavlang inspect --servicetypes helloworld.wfbundle
+ Service types used in helloworld.wfbundle :
+
+ http://ns.taverna.org.uk/2010/activity/constant
+ **************************************************
+
+2. inspection result for Processor names
+
+
+ $tavlang inspect --processornames helloworld.wfbundle
+ Processor tree of helloworld.wfbundle
+ + Hello_World
+ - hello
+
+###### Example 2: With other options
+The output is the same but the results will be saved in the given file.
+
+ $tavlang inspect --processornames helloworld.wfbundle -l results.txt
+ Processor tree of helloworld.wfbundle
+ + Hello_World
+ - hello
+
+
+The output will be saved in results.txt in the same format.
+
+### validate ----------------------------------------------------------------------
+
+Validates the given workflow file or files and gives the validation report.
+Validate tool checks for the following problematic conditions.
+
+ * Empty Iteration Strategy Top-Node Problems
+ * Mismatch Configurable Type Problems
+ * Non-Absolute URI Problems
+ * Null Field Problems
+ * Out-Of-Scope Value Problems
+ * Port Mentioned Twice Problems
+ * Port Missing From Iteration Strategy Stack Problems
+ * Wrong Parent Problems
+ * Incompatible Granular Depth Problems
+
+Usage:-
+
+ $tavlang validate [options][arguments] input_files
+
+Options:-
+
+ * -l, --log: Save the validation report in a text file
+ * -v, --verbose: Verbose mode
+
+Supported workflow bundle formats: .t2flow and .wfbundle
+
+###### Example 1: Normal mode
+
+ Validate one workflow bundle
+
+ $tavlang validate helloworld.t2flow
+
+Output:
+
+ Validation started....
+ Validating helloworld.t2flow
+ The workflow helloworld.t2flow has no errors.
+
+ Validation completed.......
+
+ Validate more than one workflow bundles
+
+ $tavlang validate ../../workflow2.t2flow ../../workflow3.wfbundle
+
+ Validation started....
+ Validating ../../workflow2.t2flow
+ The workflow workflow2.t2flow has no errors.
+
+ Validating ../../workflow3.wfbundle
+ The workflow workflow3.t2flow has no errors.
+
+ Validation completed.......
+
+
+###### Example 2: Verbose mode
+
+The report is more explanatory.
+
+ $tavlang validate -v ../../workflow2.t2flow
+
+ Validation started....
+ Validating ../../workflow2.t2flow
+ The workflow workflow2.t2flow has no errors.
+
+ The validation report for defaultActivitiesTaverna2.wfbundle......
+ --------------------------------------------------------------------------------
+ -->NegativeValueProblems:- null
+
+ -->EmptyIterationStrategyTopNodeProblems:- null
+
+ -->MismatchConfigurableTypeProblems:- null
+
+ -->NonAbsoluteURIProblems:- null
+
+ -->NullFieldProblems:- null
+
+ -->OutOfScopeValueProblems:- null
+
+ -->PortMentionedTwiceProblems:- null
+
+ -->PortMissingFromIterationStrategyStackProblems:- null
+
+ -->WrongParentProblems:- null
+
+ -->IncompatibleGranularDepthProblems:- null
+
+ ---------------------------------------------------------------------------------
+
+###### Example 3: Saving results to a file
+
+ $tavlang validate workflow2.t2flow -l log2.txt
+ Validation started....
+ Validating workflow2.t2flow
+ The workflow helloworld.wfbundle has no errors.
+ Validation completed.......
+
+ Results were saved into log2.txt
+
+### stats ----------------------------------------------------------------------------------
+
+A workflow contains several resources.
+
+* Processors
+* Input ports
+* Output ports
+* Data links
+* Control links
+
+The stats command gives a report of the resources used in the workflow.
+
+Usage:-
+
+ $tavlang stats <options>[arguments] input_files...
+
+Options:-
+
+ * -l, – – log : Save results in a log file
+ * -v, – – verbose : verbose mode
+
+Supported workflow bundle formats:- .t2flow, .wfbundle
+
+###### Example 1: Normal mode
+
+ $tavlang helloworld.wfbundle
+ >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
+ Name of the workflow = Hello_World
+ |--> Number of Processors = 1
+ |--> Number of Data Links = 1
+ |--> Number of Control Links = 0
+ |--> Number of Input ports = 0
+ |--> Number of Output Ports = 1
+
+###### Example 2: Verbose mode
+
+ $tavlang -v ../../../helloworld.wfbundle
+ >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
+ Name of the workflow = Hello_World
+ |--> Number of Processors = 1
+ | |--> Processors:
+ | |--> hello
+ |
+ |--> Number of Data Links = 1
+ | |--> Data Links
+ | |--> DataLink value=>greeting
+ |
+ |--> Number of Control Links = 0
+ |--> Number of Input ports = 0
+ |--> Number of Output Ports = 1
+ | |--> Output Ports
+ | |--> OutputWorkflowPort "greeting"
+
+###### Example 3: Saving results in a file
+
+ $tavlang -l ../../results.txt ../../../helloworld.wfbundle
+ >>> Statistics of the workflow bundle: helloworld.wfbundle <<<
+ Name of the workflow = Hello_World
+ |--> Number of Processors = 1
+ |--> Number of Data Links = 1
+ |--> Number of Control Links = 0
+ |--> Number of Input ports = 0
+ |--> Number of Output Ports = 1
+
+ Results were saved into ../../results.txt
+
+-----------------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/pom.xml b/taverna-tavlang-tool/pom.xml
new file mode 100644
index 0000000..369dbf4
--- /dev/null
+++ b/taverna-tavlang-tool/pom.xml
@@ -0,0 +1,213 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.taverna.language</groupId>
+ <artifactId>taverna-language</artifactId>
+ <version>0.15.1-incubating-SNAPSHOT</version>
+ </parent>
+ <artifactId>taverna-tavlang-tool</artifactId>
+ <name>Apache Taverna Language Commandline</name>
+ <description>Command line for Taverna Language (experimental)</description>
+
+
+ <dependencies>
+
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>taverna-scufl2-api</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-scufl2-wfbundle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-scufl2-t2flow</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+<!-- <dependency> -->
+<!-- <groupId>org.shiwa.iwir</groupId> -->
+<!-- <artifactId>iwir</artifactId> -->
+<!-- <version>1.1.4</version> -->
+<!-- <scope>optional</scope> -->
+<!-- <systemPath>${project.build.directory}/taverna-language-commandline/lib/</systemPath> -->
+<!-- </dependency> -->
+
+ <dependency>
+ <groupId>no.s11.scufl2</groupId>
+ <artifactId>scufl2-iwir</artifactId>
+ <version>0.2-SNAPSHOT</version>
+ <optional>true</optional>
+ </dependency>
+
+
+
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.8</version>
+ </dependency>
+
+
+ <!-- <dependency> <groupId>${project.groupId}</groupId> <artifactId>taverna-scufl2-wfdesc</artifactId>
+ <version>${project.version}</version> <optional>true</optional> </dependency> -->
+ <!-- <dependency> <groupId>org.purl.wf4ever</groupId> <artifactId>scufl2-wfdesc</artifactId>
+ <version>0.3.7</version> </dependency> -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-scufl2-ucfpackage</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>taverna-robundle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>io.airlift</groupId>
+ <artifactId>airline</artifactId>
+ <!-- <version>${io.airlift.airline.version}</version> -->
+ <version>0.7</version>
+ </dependency>
+
+
+ </dependencies>
+
+ <build>
+ <!-- TODO: plugins for launchers and executable jar files? -->
+ <plugins>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>appassembler-maven-plugin</artifactId>
+ <version>1.1.1</version>
+ <executions>
+ <execution>
+ <id>assemble</id>
+ <phase>package</phase>
+ <goals>
+ <goal>assemble</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <repositoryLayout>flat</repositoryLayout>
+ <repositoryName>lib</repositoryName>
+ <assembleDirectory>${project.build.directory}/${project.artifactId}</assembleDirectory>
+ <programs>
+ <program>
+ <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
+ <name>tavlang</name>
+ </program>
+ </programs>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>2.3</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <transformers>
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass>org.apache.taverna.tavlang.TavernaCommandline</mainClass>
+ </transformer>
+ <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
+ <addHeader>false</addHeader>
+ </transformer>
+ </transformers>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots />
+ <id>mygrid-repository</id>
+ <name>myGrid Repository</name>
+ <url>http://www.mygrid.org.uk/maven/repository</url>
+ </repository>
+
+ <repository>
+ <id>mygrid-snapshot-repository</id>
+ <name>myGrid Snapshot Repository</name>
+ <url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots />
+ </repository>
+
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/.gitignore b/taverna-tavlang-tool/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
new file mode 100644
index 0000000..068c933
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java
@@ -0,0 +1,350 @@
+package org.apache.taverna.tavlang;
+
+/*
+ * 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 io.airlift.airline.Arguments;
+import io.airlift.airline.Cli;
+import io.airlift.airline.Cli.CliBuilder;
+import io.airlift.airline.Command;
+import io.airlift.airline.Help;
+import io.airlift.airline.Option;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.JAXBException;
+
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.tavlang.tools.convert.Scufl2Convert;
+import org.apache.taverna.tavlang.tools.convert.ToRobundle;
+import org.apache.taverna.tavlang.tools.inspect.ProcessorNames;
+import org.apache.taverna.tavlang.tools.inspect.ServiceTypes;
+import org.apache.taverna.tavlang.tools.stats.GetWfStat;
+import org.apache.taverna.tavlang.tools.validate.Validate;
+
+import com.google.common.collect.Lists;
+
+/*
+ * The command line options for convert, validate and inspect workflows.
+ * Use the airlift/airline library
+ * */
+
+public class CommandLineTool {
+
+ private static Cli<TvnLangTool> parser() {
+ CliBuilder<TvnLangTool> build = Cli.<TvnLangTool> builder("tavlang")
+ .withDescription("Convert, manage workflows")
+ .withDefaultCommand(HelpCommand.class)
+ .withCommand(CommandConvert.class) // Conversion
+ .withCommand(HelpCommand.class) // Help
+ .withCommand(CommandInspect.class) // Inspect
+ .withCommand(CommandValidate.class) // Validate
+ .withCommand(CommandVersion.class) // Version
+ .withCommand(CommandStat.class); // Statistics
+
+ return build.build();
+ }
+
+ public CommandLineTool() {
+ };
+
+ public void parse(String... args) {
+ TvnLangTool command = parser().parse(args);
+ command.execute();
+ System.out.println();
+ }
+
+ public static abstract class TvnLangTool {
+
+ public abstract void execute();
+ }
+
+ // placeholder for output file types
+ public static class Filetypes {
+ @Option(name = "--wfdesc", description = "Convert the workflow file to wfdesc-turtle")
+ public static boolean isWfdesc = false;
+
+ @Option(name = "--wfbundle", description = "Convert the workflow file to wfbundle")
+ public static boolean isWfbundle = false;
+
+ @Option(name = "--robundle", description = "Convert given bundle in to Research Object bundle")
+ public static boolean isRo = false;
+
+ @Option(name = "--structure", description = "Convert the workflow into *.structure")
+ public static boolean isStructure = false;
+
+ @Option(name = "--json", description = "Convert the workflow into json")
+ public static boolean isJson = false;
+
+
+ @Option(name = "--iwir", description = "Convert scufl2 workflows into IWIR 1.1 specification")
+ public static boolean isIwir = false;
+
+
+ // The tool can only handle one output format at a time.
+ // Return the file type which is selected
+ public static String isTrue() {
+ if (isWfdesc)
+ return "wfdesc";
+ else if (isWfbundle)
+ return "wfbundle";
+ else if (isRo)
+ return "robundle";
+ else if (isStructure)
+ return "structure";
+ else if (isJson)
+ return "json";
+
+ else if (isIwir)
+ return "iwir";
+
+
+ else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "convert");
+ command.execute();
+ return null;
+ }
+
+ }
+
+ }
+
+ public static class Inspect {
+ @Option(name = "--servicetypes", description = "List the service types used in workflow")
+ public static boolean servicetypes = false;
+
+ @Option(name = "--processornames", description = "List a tree of processor names used in workflow")
+ public static boolean processor = false;
+
+ public String getWay() {
+ if (servicetypes)
+ return "servicetypes";
+ else if (processor)
+ return "processornames";
+ else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "inspect");
+ command.execute();
+ return null;
+
+ }
+
+ }
+
+ }
+
+ // Placeholder for optional parameters: Ex: -i, -o
+ public static class Optional {
+
+ // The input file or directory
+ @Option(name = { "-i", "--input" }, description = "Input file/ file dir for conversion")
+ public static String in_file_dir;
+
+ // The out put file or directory. When this is set, all the converted
+ // files will be saved into the directory that specified.
+ @Option(name = { "-o", "--output" }, description = "Output file/ directory")
+ public static String out_file_dir;
+
+ public static String getInFile() {
+ return in_file_dir;
+ }
+
+ public static String getOutFile() {
+ return out_file_dir;
+ }
+
+ }
+
+ @Command(name = "help", description = "Display help information about Tvarna")
+ public static class HelpCommand extends TvnLangTool {
+ @Inject
+ public Help help;
+
+ @Override
+ public void execute() {
+ help.call();
+ }
+ }
+
+ // Command for convert workflows
+ @Command(name = "convert", description = "Convert the given workflow")
+ public static class CommandConvert extends TvnLangTool {
+ @Inject
+ Optional optional = new Optional();
+
+ @Inject
+ Filetypes filetypes = new Filetypes();
+
+ @Arguments(usage = "<output format> <input files> ", description = "List of files to be converted.\n "
+ + "Give the list of files to be converted without -i/-o and the converted files will be saved in to /converted folder in the same dir")
+ public final List<String> files = Lists.newArrayList();
+
+ // When this is true, the command will run recursively in a directory.
+ @Option(name = { "-r", "--recursive" }, description = "Execute the command recursively")
+ public boolean recurse = false;
+
+ // Option for validate the given workflow when converting
+ @Option(name = { "-V", "--validate" }, description = "Validate the workflow before convert")
+ public boolean validate = false;
+
+ @Override
+ public void execute() {
+
+ //Validate before convert
+ if(validate){
+ Validate validate = new Validate(files, null, false);
+ if(validate.getCheck()){
+ System.out.println("Conversion failed...! Workflow bundle has errors");
+ return;
+ }else{
+ runcommand();
+ }
+ }
+ }
+
+ public void runcommand(){
+ if (Filetypes.isRo) {
+ try {
+ new ToRobundle(files, Optional.getOutFile());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+// else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc)
+ } else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundle || Filetypes.isWfdesc){
+ if (recurse) {
+ new Scufl2Convert(Filetypes.isTrue(),
+ Optional.getInFile(), Optional.getOutFile());
+ } else {
+ new Scufl2Convert(Filetypes.isTrue(), files,
+ Optional.getOutFile());
+ }
+ }else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "convert");
+ command.execute();
+ }
+
+ }
+
+
+
+ }
+
+ // Version command
+ @Command(name = "version", description = "Show version informantion")
+ public static class CommandVersion extends TvnLangTool {
+
+ @Override
+ public void execute() {
+ System.out.print(getClass().getPackage().getImplementationTitle());
+ System.out.println(" " + getClass().getPackage().getImplementationVersion());
+ }
+
+ }
+
+ // Command for inspection of workflows....!!
+ @Command(name = "inspect", description = "Inspect the given workflow and show the results on the terminal")
+ public static class CommandInspect extends TvnLangTool {
+
+ @Inject
+ Inspect inspect = new Inspect();
+
+ @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
+ public String file;
+
+ @Arguments(usage = "<option> <input files>", description = "Inspect the given workflow")
+ public List<String> toInspect = Lists.newArrayList();
+
+ @Override
+ public void execute() {
+ if (Inspect.processor) {
+ try {
+ new ProcessorNames(toInspect, file);
+
+ } catch (ReaderException | IOException | JAXBException e) {
+ e.printStackTrace();
+ }
+ } else if (Inspect.servicetypes) {
+ try {
+ new ServiceTypes(toInspect, file);
+ } catch (IOException | ReaderException e) {
+ e.printStackTrace();
+ }
+
+ }else{
+ System.out.println("Invalid argument....");
+ TvnLangTool command = parser().parse("help", "inspect");
+ command.execute();
+ }
+
+ }
+
+ }
+
+ // Command for validation
+ @Command(name = "validate", description = "validate the given workflow")
+ public static class CommandValidate extends TvnLangTool{
+
+ @Option(name = { "-l", "--log" }, description = "Specify the file name where results should be stored ([some dir]/log.txt)")
+ public String file;
+
+ @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
+ public boolean verbose;
+
+// @Arguments(usage = "<option> <input files> <output dir>", description = "Validate the given workflow file/s")
+ @Arguments(usage = "input files", description = "Validate the given workflow file/s")
+ public List<String> toValidate = Lists.newArrayList();
+
+ @Override
+ public void execute() {
+
+ Validate validate = new Validate(toValidate, file, verbose);
+
+
+ }
+
+ }
+
+ //Command for getting workflow stats
+ @Command (name = "stats", description = "Shows the workflow statistics")
+ public static class CommandStat extends TvnLangTool{
+
+
+ @Option(name = {"-l", "--log"}, description ="Save the workflow statictics in a file")
+ public String file;
+
+ @Option(name = {"-v", "--verbose"}, description = "Verbose mode")
+ public boolean verbose;
+
+ @Arguments(usage="input files", description = "Enter the workflow bundle files")
+ public List<String> files;
+
+ @Override
+ public void execute() {
+
+ GetWfStat stat = new GetWfStat(files, file, verbose);
+
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
new file mode 100644
index 0000000..016488c
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/TavernaCommandline.java
@@ -0,0 +1,29 @@
+package org.apache.taverna.tavlang;
+
+/*
+ * 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.
+ */
+
+public class TavernaCommandline {
+
+ public static void main(String args[]){
+ CommandLineTool tool = new CommandLineTool();
+ tool.parse(args);
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
new file mode 100644
index 0000000..c78c7a2
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/Tools.java
@@ -0,0 +1,88 @@
+package org.apache.taverna.tavlang.tools;
+
+/*
+ * 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.
+ */
+
+
+
+public class Tools {
+
+ public static enum ConvertionTools {
+ wfbundle{
+ public String mediaType = "application/vnd.taverna.scufl2.workflow-bundle";
+
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return this.mediaType;
+ }
+ },
+ json{
+ public String mediaType = "application/ld+json";
+
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return mediaType;
+ }
+ },
+ wfdesc{
+ public String mediaType = "text/vnd.wf4ever.wfdesc+turtle";
+
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ // TODO Auto-generated method stub
+// System.out.println(mediaType);
+ return mediaType;
+ }
+ },
+ robundle{
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return null;
+ }
+
+ },
+ structure{
+ public String mediaType = "text/vnd.taverna.scufl2.structure";
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return mediaType;
+ }
+ },
+
+ iwir{
+ public String mediaType = "application/vnd.shiwa.iwir+xml";
+
+ @Override
+ public String getMediaType(ConvertionTools t) {
+ return mediaType;
+ }
+ };
+
+ ConvertionTools(){}
+
+ public abstract String getMediaType(ConvertionTools t);
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
new file mode 100644
index 0000000..da4dff0
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/Scufl2Convert.java
@@ -0,0 +1,206 @@
+package org.apache.taverna.tavlang.tools.convert;
+
+/*
+ * 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 java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.io.WriterException;
+import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
+
+
+/*
+ * Converts
+ * .t2flow --> .wfbundle
+ * .t2flow --> .structure
+ * .wfbundle --> .structure
+ * .wfbundle/ .t2flow -> .iwir
+ * two constructors.
+ * Scufl2Convert(List<String> list, String out) --> will save the converted files in 'out folder or a directory named /converted in the same folder.
+ * Scufl2Convert(String in, String out) --> Will convert all the files in the 'in' folder and save them in 'out' folder --> -r must be true.
+ *
+ * */
+public class Scufl2Convert{
+
+ private ConvertionTools t;
+ private String MEDIA_TYPE;
+ private String input;
+ private String output;
+ private String type;
+ private List<String> filesList;
+
+ public Scufl2Convert(String type, List<String> files, String out){
+ this.filesList = files;
+ this.output = out;
+ this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
+ this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t);
+ this.convert();
+ }
+
+ //When recursive case is on....
+ public Scufl2Convert(String type, String in, String out){
+ this.input = in;
+ this.output = out;
+ this.type = type.equals("wfdesc")?".wfdesc.ttl":"."+type;
+ this.MEDIA_TYPE = ConvertionTools.valueOf(type).getMediaType(t); //Determine the writer media type
+
+ this.createdir();
+ }
+
+ //Create the dir if not exists
+ public void createdir(){
+ if(output == null){
+ File outFile = new File(this.input, "converted");
+ try {
+ FileUtils.forceMkdir(outFile);
+ this.output = outFile.getAbsolutePath();
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!!");
+ e1.printStackTrace();
+ }
+ }else{
+ File outFile = new File(this.output);
+ try {
+ FileUtils.forceMkdir(outFile);
+
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!!");
+ e1.printStackTrace();
+ }
+ }
+ this.rec_convert(this.input);
+ }
+
+ //Convert the given file. Return in case of an exception.
+ public boolean convert(){
+
+ boolean check = false;
+ // If the output folder is given, save the converted files in to that folder.
+
+ if(this.filesList.size()>0 && this.output != null){
+ File outFile = new File(this.output);
+ try {
+ FileUtils.forceMkdir(outFile);
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!");
+ }
+ for(String file : this.filesList){
+ File t2File = new File(file);
+
+ convertFile(t2File, outFile);
+
+ }
+
+ }
+
+ /* If the output file is not given, save the converted files in
+ * '/converted' folder.
+ */
+
+ else if(this.filesList.size()>0 && this.output == null){
+ for(String file : this.filesList){
+ File t2File = new File(file);
+
+ File outFile = new File(t2File.getParentFile(), "converted");
+ try {
+ FileUtils.forceMkdir(outFile);
+ } catch (IOException e1) {
+ System.err.println("Error: The directory cannot be created...!!!");
+ }
+
+ convertFile(t2File, outFile);
+
+ }
+ }else{
+ System.err.println("Error: Argument mismatch");
+ check = false;
+ }
+
+ return check;
+ }
+
+ //Convert the files in a given directory and save the converted files in to specified dir or /converted folder.
+ //Recursive conversion
+ public void rec_convert(String dir){
+
+ File parent = new File(this.input);
+ if(!parent.exists()){
+ System.err.println("Error: Input directory not found");
+ }else{
+ for(File file : parent.listFiles()){
+ if(!file.isDirectory())
+ {
+ File outFile = new File(this.output);
+ convertFile(file, outFile);
+ }
+ }
+ }
+ }
+
+ //Convert the file
+ public void convertFile(File t2File, File outFile){
+
+ //Check weather the input files are in valid format...!!!
+ String ext = FilenameUtils.getExtension(t2File.getName());
+ if(!ext.equalsIgnoreCase("t2flow")&&!ext.equalsIgnoreCase("wfbundle")){
+ System.err.println("Error: Invalid input file format...!!!");
+ return;
+ }
+
+ WorkflowBundleIO wfbio = new WorkflowBundleIO();
+ String filename = t2File.getName();
+ filename = filename.replaceFirst("\\..*", this.type);
+ File scufl2File = new File(outFile.getAbsolutePath(), filename);
+
+ WorkflowBundle wfBundle;
+ try {
+ wfBundle = wfbio.readBundle(t2File, null);// null --> will guess the media type for reading.
+
+// if(this.type.equals(".iwir")){
+// IwirWriter iww = new IwirWriter();
+// iww.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
+// }else
+
+ if(this.type.equals(".json")){
+ ToJson toJ = new ToJson();
+ toJ.convert(t2File, outFile);
+ }
+ else{
+ wfbio.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
+ }
+ System.out.println(scufl2File.getPath() + " is created.");
+ }catch (ReaderException e){
+ System.err.println("Error: Connot read the file");
+ }catch(IOException e){
+ System.err.println("Error: File not found");
+ }catch(WriterException e) {
+ System.err.println("Error: Cannot write to the file");
+// e.printStackTrace();
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
new file mode 100644
index 0000000..f11424c
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToJson.java
@@ -0,0 +1,298 @@
+package org.apache.taverna.tavlang.tools.convert;
+
+/*
+ * 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 java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.taverna.scufl2.api.annotation.Annotation;
+import org.apache.taverna.scufl2.api.annotation.Revision;
+import org.apache.taverna.scufl2.api.common.Child;
+import org.apache.taverna.scufl2.api.common.Ported;
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.common.URITools;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.BlockingControlLink;
+import org.apache.taverna.scufl2.api.core.ControlLink;
+import org.apache.taverna.scufl2.api.core.DataLink;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleWriter;
+import org.apache.taverna.scufl2.api.io.WriterException;
+import org.apache.taverna.scufl2.api.port.DepthPort;
+import org.apache.taverna.scufl2.api.port.GranularDepthPort;
+import org.apache.taverna.scufl2.api.port.Port;
+import org.apache.taverna.scufl2.api.profiles.Profile;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
+
+public class ToJson {
+ public class JsonWriter implements WorkflowBundleWriter {
+
+ @Override
+ public Set<String> getMediaTypes() {
+ return new HashSet<String>(Arrays.asList("application/ld+json",
+ "application/json"));
+ }
+
+ @Override
+ public void writeBundle(WorkflowBundle wfBundle, File destination,
+ String mediaType) throws WriterException, IOException {
+ ObjectNode json = toJson(wfBundle);
+ mapper.writeValue(destination, json);
+ }
+
+ @Override
+ public void writeBundle(WorkflowBundle wfBundle, OutputStream output,
+ String mediaType) throws WriterException, IOException {
+ ObjectNode json = toJson(wfBundle);
+ mapper.writeValue(output, json);
+ }
+
+ }
+
+
+ private WorkflowBundleIO io = new WorkflowBundleIO();;
+
+ private WorkflowBundleWriter jsonWriter = new JsonWriter();
+
+ private ObjectMapper mapper = new ObjectMapper();
+
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ private URITools uriTools = new URITools();
+
+ public ToJson() {
+ mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+ mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ mapper.setDateFormat(new ISO8601DateFormat());
+
+ // Adding custom writer dynamically
+ List<WorkflowBundleWriter> writers = io.getWriters();
+ writers.add(jsonWriter);
+ io.setWriters(writers);
+ }
+
+ protected void addPorts(Ported ported, ObjectNode p) {
+ ArrayNode inputs = mapper.createArrayNode();
+ for (Port port : ported.getInputPorts()) {
+ inputs.add(toJson(port));
+ }
+ p.put("inputs", inputs);
+
+ ArrayNode outputs = mapper.createArrayNode();
+ for (Port port : ported.getOutputPorts()) {
+ outputs.add(toJson(port));
+ // FIXME: Do we need the id for ports? Needed if we add datalinks
+ }
+ p.put("outputs", outputs);
+ }
+
+ protected ObjectNode annotations(Child<?> bean) {
+ ObjectNode node = mapper.createObjectNode();
+ for (Annotation ann : scufl2Tools.annotationsFor(bean)) {
+ URI annUri = uriTools.uriForBean(ann);
+
+ // TODO: include annotation body?
+ }
+ return node;
+ }
+
+ public void convert(File in, File out) throws ReaderException, IOException,
+ WriterException {
+ String filename = in.getName();
+ filename = filename.replaceFirst("\\..*", ".json");
+ File workflowFile = new File(out.getAbsolutePath(), filename);
+
+ WorkflowBundle wfBundle = io.readBundle(in, null);
+ io.writeBundle(wfBundle, workflowFile, "application/ld+json");
+// System.out.println(workflowFile);
+
+ }
+
+ protected ObjectNode toJson(Port port) {
+ ObjectNode p = mapper.createObjectNode();
+ p.put("name", port.getName());
+ p.putPOJO("id",
+ uriTools.relativeUriForBean(port, scufl2Tools.findParent(
+ WorkflowBundle.class, ((Child<?>) port))));
+
+ if (port instanceof DepthPort) {
+ DepthPort depthPort = (DepthPort) port;
+ if (depthPort.getDepth() != null) {
+ p.put("depth", depthPort.getDepth());
+ }
+ }
+ if (port instanceof GranularDepthPort) {
+ GranularDepthPort granularDepthPort = (GranularDepthPort) port;
+ if (granularDepthPort.getGranularDepth() != null
+ && !granularDepthPort.getGranularDepth().equals(
+ granularDepthPort.getDepth())) {
+ p.put("granularDepth", granularDepthPort.getGranularDepth());
+ }
+ }
+ p.putAll(annotations((Child<?>) port));
+ return p;
+ }
+
+ protected JsonNode toJson(Processor proc) {
+ ObjectNode p = mapper.createObjectNode();
+ p.putPOJO("id",
+ uriTools.relativeUriForBean(proc, proc.getParent().getParent()));
+ p.put("name", proc.getName());
+ addPorts(proc, p);
+ p.putAll(annotations(proc));
+
+ List<Workflow> nested = scufl2Tools.nestedWorkflowsForProcessor(proc,
+ proc.getParent().getParent().getMainProfile());
+ if (!nested.isEmpty()) {
+ if (nested.size() == 1) {
+ p.put("nestedWorkflow", toJson(nested.iterator().next()));
+ } else {
+ ArrayNode list = mapper.createArrayNode();
+ for (Workflow w : nested) {
+ list.add(toJson(w));
+ }
+ p.put("nestedWorkflow", list);
+ }
+ }
+ return p;
+ }
+
+ protected JsonNode toJson(Revision currentRevision) {
+ ArrayNode revisions = mapper.createArrayNode();
+ while (currentRevision != null) {
+ ObjectNode rev = mapper.createObjectNode();
+ rev.putPOJO("id", currentRevision.getIdentifier());
+ if (currentRevision.getGeneratedAtTime() != null) {
+ rev.putPOJO("generatedAtTime",
+ currentRevision.getGeneratedAtTime());
+ }
+ currentRevision = currentRevision.getPreviousRevision();
+ if (currentRevision != null) {
+ rev.putPOJO("wasRevisionOf", currentRevision.getIdentifier());
+ }
+ revisions.add(rev);
+ }
+ return revisions;
+ }
+
+ protected ObjectNode toJson(Workflow workflow) {
+ ObjectNode wf = mapper.createObjectNode();
+
+ wf.putPOJO("id",
+ uriTools.relativeUriForBean(workflow, workflow.getParent()));
+
+ wf.put("name", workflow.getName());
+ wf.put("revisions", toJson(workflow.getCurrentRevision()));
+
+ ArrayNode processors = mapper.createArrayNode();
+ for (Processor p : workflow.getProcessors()) {
+ processors.add(toJson(p));
+ }
+ addPorts(workflow, wf);
+ wf.put("processors", processors);
+
+ ArrayNode datalinks = mapper.createArrayNode();
+ for (DataLink link : workflow.getDataLinks()) {
+ datalinks.add(toJson(link));
+ }
+ wf.put("datalinks", datalinks);
+
+ ArrayNode controlLinks = mapper.createArrayNode();
+ for (ControlLink link : workflow.getControlLinks()) {
+ controlLinks.add(toJson(link));
+ }
+ wf.put("controllinks", controlLinks);
+
+ wf.putAll(annotations(workflow));
+
+ return wf;
+ }
+
+ protected JsonNode toJson(ControlLink link) {
+ ObjectNode l = mapper.createObjectNode();
+ if (link instanceof BlockingControlLink) {
+ BlockingControlLink controlLink = (BlockingControlLink) link;
+ l.putPOJO("block", uriTools.relativeUriForBean(
+ controlLink.getBlock(), link.getParent().getParent()));
+ l.putPOJO("untilFinished", uriTools.relativeUriForBean(controlLink
+ .getUntilFinished(), link.getParent().getParent()));
+ }
+ return l;
+ }
+
+ protected JsonNode toJson(DataLink link) {
+ ObjectNode l = mapper.createObjectNode();
+ l.putPOJO("receivesFrom", uriTools.relativeUriForBean(
+ link.getReceivesFrom(), link.getParent().getParent()));
+ l.putPOJO("sendsTo", uriTools.relativeUriForBean(link.getSendsTo(),
+ link.getParent().getParent()));
+ if (link.getMergePosition() != null) {
+ l.put("mergePosition", link.getMergePosition());
+ }
+ return l;
+ }
+
+ public ObjectNode toJson(WorkflowBundle wfBundle) {
+
+ ObjectNode root = mapper.createObjectNode();
+ ArrayNode contextList = root.arrayNode();
+ root.put("@context", contextList);
+ ObjectNode context = root.objectNode();
+ contextList.add("https://w3id.org/scufl2/context");
+ contextList.add(context);
+ URI base = wfBundle.getGlobalBaseURI();
+ context.put("@base", base.toASCIIString());
+ root.put("id", base.toASCIIString());
+
+ // root.put("name", wfBundle.getName());
+ // root.put("revisions", toJson(wfBundle.getCurrentRevision()));
+
+ root.put("workflow", toJson(wfBundle.getMainWorkflow()));
+ root.put("profile", toJson(wfBundle.getMainProfile()));
+
+ return root;
+ }
+
+ private JsonNode toJson(Profile profile) {
+ ObjectNode pf = mapper.createObjectNode();
+
+ pf.putPOJO("id",
+ uriTools.relativeUriForBean(profile, profile.getParent()));
+ // TODO: Activities and configurations
+ return pf;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
new file mode 100644
index 0000000..6ab14bc
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/convert/ToRobundle.java
@@ -0,0 +1,66 @@
+package org.apache.taverna.tavlang.tools.convert;
+
+/*
+ * 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 java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.taverna.robundle.Bundle;
+import org.apache.taverna.robundle.Bundles;
+
+public class ToRobundle{
+
+ public ToRobundle(List<String> files, String out) throws Exception{
+
+ Logger logger = Logger.getLogger("");
+ //logger.setLevel(Level.FINER);
+ ConsoleHandler console = new ConsoleHandler();
+ console.setLevel(Level.FINEST);
+ logger.addHandler(console);
+ Logger.getLogger("org.researchobject").setLevel(Level.FINEST);
+
+ for(String f : files){
+ Path file = Paths.get(f);
+ convert(file);
+ }
+ }
+
+ //Recursive conversion
+ public ToRobundle(String type, String in, String out) {
+
+ }
+
+ public void convert(Path file) throws IOException{
+ try (Bundle bundle = Bundles.openBundle(file)) {
+
+// System.out.println(bundle.getManifest().toString());
+ bundle.getManifest().writeAsJsonLD();
+ bundle.getManifest().writeAsCombineManifest();
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
new file mode 100644
index 0000000..f93aadc
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ProcessorNames.java
@@ -0,0 +1,169 @@
+package org.apache.taverna.tavlang.tools.inspect;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import javax.xml.bind.JAXBException;
+
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.common.URITools;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.profiles.Profile;
+
+/*
+ * list the processor names used in the workflow.
+ * Supported formats: .t2flow, .wfbundle
+ * */
+
+public class ProcessorNames {
+
+ private List<String> fileList;
+
+ private String file2;
+
+ private Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ private URITools uriTools = new URITools();
+
+ public ProcessorNames(List<String> fileList, String file) throws ReaderException, IOException, JAXBException{
+ this.fileList = fileList;
+ this.file2 = file;
+ this.show();
+ }
+
+ public void show() throws ReaderException, IOException, JAXBException{
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ StringBuilder sb = new StringBuilder();
+
+ for(String file : this.fileList){
+ File file2 = new File(file);
+ if(file2.isDirectory()){
+ for(File f : file2.listFiles()){
+ WorkflowBundle wfb = io.readBundle(f, null);
+ System.out.println("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb));
+ sb.append("Processor tree of "+ f.getName() +" \n" +this.showProcessorTree(wfb) + "\n");
+ }
+ }else{
+ WorkflowBundle wfb = io.readBundle(new File(file), null);
+ System.out.println("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb));
+ sb.append("Processor tree of "+ file +" \n" +this.showProcessorTree(wfb) + "\n");
+ }
+
+
+ }
+
+ if(this.file2!=null){
+ File log = new File(file2);
+ FileWriter fw = new FileWriter(log);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(sb.toString());
+ bw.close();
+ fw.close();
+ System.out.println("Results were saved into " + file2);
+ }
+ }
+
+ private Workflow findNestedWorkflow(Processor processor) {
+ Profile profile = processor.getParent().getParent().getMainProfile();
+ return scufl2Tools.nestedWorkflowForProcessor(processor, profile);
+ }
+
+ private void findProcessors(WorkflowBundle ro, Workflow workflow,
+ DefaultMutableTreeNode parent) {
+ for (Processor processor : workflow.getProcessors()) {
+ DefaultMutableTreeNode processorNode = new DefaultMutableTreeNode(
+ processor.getName());
+ parent.add(processorNode);
+ Workflow wf = findNestedWorkflow(processor);
+ if (wf != null) {
+ findProcessors(ro, wf, processorNode);
+ }
+ }
+
+ }
+
+ public TreeModel makeProcessorTree(WorkflowBundle workflowBundle)
+ throws JAXBException, IOException {
+ Workflow workflow = workflowBundle.getMainWorkflow();
+ TreeModel treeModel = new DefaultTreeModel(new DefaultMutableTreeNode(
+ workflow.getName()));
+ DefaultMutableTreeNode parent = (DefaultMutableTreeNode) treeModel
+ .getRoot();
+
+ findProcessors(workflowBundle, workflow, parent);
+ return treeModel;
+ }
+
+ public List<String> showProcessorNames(WorkflowBundle ro)
+ throws JAXBException, IOException {
+ ArrayList<String> names = new ArrayList<String>();
+ for (Processor processor : ro.getMainWorkflow().getProcessors()) {
+ names.add(processor.getName());
+ }
+ Collections.sort(names);
+ return names;
+ }
+
+ public String showProcessorTree(WorkflowBundle ro) throws JAXBException,
+ IOException {
+ TreeModel treeModel = makeProcessorTree(ro);
+ return treeModelAsString(treeModel);
+ }
+
+ public String treeModelAsString(TreeModel treeModel) {
+ StringBuffer sb = new StringBuffer();
+ Object root = treeModel.getRoot();
+ treeModelAsString(treeModel, root, sb, "");
+ return sb.toString();
+ }
+
+ protected void treeModelAsString(TreeModel treeModel, Object parent,
+ StringBuffer sb, String indentation) {
+ sb.append(indentation);
+ int childCount = treeModel.getChildCount(parent);
+ if (childCount == 0) {
+ sb.append("- ");
+ } else {
+ sb.append("+ ");
+ indentation = indentation + " ";
+ }
+ sb.append(parent);
+ sb.append("\n");
+ for (int i = 0; i < childCount; i++) {
+ Object child = treeModel.getChild(parent, i);
+ treeModelAsString(treeModel, child, sb, indentation);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
new file mode 100644
index 0000000..ddff2ab
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/inspect/ServiceTypes.java
@@ -0,0 +1,112 @@
+package org.apache.taverna.tavlang.tools.inspect;
+
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.activity.Activity;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.profiles.Profile;
+
+/*
+ * List the service types used in workflow.
+ * Supported file formats : .wfbundle, .t2flow
+ * */
+
+public class ServiceTypes {
+
+ private List<String> filesList;
+ private Set<String> types = new LinkedHashSet<String>();
+ private String save;
+
+ public ServiceTypes(List<String> filesList, String file) throws IOException, ReaderException{
+ this.filesList = filesList;
+ this.save = file;
+ this.service();
+
+ }
+
+ public void service() throws ReaderException, IOException{
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ StringBuilder sb = new StringBuilder();
+
+ for (String filepath : filesList) {
+ File file = new File(filepath);
+
+ if(file.isDirectory()){
+ for(File f : file.listFiles()){
+ WorkflowBundle wfBundle = io.readBundle(f, null);
+ System.out.println("Service types used in " + f.getCanonicalPath() + " :" +"\n");
+ sb.append("Service types used in " + f.getCanonicalPath() + " :");
+ for (Profile profile : wfBundle.getProfiles()) {
+ for (Activity activity : profile.getActivities()) {
+ this.types.add(activity.getType().toASCIIString());
+ }
+ }
+ for(String t : types){
+ System.out.println(t);
+ sb.append(t + "\n");
+ }
+ System.out.println("\n**************************************************\n");
+ sb.append("\n**************************************************\n");
+ }
+ }else{
+ // mediaType = null --> guess
+ WorkflowBundle wfBundle = io.readBundle(file, null);
+ System.out.println("Service types used in " + file.getCanonicalPath() + " :" + "\n");
+ sb.append("Service types used in " + file.getCanonicalPath() + " :");
+ for (Profile profile : wfBundle.getProfiles()) {
+ for (Activity activity : profile.getActivities()) {
+ this.types.add(activity.getType().toASCIIString());
+ }
+ }
+ for(String t : types){
+ System.out.println(t);
+ sb.append(t + "\n");
+ }
+
+ System.out.println("\n**************************************************\n");
+ sb.append("\n**************************************************\n");
+ }
+ }
+
+ if(save!=null){
+ File log = new File(save);
+ FileWriter fw = new FileWriter(log);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(sb.toString());
+ bw.close();
+ fw.close();
+ System.out.println("Results were saved into " + save);
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
new file mode 100644
index 0000000..7daa38e
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/stats/GetWfStat.java
@@ -0,0 +1,193 @@
+package org.apache.taverna.tavlang.tools.stats;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.taverna.scufl2.api.common.NamedSet;
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.ControlLink;
+import org.apache.taverna.scufl2.api.core.DataLink;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.api.port.InputPort;
+import org.apache.taverna.scufl2.api.port.OutputPort;
+
+public class GetWfStat {
+
+ private NamedSet<Workflow> set;
+ private String logFile;
+ private boolean verbose;
+ private StringBuilder str_verb = new StringBuilder();
+ private StringBuilder str_nverb = new StringBuilder();
+
+
+ //If given file is a workflow file
+ public GetWfStat(List<String> wf_files, String log, boolean verbose){
+ this.logFile = log;
+ this.verbose = verbose;
+
+ for(String files : wf_files){
+ File f = new File(files);
+ if(f.isFile()){
+ this.read(f);
+
+ }else{
+ System.err.println("Error reading the file " + f.getName());
+ }
+ }
+
+ this.isVerbose();
+
+ if(log!=null){
+ this.writefile(this.str_verb.toString(), this.logFile);
+ }
+ }
+
+ //Read the workflow file and extract the resources.
+ //And append them to a String builder
+ public void read(File file){
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ try {
+ WorkflowBundle wf = io.readBundle(file, null);
+ this.set = wf.getWorkflows();
+
+ //String to be written to a file.
+ this.str_nverb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
+ this.str_verb.append(">>> Statistics of the workflow bundle: " + file.getName() + " <<<\n");
+
+ for(Workflow wrf : set){
+ //TODO :- Take each type of resource and make a system to view them to the user.
+ String name = "Name of the workflow = " + wrf.getName();
+ this.str_verb.append(name + "\n");
+ this.str_nverb.append(name + "\n");
+
+
+ String noP = " |--> Number of Processors = " + wrf.getProcessors().size();
+ this.str_verb.append(noP + "\n");
+ this.str_nverb.append(noP + "\n");
+
+ if(this.verbose && wrf.getProcessors().size()!=0){
+ this.str_verb.append(" | |--> Processors: " + "\n");
+
+ for(Processor p : wrf.getProcessors()){
+ this.str_verb.append(" | |--> " + p.getName() + "\n");
+ }
+ this.str_verb.append(" |" + "\n");
+ }
+
+ this.str_verb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
+ this.str_nverb.append(" |--> Number of Data Links = " + wrf.getDataLinks().size() + "\n");
+
+ if(this.verbose && wrf.getDataLinks().size()!=0){
+ this.str_verb.append(" | |--> Data Links" + "\n");
+
+ for(DataLink link : wrf.getDataLinks()){
+ this.str_verb.append(" | |--> " + link + "\n");
+ }
+ this.str_verb.append(" |" + "\n");
+ }
+
+ this.str_nverb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
+ this.str_verb.append(" |--> Number of Control Links = " + wrf.getControlLinks().size() + "\n");
+
+
+ if(this.verbose && wrf.getControlLinks().size()!=0){
+ this.str_verb.append(" | |--> Control Links\n");
+ for(ControlLink link : wrf.getControlLinks()){
+ this.str_verb.append(" | |--> " + link + "\n");
+ }
+ this.str_verb.append(" |\n");
+ }
+
+ this.str_nverb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
+ this.str_verb.append(" |--> Number of Input ports = " + wrf.getInputPorts().size()+"\n");
+
+
+ if(this.verbose && wrf.getInputPorts().size()!=0){
+ this.str_verb.append(" | |--> Input Ports\n");
+ for(InputPort iport : wrf.getInputPorts()){
+ this.str_verb.append(" | |--> " + iport.toString()+"\n");
+ }
+ this.str_verb.append(" |\n");
+ }
+
+ this.str_nverb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
+ this.str_verb.append(" |--> Number of Output Ports = " + wrf.getOutputPorts().size()+"\n");
+
+ if(this.verbose && wrf.getOutputPorts().size()!=0){
+ this.str_verb.append(" | |--> Output Ports\n");
+ for(OutputPort o_port : wrf.getOutputPorts()){
+ this.str_verb.append(" | |--> " + o_port.toString()+"\n");
+ }
+
+ this.str_verb.append("\n");
+ }
+
+ this.str_nverb.append("\n");
+ this.str_verb.append("\n");
+ }
+
+ } catch (ReaderException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ //Saving the output into a log
+ public void writefile(String report, String url){
+
+ File file = new File(url);
+
+ if(!file.isFile()){
+ System.err.println("Error in writing the log file...");
+ }
+
+ FileWriter writer;
+ BufferedWriter bfw;
+ try {
+ writer = new FileWriter(file);
+ bfw = new BufferedWriter(writer);
+ bfw.write(report);
+ bfw.close();
+ writer.close();
+ System.out.println("Results were saved into " + file.getPath());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public void isVerbose(){
+ if(verbose)
+ System.out.println(this.str_verb.toString());
+ else
+ System.out.println(this.str_nverb.toString());
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
new file mode 100644
index 0000000..fc05e3b
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/java/org/apache/taverna/tavlang/tools/validate/Validate.java
@@ -0,0 +1,151 @@
+package org.apache.taverna.tavlang.tools.validate;
+
+/*
+ * 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 java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidationListener;
+import org.apache.taverna.scufl2.validation.correctness.CorrectnessValidator;
+import org.apache.taverna.scufl2.validation.correctness.ReportCorrectnessValidationListener;
+
+/*
+ * Takes .wfbundle/ .t2flow as the input
+ * */
+public class Validate {
+
+ private String logfile;
+ private String nonVerbose = "";
+ private String finalrep = "";
+ private boolean verbose;
+ private boolean check = false;
+
+
+ public Validate(List<String> files, String file, boolean verbose) {
+ this.verbose = verbose;
+ this.logfile = file;
+ System.out.println("Validation started....");
+ for (String f : files) {
+ System.out.println("Validating " + f);
+ File wfile = new File(f);
+ read(wfile);
+
+ }
+ System.out.println("Validation completed.......");
+
+
+ if (this.logfile != null) {
+ saveToLog(this.finalrep);
+ }
+ }
+
+ public void read(File file) {
+ WorkflowBundleIO io = new WorkflowBundleIO();
+ try {
+ this.finalrep += validate(io.readBundle(file, null), file.getName());
+
+ } catch (ReaderException e) {
+ System.err.println(e.getMessage());
+
+ } catch (IOException e) {
+ System.err.println("Workflow bundle not found!");
+ System.err.println(e.getMessage());
+
+ }
+ }
+
+ public String validate(WorkflowBundle wfb, String file) {
+
+ StringBuilder report2 = new StringBuilder();
+ CorrectnessValidationListener correctnessValidationListener = new ReportCorrectnessValidationListener();
+ CorrectnessValidator correctnessValidator = new CorrectnessValidator();
+ correctnessValidationListener = correctnessValidator.validate(wfb);
+ String report = correctnessValidationListener.toString().replace(
+ "ReportCorrectnessValidationListener [", "");
+
+ String[] sections = report.split(", ");
+
+
+
+ boolean detect = correctnessValidationListener.detectedProblems();
+ if (!detect){
+ report2.append("The workflow " + file + " has no errors. \n\n");
+ this.nonVerbose = "The workflow " + file + " has no errors. \n";
+ }
+
+
+// System.out.println("The validation report for " + file);
+ report2.append("The validation report for " + file + "......\n");
+ report2.append("-------------------------------------------------------------------------------- \n");
+ for (int i = 0; i < sections.length; i++) {
+ String line = "-->"+sections[i].split("=")[0].replace("()", "").replace(
+ "get", "")
+ + ":- ";
+ report2.append(line);
+ String line2 = sections[i].split("=")[1].replace("[", "").replace("]","");
+ if(line2.equals("")) report2.append("null \n\n");
+ else report2.append("\t").append(line2).append("\n");
+
+
+ }
+ report2.append("--------------------------------------------------------------------------------- \n\n");
+
+ if(detect){
+ System.out.println("The workflow bundle has following problems: \n"+report2.toString());
+ check = true;
+ }
+
+ if(verbose){
+ System.out.println(report2.toString());
+ }else{
+ System.out.println(this.nonVerbose);
+ }
+
+ return report2.toString();
+
+ }
+
+ public void saveToLog(String s) {
+ File logFile = new File(this.logfile);
+ FileWriter logwriter;
+ try {
+ logwriter = new FileWriter(logFile);
+ BufferedWriter blw = new BufferedWriter(logwriter);
+ blw.write(s);
+ blw.close();
+ logwriter.close();
+ System.out.println("Results were saved into " + logFile.getPath());
+ } catch (IOException e) {
+ System.err.println("Error writing to the file \n" + e.getMessage());
+ }
+
+ }
+
+ public boolean getCheck(){
+ return this.check;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/resources/.gitignore b/taverna-tavlang-tool/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/main/resources/META-INF/NOTICE b/taverna-tavlang-tool/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000..370a8fc
--- /dev/null
+++ b/taverna-tavlang-tool/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,7 @@
+Apache Taverna Language
+Copyright 2010-2014 University of Manchester, UK
+Copyright 2014-2015 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/java/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/java/.gitignore b/taverna-tavlang-tool/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
new file mode 100644
index 0000000..6beaa8e
--- /dev/null
+++ b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/CommandLineTest.java
@@ -0,0 +1,43 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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 org.apache.taverna.tavlang.CommandLineTool;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CommandLineTest {
+ CommandLineTool commandLineTool = new CommandLineTool();
+
+ @Test
+ public void testHelp(){
+ commandLineTool.parse();
+ commandLineTool.parse("version");
+ commandLineTool.parse("help");
+ commandLineTool.parse("help", "convert");
+ commandLineTool.parse("help", "inspect");
+ commandLineTool.parse("help", "validate");
+ commandLineTool.parse("help", "help");
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
new file mode 100644
index 0000000..a920db2
--- /dev/null
+++ b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestConvert.java
@@ -0,0 +1,34 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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 org.junit.Test;
+
+public class TestConvert{
+
+ @Test
+ public void testConvertS() {
+// fail("Not yet implemented");
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
new file mode 100644
index 0000000..4c22377
--- /dev/null
+++ b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestStats.java
@@ -0,0 +1,34 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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 org.junit.Test;
+
+public class TestStats {
+
+ @Test
+ public void test() {
+// fail("Not yet implemented");
+ }
+
+}
[04/11] incubator-taverna-language git commit: Command line module
removed
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestTools.java b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
deleted file mode 100644
index 483d4c3..0000000
--- a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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.util.HashMap;
-
-import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
-import org.junit.Test;
-import org.junit.*;
-
-/*
- * Test cases for the Tools Class.
- * Input :- The output file format
- * Output:- The relevant writer media type for that file format
- *
- * */
-
-public class TestTools {
-
- private ConvertionTools tools;
- private HashMap<String, String> map = new HashMap<>();
-
-
- @Before
- public void setMap(){
- this.map.put("wfdesc", "text/vnd.wf4ever.wfdesc+turtle");
- this.map.put("iwir", "application/vnd.shiwa.iwir+xml");
- this.map.put("json", "application/ld+json");
- this.map.put("wfbundle", "application/vnd.taverna.scufl2.workflow-bundle");
- this.map.put("robundle", null);
- }
-
-
- @Test
- public void testWfdesc() {
- assertEquals(map.get("wfdesc"), ConvertionTools.valueOf("wfdesc").getMediaType(tools));
- }
-
- @Test
- public void testIwir() {
- assertEquals(map.get("iwir"), ConvertionTools.valueOf("iwir").getMediaType(tools));
- }
-
- @Test
- public void testJson() {
- assertEquals(map.get("json"), ConvertionTools.valueOf("json").getMediaType(tools));
- }
-
-
- @Test
- public void testWfbundle() {
- assertEquals(map.get("wfbundle"), ConvertionTools.valueOf("wfbundle").getMediaType(tools));
- }
-
-
- @Test
- public void testRobundle() {
- assertEquals(map.get("robundle"), ConvertionTools.valueOf("robundle").getMediaType(tools));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
deleted file mode 100644
index 58e0d3f..0000000
--- a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.apache.taverna.tavlang.test;
-
-/*
- * 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.awt.List;
-import java.util.ArrayList;
-
-import org.apache.taverna.robundle.Bundle;
-import org.apache.taverna.tavlang.tools.validate.Validate;
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.google.common.collect.Lists;
-
-public class TestValidate {
-
-
-
- @Test
- public void test() {
- ArrayList<String> list = Lists.newArrayList();
- list.add("src/test/resources/workflows/t2flow/as.t2flow");
- Validate val = new Validate(list, null, false);
-
- assertEquals(false, val.getCheck());
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/resources/.gitignore b/taverna-language-commandline/src/test/resources/.gitignore
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/66a8cfd1/taverna-language-commandline/src/test/resources/workflows/t2flow/as.t2flow
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/resources/workflows/t2flow/as.t2flow b/taverna-language-commandline/src/test/resources/workflows/t2flow/as.t2flow
deleted file mode 100644
index fcb7d09..0000000
--- a/taverna-language-commandline/src/test/resources/workflows/t2flow/as.t2flow
+++ /dev/null
@@ -1,1674 +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.
--->
-<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.1.0">
- <dataflow id="92c5e8d5-8360-4f86-a845-09c9849cbdc5" role="top">
- <name>Workflow1</name>
- <inputPorts />
- <outputPorts>
- <port>
- <name>asdasd</name>
- <annotations />
- </port>
- </outputPorts>
- <processors>
- <processor>
- <name>Workflow19</name>
- <inputPorts>
- <port>
- <name>lk</name>
- <depth>0</depth>
- </port>
- </inputPorts>
- <outputPorts>
- <port>
- <name>kk</name>
- <depth>0</depth>
- <granularDepth>0</granularDepth>
- </port>
- <port>
- <name>String_constant_value</name>
- <depth>0</depth>
- <granularDepth>0</granularDepth>
- </port>
- </outputPorts>
- <annotations />
- <activities>
- <activity>
- <raven>
- <group>net.sf.taverna.t2.activities</group>
- <artifact>dataflow-activity</artifact>
- <version>1.0</version>
- </raven>
- <class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class>
- <inputMap>
- <map from="lk" to="lk" />
- </inputMap>
- <outputMap>
- <map from="String_constant_value" to="String_constant_value" />
- <map from="kk" to="kk" />
- </outputMap>
- <configBean encoding="dataflow">
- <dataflow ref="c451b1cf-1c95-47e5-b89c-537a5501a1ef" />
- </configBean>
- <annotations />
- </activity>
- </activities>
- <dispatchStack>
- <dispatchLayer>
- <raven>
- <group>net.sf.taverna.t2.core</group>
- <artifact>workflowmodel-impl</artifact>
- <version>1.0</version>
- </raven>
- <class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
- <configBean encoding="xstream">
- <net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
- </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
- </configBean>
- </dispatchLayer>
- <dispatchLayer>
- <raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="lk" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings</name>
-<inputPorts>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string2" depth="0" />
-<port name="string1" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings_2</name>
-<inputPorts>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string2" depth="0" />
-<port name="string1" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Create_Lots_Of_Strings</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>strings</name>
-<depth>1</depth>
-<granularDepth>1</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap />
-<outputMap>
-<map from="strings" to="strings" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName>
- <script>List strings = new ArrayList();
-for (int i = 0; i < 40; i++) {
- strings.add("String" + i);
-}
-</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs />
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>1</granularDepth>
- <name>strings</name>
- <depth>1</depth>
- <mimeTypes>
- <string>l('text/plain')</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings_3</name>
-<inputPorts>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string1" depth="0" />
-<port name="string2" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>String_constant</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>value</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>stringconstant-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
-<inputMap />
-<outputMap>
-<map from="value" to="value" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
- <value>Add your own value here</value>
-</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Concatenate_two_strings_4</name>
-<inputPorts>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string1" depth="0" />
-<port name="string2" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>Echo_List</name>
-<inputPorts>
-<port>
-<name>inputlist</name>
-<depth>1</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>outputlist</name>
-<depth>1</depth>
-<granularDepth>1</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="inputlist" to="inputlist" />
-</inputMap>
-<outputMap>
-<map from="outputlist" to="outputlist" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.EchoList</localworkerName>
- <script>outputlist = inputlist;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>[B</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>inputlist</name>
- <depth>1</depth>
- <mimeTypes>
- <string>l('')</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>1</granularDepth>
- <name>outputlist</name>
- <depth>1</depth>
- <mimeTypes>
- <string>l('')</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="inputlist" depth="1" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-</processors>
-<conditions />
-<datalinks>
-<datalink>
-<sink type="processor">
-<processor>Workflow19</processor>
-<port>lk</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings_2</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>Create_Lots_Of_Strings</processor>
-<port>strings</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_2</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>Create_Lots_Of_Strings</processor>
-<port>strings</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_2</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>Create_Lots_Of_Strings</processor>
-<port>strings</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_3</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>Workflow19</processor>
-<port>kk</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_3</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>String_constant</processor>
-<port>value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_4</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>String_constant</processor>
-<port>value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings_4</processor>
-<port>string2</port>
-</sink>
-<source type="processor">
-<processor>Workflow19</processor>
-<port>String_constant_value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="merge">
-<processor>Echo_List</processor>
-<port>inputlist</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings_4</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="merge">
-<processor>Echo_List</processor>
-<port>inputlist</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings_3</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="dataflow">
-<port>asdasd</port>
-</sink>
-<source type="processor">
-<processor>Echo_List</processor>
-<port>outputlist</port>
-</source>
-</datalink>
-</datalinks>
-<annotations />
-</dataflow>
-<dataflow id="c451b1cf-1c95-47e5-b89c-537a5501a1ef" role="nested">
-<name>Workflow19</name>
-<inputPorts>
-<port>
-<name>lk</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-<annotations />
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>kk</name>
-<annotations />
-</port>
-<port>
-<name>String_constant_value</name>
-<annotations />
-</port>
-</outputPorts>
-<processors>
-<processor>
-<name>Concatenate_two_strings</name>
-<inputPorts>
-<port>
-<name>string1</name>
-<depth>0</depth>
-</port>
-<port>
-<name>string2</name>
-<depth>0</depth>
-</port>
-</inputPorts>
-<outputPorts>
-<port>
-<name>output</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>localworker-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-<inputMap>
-<map from="string2" to="string2" />
-<map from="string1" to="string1" />
-</inputMap>
-<outputMap>
-<map from="output" to="output" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
- <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
- <script>output = string1 + string2;</script>
- <dependencies />
- <classLoaderSharing>workflow</classLoaderSharing>
- <localDependencies />
- <artifactDependencies />
- <inputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string1</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- <handledReferenceSchemes />
- <translatedElementType>java.lang.String</translatedElementType>
- <allowsLiteralValues>true</allowsLiteralValues>
- <name>string2</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
- </inputs>
- <outputs>
- <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- <granularDepth>0</granularDepth>
- <name>output</name>
- <depth>0</depth>
- <mimeTypes>
- <string>'text/plain'</string>
- </mimeTypes>
- </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
- </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy>
-<cross>
-<port name="string1" depth="0" />
-<port name="string2" depth="0" />
-</cross>
-</strategy>
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>string1_value</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>value</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>stringconstant-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
-<inputMap />
-<outputMap>
-<map from="value" to="value" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
- <value>kjkj</value>
-</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-<processor>
-<name>String_constant</name>
-<inputPorts />
-<outputPorts>
-<port>
-<name>value</name>
-<depth>0</depth>
-<granularDepth>0</granularDepth>
-</port>
-</outputPorts>
-<annotations />
-<activities>
-<activity>
-<raven>
-<group>net.sf.taverna.t2.activities</group>
-<artifact>stringconstant-activity</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
-<inputMap />
-<outputMap>
-<map from="value" to="value" />
-</outputMap>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
- <value>Add your own value here</value>
-</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
-</configBean>
-<annotations />
-</activity>
-</activities>
-<dispatchStack>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
- <maxJobs>1</maxJobs>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
-<configBean encoding="xstream">
-<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
- <backoffFactor>1.0</backoffFactor>
- <initialDelay>1000</initialDelay>
- <maxDelay>5000</maxDelay>
- <maxRetries>0</maxRetries>
-</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
-</configBean>
-</dispatchLayer>
-<dispatchLayer>
-<raven>
-<group>net.sf.taverna.t2.core</group>
-<artifact>workflowmodel-impl</artifact>
-<version>1.0</version>
-</raven>
-<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
-<configBean encoding="xstream">
-<null xmlns="" />
-</configBean>
-</dispatchLayer>
-</dispatchStack>
-<iterationStrategyStack>
-<iteration>
-<strategy />
-</iteration>
-</iterationStrategyStack>
-</processor>
-</processors>
-<conditions>
-<condition control="Concatenate_two_strings" target="String_constant" />
-</conditions>
-<datalinks>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string1</port>
-</sink>
-<source type="processor">
-<processor>string1_value</processor>
-<port>value</port>
-</source>
-</datalink>
-<datalink>
-<sink type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>string2</port>
-</sink>
-<source type="dataflow">
-<port>lk</port>
-</source>
-</datalink>
-<datalink>
-<sink type="dataflow">
-<port>kk</port>
-</sink>
-<source type="processor">
-<processor>Concatenate_two_strings</processor>
-<port>output</port>
-</source>
-</datalink>
-<datalink>
-<sink type="dataflow">
-<port>String_constant_value</port>
-</sink>
-<source type="processor">
-<processor>String_constant</processor>
-<port>value</port>
-</source>
-</datalink>
-</datalinks>
-<annotations />
-</dataflow>
-</workflow>
\ No newline at end of file
[06/11] incubator-taverna-language git commit: Module rename : added -
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
new file mode 100644
index 0000000..483d4c3
--- /dev/null
+++ b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestTools.java
@@ -0,0 +1,80 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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.util.HashMap;
+
+import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
+import org.junit.Test;
+import org.junit.*;
+
+/*
+ * Test cases for the Tools Class.
+ * Input :- The output file format
+ * Output:- The relevant writer media type for that file format
+ *
+ * */
+
+public class TestTools {
+
+ private ConvertionTools tools;
+ private HashMap<String, String> map = new HashMap<>();
+
+
+ @Before
+ public void setMap(){
+ this.map.put("wfdesc", "text/vnd.wf4ever.wfdesc+turtle");
+ this.map.put("iwir", "application/vnd.shiwa.iwir+xml");
+ this.map.put("json", "application/ld+json");
+ this.map.put("wfbundle", "application/vnd.taverna.scufl2.workflow-bundle");
+ this.map.put("robundle", null);
+ }
+
+
+ @Test
+ public void testWfdesc() {
+ assertEquals(map.get("wfdesc"), ConvertionTools.valueOf("wfdesc").getMediaType(tools));
+ }
+
+ @Test
+ public void testIwir() {
+ assertEquals(map.get("iwir"), ConvertionTools.valueOf("iwir").getMediaType(tools));
+ }
+
+ @Test
+ public void testJson() {
+ assertEquals(map.get("json"), ConvertionTools.valueOf("json").getMediaType(tools));
+ }
+
+
+ @Test
+ public void testWfbundle() {
+ assertEquals(map.get("wfbundle"), ConvertionTools.valueOf("wfbundle").getMediaType(tools));
+ }
+
+
+ @Test
+ public void testRobundle() {
+ assertEquals(map.get("robundle"), ConvertionTools.valueOf("robundle").getMediaType(tools));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
new file mode 100644
index 0000000..58e0d3f
--- /dev/null
+++ b/taverna-tavlang-tool/src/test/java/org/apache/taverna/tavlang/test/TestValidate.java
@@ -0,0 +1,49 @@
+package org.apache.taverna.tavlang.test;
+
+/*
+ * 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.awt.List;
+import java.util.ArrayList;
+
+import org.apache.taverna.robundle.Bundle;
+import org.apache.taverna.tavlang.tools.validate.Validate;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+public class TestValidate {
+
+
+
+ @Test
+ public void test() {
+ ArrayList<String> list = Lists.newArrayList();
+ list.add("src/test/resources/workflows/t2flow/as.t2flow");
+ Validate val = new Validate(list, null, false);
+
+ assertEquals(false, val.getCheck());
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/resources/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/resources/.gitignore b/taverna-tavlang-tool/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3aa91bf8/taverna-tavlang-tool/src/test/resources/workflows/t2flow/as.t2flow
----------------------------------------------------------------------
diff --git a/taverna-tavlang-tool/src/test/resources/workflows/t2flow/as.t2flow b/taverna-tavlang-tool/src/test/resources/workflows/t2flow/as.t2flow
new file mode 100644
index 0000000..2d9f127
--- /dev/null
+++ b/taverna-tavlang-tool/src/test/resources/workflows/t2flow/as.t2flow
@@ -0,0 +1,1674 @@
+<?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.
+-->
+<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.1.0">
+ <dataflow id="92c5e8d5-8360-4f86-a845-09c9849cbdc5" role="top">
+ <name>Workflow1</name>
+ <inputPorts />
+ <outputPorts>
+ <port>
+ <name>asdasd</name>
+ <annotations />
+ </port>
+ </outputPorts>
+ <processors>
+ <processor>
+ <name>Workflow19</name>
+ <inputPorts>
+ <port>
+ <name>lk</name>
+ <depth>0</depth>
+ </port>
+ </inputPorts>
+ <outputPorts>
+ <port>
+ <name>kk</name>
+ <depth>0</depth>
+ <granularDepth>0</granularDepth>
+ </port>
+ <port>
+ <name>String_constant_value</name>
+ <depth>0</depth>
+ <granularDepth>0</granularDepth>
+ </port>
+ </outputPorts>
+ <annotations />
+ <activities>
+ <activity>
+ <raven>
+ <group>net.sf.taverna.t2.activities</group>
+ <artifact>dataflow-activity</artifact>
+ <version>1.0</version>
+ </raven>
+ <class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class>
+ <inputMap>
+ <map from="lk" to="lk" />
+ </inputMap>
+ <outputMap>
+ <map from="String_constant_value" to="String_constant_value" />
+ <map from="kk" to="kk" />
+ </outputMap>
+ <configBean encoding="dataflow">
+ <dataflow ref="c451b1cf-1c95-47e5-b89c-537a5501a1ef" />
+ </configBean>
+ <annotations />
+ </activity>
+ </activities>
+ <dispatchStack>
+ <dispatchLayer>
+ <raven>
+ <group>net.sf.taverna.t2.core</group>
+ <artifact>workflowmodel-impl</artifact>
+ <version>1.0</version>
+ </raven>
+ <class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+ <configBean encoding="xstream">
+ <net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+ </configBean>
+ </dispatchLayer>
+ <dispatchLayer>
+ <raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="lk" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings</name>
+<inputPorts>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string2" depth="0" />
+<port name="string1" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings_2</name>
+<inputPorts>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string2" depth="0" />
+<port name="string1" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Create_Lots_Of_Strings</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>strings</name>
+<depth>1</depth>
+<granularDepth>1</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap />
+<outputMap>
+<map from="strings" to="strings" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName>
+ <script>List strings = new ArrayList();
+for (int i = 0; i < 40; i++) {
+ strings.add("String" + i);
+}
+</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs />
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>1</granularDepth>
+ <name>strings</name>
+ <depth>1</depth>
+ <mimeTypes>
+ <string>l('text/plain')</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings_3</name>
+<inputPorts>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string1" depth="0" />
+<port name="string2" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>String_constant</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>value</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>stringconstant-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
+<inputMap />
+<outputMap>
+<map from="value" to="value" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+ <value>Add your own value here</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Concatenate_two_strings_4</name>
+<inputPorts>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string1" depth="0" />
+<port name="string2" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>Echo_List</name>
+<inputPorts>
+<port>
+<name>inputlist</name>
+<depth>1</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>outputlist</name>
+<depth>1</depth>
+<granularDepth>1</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="inputlist" to="inputlist" />
+</inputMap>
+<outputMap>
+<map from="outputlist" to="outputlist" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.EchoList</localworkerName>
+ <script>outputlist = inputlist;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>[B</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>inputlist</name>
+ <depth>1</depth>
+ <mimeTypes>
+ <string>l('')</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>1</granularDepth>
+ <name>outputlist</name>
+ <depth>1</depth>
+ <mimeTypes>
+ <string>l('')</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="inputlist" depth="1" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+</processors>
+<conditions />
+<datalinks>
+<datalink>
+<sink type="processor">
+<processor>Workflow19</processor>
+<port>lk</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings_2</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>Create_Lots_Of_Strings</processor>
+<port>strings</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_2</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>Create_Lots_Of_Strings</processor>
+<port>strings</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_2</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>Create_Lots_Of_Strings</processor>
+<port>strings</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_3</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>Workflow19</processor>
+<port>kk</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_3</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>String_constant</processor>
+<port>value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_4</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>String_constant</processor>
+<port>value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings_4</processor>
+<port>string2</port>
+</sink>
+<source type="processor">
+<processor>Workflow19</processor>
+<port>String_constant_value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="merge">
+<processor>Echo_List</processor>
+<port>inputlist</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings_4</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="merge">
+<processor>Echo_List</processor>
+<port>inputlist</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings_3</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="dataflow">
+<port>asdasd</port>
+</sink>
+<source type="processor">
+<processor>Echo_List</processor>
+<port>outputlist</port>
+</source>
+</datalink>
+</datalinks>
+<annotations />
+</dataflow>
+<dataflow id="c451b1cf-1c95-47e5-b89c-537a5501a1ef" role="nested">
+<name>Workflow19</name>
+<inputPorts>
+<port>
+<name>lk</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+<annotations />
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>kk</name>
+<annotations />
+</port>
+<port>
+<name>String_constant_value</name>
+<annotations />
+</port>
+</outputPorts>
+<processors>
+<processor>
+<name>Concatenate_two_strings</name>
+<inputPorts>
+<port>
+<name>string1</name>
+<depth>0</depth>
+</port>
+<port>
+<name>string2</name>
+<depth>0</depth>
+</port>
+</inputPorts>
+<outputPorts>
+<port>
+<name>output</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>localworker-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
+<inputMap>
+<map from="string2" to="string2" />
+<map from="string1" to="string1" />
+</inputMap>
+<outputMap>
+<map from="output" to="output" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
+ <script>output = string1 + string2;</script>
+ <dependencies />
+ <classLoaderSharing>workflow</classLoaderSharing>
+ <localDependencies />
+ <artifactDependencies />
+ <inputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string1</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ <handledReferenceSchemes />
+ <translatedElementType>java.lang.String</translatedElementType>
+ <allowsLiteralValues>true</allowsLiteralValues>
+ <name>string2</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+ </inputs>
+ <outputs>
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ <granularDepth>0</granularDepth>
+ <name>output</name>
+ <depth>0</depth>
+ <mimeTypes>
+ <string>'text/plain'</string>
+ </mimeTypes>
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+ </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy>
+<cross>
+<port name="string1" depth="0" />
+<port name="string2" depth="0" />
+</cross>
+</strategy>
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>string1_value</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>value</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>stringconstant-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
+<inputMap />
+<outputMap>
+<map from="value" to="value" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+ <value>kjkj</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+<processor>
+<name>String_constant</name>
+<inputPorts />
+<outputPorts>
+<port>
+<name>value</name>
+<depth>0</depth>
+<granularDepth>0</granularDepth>
+</port>
+</outputPorts>
+<annotations />
+<activities>
+<activity>
+<raven>
+<group>net.sf.taverna.t2.activities</group>
+<artifact>stringconstant-activity</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class>
+<inputMap />
+<outputMap>
+<map from="value" to="value" />
+</outputMap>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+ <value>Add your own value here</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean>
+</configBean>
+<annotations />
+</activity>
+</activities>
+<dispatchStack>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+ <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class>
+<configBean encoding="xstream">
+<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
+ <backoffFactor>1.0</backoffFactor>
+ <initialDelay>1000</initialDelay>
+ <maxDelay>5000</maxDelay>
+ <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig>
+</configBean>
+</dispatchLayer>
+<dispatchLayer>
+<raven>
+<group>net.sf.taverna.t2.core</group>
+<artifact>workflowmodel-impl</artifact>
+<version>1.0</version>
+</raven>
+<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class>
+<configBean encoding="xstream">
+<null xmlns="" />
+</configBean>
+</dispatchLayer>
+</dispatchStack>
+<iterationStrategyStack>
+<iteration>
+<strategy />
+</iteration>
+</iterationStrategyStack>
+</processor>
+</processors>
+<conditions>
+<condition control="Concatenate_two_strings" target="String_constant" />
+</conditions>
+<datalinks>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string1</port>
+</sink>
+<source type="processor">
+<processor>string1_value</processor>
+<port>value</port>
+</source>
+</datalink>
+<datalink>
+<sink type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>string2</port>
+</sink>
+<source type="dataflow">
+<port>lk</port>
+</source>
+</datalink>
+<datalink>
+<sink type="dataflow">
+<port>kk</port>
+</sink>
+<source type="processor">
+<processor>Concatenate_two_strings</processor>
+<port>output</port>
+</source>
+</datalink>
+<datalink>
+<sink type="dataflow">
+<port>String_constant_value</port>
+</sink>
+<source type="processor">
+<processor>String_constant</processor>
+<port>value</port>
+</source>
+</datalink>
+</datalinks>
+<annotations />
+</dataflow>
+</workflow>
\ No newline at end of file