You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2014/06/29 16:41:52 UTC

[3/8] git commit: Generated data models of app catalog

Generated data models of app catalog


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

Branch: refs/heads/master
Commit: 227c78dbe423d266a133b25a27e200ba401cb87f
Parents: abd7f19
Author: Suresh Marru <sm...@apache.org>
Authored: Sun Jun 29 09:55:40 2014 -0400
Committer: Suresh Marru <sm...@apache.org>
Committed: Sun Jun 29 09:55:40 2014 -0400

----------------------------------------------------------------------
 .../ApplicationDeploymentDescription.java       | 1479 ++++++++++++++++++
 .../deployment/ApplicationModule.java           |  811 ++++++++++
 .../application/deployment/SetEnvPaths.java     |  500 ++++++
 .../applicationDeploymentModelConstants.java    |   55 +
 .../ApplicationInterfaceDescription.java        | 1063 +++++++++++++
 .../model/application/interface/DataType.java   |   71 +
 .../interface/InputDataObjectType.java          | 1134 ++++++++++++++
 .../interface/OutputDataObjectType.java         |  735 +++++++++
 .../applicationInterfaceModelConstants.java     |   55 +
 9 files changed, 5903 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/227c78db/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationDeploymentDescription.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationDeploymentDescription.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationDeploymentDescription.java
new file mode 100644
index 0000000..9d05334
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationDeploymentDescription.java
@@ -0,0 +1,1479 @@
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+/**
+ * Autogenerated by Thrift Compiler (0.9.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.application.deployment;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Application Deployment Description
+ * 
+ * appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry.
+ * 
+ * appModuleName:
+ *   Application Module Name. This has to be precise describing the binary.
+ * 
+ * computeHostId:
+ *   This ID maps application deployment to a particular resource previously described within Airavata.
+ *   Example: Stampede is first registered and refered when registering WRF.
+ * 
+ * moduleLoadCmd:
+ *  Command string to load modules. This will be placed in the job submisison
+ *  Ex: module load amber
+ * 
+ * libPrependPaths:
+ *  prepend to a path variable the value
+ * 
+ * libAppendPaths:
+ *  append to a path variable the value
+ * 
+ * setEnvironment:
+ *  assigns to the environment variable "NAME" the value
+ * 
+ */
+@SuppressWarnings("all") public class ApplicationDeploymentDescription implements org.apache.thrift.TBase<ApplicationDeploymentDescription, ApplicationDeploymentDescription._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationDeploymentDescription> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationDeploymentDescription");
+
+  private static final org.apache.thrift.protocol.TField IS_EMPTY_FIELD_DESC = new org.apache.thrift.protocol.TField("isEmpty", org.apache.thrift.protocol.TType.BOOL, (short)1);
+  private static final org.apache.thrift.protocol.TField APP_DEPLOYMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("appDeploymentId", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField APP_MODULE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("appModuleId", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField COMPUTE_HOST_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("computeHostId", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField EXECUTABLE_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("executablePath", org.apache.thrift.protocol.TType.STRING, (short)5);
+  private static final org.apache.thrift.protocol.TField APP_DEPLOYMENT_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("appDeploymentDescription", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField MODULE_LOAD_CMD_FIELD_DESC = new org.apache.thrift.protocol.TField("moduleLoadCmd", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField LIB_PREPEND_PATHS_FIELD_DESC = new org.apache.thrift.protocol.TField("libPrependPaths", org.apache.thrift.protocol.TType.LIST, (short)8);
+  private static final org.apache.thrift.protocol.TField LIB_APPEND_PATHS_FIELD_DESC = new org.apache.thrift.protocol.TField("libAppendPaths", org.apache.thrift.protocol.TType.LIST, (short)9);
+  private static final org.apache.thrift.protocol.TField SET_ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("setEnvironment", org.apache.thrift.protocol.TType.LIST, (short)10);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new ApplicationDeploymentDescriptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new ApplicationDeploymentDescriptionTupleSchemeFactory());
+  }
+
+  private boolean isEmpty; // required
+  private String appDeploymentId; // required
+  private String appModuleId; // required
+  private String computeHostId; // required
+  private String executablePath; // required
+  private String appDeploymentDescription; // optional
+  private String moduleLoadCmd; // optional
+  private List<SetEnvPaths> libPrependPaths; // optional
+  private List<SetEnvPaths> libAppendPaths; // optional
+  private List<SetEnvPaths> setEnvironment; // 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 {
+    IS_EMPTY((short)1, "isEmpty"),
+    APP_DEPLOYMENT_ID((short)2, "appDeploymentId"),
+    APP_MODULE_ID((short)3, "appModuleId"),
+    COMPUTE_HOST_ID((short)4, "computeHostId"),
+    EXECUTABLE_PATH((short)5, "executablePath"),
+    APP_DEPLOYMENT_DESCRIPTION((short)6, "appDeploymentDescription"),
+    MODULE_LOAD_CMD((short)7, "moduleLoadCmd"),
+    LIB_PREPEND_PATHS((short)8, "libPrependPaths"),
+    LIB_APPEND_PATHS((short)9, "libAppendPaths"),
+    SET_ENVIRONMENT((short)10, "setEnvironment");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // IS_EMPTY
+          return IS_EMPTY;
+        case 2: // APP_DEPLOYMENT_ID
+          return APP_DEPLOYMENT_ID;
+        case 3: // APP_MODULE_ID
+          return APP_MODULE_ID;
+        case 4: // COMPUTE_HOST_ID
+          return COMPUTE_HOST_ID;
+        case 5: // EXECUTABLE_PATH
+          return EXECUTABLE_PATH;
+        case 6: // APP_DEPLOYMENT_DESCRIPTION
+          return APP_DEPLOYMENT_DESCRIPTION;
+        case 7: // MODULE_LOAD_CMD
+          return MODULE_LOAD_CMD;
+        case 8: // LIB_PREPEND_PATHS
+          return LIB_PREPEND_PATHS;
+        case 9: // LIB_APPEND_PATHS
+          return LIB_APPEND_PATHS;
+        case 10: // SET_ENVIRONMENT
+          return SET_ENVIRONMENT;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __ISEMPTY_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.APP_DEPLOYMENT_DESCRIPTION,_Fields.MODULE_LOAD_CMD,_Fields.LIB_PREPEND_PATHS,_Fields.LIB_APPEND_PATHS,_Fields.SET_ENVIRONMENT};
+  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);
+    tmpMap.put(_Fields.IS_EMPTY, new org.apache.thrift.meta_data.FieldMetaData("isEmpty", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.APP_DEPLOYMENT_ID, new org.apache.thrift.meta_data.FieldMetaData("appDeploymentId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APP_MODULE_ID, new org.apache.thrift.meta_data.FieldMetaData("appModuleId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.COMPUTE_HOST_ID, new org.apache.thrift.meta_data.FieldMetaData("computeHostId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.EXECUTABLE_PATH, new org.apache.thrift.meta_data.FieldMetaData("executablePath", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APP_DEPLOYMENT_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("appDeploymentDescription", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.MODULE_LOAD_CMD, new org.apache.thrift.meta_data.FieldMetaData("moduleLoadCmd", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.LIB_PREPEND_PATHS, new org.apache.thrift.meta_data.FieldMetaData("libPrependPaths", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SetEnvPaths.class))));
+    tmpMap.put(_Fields.LIB_APPEND_PATHS, new org.apache.thrift.meta_data.FieldMetaData("libAppendPaths", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SetEnvPaths.class))));
+    tmpMap.put(_Fields.SET_ENVIRONMENT, new org.apache.thrift.meta_data.FieldMetaData("setEnvironment", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SetEnvPaths.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ApplicationDeploymentDescription.class, metaDataMap);
+  }
+
+  public ApplicationDeploymentDescription() {
+    this.isEmpty = false;
+
+    this.appDeploymentId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public ApplicationDeploymentDescription(
+    boolean isEmpty,
+    String appDeploymentId,
+    String appModuleId,
+    String computeHostId,
+    String executablePath)
+  {
+    this();
+    this.isEmpty = isEmpty;
+    setIsEmptyIsSet(true);
+    this.appDeploymentId = appDeploymentId;
+    this.appModuleId = appModuleId;
+    this.computeHostId = computeHostId;
+    this.executablePath = executablePath;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public ApplicationDeploymentDescription(ApplicationDeploymentDescription other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.isEmpty = other.isEmpty;
+    if (other.isSetAppDeploymentId()) {
+      this.appDeploymentId = other.appDeploymentId;
+    }
+    if (other.isSetAppModuleId()) {
+      this.appModuleId = other.appModuleId;
+    }
+    if (other.isSetComputeHostId()) {
+      this.computeHostId = other.computeHostId;
+    }
+    if (other.isSetExecutablePath()) {
+      this.executablePath = other.executablePath;
+    }
+    if (other.isSetAppDeploymentDescription()) {
+      this.appDeploymentDescription = other.appDeploymentDescription;
+    }
+    if (other.isSetModuleLoadCmd()) {
+      this.moduleLoadCmd = other.moduleLoadCmd;
+    }
+    if (other.isSetLibPrependPaths()) {
+      List<SetEnvPaths> __this__libPrependPaths = new ArrayList<SetEnvPaths>(other.libPrependPaths.size());
+      for (SetEnvPaths other_element : other.libPrependPaths) {
+        __this__libPrependPaths.add(new SetEnvPaths(other_element));
+      }
+      this.libPrependPaths = __this__libPrependPaths;
+    }
+    if (other.isSetLibAppendPaths()) {
+      List<SetEnvPaths> __this__libAppendPaths = new ArrayList<SetEnvPaths>(other.libAppendPaths.size());
+      for (SetEnvPaths other_element : other.libAppendPaths) {
+        __this__libAppendPaths.add(new SetEnvPaths(other_element));
+      }
+      this.libAppendPaths = __this__libAppendPaths;
+    }
+    if (other.isSetSetEnvironment()) {
+      List<SetEnvPaths> __this__setEnvironment = new ArrayList<SetEnvPaths>(other.setEnvironment.size());
+      for (SetEnvPaths other_element : other.setEnvironment) {
+        __this__setEnvironment.add(new SetEnvPaths(other_element));
+      }
+      this.setEnvironment = __this__setEnvironment;
+    }
+  }
+
+  public ApplicationDeploymentDescription deepCopy() {
+    return new ApplicationDeploymentDescription(this);
+  }
+
+  @Override
+  public void clear() {
+    this.isEmpty = false;
+
+    this.appDeploymentId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.appModuleId = null;
+    this.computeHostId = null;
+    this.executablePath = null;
+    this.appDeploymentDescription = null;
+    this.moduleLoadCmd = null;
+    this.libPrependPaths = null;
+    this.libAppendPaths = null;
+    this.setEnvironment = null;
+  }
+
+  public boolean isIsEmpty() {
+    return this.isEmpty;
+  }
+
+  public void setIsEmpty(boolean isEmpty) {
+    this.isEmpty = isEmpty;
+    setIsEmptyIsSet(true);
+  }
+
+  public void unsetIsEmpty() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ISEMPTY_ISSET_ID);
+  }
+
+  /** Returns true if field isEmpty is set (has been assigned a value) and false otherwise */
+  public boolean isSetIsEmpty() {
+    return EncodingUtils.testBit(__isset_bitfield, __ISEMPTY_ISSET_ID);
+  }
+
+  public void setIsEmptyIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ISEMPTY_ISSET_ID, value);
+  }
+
+  public String getAppDeploymentId() {
+    return this.appDeploymentId;
+  }
+
+  public void setAppDeploymentId(String appDeploymentId) {
+    this.appDeploymentId = appDeploymentId;
+  }
+
+  public void unsetAppDeploymentId() {
+    this.appDeploymentId = null;
+  }
+
+  /** Returns true if field appDeploymentId is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppDeploymentId() {
+    return this.appDeploymentId != null;
+  }
+
+  public void setAppDeploymentIdIsSet(boolean value) {
+    if (!value) {
+      this.appDeploymentId = null;
+    }
+  }
+
+  public String getAppModuleId() {
+    return this.appModuleId;
+  }
+
+  public void setAppModuleId(String appModuleId) {
+    this.appModuleId = appModuleId;
+  }
+
+  public void unsetAppModuleId() {
+    this.appModuleId = null;
+  }
+
+  /** Returns true if field appModuleId is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppModuleId() {
+    return this.appModuleId != null;
+  }
+
+  public void setAppModuleIdIsSet(boolean value) {
+    if (!value) {
+      this.appModuleId = null;
+    }
+  }
+
+  public String getComputeHostId() {
+    return this.computeHostId;
+  }
+
+  public void setComputeHostId(String computeHostId) {
+    this.computeHostId = computeHostId;
+  }
+
+  public void unsetComputeHostId() {
+    this.computeHostId = null;
+  }
+
+  /** Returns true if field computeHostId is set (has been assigned a value) and false otherwise */
+  public boolean isSetComputeHostId() {
+    return this.computeHostId != null;
+  }
+
+  public void setComputeHostIdIsSet(boolean value) {
+    if (!value) {
+      this.computeHostId = null;
+    }
+  }
+
+  public String getExecutablePath() {
+    return this.executablePath;
+  }
+
+  public void setExecutablePath(String executablePath) {
+    this.executablePath = executablePath;
+  }
+
+  public void unsetExecutablePath() {
+    this.executablePath = null;
+  }
+
+  /** Returns true if field executablePath is set (has been assigned a value) and false otherwise */
+  public boolean isSetExecutablePath() {
+    return this.executablePath != null;
+  }
+
+  public void setExecutablePathIsSet(boolean value) {
+    if (!value) {
+      this.executablePath = null;
+    }
+  }
+
+  public String getAppDeploymentDescription() {
+    return this.appDeploymentDescription;
+  }
+
+  public void setAppDeploymentDescription(String appDeploymentDescription) {
+    this.appDeploymentDescription = appDeploymentDescription;
+  }
+
+  public void unsetAppDeploymentDescription() {
+    this.appDeploymentDescription = null;
+  }
+
+  /** Returns true if field appDeploymentDescription is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppDeploymentDescription() {
+    return this.appDeploymentDescription != null;
+  }
+
+  public void setAppDeploymentDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.appDeploymentDescription = null;
+    }
+  }
+
+  public String getModuleLoadCmd() {
+    return this.moduleLoadCmd;
+  }
+
+  public void setModuleLoadCmd(String moduleLoadCmd) {
+    this.moduleLoadCmd = moduleLoadCmd;
+  }
+
+  public void unsetModuleLoadCmd() {
+    this.moduleLoadCmd = null;
+  }
+
+  /** Returns true if field moduleLoadCmd is set (has been assigned a value) and false otherwise */
+  public boolean isSetModuleLoadCmd() {
+    return this.moduleLoadCmd != null;
+  }
+
+  public void setModuleLoadCmdIsSet(boolean value) {
+    if (!value) {
+      this.moduleLoadCmd = null;
+    }
+  }
+
+  public int getLibPrependPathsSize() {
+    return (this.libPrependPaths == null) ? 0 : this.libPrependPaths.size();
+  }
+
+  public java.util.Iterator<SetEnvPaths> getLibPrependPathsIterator() {
+    return (this.libPrependPaths == null) ? null : this.libPrependPaths.iterator();
+  }
+
+  public void addToLibPrependPaths(SetEnvPaths elem) {
+    if (this.libPrependPaths == null) {
+      this.libPrependPaths = new ArrayList<SetEnvPaths>();
+    }
+    this.libPrependPaths.add(elem);
+  }
+
+  public List<SetEnvPaths> getLibPrependPaths() {
+    return this.libPrependPaths;
+  }
+
+  public void setLibPrependPaths(List<SetEnvPaths> libPrependPaths) {
+    this.libPrependPaths = libPrependPaths;
+  }
+
+  public void unsetLibPrependPaths() {
+    this.libPrependPaths = null;
+  }
+
+  /** Returns true if field libPrependPaths is set (has been assigned a value) and false otherwise */
+  public boolean isSetLibPrependPaths() {
+    return this.libPrependPaths != null;
+  }
+
+  public void setLibPrependPathsIsSet(boolean value) {
+    if (!value) {
+      this.libPrependPaths = null;
+    }
+  }
+
+  public int getLibAppendPathsSize() {
+    return (this.libAppendPaths == null) ? 0 : this.libAppendPaths.size();
+  }
+
+  public java.util.Iterator<SetEnvPaths> getLibAppendPathsIterator() {
+    return (this.libAppendPaths == null) ? null : this.libAppendPaths.iterator();
+  }
+
+  public void addToLibAppendPaths(SetEnvPaths elem) {
+    if (this.libAppendPaths == null) {
+      this.libAppendPaths = new ArrayList<SetEnvPaths>();
+    }
+    this.libAppendPaths.add(elem);
+  }
+
+  public List<SetEnvPaths> getLibAppendPaths() {
+    return this.libAppendPaths;
+  }
+
+  public void setLibAppendPaths(List<SetEnvPaths> libAppendPaths) {
+    this.libAppendPaths = libAppendPaths;
+  }
+
+  public void unsetLibAppendPaths() {
+    this.libAppendPaths = null;
+  }
+
+  /** Returns true if field libAppendPaths is set (has been assigned a value) and false otherwise */
+  public boolean isSetLibAppendPaths() {
+    return this.libAppendPaths != null;
+  }
+
+  public void setLibAppendPathsIsSet(boolean value) {
+    if (!value) {
+      this.libAppendPaths = null;
+    }
+  }
+
+  public int getSetEnvironmentSize() {
+    return (this.setEnvironment == null) ? 0 : this.setEnvironment.size();
+  }
+
+  public java.util.Iterator<SetEnvPaths> getSetEnvironmentIterator() {
+    return (this.setEnvironment == null) ? null : this.setEnvironment.iterator();
+  }
+
+  public void addToSetEnvironment(SetEnvPaths elem) {
+    if (this.setEnvironment == null) {
+      this.setEnvironment = new ArrayList<SetEnvPaths>();
+    }
+    this.setEnvironment.add(elem);
+  }
+
+  public List<SetEnvPaths> getSetEnvironment() {
+    return this.setEnvironment;
+  }
+
+  public void setSetEnvironment(List<SetEnvPaths> setEnvironment) {
+    this.setEnvironment = setEnvironment;
+  }
+
+  public void unsetSetEnvironment() {
+    this.setEnvironment = null;
+  }
+
+  /** Returns true if field setEnvironment is set (has been assigned a value) and false otherwise */
+  public boolean isSetSetEnvironment() {
+    return this.setEnvironment != null;
+  }
+
+  public void setSetEnvironmentIsSet(boolean value) {
+    if (!value) {
+      this.setEnvironment = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case IS_EMPTY:
+      if (value == null) {
+        unsetIsEmpty();
+      } else {
+        setIsEmpty((Boolean)value);
+      }
+      break;
+
+    case APP_DEPLOYMENT_ID:
+      if (value == null) {
+        unsetAppDeploymentId();
+      } else {
+        setAppDeploymentId((String)value);
+      }
+      break;
+
+    case APP_MODULE_ID:
+      if (value == null) {
+        unsetAppModuleId();
+      } else {
+        setAppModuleId((String)value);
+      }
+      break;
+
+    case COMPUTE_HOST_ID:
+      if (value == null) {
+        unsetComputeHostId();
+      } else {
+        setComputeHostId((String)value);
+      }
+      break;
+
+    case EXECUTABLE_PATH:
+      if (value == null) {
+        unsetExecutablePath();
+      } else {
+        setExecutablePath((String)value);
+      }
+      break;
+
+    case APP_DEPLOYMENT_DESCRIPTION:
+      if (value == null) {
+        unsetAppDeploymentDescription();
+      } else {
+        setAppDeploymentDescription((String)value);
+      }
+      break;
+
+    case MODULE_LOAD_CMD:
+      if (value == null) {
+        unsetModuleLoadCmd();
+      } else {
+        setModuleLoadCmd((String)value);
+      }
+      break;
+
+    case LIB_PREPEND_PATHS:
+      if (value == null) {
+        unsetLibPrependPaths();
+      } else {
+        setLibPrependPaths((List<SetEnvPaths>)value);
+      }
+      break;
+
+    case LIB_APPEND_PATHS:
+      if (value == null) {
+        unsetLibAppendPaths();
+      } else {
+        setLibAppendPaths((List<SetEnvPaths>)value);
+      }
+      break;
+
+    case SET_ENVIRONMENT:
+      if (value == null) {
+        unsetSetEnvironment();
+      } else {
+        setSetEnvironment((List<SetEnvPaths>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case IS_EMPTY:
+      return Boolean.valueOf(isIsEmpty());
+
+    case APP_DEPLOYMENT_ID:
+      return getAppDeploymentId();
+
+    case APP_MODULE_ID:
+      return getAppModuleId();
+
+    case COMPUTE_HOST_ID:
+      return getComputeHostId();
+
+    case EXECUTABLE_PATH:
+      return getExecutablePath();
+
+    case APP_DEPLOYMENT_DESCRIPTION:
+      return getAppDeploymentDescription();
+
+    case MODULE_LOAD_CMD:
+      return getModuleLoadCmd();
+
+    case LIB_PREPEND_PATHS:
+      return getLibPrependPaths();
+
+    case LIB_APPEND_PATHS:
+      return getLibAppendPaths();
+
+    case SET_ENVIRONMENT:
+      return getSetEnvironment();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case IS_EMPTY:
+      return isSetIsEmpty();
+    case APP_DEPLOYMENT_ID:
+      return isSetAppDeploymentId();
+    case APP_MODULE_ID:
+      return isSetAppModuleId();
+    case COMPUTE_HOST_ID:
+      return isSetComputeHostId();
+    case EXECUTABLE_PATH:
+      return isSetExecutablePath();
+    case APP_DEPLOYMENT_DESCRIPTION:
+      return isSetAppDeploymentDescription();
+    case MODULE_LOAD_CMD:
+      return isSetModuleLoadCmd();
+    case LIB_PREPEND_PATHS:
+      return isSetLibPrependPaths();
+    case LIB_APPEND_PATHS:
+      return isSetLibAppendPaths();
+    case SET_ENVIRONMENT:
+      return isSetSetEnvironment();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof ApplicationDeploymentDescription)
+      return this.equals((ApplicationDeploymentDescription)that);
+    return false;
+  }
+
+  public boolean equals(ApplicationDeploymentDescription that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_isEmpty = true;
+    boolean that_present_isEmpty = true;
+    if (this_present_isEmpty || that_present_isEmpty) {
+      if (!(this_present_isEmpty && that_present_isEmpty))
+        return false;
+      if (this.isEmpty != that.isEmpty)
+        return false;
+    }
+
+    boolean this_present_appDeploymentId = true && this.isSetAppDeploymentId();
+    boolean that_present_appDeploymentId = true && that.isSetAppDeploymentId();
+    if (this_present_appDeploymentId || that_present_appDeploymentId) {
+      if (!(this_present_appDeploymentId && that_present_appDeploymentId))
+        return false;
+      if (!this.appDeploymentId.equals(that.appDeploymentId))
+        return false;
+    }
+
+    boolean this_present_appModuleId = true && this.isSetAppModuleId();
+    boolean that_present_appModuleId = true && that.isSetAppModuleId();
+    if (this_present_appModuleId || that_present_appModuleId) {
+      if (!(this_present_appModuleId && that_present_appModuleId))
+        return false;
+      if (!this.appModuleId.equals(that.appModuleId))
+        return false;
+    }
+
+    boolean this_present_computeHostId = true && this.isSetComputeHostId();
+    boolean that_present_computeHostId = true && that.isSetComputeHostId();
+    if (this_present_computeHostId || that_present_computeHostId) {
+      if (!(this_present_computeHostId && that_present_computeHostId))
+        return false;
+      if (!this.computeHostId.equals(that.computeHostId))
+        return false;
+    }
+
+    boolean this_present_executablePath = true && this.isSetExecutablePath();
+    boolean that_present_executablePath = true && that.isSetExecutablePath();
+    if (this_present_executablePath || that_present_executablePath) {
+      if (!(this_present_executablePath && that_present_executablePath))
+        return false;
+      if (!this.executablePath.equals(that.executablePath))
+        return false;
+    }
+
+    boolean this_present_appDeploymentDescription = true && this.isSetAppDeploymentDescription();
+    boolean that_present_appDeploymentDescription = true && that.isSetAppDeploymentDescription();
+    if (this_present_appDeploymentDescription || that_present_appDeploymentDescription) {
+      if (!(this_present_appDeploymentDescription && that_present_appDeploymentDescription))
+        return false;
+      if (!this.appDeploymentDescription.equals(that.appDeploymentDescription))
+        return false;
+    }
+
+    boolean this_present_moduleLoadCmd = true && this.isSetModuleLoadCmd();
+    boolean that_present_moduleLoadCmd = true && that.isSetModuleLoadCmd();
+    if (this_present_moduleLoadCmd || that_present_moduleLoadCmd) {
+      if (!(this_present_moduleLoadCmd && that_present_moduleLoadCmd))
+        return false;
+      if (!this.moduleLoadCmd.equals(that.moduleLoadCmd))
+        return false;
+    }
+
+    boolean this_present_libPrependPaths = true && this.isSetLibPrependPaths();
+    boolean that_present_libPrependPaths = true && that.isSetLibPrependPaths();
+    if (this_present_libPrependPaths || that_present_libPrependPaths) {
+      if (!(this_present_libPrependPaths && that_present_libPrependPaths))
+        return false;
+      if (!this.libPrependPaths.equals(that.libPrependPaths))
+        return false;
+    }
+
+    boolean this_present_libAppendPaths = true && this.isSetLibAppendPaths();
+    boolean that_present_libAppendPaths = true && that.isSetLibAppendPaths();
+    if (this_present_libAppendPaths || that_present_libAppendPaths) {
+      if (!(this_present_libAppendPaths && that_present_libAppendPaths))
+        return false;
+      if (!this.libAppendPaths.equals(that.libAppendPaths))
+        return false;
+    }
+
+    boolean this_present_setEnvironment = true && this.isSetSetEnvironment();
+    boolean that_present_setEnvironment = true && that.isSetSetEnvironment();
+    if (this_present_setEnvironment || that_present_setEnvironment) {
+      if (!(this_present_setEnvironment && that_present_setEnvironment))
+        return false;
+      if (!this.setEnvironment.equals(that.setEnvironment))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  @Override
+  public int compareTo(ApplicationDeploymentDescription other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetIsEmpty()).compareTo(other.isSetIsEmpty());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetIsEmpty()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isEmpty, other.isEmpty);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppDeploymentId()).compareTo(other.isSetAppDeploymentId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppDeploymentId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appDeploymentId, other.appDeploymentId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppModuleId()).compareTo(other.isSetAppModuleId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppModuleId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appModuleId, other.appModuleId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetComputeHostId()).compareTo(other.isSetComputeHostId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetComputeHostId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.computeHostId, other.computeHostId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetExecutablePath()).compareTo(other.isSetExecutablePath());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetExecutablePath()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.executablePath, other.executablePath);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppDeploymentDescription()).compareTo(other.isSetAppDeploymentDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppDeploymentDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appDeploymentDescription, other.appDeploymentDescription);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetModuleLoadCmd()).compareTo(other.isSetModuleLoadCmd());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetModuleLoadCmd()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.moduleLoadCmd, other.moduleLoadCmd);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetLibPrependPaths()).compareTo(other.isSetLibPrependPaths());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLibPrependPaths()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.libPrependPaths, other.libPrependPaths);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetLibAppendPaths()).compareTo(other.isSetLibAppendPaths());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLibAppendPaths()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.libAppendPaths, other.libAppendPaths);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSetEnvironment()).compareTo(other.isSetSetEnvironment());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSetEnvironment()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.setEnvironment, other.setEnvironment);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("ApplicationDeploymentDescription(");
+    boolean first = true;
+
+    sb.append("isEmpty:");
+    sb.append(this.isEmpty);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("appDeploymentId:");
+    if (this.appDeploymentId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.appDeploymentId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("appModuleId:");
+    if (this.appModuleId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.appModuleId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("computeHostId:");
+    if (this.computeHostId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.computeHostId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("executablePath:");
+    if (this.executablePath == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.executablePath);
+    }
+    first = false;
+    if (isSetAppDeploymentDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("appDeploymentDescription:");
+      if (this.appDeploymentDescription == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.appDeploymentDescription);
+      }
+      first = false;
+    }
+    if (isSetModuleLoadCmd()) {
+      if (!first) sb.append(", ");
+      sb.append("moduleLoadCmd:");
+      if (this.moduleLoadCmd == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.moduleLoadCmd);
+      }
+      first = false;
+    }
+    if (isSetLibPrependPaths()) {
+      if (!first) sb.append(", ");
+      sb.append("libPrependPaths:");
+      if (this.libPrependPaths == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.libPrependPaths);
+      }
+      first = false;
+    }
+    if (isSetLibAppendPaths()) {
+      if (!first) sb.append(", ");
+      sb.append("libAppendPaths:");
+      if (this.libAppendPaths == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.libAppendPaths);
+      }
+      first = false;
+    }
+    if (isSetSetEnvironment()) {
+      if (!first) sb.append(", ");
+      sb.append("setEnvironment:");
+      if (this.setEnvironment == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.setEnvironment);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetIsEmpty()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'isEmpty' is unset! Struct:" + toString());
+    }
+
+    if (!isSetAppDeploymentId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'appDeploymentId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetAppModuleId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'appModuleId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetComputeHostId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'computeHostId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetExecutablePath()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'executablePath' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  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);
+    }
+  }
+
+  private static class ApplicationDeploymentDescriptionStandardSchemeFactory implements SchemeFactory {
+    public ApplicationDeploymentDescriptionStandardScheme getScheme() {
+      return new ApplicationDeploymentDescriptionStandardScheme();
+    }
+  }
+
+  private static class ApplicationDeploymentDescriptionStandardScheme extends StandardScheme<ApplicationDeploymentDescription> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, ApplicationDeploymentDescription struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // IS_EMPTY
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.isEmpty = iprot.readBool();
+              struct.setIsEmptyIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // APP_DEPLOYMENT_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appDeploymentId = iprot.readString();
+              struct.setAppDeploymentIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // APP_MODULE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appModuleId = iprot.readString();
+              struct.setAppModuleIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // COMPUTE_HOST_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.computeHostId = iprot.readString();
+              struct.setComputeHostIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // EXECUTABLE_PATH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.executablePath = iprot.readString();
+              struct.setExecutablePathIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // APP_DEPLOYMENT_DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appDeploymentDescription = iprot.readString();
+              struct.setAppDeploymentDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // MODULE_LOAD_CMD
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.moduleLoadCmd = iprot.readString();
+              struct.setModuleLoadCmdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 8: // LIB_PREPEND_PATHS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.libPrependPaths = new ArrayList<SetEnvPaths>(_list0.size);
+                for (int _i1 = 0; _i1 < _list0.size; ++_i1)
+                {
+                  SetEnvPaths _elem2;
+                  _elem2 = new SetEnvPaths();
+                  _elem2.read(iprot);
+                  struct.libPrependPaths.add(_elem2);
+                }
+                iprot.readListEnd();
+              }
+              struct.setLibPrependPathsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 9: // LIB_APPEND_PATHS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
+                struct.libAppendPaths = new ArrayList<SetEnvPaths>(_list3.size);
+                for (int _i4 = 0; _i4 < _list3.size; ++_i4)
+                {
+                  SetEnvPaths _elem5;
+                  _elem5 = new SetEnvPaths();
+                  _elem5.read(iprot);
+                  struct.libAppendPaths.add(_elem5);
+                }
+                iprot.readListEnd();
+              }
+              struct.setLibAppendPathsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 10: // SET_ENVIRONMENT
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
+                struct.setEnvironment = new ArrayList<SetEnvPaths>(_list6.size);
+                for (int _i7 = 0; _i7 < _list6.size; ++_i7)
+                {
+                  SetEnvPaths _elem8;
+                  _elem8 = new SetEnvPaths();
+                  _elem8.read(iprot);
+                  struct.setEnvironment.add(_elem8);
+                }
+                iprot.readListEnd();
+              }
+              struct.setSetEnvironmentIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, ApplicationDeploymentDescription struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      oprot.writeFieldBegin(IS_EMPTY_FIELD_DESC);
+      oprot.writeBool(struct.isEmpty);
+      oprot.writeFieldEnd();
+      if (struct.appDeploymentId != null) {
+        oprot.writeFieldBegin(APP_DEPLOYMENT_ID_FIELD_DESC);
+        oprot.writeString(struct.appDeploymentId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.appModuleId != null) {
+        oprot.writeFieldBegin(APP_MODULE_ID_FIELD_DESC);
+        oprot.writeString(struct.appModuleId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.computeHostId != null) {
+        oprot.writeFieldBegin(COMPUTE_HOST_ID_FIELD_DESC);
+        oprot.writeString(struct.computeHostId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.executablePath != null) {
+        oprot.writeFieldBegin(EXECUTABLE_PATH_FIELD_DESC);
+        oprot.writeString(struct.executablePath);
+        oprot.writeFieldEnd();
+      }
+      if (struct.appDeploymentDescription != null) {
+        if (struct.isSetAppDeploymentDescription()) {
+          oprot.writeFieldBegin(APP_DEPLOYMENT_DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.appDeploymentDescription);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.moduleLoadCmd != null) {
+        if (struct.isSetModuleLoadCmd()) {
+          oprot.writeFieldBegin(MODULE_LOAD_CMD_FIELD_DESC);
+          oprot.writeString(struct.moduleLoadCmd);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.libPrependPaths != null) {
+        if (struct.isSetLibPrependPaths()) {
+          oprot.writeFieldBegin(LIB_PREPEND_PATHS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.libPrependPaths.size()));
+            for (SetEnvPaths _iter9 : struct.libPrependPaths)
+            {
+              _iter9.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.libAppendPaths != null) {
+        if (struct.isSetLibAppendPaths()) {
+          oprot.writeFieldBegin(LIB_APPEND_PATHS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.libAppendPaths.size()));
+            for (SetEnvPaths _iter10 : struct.libAppendPaths)
+            {
+              _iter10.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.setEnvironment != null) {
+        if (struct.isSetSetEnvironment()) {
+          oprot.writeFieldBegin(SET_ENVIRONMENT_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.setEnvironment.size()));
+            for (SetEnvPaths _iter11 : struct.setEnvironment)
+            {
+              _iter11.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class ApplicationDeploymentDescriptionTupleSchemeFactory implements SchemeFactory {
+    public ApplicationDeploymentDescriptionTupleScheme getScheme() {
+      return new ApplicationDeploymentDescriptionTupleScheme();
+    }
+  }
+
+  private static class ApplicationDeploymentDescriptionTupleScheme extends TupleScheme<ApplicationDeploymentDescription> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, ApplicationDeploymentDescription struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeBool(struct.isEmpty);
+      oprot.writeString(struct.appDeploymentId);
+      oprot.writeString(struct.appModuleId);
+      oprot.writeString(struct.computeHostId);
+      oprot.writeString(struct.executablePath);
+      BitSet optionals = new BitSet();
+      if (struct.isSetAppDeploymentDescription()) {
+        optionals.set(0);
+      }
+      if (struct.isSetModuleLoadCmd()) {
+        optionals.set(1);
+      }
+      if (struct.isSetLibPrependPaths()) {
+        optionals.set(2);
+      }
+      if (struct.isSetLibAppendPaths()) {
+        optionals.set(3);
+      }
+      if (struct.isSetSetEnvironment()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetAppDeploymentDescription()) {
+        oprot.writeString(struct.appDeploymentDescription);
+      }
+      if (struct.isSetModuleLoadCmd()) {
+        oprot.writeString(struct.moduleLoadCmd);
+      }
+      if (struct.isSetLibPrependPaths()) {
+        {
+          oprot.writeI32(struct.libPrependPaths.size());
+          for (SetEnvPaths _iter12 : struct.libPrependPaths)
+          {
+            _iter12.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetLibAppendPaths()) {
+        {
+          oprot.writeI32(struct.libAppendPaths.size());
+          for (SetEnvPaths _iter13 : struct.libAppendPaths)
+          {
+            _iter13.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetSetEnvironment()) {
+        {
+          oprot.writeI32(struct.setEnvironment.size());
+          for (SetEnvPaths _iter14 : struct.setEnvironment)
+          {
+            _iter14.write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, ApplicationDeploymentDescription struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.isEmpty = iprot.readBool();
+      struct.setIsEmptyIsSet(true);
+      struct.appDeploymentId = iprot.readString();
+      struct.setAppDeploymentIdIsSet(true);
+      struct.appModuleId = iprot.readString();
+      struct.setAppModuleIdIsSet(true);
+      struct.computeHostId = iprot.readString();
+      struct.setComputeHostIdIsSet(true);
+      struct.executablePath = iprot.readString();
+      struct.setExecutablePathIsSet(true);
+      BitSet incoming = iprot.readBitSet(5);
+      if (incoming.get(0)) {
+        struct.appDeploymentDescription = iprot.readString();
+        struct.setAppDeploymentDescriptionIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.moduleLoadCmd = iprot.readString();
+        struct.setModuleLoadCmdIsSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TList _list15 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.libPrependPaths = new ArrayList<SetEnvPaths>(_list15.size);
+          for (int _i16 = 0; _i16 < _list15.size; ++_i16)
+          {
+            SetEnvPaths _elem17;
+            _elem17 = new SetEnvPaths();
+            _elem17.read(iprot);
+            struct.libPrependPaths.add(_elem17);
+          }
+        }
+        struct.setLibPrependPathsIsSet(true);
+      }
+      if (incoming.get(3)) {
+        {
+          org.apache.thrift.protocol.TList _list18 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.libAppendPaths = new ArrayList<SetEnvPaths>(_list18.size);
+          for (int _i19 = 0; _i19 < _list18.size; ++_i19)
+          {
+            SetEnvPaths _elem20;
+            _elem20 = new SetEnvPaths();
+            _elem20.read(iprot);
+            struct.libAppendPaths.add(_elem20);
+          }
+        }
+        struct.setLibAppendPathsIsSet(true);
+      }
+      if (incoming.get(4)) {
+        {
+          org.apache.thrift.protocol.TList _list21 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.setEnvironment = new ArrayList<SetEnvPaths>(_list21.size);
+          for (int _i22 = 0; _i22 < _list21.size; ++_i22)
+          {
+            SetEnvPaths _elem23;
+            _elem23 = new SetEnvPaths();
+            _elem23.read(iprot);
+            struct.setEnvironment.add(_elem23);
+          }
+        }
+        struct.setSetEnvironmentIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/227c78db/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationModule.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationModule.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationModule.java
new file mode 100644
index 0000000..dfb067d
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/application/deployment/ApplicationModule.java
@@ -0,0 +1,811 @@
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+/**
+ * Autogenerated by Thrift Compiler (0.9.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.application.deployment;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Application Module Information. A module has to be registered before registering a deployment.
+ * 
+ * appModuleId: Airavata Internal Unique Job ID. This is set by the registry.
+ * 
+ * appModuleName:
+ *   Name of the application module.
+ * 
+ * appModuleVersion:
+ *   Version of the application.
+ * 
+ * appModuleDescription:
+ *    Descriprion of the Module
+ * 
+ */
+@SuppressWarnings("all") public class ApplicationModule implements org.apache.thrift.TBase<ApplicationModule, ApplicationModule._Fields>, java.io.Serializable, Cloneable, Comparable<ApplicationModule> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ApplicationModule");
+
+  private static final org.apache.thrift.protocol.TField IS_EMPTY_FIELD_DESC = new org.apache.thrift.protocol.TField("isEmpty", org.apache.thrift.protocol.TType.BOOL, (short)1);
+  private static final org.apache.thrift.protocol.TField APP_MODULE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("appModuleId", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField APP_MODULE_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("appModuleName", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField APP_MODULE_VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("appModuleVersion", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField APP_MODULE_DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("appModuleDescription", org.apache.thrift.protocol.TType.STRING, (short)5);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new ApplicationModuleStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new ApplicationModuleTupleSchemeFactory());
+  }
+
+  private boolean isEmpty; // required
+  private String appModuleId; // required
+  private String appModuleName; // required
+  private String appModuleVersion; // optional
+  private String appModuleDescription; // 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 {
+    IS_EMPTY((short)1, "isEmpty"),
+    APP_MODULE_ID((short)2, "appModuleId"),
+    APP_MODULE_NAME((short)3, "appModuleName"),
+    APP_MODULE_VERSION((short)4, "appModuleVersion"),
+    APP_MODULE_DESCRIPTION((short)5, "appModuleDescription");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // IS_EMPTY
+          return IS_EMPTY;
+        case 2: // APP_MODULE_ID
+          return APP_MODULE_ID;
+        case 3: // APP_MODULE_NAME
+          return APP_MODULE_NAME;
+        case 4: // APP_MODULE_VERSION
+          return APP_MODULE_VERSION;
+        case 5: // APP_MODULE_DESCRIPTION
+          return APP_MODULE_DESCRIPTION;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __ISEMPTY_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.APP_MODULE_VERSION,_Fields.APP_MODULE_DESCRIPTION};
+  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);
+    tmpMap.put(_Fields.IS_EMPTY, new org.apache.thrift.meta_data.FieldMetaData("isEmpty", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.APP_MODULE_ID, new org.apache.thrift.meta_data.FieldMetaData("appModuleId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APP_MODULE_NAME, new org.apache.thrift.meta_data.FieldMetaData("appModuleName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APP_MODULE_VERSION, new org.apache.thrift.meta_data.FieldMetaData("appModuleVersion", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.APP_MODULE_DESCRIPTION, new org.apache.thrift.meta_data.FieldMetaData("appModuleDescription", 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(ApplicationModule.class, metaDataMap);
+  }
+
+  public ApplicationModule() {
+    this.isEmpty = false;
+
+    this.appModuleId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public ApplicationModule(
+    boolean isEmpty,
+    String appModuleId,
+    String appModuleName)
+  {
+    this();
+    this.isEmpty = isEmpty;
+    setIsEmptyIsSet(true);
+    this.appModuleId = appModuleId;
+    this.appModuleName = appModuleName;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public ApplicationModule(ApplicationModule other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.isEmpty = other.isEmpty;
+    if (other.isSetAppModuleId()) {
+      this.appModuleId = other.appModuleId;
+    }
+    if (other.isSetAppModuleName()) {
+      this.appModuleName = other.appModuleName;
+    }
+    if (other.isSetAppModuleVersion()) {
+      this.appModuleVersion = other.appModuleVersion;
+    }
+    if (other.isSetAppModuleDescription()) {
+      this.appModuleDescription = other.appModuleDescription;
+    }
+  }
+
+  public ApplicationModule deepCopy() {
+    return new ApplicationModule(this);
+  }
+
+  @Override
+  public void clear() {
+    this.isEmpty = false;
+
+    this.appModuleId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.appModuleName = null;
+    this.appModuleVersion = null;
+    this.appModuleDescription = null;
+  }
+
+  public boolean isIsEmpty() {
+    return this.isEmpty;
+  }
+
+  public void setIsEmpty(boolean isEmpty) {
+    this.isEmpty = isEmpty;
+    setIsEmptyIsSet(true);
+  }
+
+  public void unsetIsEmpty() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ISEMPTY_ISSET_ID);
+  }
+
+  /** Returns true if field isEmpty is set (has been assigned a value) and false otherwise */
+  public boolean isSetIsEmpty() {
+    return EncodingUtils.testBit(__isset_bitfield, __ISEMPTY_ISSET_ID);
+  }
+
+  public void setIsEmptyIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ISEMPTY_ISSET_ID, value);
+  }
+
+  public String getAppModuleId() {
+    return this.appModuleId;
+  }
+
+  public void setAppModuleId(String appModuleId) {
+    this.appModuleId = appModuleId;
+  }
+
+  public void unsetAppModuleId() {
+    this.appModuleId = null;
+  }
+
+  /** Returns true if field appModuleId is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppModuleId() {
+    return this.appModuleId != null;
+  }
+
+  public void setAppModuleIdIsSet(boolean value) {
+    if (!value) {
+      this.appModuleId = null;
+    }
+  }
+
+  public String getAppModuleName() {
+    return this.appModuleName;
+  }
+
+  public void setAppModuleName(String appModuleName) {
+    this.appModuleName = appModuleName;
+  }
+
+  public void unsetAppModuleName() {
+    this.appModuleName = null;
+  }
+
+  /** Returns true if field appModuleName is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppModuleName() {
+    return this.appModuleName != null;
+  }
+
+  public void setAppModuleNameIsSet(boolean value) {
+    if (!value) {
+      this.appModuleName = null;
+    }
+  }
+
+  public String getAppModuleVersion() {
+    return this.appModuleVersion;
+  }
+
+  public void setAppModuleVersion(String appModuleVersion) {
+    this.appModuleVersion = appModuleVersion;
+  }
+
+  public void unsetAppModuleVersion() {
+    this.appModuleVersion = null;
+  }
+
+  /** Returns true if field appModuleVersion is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppModuleVersion() {
+    return this.appModuleVersion != null;
+  }
+
+  public void setAppModuleVersionIsSet(boolean value) {
+    if (!value) {
+      this.appModuleVersion = null;
+    }
+  }
+
+  public String getAppModuleDescription() {
+    return this.appModuleDescription;
+  }
+
+  public void setAppModuleDescription(String appModuleDescription) {
+    this.appModuleDescription = appModuleDescription;
+  }
+
+  public void unsetAppModuleDescription() {
+    this.appModuleDescription = null;
+  }
+
+  /** Returns true if field appModuleDescription is set (has been assigned a value) and false otherwise */
+  public boolean isSetAppModuleDescription() {
+    return this.appModuleDescription != null;
+  }
+
+  public void setAppModuleDescriptionIsSet(boolean value) {
+    if (!value) {
+      this.appModuleDescription = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case IS_EMPTY:
+      if (value == null) {
+        unsetIsEmpty();
+      } else {
+        setIsEmpty((Boolean)value);
+      }
+      break;
+
+    case APP_MODULE_ID:
+      if (value == null) {
+        unsetAppModuleId();
+      } else {
+        setAppModuleId((String)value);
+      }
+      break;
+
+    case APP_MODULE_NAME:
+      if (value == null) {
+        unsetAppModuleName();
+      } else {
+        setAppModuleName((String)value);
+      }
+      break;
+
+    case APP_MODULE_VERSION:
+      if (value == null) {
+        unsetAppModuleVersion();
+      } else {
+        setAppModuleVersion((String)value);
+      }
+      break;
+
+    case APP_MODULE_DESCRIPTION:
+      if (value == null) {
+        unsetAppModuleDescription();
+      } else {
+        setAppModuleDescription((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case IS_EMPTY:
+      return Boolean.valueOf(isIsEmpty());
+
+    case APP_MODULE_ID:
+      return getAppModuleId();
+
+    case APP_MODULE_NAME:
+      return getAppModuleName();
+
+    case APP_MODULE_VERSION:
+      return getAppModuleVersion();
+
+    case APP_MODULE_DESCRIPTION:
+      return getAppModuleDescription();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case IS_EMPTY:
+      return isSetIsEmpty();
+    case APP_MODULE_ID:
+      return isSetAppModuleId();
+    case APP_MODULE_NAME:
+      return isSetAppModuleName();
+    case APP_MODULE_VERSION:
+      return isSetAppModuleVersion();
+    case APP_MODULE_DESCRIPTION:
+      return isSetAppModuleDescription();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof ApplicationModule)
+      return this.equals((ApplicationModule)that);
+    return false;
+  }
+
+  public boolean equals(ApplicationModule that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_isEmpty = true;
+    boolean that_present_isEmpty = true;
+    if (this_present_isEmpty || that_present_isEmpty) {
+      if (!(this_present_isEmpty && that_present_isEmpty))
+        return false;
+      if (this.isEmpty != that.isEmpty)
+        return false;
+    }
+
+    boolean this_present_appModuleId = true && this.isSetAppModuleId();
+    boolean that_present_appModuleId = true && that.isSetAppModuleId();
+    if (this_present_appModuleId || that_present_appModuleId) {
+      if (!(this_present_appModuleId && that_present_appModuleId))
+        return false;
+      if (!this.appModuleId.equals(that.appModuleId))
+        return false;
+    }
+
+    boolean this_present_appModuleName = true && this.isSetAppModuleName();
+    boolean that_present_appModuleName = true && that.isSetAppModuleName();
+    if (this_present_appModuleName || that_present_appModuleName) {
+      if (!(this_present_appModuleName && that_present_appModuleName))
+        return false;
+      if (!this.appModuleName.equals(that.appModuleName))
+        return false;
+    }
+
+    boolean this_present_appModuleVersion = true && this.isSetAppModuleVersion();
+    boolean that_present_appModuleVersion = true && that.isSetAppModuleVersion();
+    if (this_present_appModuleVersion || that_present_appModuleVersion) {
+      if (!(this_present_appModuleVersion && that_present_appModuleVersion))
+        return false;
+      if (!this.appModuleVersion.equals(that.appModuleVersion))
+        return false;
+    }
+
+    boolean this_present_appModuleDescription = true && this.isSetAppModuleDescription();
+    boolean that_present_appModuleDescription = true && that.isSetAppModuleDescription();
+    if (this_present_appModuleDescription || that_present_appModuleDescription) {
+      if (!(this_present_appModuleDescription && that_present_appModuleDescription))
+        return false;
+      if (!this.appModuleDescription.equals(that.appModuleDescription))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  @Override
+  public int compareTo(ApplicationModule other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetIsEmpty()).compareTo(other.isSetIsEmpty());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetIsEmpty()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isEmpty, other.isEmpty);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppModuleId()).compareTo(other.isSetAppModuleId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppModuleId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appModuleId, other.appModuleId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppModuleName()).compareTo(other.isSetAppModuleName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppModuleName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appModuleName, other.appModuleName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppModuleVersion()).compareTo(other.isSetAppModuleVersion());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppModuleVersion()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appModuleVersion, other.appModuleVersion);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAppModuleDescription()).compareTo(other.isSetAppModuleDescription());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAppModuleDescription()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.appModuleDescription, other.appModuleDescription);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("ApplicationModule(");
+    boolean first = true;
+
+    sb.append("isEmpty:");
+    sb.append(this.isEmpty);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("appModuleId:");
+    if (this.appModuleId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.appModuleId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("appModuleName:");
+    if (this.appModuleName == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.appModuleName);
+    }
+    first = false;
+    if (isSetAppModuleVersion()) {
+      if (!first) sb.append(", ");
+      sb.append("appModuleVersion:");
+      if (this.appModuleVersion == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.appModuleVersion);
+      }
+      first = false;
+    }
+    if (isSetAppModuleDescription()) {
+      if (!first) sb.append(", ");
+      sb.append("appModuleDescription:");
+      if (this.appModuleDescription == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.appModuleDescription);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetIsEmpty()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'isEmpty' is unset! Struct:" + toString());
+    }
+
+    if (!isSetAppModuleId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'appModuleId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetAppModuleName()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'appModuleName' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  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);
+    }
+  }
+
+  private static class ApplicationModuleStandardSchemeFactory implements SchemeFactory {
+    public ApplicationModuleStandardScheme getScheme() {
+      return new ApplicationModuleStandardScheme();
+    }
+  }
+
+  private static class ApplicationModuleStandardScheme extends StandardScheme<ApplicationModule> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, ApplicationModule struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // IS_EMPTY
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.isEmpty = iprot.readBool();
+              struct.setIsEmptyIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // APP_MODULE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appModuleId = iprot.readString();
+              struct.setAppModuleIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // APP_MODULE_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appModuleName = iprot.readString();
+              struct.setAppModuleNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // APP_MODULE_VERSION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appModuleVersion = iprot.readString();
+              struct.setAppModuleVersionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // APP_MODULE_DESCRIPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.appModuleDescription = iprot.readString();
+              struct.setAppModuleDescriptionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, ApplicationModule struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      oprot.writeFieldBegin(IS_EMPTY_FIELD_DESC);
+      oprot.writeBool(struct.isEmpty);
+      oprot.writeFieldEnd();
+      if (struct.appModuleId != null) {
+        oprot.writeFieldBegin(APP_MODULE_ID_FIELD_DESC);
+        oprot.writeString(struct.appModuleId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.appModuleName != null) {
+        oprot.writeFieldBegin(APP_MODULE_NAME_FIELD_DESC);
+        oprot.writeString(struct.appModuleName);
+        oprot.writeFieldEnd();
+      }
+      if (struct.appModuleVersion != null) {
+        if (struct.isSetAppModuleVersion()) {
+          oprot.writeFieldBegin(APP_MODULE_VERSION_FIELD_DESC);
+          oprot.writeString(struct.appModuleVersion);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.appModuleDescription != null) {
+        if (struct.isSetAppModuleDescription()) {
+          oprot.writeFieldBegin(APP_MODULE_DESCRIPTION_FIELD_DESC);
+          oprot.writeString(struct.appModuleDescription);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class ApplicationModuleTupleSchemeFactory implements SchemeFactory {
+    public ApplicationModuleTupleScheme getScheme() {
+      return new ApplicationModuleTupleScheme();
+    }
+  }
+
+  private static class ApplicationModuleTupleScheme extends TupleScheme<ApplicationModule> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, ApplicationModule struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeBool(struct.isEmpty);
+      oprot.writeString(struct.appModuleId);
+      oprot.writeString(struct.appModuleName);
+      BitSet optionals = new BitSet();
+      if (struct.isSetAppModuleVersion()) {
+        optionals.set(0);
+      }
+      if (struct.isSetAppModuleDescription()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetAppModuleVersion()) {
+        oprot.writeString(struct.appModuleVersion);
+      }
+      if (struct.isSetAppModuleDescription()) {
+        oprot.writeString(struct.appModuleDescription);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, ApplicationModule struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.isEmpty = iprot.readBool();
+      struct.setIsEmptyIsSet(true);
+      struct.appModuleId = iprot.readString();
+      struct.setAppModuleIdIsSet(true);
+      struct.appModuleName = iprot.readString();
+      struct.setAppModuleNameIsSet(true);
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.appModuleVersion = iprot.readString();
+        struct.setAppModuleVersionIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.appModuleDescription = iprot.readString();
+        struct.setAppModuleDescriptionIsSet(true);
+      }
+    }
+  }
+
+}
+