Some kind of POJOs for CWL Draft 4 (2016-05-20)

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/52bb54ed
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/52bb54ed
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/52bb54ed

Branch: refs/heads/cwl
Commit: 52bb54ede32b73454c60a6e6dde4e44da85582a9
Parents: f9e46e0
Author: Stian Soiland-Reyes <[email protected]>
Authored: Fri May 20 18:06:46 2016 +0200
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Fri May 20 18:06:46 2016 +0200

----------------------------------------------------------------------
 taverna-scufl2-cwl/pom.xml                      | 71 +++++++++-----------
 .../org/apache/taverna/scufl2/cwl/CWLInput.java | 14 ----
 .../apache/taverna/scufl2/cwl/CWLOutput.java    | 20 ------
 .../taverna/scufl2/cwl/CWLRequirement.java      |  5 --
 .../org/apache/taverna/scufl2/cwl/CWLStep.java  |  5 --
 .../apache/taverna/scufl2/cwl/CWLWorkflow.java  | 22 ------
 .../apache/taverna/scufl2/cwl/CwlReader.java    |  1 +
 .../cwl/workflow/CWLCommandLineBinding.java     | 11 +++
 .../cwl/workflow/CWLCommandOutputBinding.java   |  9 +++
 .../scufl2/cwl/workflow/CWLDirectory.java       | 12 ++++
 .../scufl2/cwl/workflow/CWLExpressionTool.java  | 32 +++++++++
 .../taverna/scufl2/cwl/workflow/CWLFile.java    | 18 +++++
 .../CWLInlineJavascriptRequirement.java         | 11 +++
 .../cwl/workflow/CWLInputArraySchema.java       | 19 ++++++
 .../scufl2/cwl/workflow/CWLInputEnumSchema.java | 23 +++++++
 .../scufl2/cwl/workflow/CWLInputParameter.java  | 34 ++++++++++
 .../cwl/workflow/CWLInputRecordField.java       | 10 +++
 .../cwl/workflow/CWLInputRecordSchema.java      | 18 +++++
 .../scufl2/cwl/workflow/CWLLinkMergeMethod.java |  6 ++
 .../CWLMultipleInputFeatureRequirement.java     |  8 +++
 .../taverna/scufl2/cwl/workflow/CWLOutput.java  | 20 ++++++
 .../cwl/workflow/CWLOutputArraySchema.java      | 18 +++++
 .../cwl/workflow/CWLOutputEnumSchema.java       | 17 +++++
 .../scufl2/cwl/workflow/CWLOutputParameter.java | 22 ++++++
 .../cwl/workflow/CWLOutputRecordField.java      | 15 +++++
 .../cwl/workflow/CWLOutputRecordSchema.java     | 15 +++++
 .../scufl2/cwl/workflow/CWLRequirement.java     |  8 +++
 .../workflow/CWLScatterFeatureRequirement.java  | 10 +++
 .../scufl2/cwl/workflow/CWLScatterMethod.java   |  7 ++
 .../taverna/scufl2/cwl/workflow/CWLSchema.java  |  5 ++
 .../cwl/workflow/CWLSchemaDefRequirement.java   |  8 +++
 .../CWLStepInputExpressionRequirement.java      |  8 +++
 .../CWLSubworkflowFeatureRequirement.java       |  8 +++
 .../taverna/scufl2/cwl/workflow/CWLType.java    | 22 ++++++
 .../scufl2/cwl/workflow/CWLVersions.java        | 20 ++++++
 .../scufl2/cwl/workflow/CWLWorkflow.java        | 27 ++++++++
 .../workflow/CWLWorkflowOutputParameter.java    | 31 +++++++++
 .../scufl2/cwl/workflow/CWLWorkflowStep.java    | 32 +++++++++
 .../cwl/workflow/CWLWorkflowStepInput.java      | 28 ++++++++
 .../cwl/workflow/CWLWorkflowStepOutput.java     |  8 +++
 .../taverna/scufl2/cwl/TestCwlReader.java       |  7 +-
 .../src/test/resources/ex1/revsort.cwl          |  8 +--
 42 files changed, 583 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-scufl2-cwl/pom.xml b/taverna-scufl2-cwl/pom.xml
index 656b950..e939a18 100644
--- a/taverna-scufl2-cwl/pom.xml
+++ b/taverna-scufl2-cwl/pom.xml
@@ -1,42 +1,37 @@
 <?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
+<!-- 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>apache-taverna-language</artifactId>
+               <version>0.15.2-incubating-SNAPSHOT</version>
+       </parent>
+       <artifactId>taverna-scufl2-cwl</artifactId>
+       <name>Apache Taverna Scufl 2 CWL read/write</name>
+       <description> Common Workflow Language (CWL) support</description>
+       <dependencies>
+               <dependency>
+                       <groupId>${project.parent.groupId}</groupId>
+                       <artifactId>taverna-scufl2-api</artifactId>
+                       <version>${project.parent.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>com.fasterxml.jackson.dataformat</groupId>
+                       <artifactId>jackson-dataformat-yaml</artifactId>
+                       <version>${jackson.version}</version>
+               </dependency>
 
-       http://www.apache.org/licenses/LICENSE-2.0
+       </dependencies>
 
-   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.0-incubating-SNAPSHOT</version>
-  </parent>
-  <artifactId>taverna-scufl2-cwl</artifactId>
-  <name>Apache Taverna Scufl 2 CWL read/write</name>
-  <description> Common Workflow Language (CWL) support</description>
-  <dependencies>
-       <dependency>
-               <groupId>${project.parent.groupId}</groupId>
-               <artifactId>taverna-scufl2-api</artifactId>
-               <version>${project.parent.version}</version>
-       </dependency>
-       <dependency>
-               <groupId>com.fasterxml.jackson.dataformat</groupId>
-               <artifactId>jackson-dataformat-yaml</artifactId>
-               <version>${jackson.version}</version>
-       </dependency>
-       
-  </dependencies>
-  
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLInput.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLInput.java 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLInput.java
deleted file mode 100644
index bcde2aa..0000000
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLInput.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.taverna.scufl2.cwl;
-
-import java.util.Map;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class CWLInput {
-       public String id;
-       public String description;
-       @JsonProperty(value="default")
-       public String defaultValue;
-       public String type;
-       public Map<String,String> inputBinding;
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLOutput.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLOutput.java 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLOutput.java
deleted file mode 100644
index 1bbbc46..0000000
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLOutput.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.apache.taverna.scufl2.cwl;
-
-import java.util.List;
-import java.util.Map;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class CWLOutput {
-       public String id;
-       public String type;
-       public String label;
-       public String description;
-       public boolean streamable;
-       public String linkMerge;
-       @JsonProperty(value="default")
-       public String defaultValue;
-       
-       public String source;
-       public Map<String,String> outputBinding;
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLRequirement.java
deleted file mode 100644
index f5b6b85..0000000
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLRequirement.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.apache.taverna.scufl2.cwl;
-
-public class CWLRequirement {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLStep.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLStep.java 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLStep.java
deleted file mode 100644
index eddd40c..0000000
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLStep.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.apache.taverna.scufl2.cwl;
-
-public class CWLStep {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLWorkflow.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLWorkflow.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLWorkflow.java
deleted file mode 100644
index 8b0b43b..0000000
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLWorkflow.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.taverna.scufl2.cwl;
-
-import java.util.List;
-import java.util.Map;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class CWLWorkflow {
-
-       public String id;
-       @JsonProperty(value="class")
-       public String klass;
-       public String description;
-       public List<CWLInput> inputs;
-       public List<CWLOutput> outputs;
-       public List<Map<String,String>> requirements;
-       public List<CWLStep> steps;
-       public String baseCommand;
-       public String stdout;
-       
-       
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
index 31b2e6d..8d41ccd 100644
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
@@ -17,6 +17,7 @@ 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.WorkflowBundleReader;
+import org.apache.taverna.scufl2.cwl.workflow.CWLWorkflow;
 
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandLineBinding.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandLineBinding.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandLineBinding.java
new file mode 100644
index 0000000..33fbba3
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandLineBinding.java
@@ -0,0 +1,11 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+public class CWLCommandLineBinding {
+       Boolean loadContents;
+       Integer position;
+       String prefix;
+       Boolean separate;
+       String itemSeparator;
+       String valueFrom;
+       Boolean shellQuote;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandOutputBinding.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandOutputBinding.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandOutputBinding.java
new file mode 100644
index 0000000..2376243
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLCommandOutputBinding.java
@@ -0,0 +1,9 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+public class CWLCommandOutputBinding {
+       List<String> glob;
+       Boolean loadContents;
+       String outputEval;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLDirectory.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLDirectory.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLDirectory.java
new file mode 100644
index 0000000..e76e9c7
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLDirectory.java
@@ -0,0 +1,12 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLDirectory {
+       private static final String DIRECTORY = "Directory";
+       @JsonProperty(value="class", defaultValue=DIRECTORY, required=true)
+       public String klass = DIRECTORY;
+       @JsonProperty(required=true)
+       String path;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLExpressionTool.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLExpressionTool.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLExpressionTool.java
new file mode 100644
index 0000000..bedbaff
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLExpressionTool.java
@@ -0,0 +1,32 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class CWLExpressionTool {
+       @JsonProperty(required=true)
+       public List<CWLInputParameter> inputs;
+
+       @JsonProperty(required=true)
+       public List<CWLOutputParameter> outputs;
+
+       @JsonProperty(value="class", required=true)
+       public String klass;
+       
+       @JsonProperty(required=true)
+       public String expression;
+       
+       public String id;
+       
+       public List<JsonNode> requirements;
+       
+       public List<JsonNode> hints;
+       
+       public String label;
+       public String description;
+       
+       public String cwlVersion;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLFile.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLFile.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLFile.java
new file mode 100644
index 0000000..b2b0784
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLFile.java
@@ -0,0 +1,18 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLFile {
+       private static final String FILE = "File";
+       @JsonProperty(value="class", defaultValue=FILE, required=true)
+       public String klass = FILE;
+       @JsonProperty(required=true)
+       String path;
+       String checksum;
+       Long size;
+       List<CWLFile> secondaryFiles;
+       String format;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInlineJavascriptRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInlineJavascriptRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInlineJavascriptRequirement.java
new file mode 100644
index 0000000..e25efd9
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInlineJavascriptRequirement.java
@@ -0,0 +1,11 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLInlineJavascriptRequirement extends CWLRequirement {
+       @JsonProperty("class")
+       public String klass;
+       List<String> expressionLib;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputArraySchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputArraySchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputArraySchema.java
new file mode 100644
index 0000000..8aa684a
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputArraySchema.java
@@ -0,0 +1,19 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class CWLInputArraySchema {
+       @JsonProperty(required=true, defaultValue="array")
+       public String type = "array";
+       
+       List<JsonNode> types;
+       
+       List<String> secondaryFiles;
+       List<String> format;
+       Boolean streamable;
+       CWLCommandLineBinding inputBinding;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputEnumSchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputEnumSchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputEnumSchema.java
new file mode 100644
index 0000000..6d23393
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputEnumSchema.java
@@ -0,0 +1,23 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLInputEnumSchema {
+
+       @JsonProperty(defaultValue="enum", required=true)
+       public String type = "enum";
+       
+       @JsonProperty(required=true)
+       public List<String> symbols;
+       
+       public List<String> secondaryFiles;
+       
+       public List<String> format;
+       
+       public Boolean streamable;
+       
+       public CWLCommandLineBinding inputBinding;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputParameter.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputParameter.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputParameter.java
new file mode 100644
index 0000000..9fb5586
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputParameter.java
@@ -0,0 +1,34 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class CWLInputParameter {
+       
+       @JsonProperty(required=true)
+       public String id;
+
+       public List<String> secondaryFiles;
+       
+       public List<String> format;
+       
+       public Boolean streamable;
+       
+       public List<String> type;
+       
+       public void setType(String type) {
+               this.type = Arrays.asList(type);
+       }
+       
+       public String label;
+       
+       public String description;
+       
+       public CWLCommandLineBinding inputBinding;
+       
+       @JsonProperty("default")
+       public JsonNode defaultValue;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordField.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordField.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordField.java
new file mode 100644
index 0000000..553b841
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordField.java
@@ -0,0 +1,10 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+public class CWLInputRecordField {
+       String name;
+       List<String> type;
+       String doc;
+       CWLCommandLineBinding inputBinding;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordSchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordSchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordSchema.java
new file mode 100644
index 0000000..ca0d81d
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLInputRecordSchema.java
@@ -0,0 +1,18 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLInputRecordSchema {
+       @JsonProperty(required=true, defaultValue="record")
+       public String type="record";
+       
+       public List<CWLInputRecordField> fields;
+       
+       public List<String> secondaryFiles;
+       
+       public List<String> format;
+       
+       public Boolean streamable; 
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLLinkMergeMethod.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLLinkMergeMethod.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLLinkMergeMethod.java
new file mode 100644
index 0000000..07e49d9
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLLinkMergeMethod.java
@@ -0,0 +1,6 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+public enum CWLLinkMergeMethod {
+       merge_nested,
+       merge_flattened
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLMultipleInputFeatureRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLMultipleInputFeatureRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLMultipleInputFeatureRequirement.java
new file mode 100644
index 0000000..3f1272d
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLMultipleInputFeatureRequirement.java
@@ -0,0 +1,8 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLMultipleInputFeatureRequirement extends CWLRequirement {
+       @JsonProperty(value="class", required=true)
+       public String klass;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutput.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutput.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutput.java
new file mode 100644
index 0000000..d687adf
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutput.java
@@ -0,0 +1,20 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLOutput {
+       public String id;
+       public String type;
+       public String label;
+       public String description;
+       public boolean streamable;
+       public String linkMerge;
+       @JsonProperty(value="default")
+       public String defaultValue;
+       
+       public String source;
+       public Map<String,String> outputBinding;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputArraySchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputArraySchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputArraySchema.java
new file mode 100644
index 0000000..edaa1d7
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputArraySchema.java
@@ -0,0 +1,18 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLOutputArraySchema {
+       @JsonProperty(required = true, defaultValue = "array")
+       public String type = "array";
+       
+       @JsonProperty(required=true)
+       List<String> items;
+       List<String> secondaryFiles;
+       List<String> format;
+       Boolean streamable;
+       CWLCommandOutputBinding outputBinding;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputEnumSchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputEnumSchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputEnumSchema.java
new file mode 100644
index 0000000..5d4f5d5
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputEnumSchema.java
@@ -0,0 +1,17 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLOutputEnumSchema {
+       @JsonProperty(required=true, defaultValue="enum")
+       public String type = "enum";
+       
+       List<String> symbols;
+       List<String> secondaryFiles;
+       List<String> format;
+       Boolean streamable;
+       CWLCommandOutputBinding outputBinding;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputParameter.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputParameter.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputParameter.java
new file mode 100644
index 0000000..7613650
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputParameter.java
@@ -0,0 +1,22 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+public class CWLOutputParameter {
+
+       public String id;
+       
+       public List<String> secondaryFiles;
+       
+       public List<String> format;
+       
+       public Boolean streamable;
+       
+       public List<String> type;
+       
+       public String label;
+       
+       public CWLCommandLineBinding outputBinding;
+       
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordField.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordField.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordField.java
new file mode 100644
index 0000000..50c56fd
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordField.java
@@ -0,0 +1,15 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLOutputRecordField {
+       @JsonProperty(required=true)
+       String name;
+       @JsonProperty(required=true)
+       List<String> type; 
+       String doc;
+       CWLCommandOutputBinding outputBinding;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordSchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordSchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordSchema.java
new file mode 100644
index 0000000..0cb0a3a
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLOutputRecordSchema.java
@@ -0,0 +1,15 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLOutputRecordSchema {
+       @JsonProperty(required=true, defaultValue="record")
+       public String type="record";
+       
+       List<CWLOutputRecordField> fields;
+       List<String> secondaryFiles;
+       List<String> format;
+       boolean streamable;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLRequirement.java
new file mode 100644
index 0000000..ead5f1f
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLRequirement.java
@@ -0,0 +1,8 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLRequirement {
+       @JsonProperty("class")
+       public String klass;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterFeatureRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterFeatureRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterFeatureRequirement.java
new file mode 100644
index 0000000..aa4db88
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterFeatureRequirement.java
@@ -0,0 +1,10 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLScatterFeatureRequirement extends CWLRequirement {
+
+       @JsonProperty(value="class", required=true)
+       public String klass;
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterMethod.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterMethod.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterMethod.java
new file mode 100644
index 0000000..53c86ec
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLScatterMethod.java
@@ -0,0 +1,7 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+public enum CWLScatterMethod {
+       dotproduct,
+       nested_crossproduct,
+       flat_crossproduct;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchema.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchema.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchema.java
new file mode 100644
index 0000000..1374b32
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchema.java
@@ -0,0 +1,5 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+public interface CWLSchema {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchemaDefRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchemaDefRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchemaDefRequirement.java
new file mode 100644
index 0000000..c905810
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSchemaDefRequirement.java
@@ -0,0 +1,8 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+public class CWLSchemaDefRequirement extends CWLRequirement {
+       public String klass;
+       public List<CWLSchema> types;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLStepInputExpressionRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLStepInputExpressionRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLStepInputExpressionRequirement.java
new file mode 100644
index 0000000..26a9302
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLStepInputExpressionRequirement.java
@@ -0,0 +1,8 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLStepInputExpressionRequirement extends CWLRequirement {
+       @JsonProperty(value="class", required=true)
+       public String klass;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSubworkflowFeatureRequirement.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSubworkflowFeatureRequirement.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSubworkflowFeatureRequirement.java
new file mode 100644
index 0000000..746f3ce
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLSubworkflowFeatureRequirement.java
@@ -0,0 +1,8 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLSubworkflowFeatureRequirement extends CWLRequirement {
+       @JsonProperty(value="class", required=true)
+       public String klass;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLType.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLType.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLType.java
new file mode 100644
index 0000000..793171b
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLType.java
@@ -0,0 +1,22 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+public enum CWLType {
+       Null("null"),
+       Boolean("boolean"),
+       Int("int"),
+       Long("long"),
+       Float("float"),
+       Double("double"),
+       string("string"),
+       File("File");
+       
+       public final String name;
+       
+       CWLType(String name){
+               this.name = name;
+       }
+       public String toString() {
+               return name;
+       };
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLVersions.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLVersions.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLVersions.java
new file mode 100644
index 0000000..2ea5c87
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLVersions.java
@@ -0,0 +1,20 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+public enum CWLVersions {
+       draft2("draft-2"),
+       draft3Dev1("draft-3.dev1"),
+       draft3Dev2("draft-3.dev2"),
+       draft3Dev3("draft-3.dev3"),
+       draft3Dev4("draft-3.dev4"),
+       draft3Dev5("draft-3.dev5"),
+       draft4Dev1("draft-4.dev1"),
+       draft4("draft-4"),
+       ;
+       
+       
+       public final String name;
+       
+       CWLVersions(String name) { 
+               this.name = name;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflow.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflow.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflow.java
new file mode 100644
index 0000000..c05c251
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflow.java
@@ -0,0 +1,27 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class CWLWorkflow {
+
+       @JsonProperty(required=true)
+       public List<CWLInputParameter> inputs;
+       @JsonProperty(required=true)
+       public List<CWLWorkflowOutputParameter> outputs;
+       @JsonProperty(value="class", required=true)
+       public String klass;
+       @JsonProperty(required=true)
+       public List<CWLWorkflowStep> steps;
+       public String id;
+       public List<JsonNode> requirements;
+       public List<JsonNode> hints;
+       
+       public String label;
+       public String description;
+       public String cwlVersion;
+       
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowOutputParameter.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowOutputParameter.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowOutputParameter.java
new file mode 100644
index 0000000..1330fc8
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowOutputParameter.java
@@ -0,0 +1,31 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLWorkflowOutputParameter {
+       @JsonProperty(required=true)
+       public String id;
+       public List<String> secondaryFiles;
+       public List<String> format;
+       public boolean streamable;
+       
+       public List<String> type;
+       
+       public void setType(String type) {
+               this.type = Arrays.asList(type);
+       }
+       
+       public String label;
+       public String description;
+       public CWLCommandOutputBinding outputBinding;
+       public List<String> source;
+       
+       public void setSource(String source) {
+               this.source = Arrays.asList(source);
+       }
+       
+       public CWLLinkMergeMethod linkMerge;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStep.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStep.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStep.java
new file mode 100644
index 0000000..a23d658
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStep.java
@@ -0,0 +1,32 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class CWLWorkflowStep {
+
+       @JsonProperty(required=true)
+       public String id;
+       
+       @JsonProperty(required=true)
+       public List<CWLWorkflowStepInput> in;
+       
+       @JsonProperty(required=true)
+       public List<JsonNode> out;
+       
+       @JsonProperty(required=true)
+       public JsonNode run;
+       
+       public List<CWLRequirement> requirements;
+       
+       public List<JsonNode> hints;
+       
+       public String label;
+       public String description;
+       public List<String> scatter;
+       public CWLScatterMethod scatterMethod;
+       
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepInput.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepInput.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepInput.java
new file mode 100644
index 0000000..791f79c
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepInput.java
@@ -0,0 +1,28 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class CWLWorkflowStepInput {
+
+       @JsonProperty(required=true)
+       public String id;
+       
+       public List<String> source;
+       
+       public void setSource(String source) {
+               this.source = Arrays.asList(source);
+       }
+       
+       @JsonProperty(defaultValue="merge_nested")
+       public CWLLinkMergeMethod linkMerge;
+       
+       @JsonProperty("value")
+       public JsonNode defaultValue;
+       public String valueFrom;
+       
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepOutput.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepOutput.java
 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepOutput.java
new file mode 100644
index 0000000..6861db0
--- /dev/null
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/workflow/CWLWorkflowStepOutput.java
@@ -0,0 +1,8 @@
+package org.apache.taverna.scufl2.cwl.workflow;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CWLWorkflowStepOutput {
+       @JsonProperty(required=true)
+       String id;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestCwlReader.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestCwlReader.java
 
b/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestCwlReader.java
index a72123f..bd384c5 100644
--- 
a/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestCwlReader.java
+++ 
b/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestCwlReader.java
@@ -4,6 +4,9 @@ import static org.junit.Assert.*;
 
 import java.net.URL;
 
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
+import org.apache.taverna.scufl2.cwl.CwlReader;
 import org.junit.Test;
 
 public class TestCwlReader {
@@ -11,7 +14,7 @@ public class TestCwlReader {
        public void parseEx1() throws Exception {
                URL revsort = getClass().getResource("/ex1/revsort.cwl");
                CwlReader reader = new CwlReader();
-               reader.readBundle(revsort);
-               
+               WorkflowBundle b = reader.readBundle(revsort);
+               new WorkflowBundleIO().writeBundle(b, System.out, 
"text/vnd.taverna.scufl2.structure");
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/52bb54ed/taverna-scufl2-cwl/src/test/resources/ex1/revsort.cwl
----------------------------------------------------------------------
diff --git a/taverna-scufl2-cwl/src/test/resources/ex1/revsort.cwl 
b/taverna-scufl2-cwl/src/test/resources/ex1/revsort.cwl
index bcdfd1b..b4339d1 100644
--- a/taverna-scufl2-cwl/src/test/resources/ex1/revsort.cwl
+++ b/taverna-scufl2-cwl/src/test/resources/ex1/revsort.cwl
@@ -50,16 +50,16 @@ outputs:
 # parameter "#reversed" from the first step to the input parameter of the
 # tool "sorttool.cwl#input".
 steps:
-  - inputs:
+  - in:
       - { id: "#rev.input", source: "#input" }
-    outputs:
+    out:
       - { id: "#rev.output" }
     run: { import: revtool.cwl }
 
-  - inputs:
+  - in:
       - { id: "#sorted.input", source: "#rev.output" }
       - { id: "#sorted.reverse", source: "#reverse_sort" }
-    outputs:
+    out:
       - { id: "#sorted.output" }
     run: { import: sorttool.cwl }
     
\ No newline at end of file


Reply via email to