Add basic cwl WorkflowBundleReader

- Support only WorkflowProcess as initial object.
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
new file mode 100644
index 0000000..de9d799
--- /dev/null
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLReader.java
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+package org.apache.taverna.scufl2.cwl;
+
+import static java.util.Collections.singleton;
+
+import java.io.*;
+import java.util.Set;
+
+import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.io.WorkflowBundleReader;
+import org.apache.taverna.scufl2.api.io.ReaderException;
+
+
+public class CWLReader implements WorkflowBundleReader {
+
+    public static final String CWL_TYPE = "text/cwl";
+
+    @Override
+    public Set<String> getMediaTypes() {
+        return singleton(CWL_TYPE);
+    }
+
+    @Override
+    public WorkflowBundle readBundle(File bundleFile, String mediaType) throws ReaderException, IOException {
+        try (BufferedInputStream is = new BufferedInputStream(
+                new FileInputStream(bundleFile))) {
+            Converter converter = new Converter();
+            return converter.buildWorkflowBundle(new WorkflowProcess(is));
+        }
+    }
+
+    @Override
+    public WorkflowBundle readBundle(InputStream inputStream, String mediaType) throws ReaderException, IOException {
+        Converter converter = new Converter();
+        return converter.buildWorkflowBundle(new WorkflowProcess(inputStream));
+    }
+
+    @Override
+    public String guessMediaTypeForSignature(byte[] firstBytes) {
+        if (new String(firstBytes)
+                .contains("cwlVersion"))
+            return CWL_TYPE;
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java
index 1b660dd..8470434 100644
--- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java
@@ -23,7 +23,10 @@
 import java.util.HashSet;
 import java.util.Map;
 import java.util.HashMap;
+import java.io.InputStream;
 
+import org.yaml.snakeyaml.Yaml;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 import org.apache.taverna.scufl2.api.core.Processor;
 import org.apache.taverna.scufl2.api.core.DataLink;
@@ -53,6 +56,16 @@
 
     private Converter converter = new Converter();
 
+    public WorkflowProcess(InputStream stream) {
+
+        Yaml reader = new Yaml();
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode node = mapper.valueToTree(reader.load(stream));
+
+        cwlParser = new CWLParser(node);
+        this.parse();
+    }
+
     public WorkflowProcess(JsonNode node) {
         cwlParser = new CWLParser(node);
         this.parse();
diff --git a/taverna-scufl2-cwl/src/main/resources/META-INF/services/org.apache.taverna.scufl2.api.io.WorkflowBundleReader b/taverna-scufl2-cwl/src/main/resources/META-INF/services/org.apache.taverna.scufl2.api.io.WorkflowBundleReader
new file mode 100644
index 0000000..607d8b7
--- /dev/null
+++ b/taverna-scufl2-cwl/src/main/resources/META-INF/services/org.apache.taverna.scufl2.api.io.WorkflowBundleReader
@@ -0,0 +1 @@
+org.apache.taverna.scufl2.cwl.CWLReader
\ No newline at end of file