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/12/08 22:28:18 UTC

[2/2] airavata git commit: adding improvements to input and output data types - AIRAVATA-1544

adding improvements to input and output data types - AIRAVATA-1544


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/d35226d8
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/d35226d8
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/d35226d8

Branch: refs/heads/master
Commit: d35226d8830fb84e87fcda9e307fc14af9bfa239
Parents: 0c6301a
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Mon Dec 8 16:28:10 2014 -0500
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Mon Dec 8 16:28:10 2014 -0500

----------------------------------------------------------------------
 .../applicationInterfaceModel_types.cpp         | 198 ++++++++---
 .../airavata/applicationInterfaceModel_types.h  | 113 ++++++-
 .../lib/airavata/experimentModel_types.cpp      |  12 +-
 .../lib/airavata/experimentModel_types.h        |  12 +-
 .../lib/airavata/messagingEvents_types.cpp      |   4 +-
 .../lib/airavata/messagingEvents_types.h        |   4 +-
 .../lib/airavata/workflowDataModel_types.cpp    |   4 +-
 .../lib/airavata/workflowDataModel_types.h      |   4 +-
 .../Model/AppCatalog/AppInterface/Types.php     | 147 +++++++++
 .../appinterface/InputDataObjectType.java       | 330 ++++++++++++++++++-
 .../appinterface/OutputDataObjectType.java      | 320 +++++++++++++++++-
 .../applicationInterfaceModel.thrift            |  28 +-
 .../catalog/data/model/ApplicationInput.java    |  30 ++
 .../catalog/data/model/ApplicationOutput.java   |  30 ++
 .../catalog/data/model/WorkflowInput.java       |  30 ++
 .../catalog/data/model/WorkflowOutput.java      |  30 ++
 .../resources/ApplicationInputResource.java     |  30 ++
 .../resources/ApplicationOutputResource.java    |  30 ++
 .../data/resources/WorkflowInputResource.java   |  30 ++
 .../data/resources/WorkflowOutputResource.java  |  33 ++
 .../catalog/data/util/AppCatalogJPAUtils.java   |  12 +
 .../data/util/AppCatalogThriftConversion.java   |  24 +-
 .../src/main/resources/appcatalog-derby.sql     |   7 +
 .../src/main/resources/appcatalog-mysql.sql     |   7 +
 .../src/test/resources/appcatalog-derby.sql     |   7 +
 .../registry/jpa/model/ApplicationInput.java    |  31 ++
 .../registry/jpa/model/ApplicationOutput.java   |  31 ++
 .../registry/jpa/model/Experiment_Input.java    |  31 ++
 .../registry/jpa/model/Experiment_Output.java   |  31 ++
 .../registry/jpa/model/NodeInput.java           |  31 ++
 .../registry/jpa/model/NodeOutput.java          |  31 ++
 .../jpa/resources/ApplicationInputResource.java |  33 ++
 .../resources/ApplicationOutputResource.java    |  33 ++
 .../jpa/resources/ExperimentInputResource.java  |  33 ++
 .../jpa/resources/ExperimentOutputResource.java |  33 ++
 .../jpa/resources/NodeInputResource.java        |  33 ++
 .../jpa/resources/NodeOutputResource.java       |  33 ++
 .../registry/jpa/resources/Utils.java           |  19 ++
 .../jpa/utils/ThriftDataModelConversion.java    |  40 ++-
 .../src/main/resources/registry-derby.sql       |  18 +
 .../src/main/resources/registry-mysql.sql       |  18 +
 .../src/test/resources/registry-derby.sql       |  45 ++-
 42 files changed, 1903 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
index b32630a..1b40aa0 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.cpp
@@ -45,8 +45,38 @@ const char* _kDataTypeNames[] = {
 };
 const std::map<int, const char*> _DataType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, _kDataTypeValues, _kDataTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
-const char* InputDataObjectType::ascii_fingerprint = "91FB63C319A494A8E1E6563006402BC7";
-const uint8_t InputDataObjectType::binary_fingerprint[16] = {0x91,0xFB,0x63,0xC3,0x19,0xA4,0x94,0xA8,0xE1,0xE6,0x56,0x30,0x06,0x40,0x2B,0xC7};
+int _kValidityTypeValues[] = {
+  ValidityType::REQUIRED,
+  ValidityType::OPTIONAL
+};
+const char* _kValidityTypeNames[] = {
+  "REQUIRED",
+  "OPTIONAL"
+};
+const std::map<int, const char*> _ValidityType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kValidityTypeValues, _kValidityTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kCommandLineTypeValues[] = {
+  CommandLineType::INCLUSIVE,
+  CommandLineType::EXCLUSIVE
+};
+const char* _kCommandLineTypeNames[] = {
+  "INCLUSIVE",
+  "EXCLUSIVE"
+};
+const std::map<int, const char*> _CommandLineType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kCommandLineTypeValues, _kCommandLineTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+int _kInputMetadataTypeValues[] = {
+  InputMetadataType::MEMORY,
+  InputMetadataType::CPU
+};
+const char* _kInputMetadataTypeNames[] = {
+  "MEMORY",
+  "CPU"
+};
+const std::map<int, const char*> _InputMetadataType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(2, _kInputMetadataTypeValues, _kInputMetadataTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+const char* InputDataObjectType::ascii_fingerprint = "95DCCA621F7BE3FA34349CC6A45329DA";
+const uint8_t InputDataObjectType::binary_fingerprint[16] = {0x95,0xDC,0xCA,0x62,0x1F,0x7B,0xE3,0xFA,0x34,0x34,0x9C,0xC6,0xA4,0x53,0x29,0xDA};
 
 uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -135,6 +165,34 @@ uint32_t InputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot)
           xfer += iprot->skip(ftype);
         }
         break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast1;
+          xfer += iprot->readI32(ecast1);
+          this->inputValid = (ValidityType::type)ecast1;
+          this->__isset.inputValid = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 10:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast2;
+          xfer += iprot->readI32(ecast2);
+          this->addedToCommandLine = (CommandLineType::type)ecast2;
+          this->__isset.addedToCommandLine = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 11:
+        if (ftype == ::apache::thrift::protocol::T_BOOL) {
+          xfer += iprot->readBool(this->dataStaged);
+          this->__isset.dataStaged = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -192,6 +250,21 @@ uint32_t InputDataObjectType::write(::apache::thrift::protocol::TProtocol* oprot
     xfer += oprot->writeI32(this->inputOrder);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.inputValid) {
+    xfer += oprot->writeFieldBegin("inputValid", ::apache::thrift::protocol::T_I32, 9);
+    xfer += oprot->writeI32((int32_t)this->inputValid);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.addedToCommandLine) {
+    xfer += oprot->writeFieldBegin("addedToCommandLine", ::apache::thrift::protocol::T_I32, 10);
+    xfer += oprot->writeI32((int32_t)this->addedToCommandLine);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.dataStaged) {
+    xfer += oprot->writeFieldBegin("dataStaged", ::apache::thrift::protocol::T_BOOL, 11);
+    xfer += oprot->writeBool(this->dataStaged);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -207,11 +280,14 @@ void swap(InputDataObjectType &a, InputDataObjectType &b) {
   swap(a.userFriendlyDescription, b.userFriendlyDescription);
   swap(a.metaData, b.metaData);
   swap(a.inputOrder, b.inputOrder);
+  swap(a.inputValid, b.inputValid);
+  swap(a.addedToCommandLine, b.addedToCommandLine);
+  swap(a.dataStaged, b.dataStaged);
   swap(a.__isset, b.__isset);
 }
 
-const char* OutputDataObjectType::ascii_fingerprint = "B33AE596EF78C48424CF96BCA5D1DF99";
-const uint8_t OutputDataObjectType::binary_fingerprint[16] = {0xB3,0x3A,0xE5,0x96,0xEF,0x78,0xC4,0x84,0x24,0xCF,0x96,0xBC,0xA5,0xD1,0xDF,0x99};
+const char* OutputDataObjectType::ascii_fingerprint = "9B8C3AEA43A2028DF0CEF51E90706E3A";
+const uint8_t OutputDataObjectType::binary_fingerprint[16] = {0x9B,0x8C,0x3A,0xEA,0x43,0xA2,0x02,0x8D,0xF0,0xCE,0xF5,0x1E,0x90,0x70,0x6E,0x3A};
 
 uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -252,14 +328,40 @@ uint32_t OutputDataObjectType::read(::apache::thrift::protocol::TProtocol* iprot
         break;
       case 3:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast1;
-          xfer += iprot->readI32(ecast1);
-          this->type = (DataType::type)ecast1;
+          int32_t ecast3;
+          xfer += iprot->readI32(ecast3);
+          this->type = (DataType::type)ecast3;
           this->__isset.type = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast4;
+          xfer += iprot->readI32(ecast4);
+          this->validityType = (ValidityType::type)ecast4;
+          this->__isset.validityType = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_BOOL) {
+          xfer += iprot->readBool(this->dataMovement);
+          this->__isset.dataMovement = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->dataNameLocation);
+          this->__isset.dataNameLocation = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -292,6 +394,21 @@ uint32_t OutputDataObjectType::write(::apache::thrift::protocol::TProtocol* opro
     xfer += oprot->writeI32((int32_t)this->type);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.validityType) {
+    xfer += oprot->writeFieldBegin("validityType", ::apache::thrift::protocol::T_I32, 4);
+    xfer += oprot->writeI32((int32_t)this->validityType);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.dataMovement) {
+    xfer += oprot->writeFieldBegin("dataMovement", ::apache::thrift::protocol::T_BOOL, 5);
+    xfer += oprot->writeBool(this->dataMovement);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.dataNameLocation) {
+    xfer += oprot->writeFieldBegin("dataNameLocation", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->dataNameLocation);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -302,11 +419,14 @@ void swap(OutputDataObjectType &a, OutputDataObjectType &b) {
   swap(a.name, b.name);
   swap(a.value, b.value);
   swap(a.type, b.type);
+  swap(a.validityType, b.validityType);
+  swap(a.dataMovement, b.dataMovement);
+  swap(a.dataNameLocation, b.dataNameLocation);
   swap(a.__isset, b.__isset);
 }
 
-const char* ApplicationInterfaceDescription::ascii_fingerprint = "F2FFD013708A2D0DA86FD5438F17268E";
-const uint8_t ApplicationInterfaceDescription::binary_fingerprint[16] = {0xF2,0xFF,0xD0,0x13,0x70,0x8A,0x2D,0x0D,0xA8,0x6F,0xD5,0x43,0x8F,0x17,0x26,0x8E};
+const char* ApplicationInterfaceDescription::ascii_fingerprint = "CE1749A2DE50827990C3136E0CE4B60D";
+const uint8_t ApplicationInterfaceDescription::binary_fingerprint[16] = {0xCE,0x17,0x49,0xA2,0xDE,0x50,0x82,0x79,0x90,0xC3,0x13,0x6E,0x0C,0xE4,0xB6,0x0D};
 
 uint32_t ApplicationInterfaceDescription::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -358,14 +478,14 @@ uint32_t ApplicationInterfaceDescription::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->applicationModules.clear();
-            uint32_t _size2;
-            ::apache::thrift::protocol::TType _etype5;
-            xfer += iprot->readListBegin(_etype5, _size2);
-            this->applicationModules.resize(_size2);
-            uint32_t _i6;
-            for (_i6 = 0; _i6 < _size2; ++_i6)
+            uint32_t _size5;
+            ::apache::thrift::protocol::TType _etype8;
+            xfer += iprot->readListBegin(_etype8, _size5);
+            this->applicationModules.resize(_size5);
+            uint32_t _i9;
+            for (_i9 = 0; _i9 < _size5; ++_i9)
             {
-              xfer += iprot->readString(this->applicationModules[_i6]);
+              xfer += iprot->readString(this->applicationModules[_i9]);
             }
             xfer += iprot->readListEnd();
           }
@@ -378,14 +498,14 @@ uint32_t ApplicationInterfaceDescription::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->applicationInputs.clear();
-            uint32_t _size7;
-            ::apache::thrift::protocol::TType _etype10;
-            xfer += iprot->readListBegin(_etype10, _size7);
-            this->applicationInputs.resize(_size7);
-            uint32_t _i11;
-            for (_i11 = 0; _i11 < _size7; ++_i11)
+            uint32_t _size10;
+            ::apache::thrift::protocol::TType _etype13;
+            xfer += iprot->readListBegin(_etype13, _size10);
+            this->applicationInputs.resize(_size10);
+            uint32_t _i14;
+            for (_i14 = 0; _i14 < _size10; ++_i14)
             {
-              xfer += this->applicationInputs[_i11].read(iprot);
+              xfer += this->applicationInputs[_i14].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -398,14 +518,14 @@ uint32_t ApplicationInterfaceDescription::read(::apache::thrift::protocol::TProt
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->applicationOutputs.clear();
-            uint32_t _size12;
-            ::apache::thrift::protocol::TType _etype15;
-            xfer += iprot->readListBegin(_etype15, _size12);
-            this->applicationOutputs.resize(_size12);
-            uint32_t _i16;
-            for (_i16 = 0; _i16 < _size12; ++_i16)
+            uint32_t _size15;
+            ::apache::thrift::protocol::TType _etype18;
+            xfer += iprot->readListBegin(_etype18, _size15);
+            this->applicationOutputs.resize(_size15);
+            uint32_t _i19;
+            for (_i19 = 0; _i19 < _size15; ++_i19)
             {
-              xfer += this->applicationOutputs[_i16].read(iprot);
+              xfer += this->applicationOutputs[_i19].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -451,10 +571,10 @@ uint32_t ApplicationInterfaceDescription::write(::apache::thrift::protocol::TPro
     xfer += oprot->writeFieldBegin("applicationModules", ::apache::thrift::protocol::T_LIST, 4);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->applicationModules.size()));
-      std::vector<std::string> ::const_iterator _iter17;
-      for (_iter17 = this->applicationModules.begin(); _iter17 != this->applicationModules.end(); ++_iter17)
+      std::vector<std::string> ::const_iterator _iter20;
+      for (_iter20 = this->applicationModules.begin(); _iter20 != this->applicationModules.end(); ++_iter20)
       {
-        xfer += oprot->writeString((*_iter17));
+        xfer += oprot->writeString((*_iter20));
       }
       xfer += oprot->writeListEnd();
     }
@@ -464,10 +584,10 @@ uint32_t ApplicationInterfaceDescription::write(::apache::thrift::protocol::TPro
     xfer += oprot->writeFieldBegin("applicationInputs", ::apache::thrift::protocol::T_LIST, 5);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->applicationInputs.size()));
-      std::vector<InputDataObjectType> ::const_iterator _iter18;
-      for (_iter18 = this->applicationInputs.begin(); _iter18 != this->applicationInputs.end(); ++_iter18)
+      std::vector<InputDataObjectType> ::const_iterator _iter21;
+      for (_iter21 = this->applicationInputs.begin(); _iter21 != this->applicationInputs.end(); ++_iter21)
       {
-        xfer += (*_iter18).write(oprot);
+        xfer += (*_iter21).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -477,10 +597,10 @@ uint32_t ApplicationInterfaceDescription::write(::apache::thrift::protocol::TPro
     xfer += oprot->writeFieldBegin("applicationOutputs", ::apache::thrift::protocol::T_LIST, 6);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->applicationOutputs.size()));
-      std::vector<OutputDataObjectType> ::const_iterator _iter19;
-      for (_iter19 = this->applicationOutputs.begin(); _iter19 != this->applicationOutputs.end(); ++_iter19)
+      std::vector<OutputDataObjectType> ::const_iterator _iter22;
+      for (_iter22 = this->applicationOutputs.begin(); _iter22 != this->applicationOutputs.end(); ++_iter22)
       {
-        xfer += (*_iter19).write(oprot);
+        xfer += (*_iter22).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
index 8076197..7a7ab52 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/applicationInterfaceModel_types.h
@@ -47,8 +47,35 @@ struct DataType {
 
 extern const std::map<int, const char*> _DataType_VALUES_TO_NAMES;
 
+struct ValidityType {
+  enum type {
+    REQUIRED = 0,
+    OPTIONAL = 1
+  };
+};
+
+extern const std::map<int, const char*> _ValidityType_VALUES_TO_NAMES;
+
+struct CommandLineType {
+  enum type {
+    INCLUSIVE = 0,
+    EXCLUSIVE = 1
+  };
+};
+
+extern const std::map<int, const char*> _CommandLineType_VALUES_TO_NAMES;
+
+struct InputMetadataType {
+  enum type {
+    MEMORY = 0,
+    CPU = 1
+  };
+};
+
+extern const std::map<int, const char*> _InputMetadataType_VALUES_TO_NAMES;
+
 typedef struct _InputDataObjectType__isset {
-  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(true), userFriendlyDescription(false), metaData(false), inputOrder(false) {}
+  _InputDataObjectType__isset() : value(false), type(false), applicationArgument(false), standardInput(true), userFriendlyDescription(false), metaData(false), inputOrder(false), inputValid(false), addedToCommandLine(false), dataStaged(true) {}
   bool value;
   bool type;
   bool applicationArgument;
@@ -56,15 +83,18 @@ typedef struct _InputDataObjectType__isset {
   bool userFriendlyDescription;
   bool metaData;
   bool inputOrder;
+  bool inputValid;
+  bool addedToCommandLine;
+  bool dataStaged;
 } _InputDataObjectType__isset;
 
 class InputDataObjectType {
  public:
 
-  static const char* ascii_fingerprint; // = "91FB63C319A494A8E1E6563006402BC7";
-  static const uint8_t binary_fingerprint[16]; // = {0x91,0xFB,0x63,0xC3,0x19,0xA4,0x94,0xA8,0xE1,0xE6,0x56,0x30,0x06,0x40,0x2B,0xC7};
+  static const char* ascii_fingerprint; // = "95DCCA621F7BE3FA34349CC6A45329DA";
+  static const uint8_t binary_fingerprint[16]; // = {0x95,0xDC,0xCA,0x62,0x1F,0x7B,0xE3,0xFA,0x34,0x34,0x9C,0xC6,0xA4,0x53,0x29,0xDA};
 
-  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(false), userFriendlyDescription(), metaData(), inputOrder(0) {
+  InputDataObjectType() : name(), value(), type((DataType::type)0), applicationArgument(), standardInput(false), userFriendlyDescription(), metaData(), inputOrder(0), inputValid((ValidityType::type)0), addedToCommandLine((CommandLineType::type)0), dataStaged(false) {
   }
 
   virtual ~InputDataObjectType() throw() {}
@@ -77,6 +107,9 @@ class InputDataObjectType {
   std::string userFriendlyDescription;
   std::string metaData;
   int32_t inputOrder;
+  ValidityType::type inputValid;
+  CommandLineType::type addedToCommandLine;
+  bool dataStaged;
 
   _InputDataObjectType__isset __isset;
 
@@ -119,6 +152,21 @@ class InputDataObjectType {
     __isset.inputOrder = true;
   }
 
+  void __set_inputValid(const ValidityType::type val) {
+    inputValid = val;
+    __isset.inputValid = true;
+  }
+
+  void __set_addedToCommandLine(const CommandLineType::type val) {
+    addedToCommandLine = val;
+    __isset.addedToCommandLine = true;
+  }
+
+  void __set_dataStaged(const bool val) {
+    dataStaged = val;
+    __isset.dataStaged = true;
+  }
+
   bool operator == (const InputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -151,6 +199,18 @@ class InputDataObjectType {
       return false;
     else if (__isset.inputOrder && !(inputOrder == rhs.inputOrder))
       return false;
+    if (__isset.inputValid != rhs.__isset.inputValid)
+      return false;
+    else if (__isset.inputValid && !(inputValid == rhs.inputValid))
+      return false;
+    if (__isset.addedToCommandLine != rhs.__isset.addedToCommandLine)
+      return false;
+    else if (__isset.addedToCommandLine && !(addedToCommandLine == rhs.addedToCommandLine))
+      return false;
+    if (__isset.dataStaged != rhs.__isset.dataStaged)
+      return false;
+    else if (__isset.dataStaged && !(dataStaged == rhs.dataStaged))
+      return false;
     return true;
   }
   bool operator != (const InputDataObjectType &rhs) const {
@@ -167,18 +227,21 @@ class InputDataObjectType {
 void swap(InputDataObjectType &a, InputDataObjectType &b);
 
 typedef struct _OutputDataObjectType__isset {
-  _OutputDataObjectType__isset() : value(false), type(false) {}
+  _OutputDataObjectType__isset() : value(false), type(false), validityType(false), dataMovement(false), dataNameLocation(false) {}
   bool value;
   bool type;
+  bool validityType;
+  bool dataMovement;
+  bool dataNameLocation;
 } _OutputDataObjectType__isset;
 
 class OutputDataObjectType {
  public:
 
-  static const char* ascii_fingerprint; // = "B33AE596EF78C48424CF96BCA5D1DF99";
-  static const uint8_t binary_fingerprint[16]; // = {0xB3,0x3A,0xE5,0x96,0xEF,0x78,0xC4,0x84,0x24,0xCF,0x96,0xBC,0xA5,0xD1,0xDF,0x99};
+  static const char* ascii_fingerprint; // = "9B8C3AEA43A2028DF0CEF51E90706E3A";
+  static const uint8_t binary_fingerprint[16]; // = {0x9B,0x8C,0x3A,0xEA,0x43,0xA2,0x02,0x8D,0xF0,0xCE,0xF5,0x1E,0x90,0x70,0x6E,0x3A};
 
-  OutputDataObjectType() : name(), value(), type((DataType::type)0) {
+  OutputDataObjectType() : name(), value(), type((DataType::type)0), validityType((ValidityType::type)0), dataMovement(0), dataNameLocation() {
   }
 
   virtual ~OutputDataObjectType() throw() {}
@@ -186,6 +249,9 @@ class OutputDataObjectType {
   std::string name;
   std::string value;
   DataType::type type;
+  ValidityType::type validityType;
+  bool dataMovement;
+  std::string dataNameLocation;
 
   _OutputDataObjectType__isset __isset;
 
@@ -203,6 +269,21 @@ class OutputDataObjectType {
     __isset.type = true;
   }
 
+  void __set_validityType(const ValidityType::type val) {
+    validityType = val;
+    __isset.validityType = true;
+  }
+
+  void __set_dataMovement(const bool val) {
+    dataMovement = val;
+    __isset.dataMovement = true;
+  }
+
+  void __set_dataNameLocation(const std::string& val) {
+    dataNameLocation = val;
+    __isset.dataNameLocation = true;
+  }
+
   bool operator == (const OutputDataObjectType & rhs) const
   {
     if (!(name == rhs.name))
@@ -215,6 +296,18 @@ class OutputDataObjectType {
       return false;
     else if (__isset.type && !(type == rhs.type))
       return false;
+    if (__isset.validityType != rhs.__isset.validityType)
+      return false;
+    else if (__isset.validityType && !(validityType == rhs.validityType))
+      return false;
+    if (__isset.dataMovement != rhs.__isset.dataMovement)
+      return false;
+    else if (__isset.dataMovement && !(dataMovement == rhs.dataMovement))
+      return false;
+    if (__isset.dataNameLocation != rhs.__isset.dataNameLocation)
+      return false;
+    else if (__isset.dataNameLocation && !(dataNameLocation == rhs.dataNameLocation))
+      return false;
     return true;
   }
   bool operator != (const OutputDataObjectType &rhs) const {
@@ -241,8 +334,8 @@ typedef struct _ApplicationInterfaceDescription__isset {
 class ApplicationInterfaceDescription {
  public:
 
-  static const char* ascii_fingerprint; // = "F2FFD013708A2D0DA86FD5438F17268E";
-  static const uint8_t binary_fingerprint[16]; // = {0xF2,0xFF,0xD0,0x13,0x70,0x8A,0x2D,0x0D,0xA8,0x6F,0xD5,0x43,0x8F,0x17,0x26,0x8E};
+  static const char* ascii_fingerprint; // = "CE1749A2DE50827990C3136E0CE4B60D";
+  static const uint8_t binary_fingerprint[16]; // = {0xCE,0x17,0x49,0xA2,0xDE,0x50,0x82,0x79,0x90,0xC3,0x13,0x6E,0x0C,0xE4,0xB6,0x0D};
 
   ApplicationInterfaceDescription() : applicationInterfaceId("DO_NOT_SET_AT_CLIENTS"), applicationName(), applicationDescription() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
index ca30e91..0d92089 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.cpp
@@ -1843,8 +1843,8 @@ void swap(DataTransferDetails &a, DataTransferDetails &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* TaskDetails::ascii_fingerprint = "DFCB41DA19801BFF3CFE9E62BF38A6C7";
-const uint8_t TaskDetails::binary_fingerprint[16] = {0xDF,0xCB,0x41,0xDA,0x19,0x80,0x1B,0xFF,0x3C,0xFE,0x9E,0x62,0xBF,0x38,0xA6,0xC7};
+const char* TaskDetails::ascii_fingerprint = "09A94E3E2FA720626BDA3CA7ADC1CB70";
+const uint8_t TaskDetails::binary_fingerprint[16] = {0x09,0xA9,0x4E,0x3E,0x2F,0xA7,0x20,0x62,0x6B,0xDA,0x3C,0xA7,0xAD,0xC1,0xCB,0x70};
 
 uint32_t TaskDetails::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2190,8 +2190,8 @@ void swap(TaskDetails &a, TaskDetails &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* WorkflowNodeDetails::ascii_fingerprint = "1A079CC07FB1A7970B53C4E16D7A3344";
-const uint8_t WorkflowNodeDetails::binary_fingerprint[16] = {0x1A,0x07,0x9C,0xC0,0x7F,0xB1,0xA7,0x97,0x0B,0x53,0xC4,0xE1,0x6D,0x7A,0x33,0x44};
+const char* WorkflowNodeDetails::ascii_fingerprint = "851CFB79378E39B6C03385F9272B8A93";
+const uint8_t WorkflowNodeDetails::binary_fingerprint[16] = {0x85,0x1C,0xFB,0x79,0x37,0x8E,0x39,0xB6,0xC0,0x33,0x85,0xF9,0x27,0x2B,0x8A,0x93};
 
 uint32_t WorkflowNodeDetails::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2646,8 +2646,8 @@ void swap(ValidationResults &a, ValidationResults &b) {
   swap(a.validationResultList, b.validationResultList);
 }
 
-const char* Experiment::ascii_fingerprint = "655CCC3196684D1F7DD154965195C52B";
-const uint8_t Experiment::binary_fingerprint[16] = {0x65,0x5C,0xCC,0x31,0x96,0x68,0x4D,0x1F,0x7D,0xD1,0x54,0x96,0x51,0x95,0xC5,0x2B};
+const char* Experiment::ascii_fingerprint = "1390A2E18FD8CF984CDDD4E167ED1E67";
+const uint8_t Experiment::binary_fingerprint[16] = {0x13,0x90,0xA2,0xE1,0x8F,0xD8,0xCF,0x98,0x4C,0xDD,0xD4,0xE1,0x67,0xED,0x1E,0x67};
 
 uint32_t Experiment::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
index fa45481..80701b5 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/experimentModel_types.h
@@ -1294,8 +1294,8 @@ typedef struct _TaskDetails__isset {
 class TaskDetails {
  public:
 
-  static const char* ascii_fingerprint; // = "DFCB41DA19801BFF3CFE9E62BF38A6C7";
-  static const uint8_t binary_fingerprint[16]; // = {0xDF,0xCB,0x41,0xDA,0x19,0x80,0x1B,0xFF,0x3C,0xFE,0x9E,0x62,0xBF,0x38,0xA6,0xC7};
+  static const char* ascii_fingerprint; // = "09A94E3E2FA720626BDA3CA7ADC1CB70";
+  static const uint8_t binary_fingerprint[16]; // = {0x09,0xA9,0x4E,0x3E,0x2F,0xA7,0x20,0x62,0x6B,0xDA,0x3C,0xA7,0xAD,0xC1,0xCB,0x70};
 
   TaskDetails() : taskID("DO_NOT_SET_AT_CLIENTS"), creationTime(0), applicationId(), applicationVersion(), applicationDeploymentId() {
   }
@@ -1473,8 +1473,8 @@ typedef struct _WorkflowNodeDetails__isset {
 class WorkflowNodeDetails {
  public:
 
-  static const char* ascii_fingerprint; // = "1A079CC07FB1A7970B53C4E16D7A3344";
-  static const uint8_t binary_fingerprint[16]; // = {0x1A,0x07,0x9C,0xC0,0x7F,0xB1,0xA7,0x97,0x0B,0x53,0xC4,0xE1,0x6D,0x7A,0x33,0x44};
+  static const char* ascii_fingerprint; // = "851CFB79378E39B6C03385F9272B8A93";
+  static const uint8_t binary_fingerprint[16]; // = {0x85,0x1C,0xFB,0x79,0x37,0x8E,0x39,0xB6,0xC0,0x33,0x85,0xF9,0x27,0x2B,0x8A,0x93};
 
   WorkflowNodeDetails() : nodeInstanceId("DO_NOT_SET_AT_CLIENTS"), creationTime(0), nodeName("SINGLE_APP_NODE"), executionUnit((ExecutionUnit::type)1), executionUnitData() {
     executionUnit = (ExecutionUnit::type)1;
@@ -1712,8 +1712,8 @@ typedef struct _Experiment__isset {
 class Experiment {
  public:
 
-  static const char* ascii_fingerprint; // = "655CCC3196684D1F7DD154965195C52B";
-  static const uint8_t binary_fingerprint[16]; // = {0x65,0x5C,0xCC,0x31,0x96,0x68,0x4D,0x1F,0x7D,0xD1,0x54,0x96,0x51,0x95,0xC5,0x2B};
+  static const char* ascii_fingerprint; // = "1390A2E18FD8CF984CDDD4E167ED1E67";
+  static const uint8_t binary_fingerprint[16]; // = {0x13,0x90,0xA2,0xE1,0x8F,0xD8,0xCF,0x98,0x4C,0xDD,0xD4,0xE1,0x67,0xED,0x1E,0x67};
 
   Experiment() : experimentID("DO_NOT_SET_AT_CLIENTS"), projectID("DEFAULT"), creationTime(0), userName(), name(), description(), applicationId(), applicationVersion(), workflowTemplateId(), workflowTemplateVersion(), workflowExecutionInstanceId() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
index 4bfd1bc..2297e40 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.cpp
@@ -607,8 +607,8 @@ void swap(TaskStatusChangeRequestEvent &a, TaskStatusChangeRequestEvent &b) {
   swap(a.taskIdentity, b.taskIdentity);
 }
 
-const char* TaskOutputChangeEvent::ascii_fingerprint = "850570A8E8883AE24DE92AFC9AA86C7E";
-const uint8_t TaskOutputChangeEvent::binary_fingerprint[16] = {0x85,0x05,0x70,0xA8,0xE8,0x88,0x3A,0xE2,0x4D,0xE9,0x2A,0xFC,0x9A,0xA8,0x6C,0x7E};
+const char* TaskOutputChangeEvent::ascii_fingerprint = "CD10AFEB7332120253CE0C3FFCF54C48";
+const uint8_t TaskOutputChangeEvent::binary_fingerprint[16] = {0xCD,0x10,0xAF,0xEB,0x73,0x32,0x12,0x02,0x53,0xCE,0x0C,0x3F,0xFC,0xF5,0x4C,0x48};
 
 uint32_t TaskOutputChangeEvent::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
index 61dc55f..3596539 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/messagingEvents_types.h
@@ -354,8 +354,8 @@ void swap(TaskStatusChangeRequestEvent &a, TaskStatusChangeRequestEvent &b);
 class TaskOutputChangeEvent {
  public:
 
-  static const char* ascii_fingerprint; // = "850570A8E8883AE24DE92AFC9AA86C7E";
-  static const uint8_t binary_fingerprint[16]; // = {0x85,0x05,0x70,0xA8,0xE8,0x88,0x3A,0xE2,0x4D,0xE9,0x2A,0xFC,0x9A,0xA8,0x6C,0x7E};
+  static const char* ascii_fingerprint; // = "CD10AFEB7332120253CE0C3FFCF54C48";
+  static const uint8_t binary_fingerprint[16]; // = {0xCD,0x10,0xAF,0xEB,0x73,0x32,0x12,0x02,0x53,0xCE,0x0C,0x3F,0xFC,0xF5,0x4C,0x48};
 
   TaskOutputChangeEvent() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
index 195d6b6..cffa250 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.cpp
@@ -27,8 +27,8 @@
 
 
 
-const char* Workflow::ascii_fingerprint = "C0E4ABD766E59503FEF37ABFB58F6DC5";
-const uint8_t Workflow::binary_fingerprint[16] = {0xC0,0xE4,0xAB,0xD7,0x66,0xE5,0x95,0x03,0xFE,0xF3,0x7A,0xBF,0xB5,0x8F,0x6D,0xC5};
+const char* Workflow::ascii_fingerprint = "4320FCC5DE6949377139919B68E7F5C1";
+const uint8_t Workflow::binary_fingerprint[16] = {0x43,0x20,0xFC,0xC5,0xDE,0x69,0x49,0x37,0x71,0x39,0x91,0x9B,0x68,0xE7,0xF5,0xC1};
 
 uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
index 7ca41d9..b46858d 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflowDataModel_types.h
@@ -46,8 +46,8 @@ typedef struct _Workflow__isset {
 class Workflow {
  public:
 
-  static const char* ascii_fingerprint; // = "C0E4ABD766E59503FEF37ABFB58F6DC5";
-  static const uint8_t binary_fingerprint[16]; // = {0xC0,0xE4,0xAB,0xD7,0x66,0xE5,0x95,0x03,0xFE,0xF3,0x7A,0xBF,0xB5,0x8F,0x6D,0xC5};
+  static const char* ascii_fingerprint; // = "4320FCC5DE6949377139919B68E7F5C1";
+  static const uint8_t binary_fingerprint[16]; // = {0x43,0x20,0xFC,0xC5,0xDE,0x69,0x49,0x37,0x71,0x39,0x91,0x9B,0x68,0xE7,0xF5,0xC1};
 
   Workflow() : templateId("DO_NOT_SET_AT_CLIENTS"), name(), graph(), image() {
   }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
index ff6b2be..4983eb2 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppInterface/Types.php
@@ -34,6 +34,33 @@ final class DataType {
   );
 }
 
+final class ValidityType {
+  const REQUIRED = 0;
+  const OPTIONAL = 1;
+  static public $__names = array(
+    0 => 'REQUIRED',
+    1 => 'OPTIONAL',
+  );
+}
+
+final class CommandLineType {
+  const INCLUSIVE = 0;
+  const EXCLUSIVE = 1;
+  static public $__names = array(
+    0 => 'INCLUSIVE',
+    1 => 'EXCLUSIVE',
+  );
+}
+
+final class InputMetadataType {
+  const MEMORY = 0;
+  const CPU = 1;
+  static public $__names = array(
+    0 => 'MEMORY',
+    1 => 'CPU',
+  );
+}
+
 class InputDataObjectType {
   static $_TSPEC;
 
@@ -45,6 +72,9 @@ class InputDataObjectType {
   public $userFriendlyDescription = null;
   public $metaData = null;
   public $inputOrder = null;
+  public $inputValid = null;
+  public $addedToCommandLine = null;
+  public $dataStaged = false;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -81,6 +111,18 @@ class InputDataObjectType {
           'var' => 'inputOrder',
           'type' => TType::I32,
           ),
+        9 => array(
+          'var' => 'inputValid',
+          'type' => TType::I32,
+          ),
+        10 => array(
+          'var' => 'addedToCommandLine',
+          'type' => TType::I32,
+          ),
+        11 => array(
+          'var' => 'dataStaged',
+          'type' => TType::BOOL,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -108,6 +150,15 @@ class InputDataObjectType {
       if (isset($vals['inputOrder'])) {
         $this->inputOrder = $vals['inputOrder'];
       }
+      if (isset($vals['inputValid'])) {
+        $this->inputValid = $vals['inputValid'];
+      }
+      if (isset($vals['addedToCommandLine'])) {
+        $this->addedToCommandLine = $vals['addedToCommandLine'];
+      }
+      if (isset($vals['dataStaged'])) {
+        $this->dataStaged = $vals['dataStaged'];
+      }
     }
   }
 
@@ -186,6 +237,27 @@ class InputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->inputValid);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->addedToCommandLine);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->dataStaged);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -239,6 +311,21 @@ class InputDataObjectType {
       $xfer += $output->writeI32($this->inputOrder);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->inputValid !== null) {
+      $xfer += $output->writeFieldBegin('inputValid', TType::I32, 9);
+      $xfer += $output->writeI32($this->inputValid);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->addedToCommandLine !== null) {
+      $xfer += $output->writeFieldBegin('addedToCommandLine', TType::I32, 10);
+      $xfer += $output->writeI32($this->addedToCommandLine);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataStaged !== null) {
+      $xfer += $output->writeFieldBegin('dataStaged', TType::BOOL, 11);
+      $xfer += $output->writeBool($this->dataStaged);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -252,6 +339,9 @@ class OutputDataObjectType {
   public $name = null;
   public $value = null;
   public $type = null;
+  public $validityType = null;
+  public $dataMovement = null;
+  public $dataNameLocation = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -268,6 +358,18 @@ class OutputDataObjectType {
           'var' => 'type',
           'type' => TType::I32,
           ),
+        4 => array(
+          'var' => 'validityType',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'dataMovement',
+          'type' => TType::BOOL,
+          ),
+        6 => array(
+          'var' => 'dataNameLocation',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -280,6 +382,15 @@ class OutputDataObjectType {
       if (isset($vals['type'])) {
         $this->type = $vals['type'];
       }
+      if (isset($vals['validityType'])) {
+        $this->validityType = $vals['validityType'];
+      }
+      if (isset($vals['dataMovement'])) {
+        $this->dataMovement = $vals['dataMovement'];
+      }
+      if (isset($vals['dataNameLocation'])) {
+        $this->dataNameLocation = $vals['dataNameLocation'];
+      }
     }
   }
 
@@ -323,6 +434,27 @@ class OutputDataObjectType {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->validityType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->dataMovement);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->dataNameLocation);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -351,6 +483,21 @@ class OutputDataObjectType {
       $xfer += $output->writeI32($this->type);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->validityType !== null) {
+      $xfer += $output->writeFieldBegin('validityType', TType::I32, 4);
+      $xfer += $output->writeI32($this->validityType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataMovement !== null) {
+      $xfer += $output->writeFieldBegin('dataMovement', TType::BOOL, 5);
+      $xfer += $output->writeBool($this->dataMovement);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataNameLocation !== null) {
+      $xfer += $output->writeFieldBegin('dataNameLocation', TType::STRING, 6);
+      $xfer += $output->writeString($this->dataNameLocation);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
index 0cd666b..8ab0b46 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/InputDataObjectType.java
@@ -86,6 +86,9 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField USER_FRIENDLY_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("userFriendlyDescription", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField META_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("metaData", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField INPUT_ORDER_FIELD_DESC = new org.apache.thrift.protocol.TField("inputOrder", org.apache.thrift.protocol.TType.I32, (short)8);
+  private static final org.apache.thrift.protocol.TField INPUT_VALID_FIELD_DESC = new org.apache.thrift.protocol.TField("inputValid", org.apache.thrift.protocol.TType.I32, (short)9);
+  private static final org.apache.thrift.protocol.TField ADDED_TO_COMMAND_LINE_FIELD_DESC = new org.apache.thrift.protocol.TField("addedToCommandLine", org.apache.thrift.protocol.TType.I32, (short)10);
+  private static final org.apache.thrift.protocol.TField DATA_STAGED_FIELD_DESC = new org.apache.thrift.protocol.TField("dataStaged", org.apache.thrift.protocol.TType.BOOL, (short)11);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -101,6 +104,9 @@ import org.slf4j.LoggerFactory;
   private String userFriendlyDescription; // optional
   private String metaData; // optional
   private int inputOrder; // optional
+  private ValidityType inputValid; // optional
+  private CommandLineType addedToCommandLine; // optional
+  private boolean dataStaged; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -115,7 +121,18 @@ import org.slf4j.LoggerFactory;
     STANDARD_INPUT((short)5, "standardInput"),
     USER_FRIENDLY_DESCRIPTION((short)6, "userFriendlyDescription"),
     META_DATA((short)7, "metaData"),
-    INPUT_ORDER((short)8, "inputOrder");
+    INPUT_ORDER((short)8, "inputOrder"),
+    /**
+     * 
+     * @see ValidityType
+     */
+    INPUT_VALID((short)9, "inputValid"),
+    /**
+     * 
+     * @see CommandLineType
+     */
+    ADDED_TO_COMMAND_LINE((short)10, "addedToCommandLine"),
+    DATA_STAGED((short)11, "dataStaged");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -146,6 +163,12 @@ import org.slf4j.LoggerFactory;
           return META_DATA;
         case 8: // INPUT_ORDER
           return INPUT_ORDER;
+        case 9: // INPUT_VALID
+          return INPUT_VALID;
+        case 10: // ADDED_TO_COMMAND_LINE
+          return ADDED_TO_COMMAND_LINE;
+        case 11: // DATA_STAGED
+          return DATA_STAGED;
         default:
           return null;
       }
@@ -188,8 +211,9 @@ import org.slf4j.LoggerFactory;
   // isset id assignments
   private static final int __STANDARDINPUT_ISSET_ID = 0;
   private static final int __INPUTORDER_ISSET_ID = 1;
+  private static final int __DATASTAGED_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER};
+  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.APPLICATION_ARGUMENT,_Fields.STANDARD_INPUT,_Fields.USER_FRIENDLY_DESCRIPTION,_Fields.META_DATA,_Fields.INPUT_ORDER,_Fields.INPUT_VALID,_Fields.ADDED_TO_COMMAND_LINE,_Fields.DATA_STAGED};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -209,6 +233,12 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.INPUT_ORDER, new org.apache.thrift.meta_data.FieldMetaData("inputOrder", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.INPUT_VALID, new org.apache.thrift.meta_data.FieldMetaData("inputValid", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ValidityType.class)));
+    tmpMap.put(_Fields.ADDED_TO_COMMAND_LINE, new org.apache.thrift.meta_data.FieldMetaData("addedToCommandLine", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, CommandLineType.class)));
+    tmpMap.put(_Fields.DATA_STAGED, new org.apache.thrift.meta_data.FieldMetaData("dataStaged", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InputDataObjectType.class, metaDataMap);
   }
@@ -216,6 +246,8 @@ import org.slf4j.LoggerFactory;
   public InputDataObjectType() {
     this.standardInput = false;
 
+    this.dataStaged = false;
+
   }
 
   public InputDataObjectType(
@@ -250,6 +282,13 @@ import org.slf4j.LoggerFactory;
       this.metaData = other.metaData;
     }
     this.inputOrder = other.inputOrder;
+    if (other.isSetInputValid()) {
+      this.inputValid = other.inputValid;
+    }
+    if (other.isSetAddedToCommandLine()) {
+      this.addedToCommandLine = other.addedToCommandLine;
+    }
+    this.dataStaged = other.dataStaged;
   }
 
   public InputDataObjectType deepCopy() {
@@ -268,6 +307,10 @@ import org.slf4j.LoggerFactory;
     this.metaData = null;
     setInputOrderIsSet(false);
     this.inputOrder = 0;
+    this.inputValid = null;
+    this.addedToCommandLine = null;
+    this.dataStaged = false;
+
   }
 
   public String getName() {
@@ -460,6 +503,90 @@ import org.slf4j.LoggerFactory;
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __INPUTORDER_ISSET_ID, value);
   }
 
+  /**
+   * 
+   * @see ValidityType
+   */
+  public ValidityType getInputValid() {
+    return this.inputValid;
+  }
+
+  /**
+   * 
+   * @see ValidityType
+   */
+  public void setInputValid(ValidityType inputValid) {
+    this.inputValid = inputValid;
+  }
+
+  public void unsetInputValid() {
+    this.inputValid = null;
+  }
+
+  /** Returns true if field inputValid is set (has been assigned a value) and false otherwise */
+  public boolean isSetInputValid() {
+    return this.inputValid != null;
+  }
+
+  public void setInputValidIsSet(boolean value) {
+    if (!value) {
+      this.inputValid = null;
+    }
+  }
+
+  /**
+   * 
+   * @see CommandLineType
+   */
+  public CommandLineType getAddedToCommandLine() {
+    return this.addedToCommandLine;
+  }
+
+  /**
+   * 
+   * @see CommandLineType
+   */
+  public void setAddedToCommandLine(CommandLineType addedToCommandLine) {
+    this.addedToCommandLine = addedToCommandLine;
+  }
+
+  public void unsetAddedToCommandLine() {
+    this.addedToCommandLine = null;
+  }
+
+  /** Returns true if field addedToCommandLine is set (has been assigned a value) and false otherwise */
+  public boolean isSetAddedToCommandLine() {
+    return this.addedToCommandLine != null;
+  }
+
+  public void setAddedToCommandLineIsSet(boolean value) {
+    if (!value) {
+      this.addedToCommandLine = null;
+    }
+  }
+
+  public boolean isDataStaged() {
+    return this.dataStaged;
+  }
+
+  public void setDataStaged(boolean dataStaged) {
+    this.dataStaged = dataStaged;
+    setDataStagedIsSet(true);
+  }
+
+  public void unsetDataStaged() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DATASTAGED_ISSET_ID);
+  }
+
+  /** Returns true if field dataStaged is set (has been assigned a value) and false otherwise */
+  public boolean isSetDataStaged() {
+    return EncodingUtils.testBit(__isset_bitfield, __DATASTAGED_ISSET_ID);
+  }
+
+  public void setDataStagedIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATASTAGED_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -526,6 +653,30 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case INPUT_VALID:
+      if (value == null) {
+        unsetInputValid();
+      } else {
+        setInputValid((ValidityType)value);
+      }
+      break;
+
+    case ADDED_TO_COMMAND_LINE:
+      if (value == null) {
+        unsetAddedToCommandLine();
+      } else {
+        setAddedToCommandLine((CommandLineType)value);
+      }
+      break;
+
+    case DATA_STAGED:
+      if (value == null) {
+        unsetDataStaged();
+      } else {
+        setDataStaged((Boolean)value);
+      }
+      break;
+
     }
   }
 
@@ -555,6 +706,15 @@ import org.slf4j.LoggerFactory;
     case INPUT_ORDER:
       return Integer.valueOf(getInputOrder());
 
+    case INPUT_VALID:
+      return getInputValid();
+
+    case ADDED_TO_COMMAND_LINE:
+      return getAddedToCommandLine();
+
+    case DATA_STAGED:
+      return Boolean.valueOf(isDataStaged());
+
     }
     throw new IllegalStateException();
   }
@@ -582,6 +742,12 @@ import org.slf4j.LoggerFactory;
       return isSetMetaData();
     case INPUT_ORDER:
       return isSetInputOrder();
+    case INPUT_VALID:
+      return isSetInputValid();
+    case ADDED_TO_COMMAND_LINE:
+      return isSetAddedToCommandLine();
+    case DATA_STAGED:
+      return isSetDataStaged();
     }
     throw new IllegalStateException();
   }
@@ -671,6 +837,33 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
+    boolean this_present_inputValid = true && this.isSetInputValid();
+    boolean that_present_inputValid = true && that.isSetInputValid();
+    if (this_present_inputValid || that_present_inputValid) {
+      if (!(this_present_inputValid && that_present_inputValid))
+        return false;
+      if (!this.inputValid.equals(that.inputValid))
+        return false;
+    }
+
+    boolean this_present_addedToCommandLine = true && this.isSetAddedToCommandLine();
+    boolean that_present_addedToCommandLine = true && that.isSetAddedToCommandLine();
+    if (this_present_addedToCommandLine || that_present_addedToCommandLine) {
+      if (!(this_present_addedToCommandLine && that_present_addedToCommandLine))
+        return false;
+      if (!this.addedToCommandLine.equals(that.addedToCommandLine))
+        return false;
+    }
+
+    boolean this_present_dataStaged = true && this.isSetDataStaged();
+    boolean that_present_dataStaged = true && that.isSetDataStaged();
+    if (this_present_dataStaged || that_present_dataStaged) {
+      if (!(this_present_dataStaged && that_present_dataStaged))
+        return false;
+      if (this.dataStaged != that.dataStaged)
+        return false;
+    }
+
     return true;
   }
 
@@ -767,6 +960,36 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetInputValid()).compareTo(other.isSetInputValid());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetInputValid()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.inputValid, other.inputValid);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAddedToCommandLine()).compareTo(other.isSetAddedToCommandLine());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAddedToCommandLine()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.addedToCommandLine, other.addedToCommandLine);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDataStaged()).compareTo(other.isSetDataStaged());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDataStaged()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataStaged, other.dataStaged);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -856,6 +1079,32 @@ import org.slf4j.LoggerFactory;
       sb.append(this.inputOrder);
       first = false;
     }
+    if (isSetInputValid()) {
+      if (!first) sb.append(", ");
+      sb.append("inputValid:");
+      if (this.inputValid == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.inputValid);
+      }
+      first = false;
+    }
+    if (isSetAddedToCommandLine()) {
+      if (!first) sb.append(", ");
+      sb.append("addedToCommandLine:");
+      if (this.addedToCommandLine == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.addedToCommandLine);
+      }
+      first = false;
+    }
+    if (isSetDataStaged()) {
+      if (!first) sb.append(", ");
+      sb.append("dataStaged:");
+      sb.append(this.dataStaged);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -969,6 +1218,30 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 9: // INPUT_VALID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.inputValid = ValidityType.findByValue(iprot.readI32());
+              struct.setInputValidIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 10: // ADDED_TO_COMMAND_LINE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.addedToCommandLine = CommandLineType.findByValue(iprot.readI32());
+              struct.setAddedToCommandLineIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 11: // DATA_STAGED
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.dataStaged = iprot.readBool();
+              struct.setDataStagedIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1032,6 +1305,25 @@ import org.slf4j.LoggerFactory;
         oprot.writeI32(struct.inputOrder);
         oprot.writeFieldEnd();
       }
+      if (struct.inputValid != null) {
+        if (struct.isSetInputValid()) {
+          oprot.writeFieldBegin(INPUT_VALID_FIELD_DESC);
+          oprot.writeI32(struct.inputValid.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.addedToCommandLine != null) {
+        if (struct.isSetAddedToCommandLine()) {
+          oprot.writeFieldBegin(ADDED_TO_COMMAND_LINE_FIELD_DESC);
+          oprot.writeI32(struct.addedToCommandLine.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetDataStaged()) {
+        oprot.writeFieldBegin(DATA_STAGED_FIELD_DESC);
+        oprot.writeBool(struct.dataStaged);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1072,7 +1364,16 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetInputOrder()) {
         optionals.set(6);
       }
-      oprot.writeBitSet(optionals, 7);
+      if (struct.isSetInputValid()) {
+        optionals.set(7);
+      }
+      if (struct.isSetAddedToCommandLine()) {
+        optionals.set(8);
+      }
+      if (struct.isSetDataStaged()) {
+        optionals.set(9);
+      }
+      oprot.writeBitSet(optionals, 10);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
@@ -1094,6 +1395,15 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetInputOrder()) {
         oprot.writeI32(struct.inputOrder);
       }
+      if (struct.isSetInputValid()) {
+        oprot.writeI32(struct.inputValid.getValue());
+      }
+      if (struct.isSetAddedToCommandLine()) {
+        oprot.writeI32(struct.addedToCommandLine.getValue());
+      }
+      if (struct.isSetDataStaged()) {
+        oprot.writeBool(struct.dataStaged);
+      }
     }
 
     @Override
@@ -1101,7 +1411,7 @@ import org.slf4j.LoggerFactory;
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(7);
+      BitSet incoming = iprot.readBitSet(10);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -1130,6 +1440,18 @@ import org.slf4j.LoggerFactory;
         struct.inputOrder = iprot.readI32();
         struct.setInputOrderIsSet(true);
       }
+      if (incoming.get(7)) {
+        struct.inputValid = ValidityType.findByValue(iprot.readI32());
+        struct.setInputValidIsSet(true);
+      }
+      if (incoming.get(8)) {
+        struct.addedToCommandLine = CommandLineType.findByValue(iprot.readI32());
+        struct.setAddedToCommandLineIsSet(true);
+      }
+      if (incoming.get(9)) {
+        struct.dataStaged = iprot.readBool();
+        struct.setDataStagedIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
index ddfaae9..337f167 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/appcatalog/appinterface/OutputDataObjectType.java
@@ -81,6 +81,9 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("value", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.I32, (short)3);
+  private static final org.apache.thrift.protocol.TField VALIDITY_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("validityType", org.apache.thrift.protocol.TType.I32, (short)4);
+  private static final org.apache.thrift.protocol.TField DATA_MOVEMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("dataMovement", org.apache.thrift.protocol.TType.BOOL, (short)5);
+  private static final org.apache.thrift.protocol.TField DATA_NAME_LOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("dataNameLocation", org.apache.thrift.protocol.TType.STRING, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -91,6 +94,9 @@ import org.slf4j.LoggerFactory;
   private String name; // required
   private String value; // optional
   private DataType type; // optional
+  private ValidityType validityType; // optional
+  private boolean dataMovement; // optional
+  private String dataNameLocation; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -100,7 +106,14 @@ import org.slf4j.LoggerFactory;
      * 
      * @see DataType
      */
-    TYPE((short)3, "type");
+    TYPE((short)3, "type"),
+    /**
+     * 
+     * @see ValidityType
+     */
+    VALIDITY_TYPE((short)4, "validityType"),
+    DATA_MOVEMENT((short)5, "dataMovement"),
+    DATA_NAME_LOCATION((short)6, "dataNameLocation");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -121,6 +134,12 @@ import org.slf4j.LoggerFactory;
           return VALUE;
         case 3: // TYPE
           return TYPE;
+        case 4: // VALIDITY_TYPE
+          return VALIDITY_TYPE;
+        case 5: // DATA_MOVEMENT
+          return DATA_MOVEMENT;
+        case 6: // DATA_NAME_LOCATION
+          return DATA_NAME_LOCATION;
         default:
           return null;
       }
@@ -161,7 +180,9 @@ import org.slf4j.LoggerFactory;
   }
 
   // isset id assignments
-  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE};
+  private static final int __DATAMOVEMENT_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.VALUE,_Fields.TYPE,_Fields.VALIDITY_TYPE,_Fields.DATA_MOVEMENT,_Fields.DATA_NAME_LOCATION};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -171,6 +192,12 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, DataType.class)));
+    tmpMap.put(_Fields.VALIDITY_TYPE, new org.apache.thrift.meta_data.FieldMetaData("validityType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, ValidityType.class)));
+    tmpMap.put(_Fields.DATA_MOVEMENT, new org.apache.thrift.meta_data.FieldMetaData("dataMovement", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.DATA_NAME_LOCATION, new org.apache.thrift.meta_data.FieldMetaData("dataNameLocation", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(OutputDataObjectType.class, metaDataMap);
   }
@@ -189,6 +216,7 @@ import org.slf4j.LoggerFactory;
    * Performs a deep copy on <i>other</i>.
    */
   public OutputDataObjectType(OutputDataObjectType other) {
+    __isset_bitfield = other.__isset_bitfield;
     if (other.isSetName()) {
       this.name = other.name;
     }
@@ -198,6 +226,13 @@ import org.slf4j.LoggerFactory;
     if (other.isSetType()) {
       this.type = other.type;
     }
+    if (other.isSetValidityType()) {
+      this.validityType = other.validityType;
+    }
+    this.dataMovement = other.dataMovement;
+    if (other.isSetDataNameLocation()) {
+      this.dataNameLocation = other.dataNameLocation;
+    }
   }
 
   public OutputDataObjectType deepCopy() {
@@ -209,6 +244,10 @@ import org.slf4j.LoggerFactory;
     this.name = null;
     this.value = null;
     this.type = null;
+    this.validityType = null;
+    setDataMovementIsSet(false);
+    this.dataMovement = false;
+    this.dataNameLocation = null;
   }
 
   public String getName() {
@@ -288,6 +327,82 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  /**
+   * 
+   * @see ValidityType
+   */
+  public ValidityType getValidityType() {
+    return this.validityType;
+  }
+
+  /**
+   * 
+   * @see ValidityType
+   */
+  public void setValidityType(ValidityType validityType) {
+    this.validityType = validityType;
+  }
+
+  public void unsetValidityType() {
+    this.validityType = null;
+  }
+
+  /** Returns true if field validityType is set (has been assigned a value) and false otherwise */
+  public boolean isSetValidityType() {
+    return this.validityType != null;
+  }
+
+  public void setValidityTypeIsSet(boolean value) {
+    if (!value) {
+      this.validityType = null;
+    }
+  }
+
+  public boolean isDataMovement() {
+    return this.dataMovement;
+  }
+
+  public void setDataMovement(boolean dataMovement) {
+    this.dataMovement = dataMovement;
+    setDataMovementIsSet(true);
+  }
+
+  public void unsetDataMovement() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DATAMOVEMENT_ISSET_ID);
+  }
+
+  /** Returns true if field dataMovement is set (has been assigned a value) and false otherwise */
+  public boolean isSetDataMovement() {
+    return EncodingUtils.testBit(__isset_bitfield, __DATAMOVEMENT_ISSET_ID);
+  }
+
+  public void setDataMovementIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATAMOVEMENT_ISSET_ID, value);
+  }
+
+  public String getDataNameLocation() {
+    return this.dataNameLocation;
+  }
+
+  public void setDataNameLocation(String dataNameLocation) {
+    this.dataNameLocation = dataNameLocation;
+  }
+
+  public void unsetDataNameLocation() {
+    this.dataNameLocation = null;
+  }
+
+  /** Returns true if field dataNameLocation is set (has been assigned a value) and false otherwise */
+  public boolean isSetDataNameLocation() {
+    return this.dataNameLocation != null;
+  }
+
+  public void setDataNameLocationIsSet(boolean value) {
+    if (!value) {
+      this.dataNameLocation = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case NAME:
@@ -314,6 +429,30 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case VALIDITY_TYPE:
+      if (value == null) {
+        unsetValidityType();
+      } else {
+        setValidityType((ValidityType)value);
+      }
+      break;
+
+    case DATA_MOVEMENT:
+      if (value == null) {
+        unsetDataMovement();
+      } else {
+        setDataMovement((Boolean)value);
+      }
+      break;
+
+    case DATA_NAME_LOCATION:
+      if (value == null) {
+        unsetDataNameLocation();
+      } else {
+        setDataNameLocation((String)value);
+      }
+      break;
+
     }
   }
 
@@ -328,6 +467,15 @@ import org.slf4j.LoggerFactory;
     case TYPE:
       return getType();
 
+    case VALIDITY_TYPE:
+      return getValidityType();
+
+    case DATA_MOVEMENT:
+      return Boolean.valueOf(isDataMovement());
+
+    case DATA_NAME_LOCATION:
+      return getDataNameLocation();
+
     }
     throw new IllegalStateException();
   }
@@ -345,6 +493,12 @@ import org.slf4j.LoggerFactory;
       return isSetValue();
     case TYPE:
       return isSetType();
+    case VALIDITY_TYPE:
+      return isSetValidityType();
+    case DATA_MOVEMENT:
+      return isSetDataMovement();
+    case DATA_NAME_LOCATION:
+      return isSetDataNameLocation();
     }
     throw new IllegalStateException();
   }
@@ -389,6 +543,33 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
+    boolean this_present_validityType = true && this.isSetValidityType();
+    boolean that_present_validityType = true && that.isSetValidityType();
+    if (this_present_validityType || that_present_validityType) {
+      if (!(this_present_validityType && that_present_validityType))
+        return false;
+      if (!this.validityType.equals(that.validityType))
+        return false;
+    }
+
+    boolean this_present_dataMovement = true && this.isSetDataMovement();
+    boolean that_present_dataMovement = true && that.isSetDataMovement();
+    if (this_present_dataMovement || that_present_dataMovement) {
+      if (!(this_present_dataMovement && that_present_dataMovement))
+        return false;
+      if (this.dataMovement != that.dataMovement)
+        return false;
+    }
+
+    boolean this_present_dataNameLocation = true && this.isSetDataNameLocation();
+    boolean that_present_dataNameLocation = true && that.isSetDataNameLocation();
+    if (this_present_dataNameLocation || that_present_dataNameLocation) {
+      if (!(this_present_dataNameLocation && that_present_dataNameLocation))
+        return false;
+      if (!this.dataNameLocation.equals(that.dataNameLocation))
+        return false;
+    }
+
     return true;
   }
 
@@ -435,6 +616,36 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetValidityType()).compareTo(other.isSetValidityType());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetValidityType()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validityType, other.validityType);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDataMovement()).compareTo(other.isSetDataMovement());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDataMovement()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataMovement, other.dataMovement);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDataNameLocation()).compareTo(other.isSetDataNameLocation());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDataNameLocation()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataNameLocation, other.dataNameLocation);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -482,6 +693,32 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
+    if (isSetValidityType()) {
+      if (!first) sb.append(", ");
+      sb.append("validityType:");
+      if (this.validityType == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.validityType);
+      }
+      first = false;
+    }
+    if (isSetDataMovement()) {
+      if (!first) sb.append(", ");
+      sb.append("dataMovement:");
+      sb.append(this.dataMovement);
+      first = false;
+    }
+    if (isSetDataNameLocation()) {
+      if (!first) sb.append(", ");
+      sb.append("dataNameLocation:");
+      if (this.dataNameLocation == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.dataNameLocation);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -505,6 +742,8 @@ import org.slf4j.LoggerFactory;
 
   private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
     try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
       read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
     } catch (org.apache.thrift.TException te) {
       throw new java.io.IOException(te);
@@ -553,6 +792,30 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 4: // VALIDITY_TYPE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.validityType = ValidityType.findByValue(iprot.readI32());
+              struct.setValidityTypeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // DATA_MOVEMENT
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.dataMovement = iprot.readBool();
+              struct.setDataMovementIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // DATA_NAME_LOCATION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.dataNameLocation = iprot.readString();
+              struct.setDataNameLocationIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -585,6 +848,25 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
+      if (struct.validityType != null) {
+        if (struct.isSetValidityType()) {
+          oprot.writeFieldBegin(VALIDITY_TYPE_FIELD_DESC);
+          oprot.writeI32(struct.validityType.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetDataMovement()) {
+        oprot.writeFieldBegin(DATA_MOVEMENT_FIELD_DESC);
+        oprot.writeBool(struct.dataMovement);
+        oprot.writeFieldEnd();
+      }
+      if (struct.dataNameLocation != null) {
+        if (struct.isSetDataNameLocation()) {
+          oprot.writeFieldBegin(DATA_NAME_LOCATION_FIELD_DESC);
+          oprot.writeString(struct.dataNameLocation);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -610,13 +892,31 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetType()) {
         optionals.set(1);
       }
-      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetValidityType()) {
+        optionals.set(2);
+      }
+      if (struct.isSetDataMovement()) {
+        optionals.set(3);
+      }
+      if (struct.isSetDataNameLocation()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
       if (struct.isSetValue()) {
         oprot.writeString(struct.value);
       }
       if (struct.isSetType()) {
         oprot.writeI32(struct.type.getValue());
       }
+      if (struct.isSetValidityType()) {
+        oprot.writeI32(struct.validityType.getValue());
+      }
+      if (struct.isSetDataMovement()) {
+        oprot.writeBool(struct.dataMovement);
+      }
+      if (struct.isSetDataNameLocation()) {
+        oprot.writeString(struct.dataNameLocation);
+      }
     }
 
     @Override
@@ -624,7 +924,7 @@ import org.slf4j.LoggerFactory;
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.name = iprot.readString();
       struct.setNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(2);
+      BitSet incoming = iprot.readBitSet(5);
       if (incoming.get(0)) {
         struct.value = iprot.readString();
         struct.setValueIsSet(true);
@@ -633,6 +933,18 @@ import org.slf4j.LoggerFactory;
         struct.type = DataType.findByValue(iprot.readI32());
         struct.setTypeIsSet(true);
       }
+      if (incoming.get(2)) {
+        struct.validityType = ValidityType.findByValue(iprot.readI32());
+        struct.setValidityTypeIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.dataMovement = iprot.readBool();
+        struct.setDataMovementIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.dataNameLocation = iprot.readString();
+        struct.setDataNameLocationIsSet(true);
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift b/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
index 5646dc5..8e6c896 100644
--- a/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/applicationInterfaceModel.thrift
@@ -43,6 +43,22 @@ enum DataType{
 	STDERR
 }
 
+enum ValidityType{
+	REQUIRED,
+	OPTIONAL
+}
+
+enum CommandLineType{
+	INCLUSIVE,
+	EXCLUSIVE
+}
+
+enum InputMetadataType {
+    MEMORY,
+    CPU
+}
+
+
 /**
  * Application Inputs. The paramters describe how inputs are passed to the application.
  *
@@ -70,7 +86,6 @@ enum DataType{
  *
 */
 struct InputDataObjectType {
-//    1: required bool isEmpty = 0,
     1: required string name,
     2: optional string value,
     3: optional DataType type,
@@ -78,7 +93,10 @@ struct InputDataObjectType {
     5: optional bool standardInput = 0,
     6: optional string userFriendlyDescription,
     7: optional string metaData,
-    8: optional i32 inputOrder
+    8: optional i32 inputOrder,
+    9: optional ValidityType inputValid,
+    10: optional CommandLineType addedToCommandLine,
+    11: optional bool dataStaged = 0
 }
 
 /**
@@ -108,10 +126,12 @@ struct InputDataObjectType {
  *
 */
 struct OutputDataObjectType {
-//    1: required bool isEmpty = 0,
     1: required string name,
     2: optional string value,
-    3: optional DataType type
+    3: optional DataType type,
+    4: optional ValidityType validityType,
+    5: optional bool dataMovement,
+    6: optional string dataNameLocation
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
index e0416b9..e7b98c2 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
@@ -49,6 +49,12 @@ public class ApplicationInput implements Serializable {
     private boolean standardInput;
     @Column(name="INPUT_ORDER")
     private int inputOrder;
+    @Column(name="VALIDITY_TYPE")
+    private String validityType;
+    @Column(name="COMMANDLINE_TYPE")
+    private String commandLineType;
+    @Column(name = "DATA_STAGED")
+    private boolean dataStaged;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -133,4 +139,28 @@ public class ApplicationInput implements Serializable {
     public void setInputOrder(int inputOrder) {
         this.inputOrder = inputOrder;
     }
+
+    public String getValidityType() {
+        return validityType;
+    }
+
+    public void setValidityType(String validityType) {
+        this.validityType = validityType;
+    }
+
+    public String getCommandLineType() {
+        return commandLineType;
+    }
+
+    public void setCommandLineType(String commandLineType) {
+        this.commandLineType = commandLineType;
+    }
+
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
index 6e418af..c13e7d3 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
@@ -39,6 +39,12 @@ public class ApplicationOutput implements Serializable {
     private String outputVal;
     @Column(name = "DATA_TYPE")
     private String dataType;
+    @Column(name = "VALIDITY_TYPE")
+    private String validityType;
+    @Column(name = "DATA_MOVEMENT")
+    private boolean dataMovement;
+    @Column(name = "DATA_NAME_LOCATION")
+    private String dataNameLocation;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -83,4 +89,28 @@ public class ApplicationOutput implements Serializable {
     public void setOutputVal(String outputVal) {
         this.outputVal = outputVal;
     }
+
+    public String getValidityType() {
+        return validityType;
+    }
+
+    public void setValidityType(String validityType) {
+        this.validityType = validityType;
+    }
+
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    public String getDataNameLocation() {
+        return dataNameLocation;
+    }
+
+    public void setDataNameLocation(String dataNameLocation) {
+        this.dataNameLocation = dataNameLocation;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/d35226d8/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
index 5682f56..8318bee 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/WorkflowInput.java
@@ -50,6 +50,12 @@ public class WorkflowInput implements Serializable {
     private boolean standardInput;
     @Column(name = "INPUT_ORDER")
     private int inputOrder;
+    @Column(name="VALIDITY_TYPE")
+    private String validityType;
+    @Column(name="COMMANDLINE_TYPE")
+    private String commandLineType;
+    @Column(name = "DATA_STAGED")
+    private boolean dataStaged;
 
     @ManyToOne(cascade = CascadeType.MERGE)
     @JoinColumn(name = "WF_TEMPLATE_ID")
@@ -134,4 +140,28 @@ public class WorkflowInput implements Serializable {
     public void setInputOrder(int inputOrder) {
         this.inputOrder = inputOrder;
     }
+
+    public String getValidityType() {
+        return validityType;
+    }
+
+    public void setValidityType(String validityType) {
+        this.validityType = validityType;
+    }
+
+    public String getCommandLineType() {
+        return commandLineType;
+    }
+
+    public void setCommandLineType(String commandLineType) {
+        this.commandLineType = commandLineType;
+    }
+
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
 }