You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/06/25 15:27:13 UTC

incubator-taverna-language git commit: Squashed commit of the following:

Repository: incubator-taverna-language
Updated Branches:
  refs/heads/master ed4d4c7ef -> 3bd4874e4


Squashed commit of the following:

This closes #8 scufl-iwir

commit 1effe4f3767bb9a8938df9932a2590637a8b5069
Author: Stian Soiland-Reyes <st...@apache.org>
Date:   Thu Jun 25 14:21:43 2015 +0100

    ignore dependency-reduced-pom.xml

commit 9ea428b941ca88bb94943295023843d677ad0019
Merge: ebeb3fe ed4d4c7
Author: Stian Soiland-Reyes <st...@apache.org>
Date:   Thu Jun 25 14:21:14 2015 +0100

    Merge branch 'master' into scufl-iwir

    Conflicts:
    	taverna-language-commandline/pom.xml
    	taverna-language-commandline/src/main/java/org/apache/taverna/tavlang/CommandLineTool.java

commit ebeb3fe6e81f8a58ce71431fb727fcbc7e81dc51
Author: Menaka Madushanka <me...@gmail.com>
Date:   Tue Jun 23 17:06:19 2015 +0530

    Input file type detection

commit 29c58dfd53fb846b158b515514c96a40886d92a6
Author: Menaka Madushanka <me...@gmail.com>
Date:   Tue Jun 23 16:56:16 2015 +0530

    Input file type detection .t2flow/ .wfbundle

commit a5a563be13039cc81c604468e2d7586802169675
Author: Menaka Madushanka <me...@gmail.com>
Date:   Tue Jun 23 16:33:49 2015 +0530

    Jars removed

commit 951e1869a68253085faae45159f86a4a45c9aa7d
Author: Menaka Madushanka <me...@gmail.com>
Date:   Sat Jun 20 18:20:01 2015 +0530

    iwir dependancy

commit 3cc5d6b93dae383477d92bfe72e5b1e39e3c3385
Author: Menaka Madushanka <me...@gmail.com>
Date:   Sat Jun 20 18:15:52 2015 +0530

    iwir

commit 52cdf9c708e56a8cefeb1c32bba3d4afb6d5446e
Author: Menaka Madushanka <me...@gmail.com>
Date:   Sat Jun 20 18:11:57 2015 +0530

    iwir added

commit a64d172016d97db237e0a9ba90c983dabf7208f3
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 23:21:12 2015 +0530

    no iwir

commit f099b1e463e7a6648aa0856c46b0e2efbe630295
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 23:17:34 2015 +0530

    Revert "new"

    This reverts commit e5beb625f29eeda80f64aaf84e22ac6e7efd22df.

commit df02d4f5e4474485c1e97bff6c5483ef9aa42394
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 23:15:21 2015 +0530

    new

commit c880f624a8d938572cb40898037a3c0fa1225ef4
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 20:49:19 2015 +0530

    iwir removed

commit 4a5651938dc1a8eab21bf840e4dd329e2575349f
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 20:48:32 2015 +0530

    iwir removed

commit 0d1be572f4c8f33863968eb5e2bba3c6f4f03b2e
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 20:47:20 2015 +0530

    iwir removed

commit 815b3f546662d16458c44cf6daba6f8846e2ce06
Author: Menaka Madushanka <me...@gmail.com>
Date:   Fri Jun 19 20:14:30 2015 +0530

    Apache header restored

commit 9c393d39d7bf598dbba408ac331b9be5201ba2f4
Author: Menaka Madushanka <me...@gmail.com>
Date:   Wed Jun 17 21:11:53 2015 +0530

    Basic error detection

commit 0b11c7e2513cb790d5f71c26af7ddd1117614975
Author: Menaka Madushanka <me...@gmail.com>
Date:   Wed Jun 17 20:53:08 2015 +0530

    Changed pom - mvn clean install is working

commit 995fcb38d4137f00676fbaf3958b8b38459fcf7e
Author: Menaka Madushanka <me...@gmail.com>
Date:   Wed Jun 17 20:23:51 2015 +0530

    --iwir feature added

commit 5da29d8be7fa0cfb001666795244e0270cf1db08
Author: Menaka Madushanka <me...@gmail.com>
Date:   Wed Jun 17 20:17:20 2015 +0530

    Iwir conversion and tojson

commit 94a21b1b021ba93f27bbcccc34d02261d2257abb
Author: Menaka Madushanka <me...@gmail.com>
Date:   Wed Jun 17 20:12:38 2015 +0530

    Iwir added

commit 63566f9205dbb815a0409b7a859e62507110f9a6
Author: Menaka Madushanka <me...@gmail.com>
Date:   Wed Jun 17 20:05:56 2015 +0530

    Dependancy arrangement


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

Branch: refs/heads/master
Commit: 3bd4874e4eb94197c0bba2fc397c868cb450cad8
Parents: ed4d4c7
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu Jun 25 14:26:12 2015 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu Jun 25 14:26:12 2015 +0100

----------------------------------------------------------------------
 taverna-language-commandline/.gitignore         |   1 +
 taverna-language-commandline/pom.xml            | 256 ++++++----
 .../apache/taverna/tavlang/CommandLineTool.java | 289 ++++++-----
 .../org/apache/taverna/tavlang/tools/Tools.java |  23 +-
 .../tavlang/tools/convert/Scufl2Convert.java    |  24 +-
 .../taverna/tavlang/tools/convert/ToJson.java   | 488 +++++++++----------
 .../tavlang/tools/convert/ToRobundle.java       |   6 +-
 .../taverna/tavlang/test/CommandLineTest.java   |  14 -
 .../taverna/tavlang/test/Scufl2ConvertTest.java |   3 +-
 9 files changed, 597 insertions(+), 507 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/taverna-language-commandline/.gitignore
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/.gitignore b/taverna-language-commandline/.gitignore
new file mode 100644
index 0000000..916e17c
--- /dev/null
+++ b/taverna-language-commandline/.gitignore
@@ -0,0 +1 @@
+dependency-reduced-pom.xml

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/taverna-language-commandline/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/pom.xml b/taverna-language-commandline/pom.xml
index 10d1072..db80698 100644
--- a/taverna-language-commandline/pom.xml
+++ b/taverna-language-commandline/pom.xml
@@ -33,121 +33,167 @@
 			<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>
+			<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>${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>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>taverna-scufl2-wfbundle</artifactId>
+			<version>${project.version}</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>
+			<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>
+
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>taverna-robundle</artifactId>
+			<version>${project.version}</version>
 		</dependency>
-	
-        
-    </dependencies>
-
-    <build>
-    <!-- TODO: plugins for launchers and executable jar files? -->
-      <plugins>
-    	<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.ManifestResourceTransformer">
-                  <mainClass>org.apache.tavlang.commandline.TavernaCommandline</mainClass>
-                </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>apache.snapshots</id>
-	      <name>Apache Snapshot Repository</name>
-	      <url>http://repository.apache.org/snapshots</url>
-	      <releases>
-	        <enabled>false</enabled>
-	      </releases>
-   	 </repository>
-  </repositories>
+
+		<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>
+		</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>
+							</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>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/3bd4874e/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
index eb56801..345f0b5 100644
--- 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
@@ -1,6 +1,5 @@
 package org.apache.taverna.tavlang;
 
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -20,7 +19,6 @@ package org.apache.taverna.tavlang;
  * under the License.
  */
 
-
 import io.airlift.airline.Arguments;
 import io.airlift.airline.Cli;
 import io.airlift.airline.Cli.CliBuilder;
@@ -28,7 +26,6 @@ import io.airlift.airline.Command;
 import io.airlift.airline.Help;
 import io.airlift.airline.Option;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.List;
 
@@ -36,8 +33,6 @@ import javax.inject.Inject;
 import javax.xml.bind.JAXBException;
 
 import org.apache.taverna.scufl2.api.io.ReaderException;
-import org.apache.taverna.tavlang.tools.Tools;
-import org.apache.taverna.tavlang.tools.Tools.ConvertionTools;
 import org.apache.taverna.tavlang.tools.convert.Scufl2Convert;
 import org.apache.taverna.tavlang.tools.convert.ToRobundle;
 import org.apache.taverna.tavlang.tools.inspect.ProcessorNames;
@@ -47,16 +42,15 @@ import org.apache.taverna.tavlang.tools.validate.Validate;
 import com.google.common.base.Joiner;
 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 Cli<TvnLangTool> parser(){
-		CliBuilder<TvnLangTool> build = Cli.<TvnLangTool>builder("tavlang")
+
+	private static Cli<TvnLangTool> parser() {
+		CliBuilder<TvnLangTool> build = Cli.<TvnLangTool> builder("tavlang")
 				.withDescription("Convert, manage workflows")
 				.withDefaultCommand(HelpCommand.class)
 				.withCommand(CommandConvert.class)
@@ -64,198 +58,238 @@ public class CommandLineTool {
 				.withCommand(CommandInspect.class)
 				.withCommand(CommandValidate.class)
 				.withCommand(CommandVersion.class);
-		
+
 		return build.build();
 	}
 
-	public CommandLineTool(){};
-	public void parse(String... args)
-    {
-        System.out.println("$ tavlang " + Joiner.on(" ").join(args));
-        TvnLangTool command = parser().parse(args);
-        command.execute();
-        System.out.println();
-    }
-	
-	public static abstract class TvnLangTool{
+	public CommandLineTool() {
+	};
+
+	public void parse(String... args) {
+		System.out.println("$ tavlang " + Joiner.on(" ").join(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")
+
+	// 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 wfbundel")
+
+		@Option(name = "--wfbundle", description = "Convert the workflow file to wfbundel")
 		public static boolean isWfbundel = false;
-		
-		@Option(name =  "--robundle", description = "Convert given bundel in to Research Object bundel")
+
+		@Option(name = "--robundle", description = "Convert given bundel in to Research Object bundel")
 		public static boolean isRo = false;
-		
-		@Option(name= "--structure", description = "Convert the workflow into *.structure")
+
+		@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;
+
 		
-		//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(isWfbundel) return "wfbundle";
-			else if(isRo) return "robundle";
-			else if(isStructure) return "structure";
-			else if(isJson) return "json";
-			else return null;
-		}
+		@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 (isWfbundel)
+				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{
+
+	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 return null;
+
+		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")
+
+	// 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")
+
+		// 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(){
+
+		public static String getInFile() {
 			return in_file_dir;
 		}
-		
-		public static String getOutFile(){
+
+		public static String getOutFile() {
 			return out_file_dir;
 		}
 
 	}
-	
+
 	@Command(name = "help", description = "Display help information about Tvarna")
-	public static class HelpCommand extends TvnLangTool{
+	public static class HelpCommand extends TvnLangTool {
 		@Inject
-	    public Help help;
+		public Help help;
 
-	    @Override
-	    public void execute(){
-	    	help.call();
-	    }
+		@Override
+		public void execute() {
+			help.call();
+		}
 	}
-	
-	//Command for convert workflows
-	@Command(name="convert", description="Convert the given workflow")
-	public static class CommandConvert extends TvnLangTool{
+
+	// 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 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")
+
+		// 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(){
-			Scufl2Convert bn; 
-			if(filetypes.isJson ){
-				
-			}else if(filetypes.isRo){
+		public void execute() {
+			if (Filetypes.isRo) {
 				try {
-					ToRobundle ro = new ToRobundle(files, optional.getOutFile());
+					new ToRobundle(files, Optional.getOutFile());
 				} catch (Exception e) {
 					// TODO Auto-generated catch block
 					e.printStackTrace();
 				}
-			}else{
-				if(recurse){
-					bn = new Scufl2Convert(filetypes.isTrue(), optional.getInFile(), optional.getOutFile());
-				}else{
-					bn =  new Scufl2Convert(filetypes.isTrue(), files, optional.getOutFile());
+//				else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundel || Filetypes.isWfdesc)
+			} else if(Filetypes.isIwir || Filetypes.isJson || Filetypes.isStructure || Filetypes.isWfbundel || 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{
+
+	// Version command
+	@Command(name = "version", description = "Show version informantion")
+	public static class CommandVersion extends TvnLangTool {
 
 		@Override
 		public void execute() {
 			// TODO Auto-generated method stub
-			System.out.println("Apache Taverna Language Command line tool. \nVersion 1.0 ");
+			System.out
+					.println("Apache Taverna Language Command line tool. \nVersion 1.0 ");
 		}
-		
+
 	}
-	
-	//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{
-		
+
+	// 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)")
+
+		@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")
+
+		@Arguments(usage = "<option> <input files>", description = "Inspect the given workflow")
 		public List<String> toInspect = Lists.newArrayList();
-		
+
 		@Override
 		public void execute() {
 			// TODO Auto-generated method stub
-			if(inspect.processor){
+			if (Inspect.processor) {
 				try {
-					ProcessorNames pn = new ProcessorNames(toInspect, file);
-						
+					new ProcessorNames(toInspect, file);
+
 				} catch (ReaderException | IOException | JAXBException e) {
 					// TODO Auto-generated catch block
 					e.printStackTrace();
 				}
-			}else if(inspect.servicetypes){
+			} else if (Inspect.servicetypes) {
 				try {
-					ServiceTypes st = new ServiceTypes(toInspect, file);
+					new ServiceTypes(toInspect, file);
 				} catch (IOException | ReaderException e) {
 					// TODO Auto-generated catch block
 					e.printStackTrace();
 				}
-				
+
+			}else{
+				System.out.println("Invalid argument....");
+				TvnLangTool command = parser().parse("help", "inspect");
+				command.execute();
 			}
-			
+
 		}
-		
+
 	}
-	
-	//Command for validation
+
+	// 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)")
@@ -271,9 +305,12 @@ public class CommandLineTool {
 		@Override
 		public void execute() {
 			// TODO Auto-generated method stub
-			
-				Validate validate = new Validate(toValidate, file);
+			System.out.println("Invalid argument....");
+			TvnLangTool command = parser().parse("help", "validate");
+			command.execute();
+
 		}
+
 	}
-	
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/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
index a8ee5f4..fb878fb 100644
--- 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
@@ -32,18 +32,18 @@ public class Tools {
 			@Override
 			public String getMediaType(ConvertionTools t) {
 				// TODO Auto-generated method stub
-				System.out.println(mediaType);
+//				System.out.println(mediaType);
 				return this.mediaType;
 			}
 		},
 		json{
-			public String mediaType = "application/json";
+			public String mediaType = "application/ld+json";
 
 
 			@Override
 			public String getMediaType(ConvertionTools t) {
 				// TODO Auto-generated method stub
-				System.out.println(mediaType);
+//				System.out.println(mediaType);
 				return mediaType;
 			}
 		},
@@ -54,7 +54,7 @@ public class Tools {
 			@Override
 			public String getMediaType(ConvertionTools t) {
 				// TODO Auto-generated method stub
-				System.out.println(mediaType);
+//				System.out.println(mediaType);
 				return mediaType;
 			}
 		},
@@ -73,11 +73,20 @@ public class Tools {
 			@Override
 			public String getMediaType(ConvertionTools t) {
 				// TODO Auto-generated method stub
-				System.out.println(mediaType);
+//				System.out.println(mediaType);
 				return mediaType;
 			}
-
-			
+		},
+		
+		iwir{
+				public String mediaType = "application/vnd.shiwa.iwir+xml";
+				
+				@Override
+				public String getMediaType(ConvertionTools t) {
+					// TODO Auto-generated method stub
+//					System.out.println(mediaType);
+					return mediaType;
+				}
 		};
 		
 		ConvertionTools(){}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/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
index 02135dc..03a9f89 100644
--- 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
@@ -24,6 +24,7 @@ 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;
@@ -37,6 +38,7 @@ import org.apache.taverna.tavlang.tools.validate.Validate;
  * 	.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.
@@ -163,6 +165,14 @@ public class Scufl2Convert{
 	
 	//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.equals("t2flow")||!ext.equals("wfbundle")){
+			System.err.println("Invalid input file format...!!!");
+			return;
+		}
+		
 		WorkflowBundleIO wfbio = new WorkflowBundleIO();
 		String filename = t2File.getName();
 		filename = filename.replaceFirst("\\..*", this.type);
@@ -172,7 +182,19 @@ public class Scufl2Convert{
 		WorkflowBundle wfBundle;
 		try {
 			wfBundle = wfbio.readBundle(t2File, null);// null --> will guess the media type for reading.
-			wfbio.writeBundle(wfBundle, scufl2File, this.MEDIA_TYPE);
+			
+//			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(e.getLocalizedMessage());

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/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
index f2ab156..47d6b57 100644
--- 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
@@ -19,7 +19,6 @@ package org.apache.taverna.tavlang.tools.convert;
  * under the License.
  */
 
-
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -58,253 +57,242 @@ 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);
-        }
-
-    }
-
-    public static void main(String[] args) throws ReaderException, IOException,
-            WriterException {
-    	String[] args2 = {"/home/menaka/conv/aaa/as.wfbundle"};
-        new ToJson().convert(args2);
-    }
-
-
-    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(String[] filepaths) throws ReaderException,
-            IOException, WriterException {
-        if (filepaths[0].equals("-")) {
-            // Do piped Stdin/Stdout instead
-            WorkflowBundle wfBundle = io.readBundle(System.in, null);
-            io.writeBundle(wfBundle, System.err, "application/ld+json");
-            return;
-        }
-
-        for (String filepath : filepaths) {
-            File workflow = new File(filepath);
-
-            String filename = workflow.getName();
-            filename = filename.replaceFirst("\\..*", ".json");
-            File workflowFile = new File(workflow.getParentFile(), filename);
-
-            WorkflowBundle wfBundle = io.readBundle(workflow, 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;
-    }
+	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/3bd4874e/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
index 8781ca6..0b7a6a0 100644
--- 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
@@ -58,9 +58,9 @@ public class ToRobundle{
 	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();
+//			System.out.println(bundle.getManifest().toString());
+			bundle.getManifest().writeAsJsonLD();
+			bundle.getManifest().writeAsCombineManifest();
 		}
 	}
 	

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/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
index 0d1b3b2..6beaa8e 100644
--- 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
@@ -29,7 +29,6 @@ public class CommandLineTest {
 	
 	@Test
 	public void testHelp(){
-//		Assert
 		commandLineTool.parse();
 		commandLineTool.parse("version");
 		commandLineTool.parse("help");
@@ -39,19 +38,6 @@ public class CommandLineTest {
 		commandLineTool.parse("help", "help");
 	}
 	
-	@Test
-	public void testConvert(){
-		
-		
-//		CommandLineTool tool = new CommandLineTool();
-		commandLineTool.parse("convert", "-r", "-structure",  "-i", "/home/menaka/conv/aaa");
-//		CommandLineTool tool2 = new CommandLineTool();
-//		commandLineTool.parse("convert", "-r", "-wfdesc", "-o", "/files/dir", "-i", "/files0/dir");
-//		commandLineTool.parse();
-//		commandLineTool.parse();
-//		commandLineTool.parse();
-		
-	}
 	
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3bd4874e/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/Scufl2ConvertTest.java
----------------------------------------------------------------------
diff --git a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/Scufl2ConvertTest.java b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/Scufl2ConvertTest.java
index c98b005..cb33241 100644
--- a/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/Scufl2ConvertTest.java
+++ b/taverna-language-commandline/src/test/java/org/apache/taverna/tavlang/test/Scufl2ConvertTest.java
@@ -26,8 +26,9 @@ import org.junit.Test;
 public class Scufl2ConvertTest{
 
 	@Test
-	public void test() {
+	public void testConvertS() {
 //		fail("Not yet implemented");
+		
 	}
 
 }