You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/11/11 21:12:35 UTC

[31/50] [abbrv] airavata git commit: Removed DataObjectType thift struct from experimentModel and replace it with Input and Output DataObjectType define in applicationInterfaceModel thrift file

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
index 19a8b37..c6037f7 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Workspace/Experiment/Types.php
@@ -203,21 +203,6 @@ final class CorrectiveAction {
   );
 }
 
-final class DataType {
-  const STRING = 0;
-  const INTEGER = 1;
-  const URI = 2;
-  const STDOUT = 3;
-  const STDERR = 4;
-  static public $__names = array(
-    0 => 'STRING',
-    1 => 'INTEGER',
-    2 => 'URI',
-    3 => 'STDOUT',
-    4 => 'STDERR',
-  );
-}
-
 final class ExecutionUnit {
   const INPUT = 0;
   const APPLICATION = 1;
@@ -783,138 +768,6 @@ class ApplicationStatus {
 
 }
 
-class DataObjectType {
-  static $_TSPEC;
-
-  public $key = null;
-  public $value = null;
-  public $type = null;
-  public $metaData = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'key',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'value',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'type',
-          'type' => TType::I32,
-          ),
-        4 => array(
-          'var' => 'metaData',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['key'])) {
-        $this->key = $vals['key'];
-      }
-      if (isset($vals['value'])) {
-        $this->value = $vals['value'];
-      }
-      if (isset($vals['type'])) {
-        $this->type = $vals['type'];
-      }
-      if (isset($vals['metaData'])) {
-        $this->metaData = $vals['metaData'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'DataObjectType';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->key);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->value);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->type);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->metaData);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('DataObjectType');
-    if ($this->key !== null) {
-      $xfer += $output->writeFieldBegin('key', TType::STRING, 1);
-      $xfer += $output->writeString($this->key);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->value !== null) {
-      $xfer += $output->writeFieldBegin('value', TType::STRING, 2);
-      $xfer += $output->writeString($this->value);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->type !== null) {
-      $xfer += $output->writeFieldBegin('type', TType::I32, 3);
-      $xfer += $output->writeI32($this->type);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->metaData !== null) {
-      $xfer += $output->writeFieldBegin('metaData', TType::STRING, 4);
-      $xfer += $output->writeString($this->metaData);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
 class ComputationalResourceScheduling {
   static $_TSPEC;
 
@@ -2427,7 +2280,7 @@ class TaskDetails {
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\DataObjectType',
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\InputDataObjectType',
             ),
           ),
         7 => array(
@@ -2436,7 +2289,7 @@ class TaskDetails {
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\DataObjectType',
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType',
             ),
           ),
         8 => array(
@@ -2597,7 +2450,7 @@ class TaskDetails {
             for ($_i18 = 0; $_i18 < $_size14; ++$_i18)
             {
               $elem19 = null;
-              $elem19 = new \Airavata\Model\Workspace\Experiment\DataObjectType();
+              $elem19 = new \Airavata\Model\AppCatalog\AppInterface\InputDataObjectType();
               $xfer += $elem19->read($input);
               $this->applicationInputs []= $elem19;
             }
@@ -2615,7 +2468,7 @@ class TaskDetails {
             for ($_i24 = 0; $_i24 < $_size20; ++$_i24)
             {
               $elem25 = null;
-              $elem25 = new \Airavata\Model\Workspace\Experiment\DataObjectType();
+              $elem25 = new \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType();
               $xfer += $elem25->read($input);
               $this->applicationOutputs []= $elem25;
             }
@@ -2915,7 +2768,7 @@ class WorkflowNodeDetails {
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\DataObjectType',
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\InputDataObjectType',
             ),
           ),
         7 => array(
@@ -2924,7 +2777,7 @@ class WorkflowNodeDetails {
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\DataObjectType',
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType',
             ),
           ),
         8 => array(
@@ -3049,7 +2902,7 @@ class WorkflowNodeDetails {
             for ($_i53 = 0; $_i53 < $_size49; ++$_i53)
             {
               $elem54 = null;
-              $elem54 = new \Airavata\Model\Workspace\Experiment\DataObjectType();
+              $elem54 = new \Airavata\Model\AppCatalog\AppInterface\InputDataObjectType();
               $xfer += $elem54->read($input);
               $this->nodeInputs []= $elem54;
             }
@@ -3067,7 +2920,7 @@ class WorkflowNodeDetails {
             for ($_i59 = 0; $_i59 < $_size55; ++$_i59)
             {
               $elem60 = null;
-              $elem60 = new \Airavata\Model\Workspace\Experiment\DataObjectType();
+              $elem60 = new \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType();
               $xfer += $elem60->read($input);
               $this->nodeOutputs []= $elem60;
             }
@@ -3533,7 +3386,7 @@ class Experiment {
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\DataObjectType',
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\InputDataObjectType',
             ),
           ),
         14 => array(
@@ -3542,7 +3395,7 @@ class Experiment {
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workspace\Experiment\DataObjectType',
+            'class' => '\Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType',
             ),
           ),
         15 => array(
@@ -3750,7 +3603,7 @@ class Experiment {
             for ($_i88 = 0; $_i88 < $_size84; ++$_i88)
             {
               $elem89 = null;
-              $elem89 = new \Airavata\Model\Workspace\Experiment\DataObjectType();
+              $elem89 = new \Airavata\Model\AppCatalog\AppInterface\InputDataObjectType();
               $xfer += $elem89->read($input);
               $this->experimentInputs []= $elem89;
             }
@@ -3768,7 +3621,7 @@ class Experiment {
             for ($_i94 = 0; $_i94 < $_size90; ++$_i94)
             {
               $elem95 = null;
-              $elem95 = new \Airavata\Model\Workspace\Experiment\DataObjectType();
+              $elem95 = new \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType();
               $xfer += $elem95->read($input);
               $this->experimentOutputs []= $elem95;
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index a96cba7..daaf4cc 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -53,7 +53,7 @@ public class CreateLaunchExperiment {
     private static final String DEFAULT_GATEWAY = "default.registry.gateway";
     private static Airavata.Client airavataClient;
 
-    private static String echoAppId = "Echo_b6782be4-315b-4cbd-9403-aa7ce564548a";
+    private static String echoAppId = "Echo_37c26231-8784-4a40-b184-ae00f6330113";
     private static String wrfAppId = "WRF_5f097c9c-7066-49ec-aed7-4e39607b3adc";
     private static String amberAppId = "Amber_89906be6-5678-49a6-9d04-a0604fbdef2e";
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentForLocalhost.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentForLocalhost.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentForLocalhost.java
new file mode 100644
index 0000000..dcd684c
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperimentForLocalhost.java
@@ -0,0 +1,269 @@
+package org.apache.airavata.client.samples;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
+import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
+import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.error.AiravataClientConnectException;
+import org.apache.airavata.model.error.AiravataClientException;
+import org.apache.thrift.TException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by shameera on 9/30/14.
+ */
+public class CreateLaunchExperimentForLocalhost {
+
+    private static final String THRIFT_SERVER_HOST = "127.0.0.1";
+    private static final int THRIFT_SERVER_PORT = 8930;
+    private static final String DEFAULT_GATEWAY = "Sample";
+
+    private Airavata.Client airavataClient;
+    private String localhostId;
+    private String echoModuleId;
+    private String addModuleId;
+    private String multiplyModuleId;
+    private String subtractModuleId;
+
+    public static void main(String[] args) throws AiravataClientConnectException, TException {
+        CreateLaunchExperimentForLocalhost worker = new CreateLaunchExperimentForLocalhost();
+        worker.register();
+    }
+
+
+    public void register() throws AiravataClientConnectException, TException {
+        airavataClient = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+
+        registerLocalhost();
+//        registerGatewayProfile();
+        registerApplicationModules();
+        registerApplicationDeployments();
+        registerApplicationInterfaces();
+    }
+
+    private void registerGatewayProfile() throws TException {
+        ComputeResourcePreference localhostResourcePreference = RegisterSampleApplicationsUtils.
+             createComputeResourcePreference("localhost", "test", false, null, null, null,
+                "/Users/shameera/work/source/git_airavata/modules/distribution/server/target/apache-airavata-server-0.14-SNAPSHOT/tmp");
+        GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
+        gatewayResourceProfile.setGatewayID(DEFAULT_GATEWAY);
+        gatewayResourceProfile.setGatewayName(DEFAULT_GATEWAY);
+        gatewayResourceProfile.addToComputeResourcePreferences(localhostResourcePreference);
+        airavataClient.registerGatewayResourceProfile(gatewayResourceProfile);
+    }
+
+    private void registerLocalhost() {
+//        try {
+//            System.out.println("\n #### Registering Localhost Computational Resource #### \n");
+//
+//            ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils.
+//                    createComputeResourceDescription("localhost", "LocalHost", null, null);
+//            localhostId = airavataClient.registerComputeResource(computeResourceDescription);
+//            ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils.
+//                    createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
+//            LOCALSubmission submission = new LOCALSubmission();
+//            submission.setResourceJobManager(resourceJobManager);
+//            boolean localSubmission = airavataClient.addLocalSubmissionDetails(localhostId, 1, submission);
+//            if (!localSubmission) throw new AiravataClientException();
+//            System.out.println("LocalHost Resource Id is " + localhostId);
+//
+//        } catch (TException e) {
+//            e.printStackTrace();
+//        }
+    }
+
+    private void registerApplicationInterfaces() {
+         registerAddApplicationInterface();
+        registerSubtractApplicationInterface();
+        registerMultiplyApplicationInterface();
+        registerEchoInterface();
+    }
+
+    private void registerApplicationDeployments() throws TException {
+        System.out.println("#### Registering Application Deployments on Localhost #### \n");
+        //Register Echo
+        String echoAppDeployId = airavataClient.registerApplicationDeployment(
+                RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, localhostId,
+                        "/Users/shameera/work/tryout/scripts/echo.sh", ApplicationParallelismType.SERIAL, "Echo application description"));
+        System.out.println("Echo on localhost Id " + echoAppDeployId);
+
+        //Register Add application
+        String addAppDeployId = airavataClient.registerApplicationDeployment(
+                RegisterSampleApplicationsUtils.createApplicationDeployment(addModuleId, localhostId,
+                        "/Users/shameera/work/tryout/scripts/add.sh", ApplicationParallelismType.SERIAL, "Add application description"));
+        System.out.println("Add on localhost Id " + addAppDeployId);
+
+        //Register Multiply application
+        String multiplyAppDeployId = airavataClient.registerApplicationDeployment(
+                RegisterSampleApplicationsUtils.createApplicationDeployment(multiplyModuleId, localhostId,
+                        "/Users/shameera/work/tryout/scripts/multiply.sh", ApplicationParallelismType.SERIAL, "Multiply application description"));
+        System.out.println("Echo on localhost Id " + multiplyAppDeployId);
+
+        //Register Subtract application
+        String subtractAppDeployId = airavataClient.registerApplicationDeployment(
+                RegisterSampleApplicationsUtils.createApplicationDeployment(subtractModuleId, localhostId,
+                        "/Users/shameera/work/tryout/scripts/subtract.sh", ApplicationParallelismType.SERIAL, "Subtract application description "));
+        System.out.println("Echo on localhost Id " + subtractAppDeployId);
+    }
+
+    private void registerApplicationModules() throws TException {
+        //Register Echo
+        echoModuleId = airavataClient.registerApplicationModule(
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Echo", "1.0", "Echo application description"));
+        System.out.println("Echo Module Id " + echoModuleId);
+        //Register Echo
+        addModuleId = airavataClient.registerApplicationModule(
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Add", "1.0", "Add application description"));
+        System.out.println("Add Module Id " + addModuleId);
+        //Register Echo
+        multiplyModuleId = airavataClient.registerApplicationModule(
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Multiply", "1.0", "Multiply application description"));
+        System.out.println("Multiply Module Id " + multiplyModuleId);
+        //Register Echo
+        subtractModuleId = airavataClient.registerApplicationModule(
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Subtract", "1.0", "Subtract application description"));
+        System.out.println("Subtract Module Id " + subtractModuleId);
+
+    }
+
+
+    public void registerEchoInterface() {
+        try {
+            System.out.println("#### Registering Echo Interface #### \n");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(echoModuleId);
+
+            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
+                    DataType.STRING, null, false, "A test string to Echo", null);
+
+            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
+                    "", DataType.STRING);
+
+            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            String echoInterfaceId = airavataClient.registerApplicationInterface(
+                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Echo", "Echo application description",
+                            appModules, applicationInputs, applicationOutputs));
+            System.out.println("Echo Application Interface Id " + echoInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void registerAddApplicationInterface() {
+        try {
+            System.out.println("#### Registering Add Application Interface #### \n");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(addModuleId);
+
+            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "2",
+                    DataType.STRING, null, false, "Add operation input_1", null);
+            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "3",
+                    DataType.STRING, null, false, "Add operation input_2", null);
+
+            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+            applicationInputs.add(input2);
+
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
+                    "0", DataType.STRING);
+
+            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            String addApplicationInterfaceId = airavataClient.registerApplicationInterface(
+                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Add", "Add two numbers",
+                            appModules, applicationInputs, applicationOutputs));
+            System.out.println("Add Application Interface Id " + addApplicationInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void registerMultiplyApplicationInterface() {
+        try {
+            System.out.println("#### Registering Multiply Application Interface #### \n");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(multiplyModuleId);
+
+            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "4",
+                    DataType.STRING, null, false, "Multiply operation input_1", null);
+            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "5",
+                    DataType.STRING, null, false, "Multiply operation input_2", null);
+
+            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+            applicationInputs.add(input2);
+
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
+                    "0", DataType.STRING);
+
+            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            String multiplyApplicationInterfaceId = airavataClient.registerApplicationInterface(
+                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Multiply", "Multiply two numbers",
+                            appModules, applicationInputs, applicationOutputs));
+            System.out.println("Multiply Application Interface Id " + multiplyApplicationInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void registerSubtractApplicationInterface() {
+        try {
+            System.out.println("#### Registering Subtract Application Interface #### \n");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(subtractModuleId);
+
+            InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "6",
+                    DataType.STRING, null, false, "Subtract operation input_1", null);
+            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "7",
+                    DataType.STRING, null, false, "Subtract operation input_2", null);
+
+            List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+            applicationInputs.add(input2);
+
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
+                    "0", DataType.STRING);
+
+            List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            String subtractApplicationInterfaceId = airavataClient.registerApplicationInterface(
+                    RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Subtract", "Subtract two numbers",
+                            appModules, applicationInputs, applicationOutputs));
+            System.out.println("Subtract Application Interface Id " + subtractApplicationInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
index fbbd6c0..a86cfb7 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/messaging/event/TaskOutputChangeEvent.java
@@ -61,7 +61,7 @@ import org.slf4j.LoggerFactory;
     schemes.put(TupleScheme.class, new TaskOutputChangeEventTupleSchemeFactory());
   }
 
-  private List<org.apache.airavata.model.workspace.experiment.DataObjectType> output; // required
+  private List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> output; // required
   private TaskIdentifier taskIdentity; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -131,7 +131,7 @@ import org.slf4j.LoggerFactory;
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.OUTPUT, new org.apache.thrift.meta_data.FieldMetaData("output", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.workspace.experiment.DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType.class))));
     tmpMap.put(_Fields.TASK_IDENTITY, new org.apache.thrift.meta_data.FieldMetaData("taskIdentity", org.apache.thrift.TFieldRequirementType.REQUIRED, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TaskIdentifier.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
@@ -142,7 +142,7 @@ import org.slf4j.LoggerFactory;
   }
 
   public TaskOutputChangeEvent(
-    List<org.apache.airavata.model.workspace.experiment.DataObjectType> output,
+    List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> output,
     TaskIdentifier taskIdentity)
   {
     this();
@@ -155,9 +155,9 @@ import org.slf4j.LoggerFactory;
    */
   public TaskOutputChangeEvent(TaskOutputChangeEvent other) {
     if (other.isSetOutput()) {
-      List<org.apache.airavata.model.workspace.experiment.DataObjectType> __this__output = new ArrayList<org.apache.airavata.model.workspace.experiment.DataObjectType>(other.output.size());
-      for (org.apache.airavata.model.workspace.experiment.DataObjectType other_element : other.output) {
-        __this__output.add(new org.apache.airavata.model.workspace.experiment.DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> __this__output = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(other.output.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType other_element : other.output) {
+        __this__output.add(new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType(other_element));
       }
       this.output = __this__output;
     }
@@ -180,22 +180,22 @@ import org.slf4j.LoggerFactory;
     return (this.output == null) ? 0 : this.output.size();
   }
 
-  public java.util.Iterator<org.apache.airavata.model.workspace.experiment.DataObjectType> getOutputIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getOutputIterator() {
     return (this.output == null) ? null : this.output.iterator();
   }
 
-  public void addToOutput(org.apache.airavata.model.workspace.experiment.DataObjectType elem) {
+  public void addToOutput(org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType elem) {
     if (this.output == null) {
-      this.output = new ArrayList<org.apache.airavata.model.workspace.experiment.DataObjectType>();
+      this.output = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>();
     }
     this.output.add(elem);
   }
 
-  public List<org.apache.airavata.model.workspace.experiment.DataObjectType> getOutput() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getOutput() {
     return this.output;
   }
 
-  public void setOutput(List<org.apache.airavata.model.workspace.experiment.DataObjectType> output) {
+  public void setOutput(List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> output) {
     this.output = output;
   }
 
@@ -243,7 +243,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetOutput();
       } else {
-        setOutput((List<org.apache.airavata.model.workspace.experiment.DataObjectType>)value);
+        setOutput((List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>)value);
       }
       break;
 
@@ -445,11 +445,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
-                struct.output = new ArrayList<org.apache.airavata.model.workspace.experiment.DataObjectType>(_list0.size);
+                struct.output = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list0.size);
                 for (int _i1 = 0; _i1 < _list0.size; ++_i1)
                 {
-                  org.apache.airavata.model.workspace.experiment.DataObjectType _elem2;
-                  _elem2 = new org.apache.airavata.model.workspace.experiment.DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem2;
+                  _elem2 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
                   _elem2.read(iprot);
                   struct.output.add(_elem2);
                 }
@@ -486,7 +486,7 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(OUTPUT_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.output.size()));
-          for (org.apache.airavata.model.workspace.experiment.DataObjectType _iter3 : struct.output)
+          for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter3 : struct.output)
           {
             _iter3.write(oprot);
           }
@@ -518,7 +518,7 @@ import org.slf4j.LoggerFactory;
       TTupleProtocol oprot = (TTupleProtocol) prot;
       {
         oprot.writeI32(struct.output.size());
-        for (org.apache.airavata.model.workspace.experiment.DataObjectType _iter4 : struct.output)
+        for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter4 : struct.output)
         {
           _iter4.write(oprot);
         }
@@ -531,11 +531,11 @@ import org.slf4j.LoggerFactory;
       TTupleProtocol iprot = (TTupleProtocol) prot;
       {
         org.apache.thrift.protocol.TList _list5 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.output = new ArrayList<org.apache.airavata.model.workspace.experiment.DataObjectType>(_list5.size);
+        struct.output = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list5.size);
         for (int _i6 = 0; _i6 < _list5.size; ++_i6)
         {
-          org.apache.airavata.model.workspace.experiment.DataObjectType _elem7;
-          _elem7 = new org.apache.airavata.model.workspace.experiment.DataObjectType();
+          org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem7;
+          _elem7 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
           _elem7.read(iprot);
           struct.output.add(_elem7);
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/Experiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/Experiment.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/Experiment.java
index 7b674cd..7f974cd 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/Experiment.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/Experiment.java
@@ -105,8 +105,8 @@ import org.slf4j.LoggerFactory;
   private String workflowTemplateVersion; // optional
   private UserConfigurationData userConfigurationData; // optional
   private String workflowExecutionInstanceId; // optional
-  private List<DataObjectType> experimentInputs; // optional
-  private List<DataObjectType> experimentOutputs; // optional
+  private List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> experimentInputs; // optional
+  private List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> experimentOutputs; // optional
   private ExperimentStatus experimentStatus; // optional
   private List<WorkflowNodeStatus> stateChangeList; // optional
   private List<WorkflowNodeDetails> workflowNodeDetailsList; // optional
@@ -254,10 +254,10 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.EXPERIMENT_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("experimentInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType.class))));
     tmpMap.put(_Fields.EXPERIMENT_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("experimentOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType.class))));
     tmpMap.put(_Fields.EXPERIMENT_STATUS, new org.apache.thrift.meta_data.FieldMetaData("experimentStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ExperimentStatus.class)));
     tmpMap.put(_Fields.STATE_CHANGE_LIST, new org.apache.thrift.meta_data.FieldMetaData("stateChangeList", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -333,16 +333,16 @@ import org.slf4j.LoggerFactory;
       this.workflowExecutionInstanceId = other.workflowExecutionInstanceId;
     }
     if (other.isSetExperimentInputs()) {
-      List<DataObjectType> __this__experimentInputs = new ArrayList<DataObjectType>(other.experimentInputs.size());
-      for (DataObjectType other_element : other.experimentInputs) {
-        __this__experimentInputs.add(new DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> __this__experimentInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(other.experimentInputs.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType other_element : other.experimentInputs) {
+        __this__experimentInputs.add(new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType(other_element));
       }
       this.experimentInputs = __this__experimentInputs;
     }
     if (other.isSetExperimentOutputs()) {
-      List<DataObjectType> __this__experimentOutputs = new ArrayList<DataObjectType>(other.experimentOutputs.size());
-      for (DataObjectType other_element : other.experimentOutputs) {
-        __this__experimentOutputs.add(new DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> __this__experimentOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(other.experimentOutputs.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType other_element : other.experimentOutputs) {
+        __this__experimentOutputs.add(new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType(other_element));
       }
       this.experimentOutputs = __this__experimentOutputs;
     }
@@ -680,22 +680,22 @@ import org.slf4j.LoggerFactory;
     return (this.experimentInputs == null) ? 0 : this.experimentInputs.size();
   }
 
-  public java.util.Iterator<DataObjectType> getExperimentInputsIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> getExperimentInputsIterator() {
     return (this.experimentInputs == null) ? null : this.experimentInputs.iterator();
   }
 
-  public void addToExperimentInputs(DataObjectType elem) {
+  public void addToExperimentInputs(org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType elem) {
     if (this.experimentInputs == null) {
-      this.experimentInputs = new ArrayList<DataObjectType>();
+      this.experimentInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>();
     }
     this.experimentInputs.add(elem);
   }
 
-  public List<DataObjectType> getExperimentInputs() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> getExperimentInputs() {
     return this.experimentInputs;
   }
 
-  public void setExperimentInputs(List<DataObjectType> experimentInputs) {
+  public void setExperimentInputs(List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> experimentInputs) {
     this.experimentInputs = experimentInputs;
   }
 
@@ -718,22 +718,22 @@ import org.slf4j.LoggerFactory;
     return (this.experimentOutputs == null) ? 0 : this.experimentOutputs.size();
   }
 
-  public java.util.Iterator<DataObjectType> getExperimentOutputsIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getExperimentOutputsIterator() {
     return (this.experimentOutputs == null) ? null : this.experimentOutputs.iterator();
   }
 
-  public void addToExperimentOutputs(DataObjectType elem) {
+  public void addToExperimentOutputs(org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType elem) {
     if (this.experimentOutputs == null) {
-      this.experimentOutputs = new ArrayList<DataObjectType>();
+      this.experimentOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>();
     }
     this.experimentOutputs.add(elem);
   }
 
-  public List<DataObjectType> getExperimentOutputs() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getExperimentOutputs() {
     return this.experimentOutputs;
   }
 
-  public void setExperimentOutputs(List<DataObjectType> experimentOutputs) {
+  public void setExperimentOutputs(List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> experimentOutputs) {
     this.experimentOutputs = experimentOutputs;
   }
 
@@ -991,7 +991,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetExperimentInputs();
       } else {
-        setExperimentInputs((List<DataObjectType>)value);
+        setExperimentInputs((List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>)value);
       }
       break;
 
@@ -999,7 +999,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetExperimentOutputs();
       } else {
-        setExperimentOutputs((List<DataObjectType>)value);
+        setExperimentOutputs((List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>)value);
       }
       break;
 
@@ -1871,11 +1871,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list96 = iprot.readListBegin();
-                struct.experimentInputs = new ArrayList<DataObjectType>(_list96.size);
+                struct.experimentInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(_list96.size);
                 for (int _i97 = 0; _i97 < _list96.size; ++_i97)
                 {
-                  DataObjectType _elem98;
-                  _elem98 = new DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _elem98;
+                  _elem98 = new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType();
                   _elem98.read(iprot);
                   struct.experimentInputs.add(_elem98);
                 }
@@ -1890,11 +1890,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list99 = iprot.readListBegin();
-                struct.experimentOutputs = new ArrayList<DataObjectType>(_list99.size);
+                struct.experimentOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list99.size);
                 for (int _i100 = 0; _i100 < _list99.size; ++_i100)
                 {
-                  DataObjectType _elem101;
-                  _elem101 = new DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem101;
+                  _elem101 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
                   _elem101.read(iprot);
                   struct.experimentOutputs.add(_elem101);
                 }
@@ -2063,7 +2063,7 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(EXPERIMENT_INPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.experimentInputs.size()));
-            for (DataObjectType _iter111 : struct.experimentInputs)
+            for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _iter111 : struct.experimentInputs)
             {
               _iter111.write(oprot);
             }
@@ -2077,7 +2077,7 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(EXPERIMENT_OUTPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.experimentOutputs.size()));
-            for (DataObjectType _iter112 : struct.experimentOutputs)
+            for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter112 : struct.experimentOutputs)
             {
               _iter112.write(oprot);
             }
@@ -2227,7 +2227,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetExperimentInputs()) {
         {
           oprot.writeI32(struct.experimentInputs.size());
-          for (DataObjectType _iter116 : struct.experimentInputs)
+          for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _iter116 : struct.experimentInputs)
           {
             _iter116.write(oprot);
           }
@@ -2236,7 +2236,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetExperimentOutputs()) {
         {
           oprot.writeI32(struct.experimentOutputs.size());
-          for (DataObjectType _iter117 : struct.experimentOutputs)
+          for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter117 : struct.experimentOutputs)
           {
             _iter117.write(oprot);
           }
@@ -2322,11 +2322,11 @@ import org.slf4j.LoggerFactory;
       if (incoming.get(8)) {
         {
           org.apache.thrift.protocol.TList _list121 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.experimentInputs = new ArrayList<DataObjectType>(_list121.size);
+          struct.experimentInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(_list121.size);
           for (int _i122 = 0; _i122 < _list121.size; ++_i122)
           {
-            DataObjectType _elem123;
-            _elem123 = new DataObjectType();
+            org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _elem123;
+            _elem123 = new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType();
             _elem123.read(iprot);
             struct.experimentInputs.add(_elem123);
           }
@@ -2336,11 +2336,11 @@ import org.slf4j.LoggerFactory;
       if (incoming.get(9)) {
         {
           org.apache.thrift.protocol.TList _list124 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.experimentOutputs = new ArrayList<DataObjectType>(_list124.size);
+          struct.experimentOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list124.size);
           for (int _i125 = 0; _i125 < _list124.size; ++_i125)
           {
-            DataObjectType _elem126;
-            _elem126 = new DataObjectType();
+            org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem126;
+            _elem126 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
             _elem126.read(iprot);
             struct.experimentOutputs.add(_elem126);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/JobDetails.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/JobDetails.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/JobDetails.java
index c1034a0..d1cbe5e 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/JobDetails.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/JobDetails.java
@@ -271,14 +271,9 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-    /**
-     * this method is deprecated after we introduce new thirft model with appcatalog
-     * @return
-     */
-    @Deprecated
-    public String getJobDescription() {
-        return this.jobDescription;
-    }
+  public String getJobDescription() {
+    return this.jobDescription;
+  }
 
   public void setJobDescription(String jobDescription) {
     this.jobDescription = jobDescription;

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/TaskDetails.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/TaskDetails.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/TaskDetails.java
index aabc989..2312b1a 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/TaskDetails.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/TaskDetails.java
@@ -84,8 +84,8 @@ import org.slf4j.LoggerFactory;
   private String applicationId; // optional
   private String applicationVersion; // optional
   private String applicationDeploymentId; // optional
-  private List<DataObjectType> applicationInputs; // optional
-  private List<DataObjectType> applicationOutputs; // optional
+  private List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> applicationInputs; // optional
+  private List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> applicationOutputs; // optional
   private ComputationalResourceScheduling taskScheduling; // optional
   private AdvancedInputDataHandling advancedInputDataHandling; // optional
   private AdvancedOutputDataHandling advancedOutputDataHandling; // optional
@@ -210,10 +210,10 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.APPLICATION_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("applicationInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType.class))));
     tmpMap.put(_Fields.APPLICATION_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("applicationOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType.class))));
     tmpMap.put(_Fields.TASK_SCHEDULING, new org.apache.thrift.meta_data.FieldMetaData("taskScheduling", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ComputationalResourceScheduling.class)));
     tmpMap.put(_Fields.ADVANCED_INPUT_DATA_HANDLING, new org.apache.thrift.meta_data.FieldMetaData("advancedInputDataHandling", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -266,16 +266,16 @@ import org.slf4j.LoggerFactory;
       this.applicationDeploymentId = other.applicationDeploymentId;
     }
     if (other.isSetApplicationInputs()) {
-      List<DataObjectType> __this__applicationInputs = new ArrayList<DataObjectType>(other.applicationInputs.size());
-      for (DataObjectType other_element : other.applicationInputs) {
-        __this__applicationInputs.add(new DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> __this__applicationInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(other.applicationInputs.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType other_element : other.applicationInputs) {
+        __this__applicationInputs.add(new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType(other_element));
       }
       this.applicationInputs = __this__applicationInputs;
     }
     if (other.isSetApplicationOutputs()) {
-      List<DataObjectType> __this__applicationOutputs = new ArrayList<DataObjectType>(other.applicationOutputs.size());
-      for (DataObjectType other_element : other.applicationOutputs) {
-        __this__applicationOutputs.add(new DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> __this__applicationOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(other.applicationOutputs.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType other_element : other.applicationOutputs) {
+        __this__applicationOutputs.add(new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType(other_element));
       }
       this.applicationOutputs = __this__applicationOutputs;
     }
@@ -456,22 +456,22 @@ import org.slf4j.LoggerFactory;
     return (this.applicationInputs == null) ? 0 : this.applicationInputs.size();
   }
 
-  public java.util.Iterator<DataObjectType> getApplicationInputsIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> getApplicationInputsIterator() {
     return (this.applicationInputs == null) ? null : this.applicationInputs.iterator();
   }
 
-  public void addToApplicationInputs(DataObjectType elem) {
+  public void addToApplicationInputs(org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType elem) {
     if (this.applicationInputs == null) {
-      this.applicationInputs = new ArrayList<DataObjectType>();
+      this.applicationInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>();
     }
     this.applicationInputs.add(elem);
   }
 
-  public List<DataObjectType> getApplicationInputs() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> getApplicationInputs() {
     return this.applicationInputs;
   }
 
-  public void setApplicationInputs(List<DataObjectType> applicationInputs) {
+  public void setApplicationInputs(List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> applicationInputs) {
     this.applicationInputs = applicationInputs;
   }
 
@@ -494,22 +494,22 @@ import org.slf4j.LoggerFactory;
     return (this.applicationOutputs == null) ? 0 : this.applicationOutputs.size();
   }
 
-  public java.util.Iterator<DataObjectType> getApplicationOutputsIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getApplicationOutputsIterator() {
     return (this.applicationOutputs == null) ? null : this.applicationOutputs.iterator();
   }
 
-  public void addToApplicationOutputs(DataObjectType elem) {
+  public void addToApplicationOutputs(org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType elem) {
     if (this.applicationOutputs == null) {
-      this.applicationOutputs = new ArrayList<DataObjectType>();
+      this.applicationOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>();
     }
     this.applicationOutputs.add(elem);
   }
 
-  public List<DataObjectType> getApplicationOutputs() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getApplicationOutputs() {
     return this.applicationOutputs;
   }
 
-  public void setApplicationOutputs(List<DataObjectType> applicationOutputs) {
+  public void setApplicationOutputs(List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> applicationOutputs) {
     this.applicationOutputs = applicationOutputs;
   }
 
@@ -780,7 +780,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetApplicationInputs();
       } else {
-        setApplicationInputs((List<DataObjectType>)value);
+        setApplicationInputs((List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>)value);
       }
       break;
 
@@ -788,7 +788,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetApplicationOutputs();
       } else {
-        setApplicationOutputs((List<DataObjectType>)value);
+        setApplicationOutputs((List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>)value);
       }
       break;
 
@@ -1491,11 +1491,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list16 = iprot.readListBegin();
-                struct.applicationInputs = new ArrayList<DataObjectType>(_list16.size);
+                struct.applicationInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(_list16.size);
                 for (int _i17 = 0; _i17 < _list16.size; ++_i17)
                 {
-                  DataObjectType _elem18;
-                  _elem18 = new DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _elem18;
+                  _elem18 = new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType();
                   _elem18.read(iprot);
                   struct.applicationInputs.add(_elem18);
                 }
@@ -1510,11 +1510,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list19 = iprot.readListBegin();
-                struct.applicationOutputs = new ArrayList<DataObjectType>(_list19.size);
+                struct.applicationOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list19.size);
                 for (int _i20 = 0; _i20 < _list19.size; ++_i20)
                 {
-                  DataObjectType _elem21;
-                  _elem21 = new DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem21;
+                  _elem21 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
                   _elem21.read(iprot);
                   struct.applicationOutputs.add(_elem21);
                 }
@@ -1667,7 +1667,7 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(APPLICATION_INPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.applicationInputs.size()));
-            for (DataObjectType _iter31 : struct.applicationInputs)
+            for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _iter31 : struct.applicationInputs)
             {
               _iter31.write(oprot);
             }
@@ -1681,7 +1681,7 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(APPLICATION_OUTPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.applicationOutputs.size()));
-            for (DataObjectType _iter32 : struct.applicationOutputs)
+            for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter32 : struct.applicationOutputs)
             {
               _iter32.write(oprot);
             }
@@ -1834,7 +1834,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetApplicationInputs()) {
         {
           oprot.writeI32(struct.applicationInputs.size());
-          for (DataObjectType _iter36 : struct.applicationInputs)
+          for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _iter36 : struct.applicationInputs)
           {
             _iter36.write(oprot);
           }
@@ -1843,7 +1843,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetApplicationOutputs()) {
         {
           oprot.writeI32(struct.applicationOutputs.size());
-          for (DataObjectType _iter37 : struct.applicationOutputs)
+          for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter37 : struct.applicationOutputs)
           {
             _iter37.write(oprot);
           }
@@ -1915,11 +1915,11 @@ import org.slf4j.LoggerFactory;
       if (incoming.get(4)) {
         {
           org.apache.thrift.protocol.TList _list41 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.applicationInputs = new ArrayList<DataObjectType>(_list41.size);
+          struct.applicationInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(_list41.size);
           for (int _i42 = 0; _i42 < _list41.size; ++_i42)
           {
-            DataObjectType _elem43;
-            _elem43 = new DataObjectType();
+            org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _elem43;
+            _elem43 = new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType();
             _elem43.read(iprot);
             struct.applicationInputs.add(_elem43);
           }
@@ -1929,11 +1929,11 @@ import org.slf4j.LoggerFactory;
       if (incoming.get(5)) {
         {
           org.apache.thrift.protocol.TList _list44 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.applicationOutputs = new ArrayList<DataObjectType>(_list44.size);
+          struct.applicationOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list44.size);
           for (int _i45 = 0; _i45 < _list44.size; ++_i45)
           {
-            DataObjectType _elem46;
-            _elem46 = new DataObjectType();
+            org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem46;
+            _elem46 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
             _elem46.read(iprot);
             struct.applicationOutputs.add(_elem46);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/WorkflowNodeDetails.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/WorkflowNodeDetails.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/WorkflowNodeDetails.java
index 62e5a7e..bab25cd 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/WorkflowNodeDetails.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/workspace/experiment/WorkflowNodeDetails.java
@@ -78,8 +78,8 @@ import org.slf4j.LoggerFactory;
   private String nodeName; // required
   private ExecutionUnit executionUnit; // required
   private String executionUnitData; // optional
-  private List<DataObjectType> nodeInputs; // optional
-  private List<DataObjectType> nodeOutputs; // optional
+  private List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> nodeInputs; // optional
+  private List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> nodeOutputs; // optional
   private WorkflowNodeStatus workflowNodeStatus; // optional
   private List<TaskDetails> taskDetailsList; // optional
   private List<ErrorDetails> errors; // optional
@@ -192,10 +192,10 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.NODE_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("nodeInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType.class))));
     tmpMap.put(_Fields.NODE_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("nodeOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
-            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType.class))));
     tmpMap.put(_Fields.WORKFLOW_NODE_STATUS, new org.apache.thrift.meta_data.FieldMetaData("workflowNodeStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, WorkflowNodeStatus.class)));
     tmpMap.put(_Fields.TASK_DETAILS_LIST, new org.apache.thrift.meta_data.FieldMetaData("taskDetailsList", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -247,16 +247,16 @@ import org.slf4j.LoggerFactory;
       this.executionUnitData = other.executionUnitData;
     }
     if (other.isSetNodeInputs()) {
-      List<DataObjectType> __this__nodeInputs = new ArrayList<DataObjectType>(other.nodeInputs.size());
-      for (DataObjectType other_element : other.nodeInputs) {
-        __this__nodeInputs.add(new DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> __this__nodeInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(other.nodeInputs.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType other_element : other.nodeInputs) {
+        __this__nodeInputs.add(new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType(other_element));
       }
       this.nodeInputs = __this__nodeInputs;
     }
     if (other.isSetNodeOutputs()) {
-      List<DataObjectType> __this__nodeOutputs = new ArrayList<DataObjectType>(other.nodeOutputs.size());
-      for (DataObjectType other_element : other.nodeOutputs) {
-        __this__nodeOutputs.add(new DataObjectType(other_element));
+      List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> __this__nodeOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(other.nodeOutputs.size());
+      for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType other_element : other.nodeOutputs) {
+        __this__nodeOutputs.add(new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType(other_element));
       }
       this.nodeOutputs = __this__nodeOutputs;
     }
@@ -427,22 +427,22 @@ import org.slf4j.LoggerFactory;
     return (this.nodeInputs == null) ? 0 : this.nodeInputs.size();
   }
 
-  public java.util.Iterator<DataObjectType> getNodeInputsIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> getNodeInputsIterator() {
     return (this.nodeInputs == null) ? null : this.nodeInputs.iterator();
   }
 
-  public void addToNodeInputs(DataObjectType elem) {
+  public void addToNodeInputs(org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType elem) {
     if (this.nodeInputs == null) {
-      this.nodeInputs = new ArrayList<DataObjectType>();
+      this.nodeInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>();
     }
     this.nodeInputs.add(elem);
   }
 
-  public List<DataObjectType> getNodeInputs() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> getNodeInputs() {
     return this.nodeInputs;
   }
 
-  public void setNodeInputs(List<DataObjectType> nodeInputs) {
+  public void setNodeInputs(List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType> nodeInputs) {
     this.nodeInputs = nodeInputs;
   }
 
@@ -465,22 +465,22 @@ import org.slf4j.LoggerFactory;
     return (this.nodeOutputs == null) ? 0 : this.nodeOutputs.size();
   }
 
-  public java.util.Iterator<DataObjectType> getNodeOutputsIterator() {
+  public java.util.Iterator<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getNodeOutputsIterator() {
     return (this.nodeOutputs == null) ? null : this.nodeOutputs.iterator();
   }
 
-  public void addToNodeOutputs(DataObjectType elem) {
+  public void addToNodeOutputs(org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType elem) {
     if (this.nodeOutputs == null) {
-      this.nodeOutputs = new ArrayList<DataObjectType>();
+      this.nodeOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>();
     }
     this.nodeOutputs.add(elem);
   }
 
-  public List<DataObjectType> getNodeOutputs() {
+  public List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> getNodeOutputs() {
     return this.nodeOutputs;
   }
 
-  public void setNodeOutputs(List<DataObjectType> nodeOutputs) {
+  public void setNodeOutputs(List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType> nodeOutputs) {
     this.nodeOutputs = nodeOutputs;
   }
 
@@ -644,7 +644,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetNodeInputs();
       } else {
-        setNodeInputs((List<DataObjectType>)value);
+        setNodeInputs((List<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>)value);
       }
       break;
 
@@ -652,7 +652,7 @@ import org.slf4j.LoggerFactory;
       if (value == null) {
         unsetNodeOutputs();
       } else {
-        setNodeOutputs((List<DataObjectType>)value);
+        setNodeOutputs((List<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>)value);
       }
       break;
 
@@ -1182,11 +1182,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list56 = iprot.readListBegin();
-                struct.nodeInputs = new ArrayList<DataObjectType>(_list56.size);
+                struct.nodeInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(_list56.size);
                 for (int _i57 = 0; _i57 < _list56.size; ++_i57)
                 {
-                  DataObjectType _elem58;
-                  _elem58 = new DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _elem58;
+                  _elem58 = new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType();
                   _elem58.read(iprot);
                   struct.nodeInputs.add(_elem58);
                 }
@@ -1201,11 +1201,11 @@ import org.slf4j.LoggerFactory;
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
                 org.apache.thrift.protocol.TList _list59 = iprot.readListBegin();
-                struct.nodeOutputs = new ArrayList<DataObjectType>(_list59.size);
+                struct.nodeOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list59.size);
                 for (int _i60 = 0; _i60 < _list59.size; ++_i60)
                 {
-                  DataObjectType _elem61;
-                  _elem61 = new DataObjectType();
+                  org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem61;
+                  _elem61 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
                   _elem61.read(iprot);
                   struct.nodeOutputs.add(_elem61);
                 }
@@ -1308,7 +1308,7 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(NODE_INPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.nodeInputs.size()));
-            for (DataObjectType _iter68 : struct.nodeInputs)
+            for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _iter68 : struct.nodeInputs)
             {
               _iter68.write(oprot);
             }
@@ -1322,7 +1322,7 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(NODE_OUTPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.nodeOutputs.size()));
-            for (DataObjectType _iter69 : struct.nodeOutputs)
+            for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter69 : struct.nodeOutputs)
             {
               _iter69.write(oprot);
             }
@@ -1418,7 +1418,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetNodeInputs()) {
         {
           oprot.writeI32(struct.nodeInputs.size());
-          for (DataObjectType _iter72 : struct.nodeInputs)
+          for (org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _iter72 : struct.nodeInputs)
           {
             _iter72.write(oprot);
           }
@@ -1427,7 +1427,7 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetNodeOutputs()) {
         {
           oprot.writeI32(struct.nodeOutputs.size());
-          for (DataObjectType _iter73 : struct.nodeOutputs)
+          for (org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _iter73 : struct.nodeOutputs)
           {
             _iter73.write(oprot);
           }
@@ -1477,11 +1477,11 @@ import org.slf4j.LoggerFactory;
       if (incoming.get(2)) {
         {
           org.apache.thrift.protocol.TList _list76 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.nodeInputs = new ArrayList<DataObjectType>(_list76.size);
+          struct.nodeInputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType>(_list76.size);
           for (int _i77 = 0; _i77 < _list76.size; ++_i77)
           {
-            DataObjectType _elem78;
-            _elem78 = new DataObjectType();
+            org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType _elem78;
+            _elem78 = new org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType();
             _elem78.read(iprot);
             struct.nodeInputs.add(_elem78);
           }
@@ -1491,11 +1491,11 @@ import org.slf4j.LoggerFactory;
       if (incoming.get(3)) {
         {
           org.apache.thrift.protocol.TList _list79 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.nodeOutputs = new ArrayList<DataObjectType>(_list79.size);
+          struct.nodeOutputs = new ArrayList<org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType>(_list79.size);
           for (int _i80 = 0; _i80 < _list79.size; ++_i80)
           {
-            DataObjectType _elem81;
-            _elem81 = new DataObjectType();
+            org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType _elem81;
+            _elem81 = new org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType();
             _elem81.read(iprot);
             struct.nodeOutputs.add(_elem81);
           }

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
index 59b3e7b..2598082 100644
--- a/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
+++ b/airavata-api/thrift-interface-descriptions/airavataAPI.thrift
@@ -397,7 +397,7 @@ service Airavata {
               3: airavataErrors.AiravataClientException ace,
               4: airavataErrors.AiravataSystemException ase)
 
-  list<experimentModel.DataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
+  list<applicationInterfaceModel.OutputDataObjectType> getExperimentOutputs (1: required string airavataExperimentId)
       throws (1: airavataErrors.InvalidRequestException ire,
               2: airavataErrors.ExperimentNotFoundException enf,
               3: airavataErrors.AiravataClientException ace,

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/thrift-interface-descriptions/experimentModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/experimentModel.thrift b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
index 61ba12b..512cfe8 100644
--- a/airavata-api/thrift-interface-descriptions/experimentModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
@@ -19,6 +19,7 @@
  */
 
 include "computeResourceModel.thrift"
+include "applicationInterfaceModel.thrift"
 
 namespace java org.apache.airavata.model.workspace.experiment
 namespace php Airavata.Model.Workspace.Experiment
@@ -183,25 +184,6 @@ enum CorrectiveAction {
     CANNOT_BE_DETERMINED
 }
 
-enum DataType{
-	STRING,
-	INTEGER,
-	URI,
-	STDOUT,
-	STDERR
-}
-
-/**
-* A structure  hold experiment input output
-*
-*/
-struct DataObjectType {
-    1: required string key,
-    2: optional string value,
-    3: optional DataType type,
-    4: optional string metaData
-}
-
 /**
  * A structure holding the Computational Resource Scheduling.
  *
@@ -307,8 +289,8 @@ struct TaskDetails {
     3: optional string applicationId,
     4: optional string applicationVersion,
     5: optional string applicationDeploymentId,
-    6: optional list<DataObjectType> applicationInputs,
-    7: optional list<DataObjectType> applicationOutputs,
+    6: optional list<applicationInterfaceModel.InputDataObjectType> applicationInputs,
+    7: optional list<applicationInterfaceModel.OutputDataObjectType> applicationOutputs,
     8: optional ComputationalResourceScheduling taskScheduling,
     9: optional AdvancedInputDataHandling advancedInputDataHandling,
     10: optional AdvancedOutputDataHandling advancedOutputDataHandling,
@@ -336,8 +318,8 @@ struct WorkflowNodeDetails {
     3: required string nodeName = SINGLE_APP_NODE_NAME,
     4: required ExecutionUnit executionUnit = ExecutionUnit.APPLICATION,
     5: optional string executionUnitData,
-    6: optional list<DataObjectType> nodeInputs,
-    7: optional list<DataObjectType> nodeOutputs,
+    6: optional list<applicationInterfaceModel.InputDataObjectType> nodeInputs,
+    7: optional list<applicationInterfaceModel.OutputDataObjectType> nodeOutputs,
     8: optional WorkflowNodeStatus workflowNodeStatus,
     9: optional list<TaskDetails> taskDetailsList,
     10: optional list<ErrorDetails> errors
@@ -390,8 +372,8 @@ struct Experiment {
     10: optional string workflowTemplateVersion,
     11: optional UserConfigurationData userConfigurationData,
     12: optional string workflowExecutionInstanceId,
-    13: optional list<DataObjectType> experimentInputs,
-    14: optional list<DataObjectType> experimentOutputs,
+    13: optional list<applicationInterfaceModel.InputDataObjectType> experimentInputs,
+    14: optional list<applicationInterfaceModel.OutputDataObjectType> experimentOutputs,
     15: optional ExperimentStatus experimentStatus,
     16: optional list<WorkflowNodeStatus> stateChangeList,
     17: optional list<WorkflowNodeDetails> workflowNodeDetailsList,

http://git-wip-us.apache.org/repos/asf/airavata/blob/198de990/airavata-api/thrift-interface-descriptions/messagingEvents.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/messagingEvents.thrift b/airavata-api/thrift-interface-descriptions/messagingEvents.thrift
index d7178cc..c9f3808 100644
--- a/airavata-api/thrift-interface-descriptions/messagingEvents.thrift
+++ b/airavata-api/thrift-interface-descriptions/messagingEvents.thrift
@@ -19,6 +19,7 @@
  */
 
 include "experimentModel.thrift"
+include "applicationInterfaceModel.thrift"
 
 namespace java org.apache.airavata.model.messaging.event
 namespace php Airavata.Model.Messaging.Event
@@ -75,7 +76,7 @@ struct TaskStatusChangeRequestEvent {
 }
 
 struct TaskOutputChangeEvent {
-    1: required list<experimentModel.DataObjectType> output;
+    1: required list<applicationInterfaceModel.OutputDataObjectType> output;
     2: required TaskIdentifier taskIdentity;
 }