You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2015/10/23 05:15:07 UTC

[3/3] airavata git commit: adding order field to CommandObject thrift model

adding order field to CommandObject thrift model


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

Branch: refs/heads/master
Commit: 1f9a39ce0d7061743deb1d065816de25073b0596
Parents: 6c43cc1
Author: scnakandala <su...@gmail.com>
Authored: Thu Oct 22 23:14:56 2015 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Thu Oct 22 23:14:56 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/airavata/api/Airavata.java  |   2 +-
 .../src/main/resources/lib/airavata/Airavata.h  |  32 +-
 .../application_deployment_model_types.cpp      | 368 +++++++++++++------
 .../application_deployment_model_types.h        |  87 ++++-
 .../Model/AppCatalog/AppDeployment/Types.php    | 175 ++++++++-
 .../model/appcatalog/appdeployment/ttypes.py    | 133 ++++++-
 .../tools/RegisterSampleApplications.java       |  50 +--
 .../tools/RegisterSampleApplicationsUtils.java  |   7 +-
 .../org/apache/airavata/model/Workflow.java     |   2 +-
 .../ApplicationDeploymentDescription.java       | 143 +++----
 .../appdeployment/ApplicationModule.java        |   2 +-
 .../appcatalog/appdeployment/SetEnvPaths.java   | 114 +++++-
 .../ApplicationInterfaceDescription.java        |   2 +-
 .../appcatalog/computeresource/BatchQueue.java  |   2 +-
 .../computeresource/CloudJobSubmission.java     |   2 +-
 .../ComputeResourceDescription.java             |   2 +-
 .../computeresource/DataMovementInterface.java  |   2 +-
 .../computeresource/GlobusJobSubmission.java    |   2 +-
 .../computeresource/GridFTPDataMovement.java    |   2 +-
 .../computeresource/JobSubmissionInterface.java |   2 +-
 .../computeresource/LOCALDataMovement.java      |   2 +-
 .../computeresource/LOCALSubmission.java        |   2 +-
 .../computeresource/ResourceJobManager.java     |   2 +-
 .../computeresource/SCPDataMovement.java        |   2 +-
 .../computeresource/SSHJobSubmission.java       |   2 +-
 .../computeresource/UnicoreDataMovement.java    |   2 +-
 .../computeresource/UnicoreJobSubmission.java   |   2 +-
 .../ComputeResourcePreference.java              |   2 +-
 .../gatewayprofile/DataStoragePreference.java   |   2 +-
 .../gatewayprofile/GatewayResourceProfile.java  |   2 +-
 .../application/io/InputDataObjectType.java     |   2 +-
 .../application/io/OutputDataObjectType.java    |   2 +-
 .../airavata/model/commons/ErrorModel.java      |   2 +-
 .../model/commons/ValidationResults.java        |   2 +-
 .../airavata/model/commons/ValidatorResult.java |   2 +-
 .../model/error/AiravataClientException.java    |   2 +-
 .../model/error/AiravataSystemException.java    |   2 +-
 .../model/error/AuthenticationException.java    |   2 +-
 .../model/error/AuthorizationException.java     |   2 +-
 .../error/ExperimentNotFoundException.java      |   2 +-
 .../model/error/InvalidRequestException.java    |   2 +-
 .../model/error/LaunchValidationException.java  |   2 +-
 .../model/error/ProjectNotFoundException.java   |   2 +-
 .../airavata/model/error/TimedOutException.java |   2 +-
 .../airavata/model/error/ValidationResults.java |   2 +-
 .../airavata/model/error/ValidatorResult.java   |   2 +-
 .../model/experiment/ExperimentModel.java       |   2 +-
 .../model/experiment/ExperimentStatistics.java  |   2 +-
 .../experiment/ExperimentSummaryModel.java      |   2 +-
 .../experiment/UserConfigurationDataModel.java  |   2 +-
 .../org/apache/airavata/model/job/JobModel.java |   2 +-
 .../event/ExperimentStatusChangeEvent.java      |   2 +-
 .../model/messaging/event/JobIdentifier.java    |   2 +-
 .../messaging/event/JobStatusChangeEvent.java   |   2 +-
 .../event/JobStatusChangeRequestEvent.java      |   2 +-
 .../airavata/model/messaging/event/Message.java |   2 +-
 .../messaging/event/ProcessIdentifier.java      |   2 +-
 .../event/ProcessStatusChangeEvent.java         |   2 +-
 .../event/ProcessStatusChangeRequestEvent.java  |   2 +-
 .../messaging/event/ProcessSubmitEvent.java     |   2 +-
 .../messaging/event/ProcessTerminateEvent.java  |   2 +-
 .../model/messaging/event/TaskIdentifier.java   |   2 +-
 .../messaging/event/TaskOutputChangeEvent.java  |   2 +-
 .../messaging/event/TaskStatusChangeEvent.java  |   2 +-
 .../event/TaskStatusChangeRequestEvent.java     |   2 +-
 .../airavata/model/process/ProcessModel.java    |   2 +-
 .../ComputationalResourceSchedulingModel.java   |   2 +-
 .../airavata/model/security/AuthzToken.java     |   2 +-
 .../airavata/model/status/ExperimentStatus.java |   2 +-
 .../apache/airavata/model/status/JobStatus.java |   2 +-
 .../airavata/model/status/ProcessStatus.java    |   2 +-
 .../airavata/model/status/TaskStatus.java       |   2 +-
 .../model/task/DataStagingTaskModel.java        |   2 +-
 .../apache/airavata/model/task/TaskModel.java   |   2 +-
 .../airavata/model/workspace/Gateway.java       |   2 +-
 .../apache/airavata/model/workspace/Group.java  |   2 +-
 .../airavata/model/workspace/Project.java       |   2 +-
 .../apache/airavata/model/workspace/User.java   |   2 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |  26 +-
 .../catalog/impl/ApplicationDeploymentImpl.java |  68 ++--
 .../util/AppCatalogThriftConversion.java        |  22 +-
 .../airavata/app/catalog/AppDeploymentTest.java |  11 +-
 .../ApplicationRegister.java                    |  44 ++-
 .../application_deployment_model.thrift         |  26 +-
 84 files changed, 1037 insertions(+), 407 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
index 64f2459..23ab6d4 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/Airavata.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-10-19")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-10-22")
 public class Airavata {
 
   public interface Iface {

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
index 9082382..b1c5994 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata.h
@@ -9502,8 +9502,8 @@ class Airavata_deleteApplicationModule_presult {
 class Airavata_registerApplicationDeployment_args {
  public:
 
-  static const char* ascii_fingerprint; // = "5B419E78EF9104AB913EF5A04F45D322";
-  static const uint8_t binary_fingerprint[16]; // = {0x5B,0x41,0x9E,0x78,0xEF,0x91,0x04,0xAB,0x91,0x3E,0xF5,0xA0,0x4F,0x45,0xD3,0x22};
+  static const char* ascii_fingerprint; // = "EBF2CC3FD6F434E2542F5CEB99ACF2EF";
+  static const uint8_t binary_fingerprint[16]; // = {0xEB,0xF2,0xCC,0x3F,0xD6,0xF4,0x34,0xE2,0x54,0x2F,0x5C,0xEB,0x99,0xAC,0xF2,0xEF};
 
   Airavata_registerApplicationDeployment_args(const Airavata_registerApplicationDeployment_args&);
   Airavata_registerApplicationDeployment_args& operator=(const Airavata_registerApplicationDeployment_args&);
@@ -9547,8 +9547,8 @@ class Airavata_registerApplicationDeployment_args {
 class Airavata_registerApplicationDeployment_pargs {
  public:
 
-  static const char* ascii_fingerprint; // = "5B419E78EF9104AB913EF5A04F45D322";
-  static const uint8_t binary_fingerprint[16]; // = {0x5B,0x41,0x9E,0x78,0xEF,0x91,0x04,0xAB,0x91,0x3E,0xF5,0xA0,0x4F,0x45,0xD3,0x22};
+  static const char* ascii_fingerprint; // = "EBF2CC3FD6F434E2542F5CEB99ACF2EF";
+  static const uint8_t binary_fingerprint[16]; // = {0xEB,0xF2,0xCC,0x3F,0xD6,0xF4,0x34,0xE2,0x54,0x2F,0x5C,0xEB,0x99,0xAC,0xF2,0xEF};
 
 
   virtual ~Airavata_registerApplicationDeployment_pargs() throw();
@@ -9725,8 +9725,8 @@ typedef struct _Airavata_getApplicationDeployment_result__isset {
 class Airavata_getApplicationDeployment_result {
  public:
 
-  static const char* ascii_fingerprint; // = "0BE777CC1A559906DC782B64EA24451D";
-  static const uint8_t binary_fingerprint[16]; // = {0x0B,0xE7,0x77,0xCC,0x1A,0x55,0x99,0x06,0xDC,0x78,0x2B,0x64,0xEA,0x24,0x45,0x1D};
+  static const char* ascii_fingerprint; // = "DC2EC70AB942C5149536E4FAE4B61CA7";
+  static const uint8_t binary_fingerprint[16]; // = {0xDC,0x2E,0xC7,0x0A,0xB9,0x42,0xC5,0x14,0x95,0x36,0xE4,0xFA,0xE4,0xB6,0x1C,0xA7};
 
   Airavata_getApplicationDeployment_result(const Airavata_getApplicationDeployment_result&);
   Airavata_getApplicationDeployment_result& operator=(const Airavata_getApplicationDeployment_result&);
@@ -9790,8 +9790,8 @@ typedef struct _Airavata_getApplicationDeployment_presult__isset {
 class Airavata_getApplicationDeployment_presult {
  public:
 
-  static const char* ascii_fingerprint; // = "0BE777CC1A559906DC782B64EA24451D";
-  static const uint8_t binary_fingerprint[16]; // = {0x0B,0xE7,0x77,0xCC,0x1A,0x55,0x99,0x06,0xDC,0x78,0x2B,0x64,0xEA,0x24,0x45,0x1D};
+  static const char* ascii_fingerprint; // = "DC2EC70AB942C5149536E4FAE4B61CA7";
+  static const uint8_t binary_fingerprint[16]; // = {0xDC,0x2E,0xC7,0x0A,0xB9,0x42,0xC5,0x14,0x95,0x36,0xE4,0xFA,0xE4,0xB6,0x1C,0xA7};
 
 
   virtual ~Airavata_getApplicationDeployment_presult() throw();
@@ -9812,8 +9812,8 @@ class Airavata_getApplicationDeployment_presult {
 class Airavata_updateApplicationDeployment_args {
  public:
 
-  static const char* ascii_fingerprint; // = "5B419E78EF9104AB913EF5A04F45D322";
-  static const uint8_t binary_fingerprint[16]; // = {0x5B,0x41,0x9E,0x78,0xEF,0x91,0x04,0xAB,0x91,0x3E,0xF5,0xA0,0x4F,0x45,0xD3,0x22};
+  static const char* ascii_fingerprint; // = "EBF2CC3FD6F434E2542F5CEB99ACF2EF";
+  static const uint8_t binary_fingerprint[16]; // = {0xEB,0xF2,0xCC,0x3F,0xD6,0xF4,0x34,0xE2,0x54,0x2F,0x5C,0xEB,0x99,0xAC,0xF2,0xEF};
 
   Airavata_updateApplicationDeployment_args(const Airavata_updateApplicationDeployment_args&);
   Airavata_updateApplicationDeployment_args& operator=(const Airavata_updateApplicationDeployment_args&);
@@ -9857,8 +9857,8 @@ class Airavata_updateApplicationDeployment_args {
 class Airavata_updateApplicationDeployment_pargs {
  public:
 
-  static const char* ascii_fingerprint; // = "5B419E78EF9104AB913EF5A04F45D322";
-  static const uint8_t binary_fingerprint[16]; // = {0x5B,0x41,0x9E,0x78,0xEF,0x91,0x04,0xAB,0x91,0x3E,0xF5,0xA0,0x4F,0x45,0xD3,0x22};
+  static const char* ascii_fingerprint; // = "EBF2CC3FD6F434E2542F5CEB99ACF2EF";
+  static const uint8_t binary_fingerprint[16]; // = {0xEB,0xF2,0xCC,0x3F,0xD6,0xF4,0x34,0xE2,0x54,0x2F,0x5C,0xEB,0x99,0xAC,0xF2,0xEF};
 
 
   virtual ~Airavata_updateApplicationDeployment_pargs() throw();
@@ -10187,8 +10187,8 @@ typedef struct _Airavata_getAllApplicationDeployments_result__isset {
 class Airavata_getAllApplicationDeployments_result {
  public:
 
-  static const char* ascii_fingerprint; // = "A9CF1ABBE38E1B9F68F5049A8C29C04D";
-  static const uint8_t binary_fingerprint[16]; // = {0xA9,0xCF,0x1A,0xBB,0xE3,0x8E,0x1B,0x9F,0x68,0xF5,0x04,0x9A,0x8C,0x29,0xC0,0x4D};
+  static const char* ascii_fingerprint; // = "68A1D7C9AD1B430D67A283F953FC63DC";
+  static const uint8_t binary_fingerprint[16]; // = {0x68,0xA1,0xD7,0xC9,0xAD,0x1B,0x43,0x0D,0x67,0xA2,0x83,0xF9,0x53,0xFC,0x63,0xDC};
 
   Airavata_getAllApplicationDeployments_result(const Airavata_getAllApplicationDeployments_result&);
   Airavata_getAllApplicationDeployments_result& operator=(const Airavata_getAllApplicationDeployments_result&);
@@ -10252,8 +10252,8 @@ typedef struct _Airavata_getAllApplicationDeployments_presult__isset {
 class Airavata_getAllApplicationDeployments_presult {
  public:
 
-  static const char* ascii_fingerprint; // = "A9CF1ABBE38E1B9F68F5049A8C29C04D";
-  static const uint8_t binary_fingerprint[16]; // = {0xA9,0xCF,0x1A,0xBB,0xE3,0x8E,0x1B,0x9F,0x68,0xF5,0x04,0x9A,0x8C,0x29,0xC0,0x4D};
+  static const char* ascii_fingerprint; // = "68A1D7C9AD1B430D67A283F953FC63DC";
+  static const uint8_t binary_fingerprint[16]; // = {0x68,0xA1,0xD7,0xC9,0xAD,0x1B,0x43,0x0D,0x67,0xA2,0x83,0xF9,0x53,0xFC,0x63,0xDC};
 
 
   virtual ~Airavata_getAllApplicationDeployments_presult() throw();

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.cpp
index 2548d43..eca8ef2 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.cpp
@@ -61,8 +61,13 @@ void SetEnvPaths::__set_value(const std::string& val) {
   this->value = val;
 }
 
-const char* SetEnvPaths::ascii_fingerprint = "07A9615F837F7D0A952B595DD3020972";
-const uint8_t SetEnvPaths::binary_fingerprint[16] = {0x07,0xA9,0x61,0x5F,0x83,0x7F,0x7D,0x0A,0x95,0x2B,0x59,0x5D,0xD3,0x02,0x09,0x72};
+void SetEnvPaths::__set_envPathOrder(const int32_t val) {
+  this->envPathOrder = val;
+__isset.envPathOrder = true;
+}
+
+const char* SetEnvPaths::ascii_fingerprint = "CB1522D43F7EFF4C4CDE94ADBC65FF84";
+const uint8_t SetEnvPaths::binary_fingerprint[16] = {0xCB,0x15,0x22,0xD4,0x3F,0x7E,0xFF,0x4C,0x4C,0xDE,0x94,0xAD,0xBC,0x65,0xFF,0x84};
 
 uint32_t SetEnvPaths::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -102,6 +107,14 @@ uint32_t SetEnvPaths::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->envPathOrder);
+          this->__isset.envPathOrder = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -131,6 +144,11 @@ uint32_t SetEnvPaths::write(::apache::thrift::protocol::TProtocol* oprot) const
   xfer += oprot->writeString(this->value);
   xfer += oprot->writeFieldEnd();
 
+  if (this->__isset.envPathOrder) {
+    xfer += oprot->writeFieldBegin("envPathOrder", ::apache::thrift::protocol::T_I32, 3);
+    xfer += oprot->writeI32(this->envPathOrder);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   oprot->decrementRecursionDepth();
@@ -141,15 +159,21 @@ void swap(SetEnvPaths &a, SetEnvPaths &b) {
   using ::std::swap;
   swap(a.name, b.name);
   swap(a.value, b.value);
+  swap(a.envPathOrder, b.envPathOrder);
+  swap(a.__isset, b.__isset);
 }
 
 SetEnvPaths::SetEnvPaths(const SetEnvPaths& other0) {
   name = other0.name;
   value = other0.value;
+  envPathOrder = other0.envPathOrder;
+  __isset = other0.__isset;
 }
 SetEnvPaths& SetEnvPaths::operator=(const SetEnvPaths& other1) {
   name = other1.name;
   value = other1.value;
+  envPathOrder = other1.envPathOrder;
+  __isset = other1.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const SetEnvPaths& obj) {
@@ -157,6 +181,122 @@ std::ostream& operator<<(std::ostream& out, const SetEnvPaths& obj) {
   out << "SetEnvPaths(";
   out << "name=" << to_string(obj.name);
   out << ", " << "value=" << to_string(obj.value);
+  out << ", " << "envPathOrder="; (obj.__isset.envPathOrder ? (out << to_string(obj.envPathOrder)) : (out << "<null>"));
+  out << ")";
+  return out;
+}
+
+
+CommandObject::~CommandObject() throw() {
+}
+
+
+void CommandObject::__set_command(const std::string& val) {
+  this->command = val;
+}
+
+void CommandObject::__set_commandOrder(const int32_t val) {
+  this->commandOrder = val;
+__isset.commandOrder = true;
+}
+
+const char* CommandObject::ascii_fingerprint = "18B162B1D15D8D46509D3911A9F1C2AA";
+const uint8_t CommandObject::binary_fingerprint[16] = {0x18,0xB1,0x62,0xB1,0xD1,0x5D,0x8D,0x46,0x50,0x9D,0x39,0x11,0xA9,0xF1,0xC2,0xAA};
+
+uint32_t CommandObject::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_command = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->command);
+          isset_command = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          xfer += iprot->readI32(this->commandOrder);
+          this->__isset.commandOrder = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_command)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t CommandObject::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  oprot->incrementRecursionDepth();
+  xfer += oprot->writeStructBegin("CommandObject");
+
+  xfer += oprot->writeFieldBegin("command", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->command);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.commandOrder) {
+    xfer += oprot->writeFieldBegin("commandOrder", ::apache::thrift::protocol::T_I32, 2);
+    xfer += oprot->writeI32(this->commandOrder);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
+  return xfer;
+}
+
+void swap(CommandObject &a, CommandObject &b) {
+  using ::std::swap;
+  swap(a.command, b.command);
+  swap(a.commandOrder, b.commandOrder);
+  swap(a.__isset, b.__isset);
+}
+
+CommandObject::CommandObject(const CommandObject& other2) {
+  command = other2.command;
+  commandOrder = other2.commandOrder;
+  __isset = other2.__isset;
+}
+CommandObject& CommandObject::operator=(const CommandObject& other3) {
+  command = other3.command;
+  commandOrder = other3.commandOrder;
+  __isset = other3.__isset;
+  return *this;
+}
+std::ostream& operator<<(std::ostream& out, const CommandObject& obj) {
+  using apache::thrift::to_string;
+  out << "CommandObject(";
+  out << "command=" << to_string(obj.command);
+  out << ", " << "commandOrder="; (obj.__isset.commandOrder ? (out << to_string(obj.commandOrder)) : (out << "<null>"));
   out << ")";
   return out;
 }
@@ -295,19 +435,19 @@ void swap(ApplicationModule &a, ApplicationModule &b) {
   swap(a.__isset, b.__isset);
 }
 
-ApplicationModule::ApplicationModule(const ApplicationModule& other2) {
-  appModuleId = other2.appModuleId;
-  appModuleName = other2.appModuleName;
-  appModuleVersion = other2.appModuleVersion;
-  appModuleDescription = other2.appModuleDescription;
-  __isset = other2.__isset;
+ApplicationModule::ApplicationModule(const ApplicationModule& other4) {
+  appModuleId = other4.appModuleId;
+  appModuleName = other4.appModuleName;
+  appModuleVersion = other4.appModuleVersion;
+  appModuleDescription = other4.appModuleDescription;
+  __isset = other4.__isset;
 }
-ApplicationModule& ApplicationModule::operator=(const ApplicationModule& other3) {
-  appModuleId = other3.appModuleId;
-  appModuleName = other3.appModuleName;
-  appModuleVersion = other3.appModuleVersion;
-  appModuleDescription = other3.appModuleDescription;
-  __isset = other3.__isset;
+ApplicationModule& ApplicationModule::operator=(const ApplicationModule& other5) {
+  appModuleId = other5.appModuleId;
+  appModuleName = other5.appModuleName;
+  appModuleVersion = other5.appModuleVersion;
+  appModuleDescription = other5.appModuleDescription;
+  __isset = other5.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const ApplicationModule& obj) {
@@ -351,7 +491,7 @@ void ApplicationDeploymentDescription::__set_appDeploymentDescription(const std:
 __isset.appDeploymentDescription = true;
 }
 
-void ApplicationDeploymentDescription::__set_moduleLoadCmds(const std::vector<std::string> & val) {
+void ApplicationDeploymentDescription::__set_moduleLoadCmds(const std::vector<CommandObject> & val) {
   this->moduleLoadCmds = val;
 __isset.moduleLoadCmds = true;
 }
@@ -371,18 +511,18 @@ void ApplicationDeploymentDescription::__set_setEnvironment(const std::vector<Se
 __isset.setEnvironment = true;
 }
 
-void ApplicationDeploymentDescription::__set_preJobCommands(const std::vector<std::string> & val) {
+void ApplicationDeploymentDescription::__set_preJobCommands(const std::vector<CommandObject> & val) {
   this->preJobCommands = val;
 __isset.preJobCommands = true;
 }
 
-void ApplicationDeploymentDescription::__set_postJobCommands(const std::vector<std::string> & val) {
+void ApplicationDeploymentDescription::__set_postJobCommands(const std::vector<CommandObject> & val) {
   this->postJobCommands = val;
 __isset.postJobCommands = true;
 }
 
-const char* ApplicationDeploymentDescription::ascii_fingerprint = "3B2F93AE9F0E6A621AF867419ADD9E5A";
-const uint8_t ApplicationDeploymentDescription::binary_fingerprint[16] = {0x3B,0x2F,0x93,0xAE,0x9F,0x0E,0x6A,0x62,0x1A,0xF8,0x67,0x41,0x9A,0xDD,0x9E,0x5A};
+const char* ApplicationDeploymentDescription::ascii_fingerprint = "248366FE9C58B4F98F9D84DE1237486F";
+const uint8_t ApplicationDeploymentDescription::binary_fingerprint[16] = {0x24,0x83,0x66,0xFE,0x9C,0x58,0xB4,0xF9,0x8F,0x9D,0x84,0xDE,0x12,0x37,0x48,0x6F};
 
 uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -443,9 +583,9 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         break;
       case 5:
         if (ftype == ::apache::thrift::protocol::T_I32) {
-          int32_t ecast4;
-          xfer += iprot->readI32(ecast4);
-          this->parallelism = (ApplicationParallelismType::type)ecast4;
+          int32_t ecast6;
+          xfer += iprot->readI32(ecast6);
+          this->parallelism = (ApplicationParallelismType::type)ecast6;
           isset_parallelism = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -463,14 +603,14 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->moduleLoadCmds.clear();
-            uint32_t _size5;
-            ::apache::thrift::protocol::TType _etype8;
-            xfer += iprot->readListBegin(_etype8, _size5);
-            this->moduleLoadCmds.resize(_size5);
-            uint32_t _i9;
-            for (_i9 = 0; _i9 < _size5; ++_i9)
+            uint32_t _size7;
+            ::apache::thrift::protocol::TType _etype10;
+            xfer += iprot->readListBegin(_etype10, _size7);
+            this->moduleLoadCmds.resize(_size7);
+            uint32_t _i11;
+            for (_i11 = 0; _i11 < _size7; ++_i11)
             {
-              xfer += iprot->readString(this->moduleLoadCmds[_i9]);
+              xfer += this->moduleLoadCmds[_i11].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -483,14 +623,14 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->libPrependPaths.clear();
-            uint32_t _size10;
-            ::apache::thrift::protocol::TType _etype13;
-            xfer += iprot->readListBegin(_etype13, _size10);
-            this->libPrependPaths.resize(_size10);
-            uint32_t _i14;
-            for (_i14 = 0; _i14 < _size10; ++_i14)
+            uint32_t _size12;
+            ::apache::thrift::protocol::TType _etype15;
+            xfer += iprot->readListBegin(_etype15, _size12);
+            this->libPrependPaths.resize(_size12);
+            uint32_t _i16;
+            for (_i16 = 0; _i16 < _size12; ++_i16)
             {
-              xfer += this->libPrependPaths[_i14].read(iprot);
+              xfer += this->libPrependPaths[_i16].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -503,14 +643,14 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->libAppendPaths.clear();
-            uint32_t _size15;
-            ::apache::thrift::protocol::TType _etype18;
-            xfer += iprot->readListBegin(_etype18, _size15);
-            this->libAppendPaths.resize(_size15);
-            uint32_t _i19;
-            for (_i19 = 0; _i19 < _size15; ++_i19)
+            uint32_t _size17;
+            ::apache::thrift::protocol::TType _etype20;
+            xfer += iprot->readListBegin(_etype20, _size17);
+            this->libAppendPaths.resize(_size17);
+            uint32_t _i21;
+            for (_i21 = 0; _i21 < _size17; ++_i21)
             {
-              xfer += this->libAppendPaths[_i19].read(iprot);
+              xfer += this->libAppendPaths[_i21].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -523,14 +663,14 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->setEnvironment.clear();
-            uint32_t _size20;
-            ::apache::thrift::protocol::TType _etype23;
-            xfer += iprot->readListBegin(_etype23, _size20);
-            this->setEnvironment.resize(_size20);
-            uint32_t _i24;
-            for (_i24 = 0; _i24 < _size20; ++_i24)
+            uint32_t _size22;
+            ::apache::thrift::protocol::TType _etype25;
+            xfer += iprot->readListBegin(_etype25, _size22);
+            this->setEnvironment.resize(_size22);
+            uint32_t _i26;
+            for (_i26 = 0; _i26 < _size22; ++_i26)
             {
-              xfer += this->setEnvironment[_i24].read(iprot);
+              xfer += this->setEnvironment[_i26].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -543,14 +683,14 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->preJobCommands.clear();
-            uint32_t _size25;
-            ::apache::thrift::protocol::TType _etype28;
-            xfer += iprot->readListBegin(_etype28, _size25);
-            this->preJobCommands.resize(_size25);
-            uint32_t _i29;
-            for (_i29 = 0; _i29 < _size25; ++_i29)
+            uint32_t _size27;
+            ::apache::thrift::protocol::TType _etype30;
+            xfer += iprot->readListBegin(_etype30, _size27);
+            this->preJobCommands.resize(_size27);
+            uint32_t _i31;
+            for (_i31 = 0; _i31 < _size27; ++_i31)
             {
-              xfer += iprot->readString(this->preJobCommands[_i29]);
+              xfer += this->preJobCommands[_i31].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -563,14 +703,14 @@ uint32_t ApplicationDeploymentDescription::read(::apache::thrift::protocol::TPro
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->postJobCommands.clear();
-            uint32_t _size30;
-            ::apache::thrift::protocol::TType _etype33;
-            xfer += iprot->readListBegin(_etype33, _size30);
-            this->postJobCommands.resize(_size30);
-            uint32_t _i34;
-            for (_i34 = 0; _i34 < _size30; ++_i34)
+            uint32_t _size32;
+            ::apache::thrift::protocol::TType _etype35;
+            xfer += iprot->readListBegin(_etype35, _size32);
+            this->postJobCommands.resize(_size32);
+            uint32_t _i36;
+            for (_i36 = 0; _i36 < _size32; ++_i36)
             {
-              xfer += iprot->readString(this->postJobCommands[_i34]);
+              xfer += this->postJobCommands[_i36].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -634,11 +774,11 @@ uint32_t ApplicationDeploymentDescription::write(::apache::thrift::protocol::TPr
   if (this->__isset.moduleLoadCmds) {
     xfer += oprot->writeFieldBegin("moduleLoadCmds", ::apache::thrift::protocol::T_LIST, 7);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->moduleLoadCmds.size()));
-      std::vector<std::string> ::const_iterator _iter35;
-      for (_iter35 = this->moduleLoadCmds.begin(); _iter35 != this->moduleLoadCmds.end(); ++_iter35)
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->moduleLoadCmds.size()));
+      std::vector<CommandObject> ::const_iterator _iter37;
+      for (_iter37 = this->moduleLoadCmds.begin(); _iter37 != this->moduleLoadCmds.end(); ++_iter37)
       {
-        xfer += oprot->writeString((*_iter35));
+        xfer += (*_iter37).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -648,10 +788,10 @@ uint32_t ApplicationDeploymentDescription::write(::apache::thrift::protocol::TPr
     xfer += oprot->writeFieldBegin("libPrependPaths", ::apache::thrift::protocol::T_LIST, 8);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->libPrependPaths.size()));
-      std::vector<SetEnvPaths> ::const_iterator _iter36;
-      for (_iter36 = this->libPrependPaths.begin(); _iter36 != this->libPrependPaths.end(); ++_iter36)
+      std::vector<SetEnvPaths> ::const_iterator _iter38;
+      for (_iter38 = this->libPrependPaths.begin(); _iter38 != this->libPrependPaths.end(); ++_iter38)
       {
-        xfer += (*_iter36).write(oprot);
+        xfer += (*_iter38).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -661,10 +801,10 @@ uint32_t ApplicationDeploymentDescription::write(::apache::thrift::protocol::TPr
     xfer += oprot->writeFieldBegin("libAppendPaths", ::apache::thrift::protocol::T_LIST, 9);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->libAppendPaths.size()));
-      std::vector<SetEnvPaths> ::const_iterator _iter37;
-      for (_iter37 = this->libAppendPaths.begin(); _iter37 != this->libAppendPaths.end(); ++_iter37)
+      std::vector<SetEnvPaths> ::const_iterator _iter39;
+      for (_iter39 = this->libAppendPaths.begin(); _iter39 != this->libAppendPaths.end(); ++_iter39)
       {
-        xfer += (*_iter37).write(oprot);
+        xfer += (*_iter39).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -674,10 +814,10 @@ uint32_t ApplicationDeploymentDescription::write(::apache::thrift::protocol::TPr
     xfer += oprot->writeFieldBegin("setEnvironment", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->setEnvironment.size()));
-      std::vector<SetEnvPaths> ::const_iterator _iter38;
-      for (_iter38 = this->setEnvironment.begin(); _iter38 != this->setEnvironment.end(); ++_iter38)
+      std::vector<SetEnvPaths> ::const_iterator _iter40;
+      for (_iter40 = this->setEnvironment.begin(); _iter40 != this->setEnvironment.end(); ++_iter40)
       {
-        xfer += (*_iter38).write(oprot);
+        xfer += (*_iter40).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -686,11 +826,11 @@ uint32_t ApplicationDeploymentDescription::write(::apache::thrift::protocol::TPr
   if (this->__isset.preJobCommands) {
     xfer += oprot->writeFieldBegin("preJobCommands", ::apache::thrift::protocol::T_LIST, 11);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->preJobCommands.size()));
-      std::vector<std::string> ::const_iterator _iter39;
-      for (_iter39 = this->preJobCommands.begin(); _iter39 != this->preJobCommands.end(); ++_iter39)
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->preJobCommands.size()));
+      std::vector<CommandObject> ::const_iterator _iter41;
+      for (_iter41 = this->preJobCommands.begin(); _iter41 != this->preJobCommands.end(); ++_iter41)
       {
-        xfer += oprot->writeString((*_iter39));
+        xfer += (*_iter41).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -699,11 +839,11 @@ uint32_t ApplicationDeploymentDescription::write(::apache::thrift::protocol::TPr
   if (this->__isset.postJobCommands) {
     xfer += oprot->writeFieldBegin("postJobCommands", ::apache::thrift::protocol::T_LIST, 12);
     {
-      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->postJobCommands.size()));
-      std::vector<std::string> ::const_iterator _iter40;
-      for (_iter40 = this->postJobCommands.begin(); _iter40 != this->postJobCommands.end(); ++_iter40)
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->postJobCommands.size()));
+      std::vector<CommandObject> ::const_iterator _iter42;
+      for (_iter42 = this->postJobCommands.begin(); _iter42 != this->postJobCommands.end(); ++_iter42)
       {
-        xfer += oprot->writeString((*_iter40));
+        xfer += (*_iter42).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -732,35 +872,35 @@ void swap(ApplicationDeploymentDescription &a, ApplicationDeploymentDescription
   swap(a.__isset, b.__isset);
 }
 
-ApplicationDeploymentDescription::ApplicationDeploymentDescription(const ApplicationDeploymentDescription& other41) {
-  appDeploymentId = other41.appDeploymentId;
-  appModuleId = other41.appModuleId;
-  computeHostId = other41.computeHostId;
-  executablePath = other41.executablePath;
-  parallelism = other41.parallelism;
-  appDeploymentDescription = other41.appDeploymentDescription;
-  moduleLoadCmds = other41.moduleLoadCmds;
-  libPrependPaths = other41.libPrependPaths;
-  libAppendPaths = other41.libAppendPaths;
-  setEnvironment = other41.setEnvironment;
-  preJobCommands = other41.preJobCommands;
-  postJobCommands = other41.postJobCommands;
-  __isset = other41.__isset;
-}
-ApplicationDeploymentDescription& ApplicationDeploymentDescription::operator=(const ApplicationDeploymentDescription& other42) {
-  appDeploymentId = other42.appDeploymentId;
-  appModuleId = other42.appModuleId;
-  computeHostId = other42.computeHostId;
-  executablePath = other42.executablePath;
-  parallelism = other42.parallelism;
-  appDeploymentDescription = other42.appDeploymentDescription;
-  moduleLoadCmds = other42.moduleLoadCmds;
-  libPrependPaths = other42.libPrependPaths;
-  libAppendPaths = other42.libAppendPaths;
-  setEnvironment = other42.setEnvironment;
-  preJobCommands = other42.preJobCommands;
-  postJobCommands = other42.postJobCommands;
-  __isset = other42.__isset;
+ApplicationDeploymentDescription::ApplicationDeploymentDescription(const ApplicationDeploymentDescription& other43) {
+  appDeploymentId = other43.appDeploymentId;
+  appModuleId = other43.appModuleId;
+  computeHostId = other43.computeHostId;
+  executablePath = other43.executablePath;
+  parallelism = other43.parallelism;
+  appDeploymentDescription = other43.appDeploymentDescription;
+  moduleLoadCmds = other43.moduleLoadCmds;
+  libPrependPaths = other43.libPrependPaths;
+  libAppendPaths = other43.libAppendPaths;
+  setEnvironment = other43.setEnvironment;
+  preJobCommands = other43.preJobCommands;
+  postJobCommands = other43.postJobCommands;
+  __isset = other43.__isset;
+}
+ApplicationDeploymentDescription& ApplicationDeploymentDescription::operator=(const ApplicationDeploymentDescription& other44) {
+  appDeploymentId = other44.appDeploymentId;
+  appModuleId = other44.appModuleId;
+  computeHostId = other44.computeHostId;
+  executablePath = other44.executablePath;
+  parallelism = other44.parallelism;
+  appDeploymentDescription = other44.appDeploymentDescription;
+  moduleLoadCmds = other44.moduleLoadCmds;
+  libPrependPaths = other44.libPrependPaths;
+  libAppendPaths = other44.libAppendPaths;
+  setEnvironment = other44.setEnvironment;
+  preJobCommands = other44.preJobCommands;
+  postJobCommands = other44.postJobCommands;
+  __isset = other44.__isset;
   return *this;
 }
 std::ostream& operator<<(std::ostream& out, const ApplicationDeploymentDescription& obj) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.h
index 7f19352..671b7e7 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/application_deployment_model_types.h
@@ -52,36 +52,51 @@ extern const std::map<int, const char*> _ApplicationParallelismType_VALUES_TO_NA
 
 class SetEnvPaths;
 
+class CommandObject;
+
 class ApplicationModule;
 
 class ApplicationDeploymentDescription;
 
+typedef struct _SetEnvPaths__isset {
+  _SetEnvPaths__isset() : envPathOrder(false) {}
+  bool envPathOrder :1;
+} _SetEnvPaths__isset;
 
 class SetEnvPaths {
  public:
 
-  static const char* ascii_fingerprint; // = "07A9615F837F7D0A952B595DD3020972";
-  static const uint8_t binary_fingerprint[16]; // = {0x07,0xA9,0x61,0x5F,0x83,0x7F,0x7D,0x0A,0x95,0x2B,0x59,0x5D,0xD3,0x02,0x09,0x72};
+  static const char* ascii_fingerprint; // = "CB1522D43F7EFF4C4CDE94ADBC65FF84";
+  static const uint8_t binary_fingerprint[16]; // = {0xCB,0x15,0x22,0xD4,0x3F,0x7E,0xFF,0x4C,0x4C,0xDE,0x94,0xAD,0xBC,0x65,0xFF,0x84};
 
   SetEnvPaths(const SetEnvPaths&);
   SetEnvPaths& operator=(const SetEnvPaths&);
-  SetEnvPaths() : name(), value() {
+  SetEnvPaths() : name(), value(), envPathOrder(0) {
   }
 
   virtual ~SetEnvPaths() throw();
   std::string name;
   std::string value;
+  int32_t envPathOrder;
+
+  _SetEnvPaths__isset __isset;
 
   void __set_name(const std::string& val);
 
   void __set_value(const std::string& val);
 
+  void __set_envPathOrder(const int32_t val);
+
   bool operator == (const SetEnvPaths & rhs) const
   {
     if (!(name == rhs.name))
       return false;
     if (!(value == rhs.value))
       return false;
+    if (__isset.envPathOrder != rhs.__isset.envPathOrder)
+      return false;
+    else if (__isset.envPathOrder && !(envPathOrder == rhs.envPathOrder))
+      return false;
     return true;
   }
   bool operator != (const SetEnvPaths &rhs) const {
@@ -98,6 +113,56 @@ class SetEnvPaths {
 
 void swap(SetEnvPaths &a, SetEnvPaths &b);
 
+typedef struct _CommandObject__isset {
+  _CommandObject__isset() : commandOrder(false) {}
+  bool commandOrder :1;
+} _CommandObject__isset;
+
+class CommandObject {
+ public:
+
+  static const char* ascii_fingerprint; // = "18B162B1D15D8D46509D3911A9F1C2AA";
+  static const uint8_t binary_fingerprint[16]; // = {0x18,0xB1,0x62,0xB1,0xD1,0x5D,0x8D,0x46,0x50,0x9D,0x39,0x11,0xA9,0xF1,0xC2,0xAA};
+
+  CommandObject(const CommandObject&);
+  CommandObject& operator=(const CommandObject&);
+  CommandObject() : command(), commandOrder(0) {
+  }
+
+  virtual ~CommandObject() throw();
+  std::string command;
+  int32_t commandOrder;
+
+  _CommandObject__isset __isset;
+
+  void __set_command(const std::string& val);
+
+  void __set_commandOrder(const int32_t val);
+
+  bool operator == (const CommandObject & rhs) const
+  {
+    if (!(command == rhs.command))
+      return false;
+    if (__isset.commandOrder != rhs.__isset.commandOrder)
+      return false;
+    else if (__isset.commandOrder && !(commandOrder == rhs.commandOrder))
+      return false;
+    return true;
+  }
+  bool operator != (const CommandObject &rhs) const {
+    return !(*this == rhs);
+  }
+
+  bool operator < (const CommandObject & ) const;
+
+  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
+  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
+
+  friend std::ostream& operator<<(std::ostream& out, const CommandObject& obj);
+};
+
+void swap(CommandObject &a, CommandObject &b);
+
 typedef struct _ApplicationModule__isset {
   _ApplicationModule__isset() : appModuleVersion(false), appModuleDescription(false) {}
   bool appModuleVersion :1;
@@ -175,8 +240,8 @@ typedef struct _ApplicationDeploymentDescription__isset {
 class ApplicationDeploymentDescription {
  public:
 
-  static const char* ascii_fingerprint; // = "3B2F93AE9F0E6A621AF867419ADD9E5A";
-  static const uint8_t binary_fingerprint[16]; // = {0x3B,0x2F,0x93,0xAE,0x9F,0x0E,0x6A,0x62,0x1A,0xF8,0x67,0x41,0x9A,0xDD,0x9E,0x5A};
+  static const char* ascii_fingerprint; // = "248366FE9C58B4F98F9D84DE1237486F";
+  static const uint8_t binary_fingerprint[16]; // = {0x24,0x83,0x66,0xFE,0x9C,0x58,0xB4,0xF9,0x8F,0x9D,0x84,0xDE,0x12,0x37,0x48,0x6F};
 
   ApplicationDeploymentDescription(const ApplicationDeploymentDescription&);
   ApplicationDeploymentDescription& operator=(const ApplicationDeploymentDescription&);
@@ -192,12 +257,12 @@ class ApplicationDeploymentDescription {
   std::string executablePath;
   ApplicationParallelismType::type parallelism;
   std::string appDeploymentDescription;
-  std::vector<std::string>  moduleLoadCmds;
+  std::vector<CommandObject>  moduleLoadCmds;
   std::vector<SetEnvPaths>  libPrependPaths;
   std::vector<SetEnvPaths>  libAppendPaths;
   std::vector<SetEnvPaths>  setEnvironment;
-  std::vector<std::string>  preJobCommands;
-  std::vector<std::string>  postJobCommands;
+  std::vector<CommandObject>  preJobCommands;
+  std::vector<CommandObject>  postJobCommands;
 
   _ApplicationDeploymentDescription__isset __isset;
 
@@ -213,7 +278,7 @@ class ApplicationDeploymentDescription {
 
   void __set_appDeploymentDescription(const std::string& val);
 
-  void __set_moduleLoadCmds(const std::vector<std::string> & val);
+  void __set_moduleLoadCmds(const std::vector<CommandObject> & val);
 
   void __set_libPrependPaths(const std::vector<SetEnvPaths> & val);
 
@@ -221,9 +286,9 @@ class ApplicationDeploymentDescription {
 
   void __set_setEnvironment(const std::vector<SetEnvPaths> & val);
 
-  void __set_preJobCommands(const std::vector<std::string> & val);
+  void __set_preJobCommands(const std::vector<CommandObject> & val);
 
-  void __set_postJobCommands(const std::vector<std::string> & val);
+  void __set_postJobCommands(const std::vector<CommandObject> & val);
 
   bool operator == (const ApplicationDeploymentDescription & rhs) const
   {

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppDeployment/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppDeployment/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppDeployment/Types.php
index 61d4c5a..a9cc409 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppDeployment/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/AppCatalog/AppDeployment/Types.php
@@ -58,6 +58,9 @@ final class ApplicationParallelismType {
  * 
  * value:
  *   Value of the environment variable to set
+ * 
+ * envOrder:
+ *   The order of the setting of the env variables when there are multiple env variables
  */
 class SetEnvPaths {
   static $_TSPEC;
@@ -70,6 +73,10 @@ class SetEnvPaths {
    * @var string
    */
   public $value = null;
+  /**
+   * @var int
+   */
+  public $envPathOrder = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -82,6 +89,10 @@ class SetEnvPaths {
           'var' => 'value',
           'type' => TType::STRING,
           ),
+        3 => array(
+          'var' => 'envPathOrder',
+          'type' => TType::I32,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -91,6 +102,9 @@ class SetEnvPaths {
       if (isset($vals['value'])) {
         $this->value = $vals['value'];
       }
+      if (isset($vals['envPathOrder'])) {
+        $this->envPathOrder = $vals['envPathOrder'];
+      }
     }
   }
 
@@ -127,6 +141,13 @@ class SetEnvPaths {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->envPathOrder);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -150,6 +171,118 @@ class SetEnvPaths {
       $xfer += $output->writeString($this->value);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->envPathOrder !== null) {
+      $xfer += $output->writeFieldBegin('envPathOrder', TType::I32, 3);
+      $xfer += $output->writeI32($this->envPathOrder);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Job commands to be used in Pre Job, Post Job and Module Load Commands
+ * 
+ * command:
+ *   The actual command in string format
+ * 
+ * commandOrder:
+ *   Order of the command in the multiple command situation
+ */
+class CommandObject {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $command = null;
+  /**
+   * @var int
+   */
+  public $commandOrder = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'command',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'commandOrder',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['command'])) {
+        $this->command = $vals['command'];
+      }
+      if (isset($vals['commandOrder'])) {
+        $this->commandOrder = $vals['commandOrder'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'CommandObject';
+  }
+
+  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->command);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->commandOrder);
+          } 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('CommandObject');
+    if ($this->command !== null) {
+      $xfer += $output->writeFieldBegin('command', TType::STRING, 1);
+      $xfer += $output->writeString($this->command);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->commandOrder !== null) {
+      $xfer += $output->writeFieldBegin('commandOrder', TType::I32, 2);
+      $xfer += $output->writeI32($this->commandOrder);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -370,7 +503,7 @@ class ApplicationDeploymentDescription {
    */
   public $appDeploymentDescription = null;
   /**
-   * @var string[]
+   * @var \Airavata\Model\AppCatalog\AppDeployment\CommandObject[]
    */
   public $moduleLoadCmds = null;
   /**
@@ -386,11 +519,11 @@ class ApplicationDeploymentDescription {
    */
   public $setEnvironment = null;
   /**
-   * @var string[]
+   * @var \Airavata\Model\AppCatalog\AppDeployment\CommandObject[]
    */
   public $preJobCommands = null;
   /**
-   * @var string[]
+   * @var \Airavata\Model\AppCatalog\AppDeployment\CommandObject[]
    */
   public $postJobCommands = null;
 
@@ -424,9 +557,10 @@ class ApplicationDeploymentDescription {
         7 => array(
           'var' => 'moduleLoadCmds',
           'type' => TType::LST,
-          'etype' => TType::STRING,
+          'etype' => TType::STRUCT,
           'elem' => array(
-            'type' => TType::STRING,
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\AppDeployment\CommandObject',
             ),
           ),
         8 => array(
@@ -459,17 +593,19 @@ class ApplicationDeploymentDescription {
         11 => array(
           'var' => 'preJobCommands',
           'type' => TType::LST,
-          'etype' => TType::STRING,
+          'etype' => TType::STRUCT,
           'elem' => array(
-            'type' => TType::STRING,
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\AppDeployment\CommandObject',
             ),
           ),
         12 => array(
           'var' => 'postJobCommands',
           'type' => TType::LST,
-          'etype' => TType::STRING,
+          'etype' => TType::STRUCT,
           'elem' => array(
-            'type' => TType::STRING,
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\AppDeployment\CommandObject',
             ),
           ),
         );
@@ -584,7 +720,8 @@ class ApplicationDeploymentDescription {
             for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
             {
               $elem5 = null;
-              $xfer += $input->readString($elem5);
+              $elem5 = new \Airavata\Model\AppCatalog\AppDeployment\CommandObject();
+              $xfer += $elem5->read($input);
               $this->moduleLoadCmds []= $elem5;
             }
             $xfer += $input->readListEnd();
@@ -655,7 +792,8 @@ class ApplicationDeploymentDescription {
             for ($_i28 = 0; $_i28 < $_size24; ++$_i28)
             {
               $elem29 = null;
-              $xfer += $input->readString($elem29);
+              $elem29 = new \Airavata\Model\AppCatalog\AppDeployment\CommandObject();
+              $xfer += $elem29->read($input);
               $this->preJobCommands []= $elem29;
             }
             $xfer += $input->readListEnd();
@@ -672,7 +810,8 @@ class ApplicationDeploymentDescription {
             for ($_i34 = 0; $_i34 < $_size30; ++$_i34)
             {
               $elem35 = null;
-              $xfer += $input->readString($elem35);
+              $elem35 = new \Airavata\Model\AppCatalog\AppDeployment\CommandObject();
+              $xfer += $elem35->read($input);
               $this->postJobCommands []= $elem35;
             }
             $xfer += $input->readListEnd();
@@ -729,11 +868,11 @@ class ApplicationDeploymentDescription {
       }
       $xfer += $output->writeFieldBegin('moduleLoadCmds', TType::LST, 7);
       {
-        $output->writeListBegin(TType::STRING, count($this->moduleLoadCmds));
+        $output->writeListBegin(TType::STRUCT, count($this->moduleLoadCmds));
         {
           foreach ($this->moduleLoadCmds as $iter36)
           {
-            $xfer += $output->writeString($iter36);
+            $xfer += $iter36->write($output);
           }
         }
         $output->writeListEnd();
@@ -797,11 +936,11 @@ class ApplicationDeploymentDescription {
       }
       $xfer += $output->writeFieldBegin('preJobCommands', TType::LST, 11);
       {
-        $output->writeListBegin(TType::STRING, count($this->preJobCommands));
+        $output->writeListBegin(TType::STRUCT, count($this->preJobCommands));
         {
           foreach ($this->preJobCommands as $iter40)
           {
-            $xfer += $output->writeString($iter40);
+            $xfer += $iter40->write($output);
           }
         }
         $output->writeListEnd();
@@ -814,11 +953,11 @@ class ApplicationDeploymentDescription {
       }
       $xfer += $output->writeFieldBegin('postJobCommands', TType::LST, 12);
       {
-        $output->writeListBegin(TType::STRING, count($this->postJobCommands));
+        $output->writeListBegin(TType::STRUCT, count($this->postJobCommands));
         {
           foreach ($this->postJobCommands as $iter41)
           {
-            $xfer += $output->writeString($iter41);
+            $xfer += $iter41->write($output);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/appdeployment/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/appdeployment/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/appdeployment/ttypes.py
index e6ecf98..88b930f 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/appdeployment/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/appcatalog/appdeployment/ttypes.py
@@ -71,20 +71,26 @@ class SetEnvPaths:
   value:
     Value of the environment variable to set
 
+  envOrder:
+    The order of the setting of the env variables when there are multiple env variables
+
   Attributes:
    - name
    - value
+   - envPathOrder
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.STRING, 'name', None, None, ), # 1
     (2, TType.STRING, 'value', None, None, ), # 2
+    (3, TType.I32, 'envPathOrder', None, None, ), # 3
   )
 
-  def __init__(self, name=None, value=None,):
+  def __init__(self, name=None, value=None, envPathOrder=None,):
     self.name = name
     self.value = value
+    self.envPathOrder = envPathOrder
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -105,6 +111,11 @@ class SetEnvPaths:
           self.value = iprot.readString();
         else:
           iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I32:
+          self.envPathOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -123,6 +134,10 @@ class SetEnvPaths:
       oprot.writeFieldBegin('value', TType.STRING, 2)
       oprot.writeString(self.value)
       oprot.writeFieldEnd()
+    if self.envPathOrder is not None:
+      oprot.writeFieldBegin('envPathOrder', TType.I32, 3)
+      oprot.writeI32(self.envPathOrder)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -138,6 +153,95 @@ class SetEnvPaths:
     value = 17
     value = (value * 31) ^ hash(self.name)
     value = (value * 31) ^ hash(self.value)
+    value = (value * 31) ^ hash(self.envPathOrder)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class CommandObject:
+  """
+  Job commands to be used in Pre Job, Post Job and Module Load Commands
+
+  command:
+    The actual command in string format
+
+  commandOrder:
+    Order of the command in the multiple command situation
+
+  Attributes:
+   - command
+   - commandOrder
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'command', None, None, ), # 1
+    (2, TType.I32, 'commandOrder', None, None, ), # 2
+  )
+
+  def __init__(self, command=None, commandOrder=None,):
+    self.command = command
+    self.commandOrder = commandOrder
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.command = iprot.readString();
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.I32:
+          self.commandOrder = iprot.readI32();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('CommandObject')
+    if self.command is not None:
+      oprot.writeFieldBegin('command', TType.STRING, 1)
+      oprot.writeString(self.command)
+      oprot.writeFieldEnd()
+    if self.commandOrder is not None:
+      oprot.writeFieldBegin('commandOrder', TType.I32, 2)
+      oprot.writeI32(self.commandOrder)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    if self.command is None:
+      raise TProtocol.TProtocolException(message='Required field command is unset!')
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.command)
+    value = (value * 31) ^ hash(self.commandOrder)
     return value
 
   def __repr__(self):
@@ -323,12 +427,12 @@ class ApplicationDeploymentDescription:
     (4, TType.STRING, 'executablePath', None, None, ), # 4
     (5, TType.I32, 'parallelism', None,     0, ), # 5
     (6, TType.STRING, 'appDeploymentDescription', None, None, ), # 6
-    (7, TType.LIST, 'moduleLoadCmds', (TType.STRING,None), None, ), # 7
+    (7, TType.LIST, 'moduleLoadCmds', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 7
     (8, TType.LIST, 'libPrependPaths', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 8
     (9, TType.LIST, 'libAppendPaths', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 9
     (10, TType.LIST, 'setEnvironment', (TType.STRUCT,(SetEnvPaths, SetEnvPaths.thrift_spec)), None, ), # 10
-    (11, TType.LIST, 'preJobCommands', (TType.STRING,None), None, ), # 11
-    (12, TType.LIST, 'postJobCommands', (TType.STRING,None), None, ), # 12
+    (11, TType.LIST, 'preJobCommands', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 11
+    (12, TType.LIST, 'postJobCommands', (TType.STRUCT,(CommandObject, CommandObject.thrift_spec)), None, ), # 12
   )
 
   def __init__(self, appDeploymentId=thrift_spec[1][4], appModuleId=None, computeHostId=None, executablePath=None, parallelism=thrift_spec[5][4], appDeploymentDescription=None, moduleLoadCmds=None, libPrependPaths=None, libAppendPaths=None, setEnvironment=None, preJobCommands=None, postJobCommands=None,):
@@ -389,7 +493,8 @@ class ApplicationDeploymentDescription:
           self.moduleLoadCmds = []
           (_etype3, _size0) = iprot.readListBegin()
           for _i4 in xrange(_size0):
-            _elem5 = iprot.readString();
+            _elem5 = CommandObject()
+            _elem5.read(iprot)
             self.moduleLoadCmds.append(_elem5)
           iprot.readListEnd()
         else:
@@ -432,7 +537,8 @@ class ApplicationDeploymentDescription:
           self.preJobCommands = []
           (_etype27, _size24) = iprot.readListBegin()
           for _i28 in xrange(_size24):
-            _elem29 = iprot.readString();
+            _elem29 = CommandObject()
+            _elem29.read(iprot)
             self.preJobCommands.append(_elem29)
           iprot.readListEnd()
         else:
@@ -442,7 +548,8 @@ class ApplicationDeploymentDescription:
           self.postJobCommands = []
           (_etype33, _size30) = iprot.readListBegin()
           for _i34 in xrange(_size30):
-            _elem35 = iprot.readString();
+            _elem35 = CommandObject()
+            _elem35.read(iprot)
             self.postJobCommands.append(_elem35)
           iprot.readListEnd()
         else:
@@ -483,9 +590,9 @@ class ApplicationDeploymentDescription:
       oprot.writeFieldEnd()
     if self.moduleLoadCmds is not None:
       oprot.writeFieldBegin('moduleLoadCmds', TType.LIST, 7)
-      oprot.writeListBegin(TType.STRING, len(self.moduleLoadCmds))
+      oprot.writeListBegin(TType.STRUCT, len(self.moduleLoadCmds))
       for iter36 in self.moduleLoadCmds:
-        oprot.writeString(iter36)
+        iter36.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.libPrependPaths is not None:
@@ -511,16 +618,16 @@ class ApplicationDeploymentDescription:
       oprot.writeFieldEnd()
     if self.preJobCommands is not None:
       oprot.writeFieldBegin('preJobCommands', TType.LIST, 11)
-      oprot.writeListBegin(TType.STRING, len(self.preJobCommands))
+      oprot.writeListBegin(TType.STRUCT, len(self.preJobCommands))
       for iter40 in self.preJobCommands:
-        oprot.writeString(iter40)
+        iter40.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.postJobCommands is not None:
       oprot.writeFieldBegin('postJobCommands', TType.LIST, 12)
-      oprot.writeListBegin(TType.STRING, len(self.postJobCommands))
+      oprot.writeListBegin(TType.STRUCT, len(self.postJobCommands))
       for iter41 in self.postJobCommands:
-        oprot.writeString(iter41)
+        iter41.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
index c0a13ab..604f74f 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
@@ -25,6 +25,7 @@ import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.client.samples.CreateLaunchExperiment;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appdeployment.CommandObject;
 import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
@@ -1110,8 +1111,9 @@ public class RegisterSampleApplications {
             System.out.println("Echo on stampede deployment Id " + echoAppDeployId);
 
             //Register Amber
-            List<String> moduleLoadCMDs = new ArrayList<String>();
-            moduleLoadCMDs.add("module load amber");
+            List<CommandObject> moduleLoadCMDs = new ArrayList<>();
+            CommandObject cmd = new CommandObject("module load amber");
+            moduleLoadCMDs.add(cmd);
             ApplicationDeploymentDescription amberStampedeDeployment = RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, stampedeResourceId,
                     "/opt/apps/intel13/mvapich2_1_9/amber/12.0/bin/sander.MPI -O", ApplicationParallelismType.MPI,
                     amberDescription, moduleLoadCMDs, null, null);
@@ -1133,8 +1135,8 @@ public class RegisterSampleApplications {
             System.out.println("GROMACS on stampede deployment Id " + gromacsAppDeployId);
 
             //Register LAMMPS
-            List<String> preJobCommands = new ArrayList<String>();
-            preJobCommands.add("cp /home1/00421/ccguser/apps/ds_lammps/data/* $workingDir");
+            List<CommandObject> preJobCommands = new ArrayList();
+            preJobCommands.add(new CommandObject("cp /home1/00421/ccguser/apps/ds_lammps/data/* $workingDir"));
             String lammpsAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, stampedeResourceId,
                             "~/apps/ds_lammps/bin/lmp_stampede", ApplicationParallelismType.MPI,
@@ -1142,8 +1144,8 @@ public class RegisterSampleApplications {
             System.out.println("LAMMPS on stampede deployment Id " + lammpsAppDeployId);
 
             //Register NWChem
-            List<String> nwChemModuleCmds = new ArrayList<String>();
-            nwChemModuleCmds.add("module load nwchem");
+            List<CommandObject> nwChemModuleCmds = new ArrayList();
+            nwChemModuleCmds.add(new CommandObject("module load nwchem"));
             String nwChemAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(nwChemModuleId, stampedeResourceId,
                             "nwchem", ApplicationParallelismType.MPI,
@@ -1165,10 +1167,10 @@ public class RegisterSampleApplications {
             System.out.println("WRF on stampede deployment Id " + wrfAppDeployId);
 
 
-            List<String> monteXModuleCmds = new ArrayList<String>();
+            List<CommandObject> monteXModuleCmds = new ArrayList();
 //            monteXModuleCmds.add("module load globus");
 //            monteXModuleCmds.add("module load uberftp");
-            monteXModuleCmds.add("module load fftw3");
+            monteXModuleCmds.add(new CommandObject("module load fftw3"));
 
             String monteXAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, stampedeResourceId,
@@ -1192,8 +1194,8 @@ public class RegisterSampleApplications {
             System.out.println("Echo on trestles deployment Id " + echoAppDeployId);
 
             //Register Amber
-            List<String> moduleLoadCMDs = new ArrayList<String>();
-            moduleLoadCMDs.add("module load amber");
+            List<CommandObject> moduleLoadCMDs = new ArrayList();
+            moduleLoadCMDs.add(new CommandObject("module load amber"));
             String amberAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, trestlesResourceId,
                             "/opt/amber/bin/sander.MPI -O", ApplicationParallelismType.MPI,
@@ -1215,8 +1217,8 @@ public class RegisterSampleApplications {
             System.out.println("LAMMPS on trestles deployment Id " + lammpsAppDeployId);
 
             //Register GAMESS
-            List<String> moduleLoadCmd = new ArrayList<String>();
-            moduleLoadCmd.add("module load gamess");
+            List<CommandObject> moduleLoadCmd = new ArrayList();
+            moduleLoadCmd.add(new CommandObject("module load gamess"));
             String gamessAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(gamessModuleId, trestlesResourceId,
                             "/opt/gamess/rungms", ApplicationParallelismType.MPI,
@@ -1224,8 +1226,8 @@ public class RegisterSampleApplications {
             System.out.println("Gamess on trestles deployment Id " + gamessAppDeployId);
 
 
-            List<String> gaussianMouldes = new ArrayList<String>();
-            gaussianMouldes.add("module load gaussian");
+            List<CommandObject> gaussianMouldes = new ArrayList();
+            gaussianMouldes.add(new CommandObject("module load gaussian"));
             String gaussianAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, trestlesResourceId,
                             "g09", ApplicationParallelismType.OPENMP, gaussianDescription, gaussianMouldes , null, null));
@@ -1246,8 +1248,8 @@ public class RegisterSampleApplications {
                             "/home/lg11w/executables/echo.sh", ApplicationParallelismType.SERIAL,
                             echoDescription, null, null, null));
 
-            List<String> moduleLoadCmd = new ArrayList<String>();
-            moduleLoadCmd.add("module load LAMMPS/28Jun14-base");
+            List<CommandObject> moduleLoadCmd = new ArrayList();
+            moduleLoadCmd.add(new CommandObject("module load LAMMPS/28Jun14-base"));
             //Register Echo
 
             String lammpsDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
@@ -1273,9 +1275,9 @@ public class RegisterSampleApplications {
             System.out.println("Echo on bigredII deployment Id " + echoAppDeployId);
 
             //Register Amber
-            List<String> amberModuleLoadCMDsBr2 = new ArrayList<String>();
-            amberModuleLoadCMDsBr2.add("module load amber/gnu/mpi/12");
-            amberModuleLoadCMDsBr2.add("module swap PrgEnv-cray PrgEnv-gnu");
+            List<CommandObject> amberModuleLoadCMDsBr2 = new ArrayList();
+            amberModuleLoadCMDsBr2.add(new CommandObject("module load amber/gnu/mpi/12"));
+            amberModuleLoadCMDsBr2.add(new CommandObject("module swap PrgEnv-cray PrgEnv-gnu"));
             String amberAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, bigredResourceId,
                             "/N/soft/cle4/amber/gnu/mpi/12/amber12/bin/sander.MPI -O", ApplicationParallelismType.MPI,
@@ -1485,11 +1487,11 @@ public class RegisterSampleApplications {
             System.out.println("#### Registering Application Deployments on Alamo #### \n");
 
             //Register Ultrascan on Alamo
-            List<String> ultrascanMouldes = new ArrayList<String>();
-            ultrascanMouldes.add("module load intel/2015/64");
-            ultrascanMouldes.add("module load openmpi/intel/1.8.4");
-            ultrascanMouldes.add("module load qt4/4.8.6");
-            ultrascanMouldes.add("module load ultrascan3/3.3");
+            List<CommandObject> ultrascanMouldes = new ArrayList();
+            ultrascanMouldes.add(new CommandObject("module load intel/2015/64"));
+            ultrascanMouldes.add(new CommandObject("module load openmpi/intel/1.8.4"));
+            ultrascanMouldes.add(new CommandObject("module load qt4/4.8.6"));
+            ultrascanMouldes.add(new CommandObject("module load ultrascan3/3.3"));
 
             String ultrascanAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId, alamoResourceId,

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
index 7184f85..b2f12c1 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
@@ -24,6 +24,7 @@ package org.apache.airavata.client.tools;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appdeployment.CommandObject;
 import org.apache.airavata.model.appcatalog.appinterface.*;
 import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
@@ -60,9 +61,9 @@ public class RegisterSampleApplicationsUtils {
                                                                                String executablePath,
                                                                                ApplicationParallelismType parallelism,
                                                                                String appDeploymentDescription,
-                                                                               List<String> moduleLoadCmds,
-                                                                               List<String> preJobCmds,
-                                                                               List<String> postJobCmds) {
+                                                                               List<CommandObject> moduleLoadCmds,
+                                                                               List<CommandObject> preJobCmds,
+                                                                               List<CommandObject> postJobCmds) {
         ApplicationDeploymentDescription deployment = new ApplicationDeploymentDescription();
 //		deployment.setIsEmpty(false);
         deployment.setAppDeploymentDescription(appDeploymentDescription);

http://git-wip-us.apache.org/repos/asf/airavata/blob/1f9a39ce/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
index 7371959..dcec4bf 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/Workflow.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-10-19")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-10-22")
 public class Workflow implements org.apache.thrift.TBase<Workflow, Workflow._Fields>, java.io.Serializable, Cloneable, Comparable<Workflow> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Workflow");