airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sma...@apache.org
Subject [1/8] Commiting the generated data-models for modified experiment model. - AIRAVATA-1017
Date Fri, 14 Feb 2014 23:58:45 GMT
Repository: airavata
Updated Branches:
  refs/heads/master 997d5efe1 -> 719cbf9e7


http://git-wip-us.apache.org/repos/asf/airavata/blob/719cbf9e/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeDetails.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeDetails.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeDetails.java
new file mode 100644
index 0000000..8dda0a3
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeDetails.java
@@ -0,0 +1,1329 @@
+    /*
+     * 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.experiment;
+
+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;
+
+/**
+ * A structure holding the node data.
+ * nodeInstanceId - unique node identifier for each run
+ */
+@SuppressWarnings("all") public class WorkflowNodeDetails implements org.apache.thrift.TBase<WorkflowNodeDetails, WorkflowNodeDetails._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowNodeDetails> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowNodeDetails");
+
+  private static final org.apache.thrift.protocol.TField NODE_INSTANCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("nodeInstanceId", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)2);
+  private static final org.apache.thrift.protocol.TField NODE_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("nodeName", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField NODE_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("nodeInputs", org.apache.thrift.protocol.TType.LIST, (short)4);
+  private static final org.apache.thrift.protocol.TField NODE_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("nodeOutputs", org.apache.thrift.protocol.TType.LIST, (short)5);
+  private static final org.apache.thrift.protocol.TField WORKFLOW_NODE_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowNodeStatus", org.apache.thrift.protocol.TType.STRUCT, (short)6);
+  private static final org.apache.thrift.protocol.TField TASK_DETAILS_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("taskDetailsList", org.apache.thrift.protocol.TType.LIST, (short)7);
+  private static final org.apache.thrift.protocol.TField ERRORS_FIELD_DESC = new org.apache.thrift.protocol.TField("errors", org.apache.thrift.protocol.TType.LIST, (short)8);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new WorkflowNodeDetailsStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new WorkflowNodeDetailsTupleSchemeFactory());
+  }
+
+  private String nodeInstanceId; // required
+  private long creationTime; // optional
+  private String nodeName; // required
+  private List<DataObjectType> nodeInputs; // optional
+  private List<DataObjectType> nodeOutputs; // optional
+  private WorkflowNodeStatus workflowNodeStatus; // optional
+  private List<TaskDetails> taskDetailsList; // optional
+  private List<ErrorDetails> errors; // 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 {
+    NODE_INSTANCE_ID((short)1, "nodeInstanceId"),
+    CREATION_TIME((short)2, "creationTime"),
+    NODE_NAME((short)3, "nodeName"),
+    NODE_INPUTS((short)4, "nodeInputs"),
+    NODE_OUTPUTS((short)5, "nodeOutputs"),
+    WORKFLOW_NODE_STATUS((short)6, "workflowNodeStatus"),
+    TASK_DETAILS_LIST((short)7, "taskDetailsList"),
+    ERRORS((short)8, "errors");
+
+    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: // NODE_INSTANCE_ID
+          return NODE_INSTANCE_ID;
+        case 2: // CREATION_TIME
+          return CREATION_TIME;
+        case 3: // NODE_NAME
+          return NODE_NAME;
+        case 4: // NODE_INPUTS
+          return NODE_INPUTS;
+        case 5: // NODE_OUTPUTS
+          return NODE_OUTPUTS;
+        case 6: // WORKFLOW_NODE_STATUS
+          return WORKFLOW_NODE_STATUS;
+        case 7: // TASK_DETAILS_LIST
+          return TASK_DETAILS_LIST;
+        case 8: // ERRORS
+          return ERRORS;
+        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 __CREATIONTIME_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.NODE_INPUTS,_Fields.NODE_OUTPUTS,_Fields.WORKFLOW_NODE_STATUS,_Fields.TASK_DETAILS_LIST,_Fields.ERRORS};
+  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.NODE_INSTANCE_ID, new org.apache.thrift.meta_data.FieldMetaData("nodeInstanceId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.CREATION_TIME, new org.apache.thrift.meta_data.FieldMetaData("creationTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.NODE_NAME, new org.apache.thrift.meta_data.FieldMetaData("nodeName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NODE_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("nodeInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+    tmpMap.put(_Fields.NODE_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("nodeOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, DataObjectType.class))));
+    tmpMap.put(_Fields.WORKFLOW_NODE_STATUS, new org.apache.thrift.meta_data.FieldMetaData("workflowNodeStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, WorkflowNodeStatus.class)));
+    tmpMap.put(_Fields.TASK_DETAILS_LIST, new org.apache.thrift.meta_data.FieldMetaData("taskDetailsList", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        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, TaskDetails.class))));
+    tmpMap.put(_Fields.ERRORS, new org.apache.thrift.meta_data.FieldMetaData("errors", 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, ErrorDetails.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(WorkflowNodeDetails.class, metaDataMap);
+  }
+
+  public WorkflowNodeDetails() {
+    this.nodeInstanceId = "DO_NO_SET_BY_CLIENT";
+
+    this.nodeName = "SIMPLE_APP_NODE";
+
+  }
+
+  public WorkflowNodeDetails(
+    String nodeInstanceId,
+    String nodeName)
+  {
+    this();
+    this.nodeInstanceId = nodeInstanceId;
+    this.nodeName = nodeName;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public WorkflowNodeDetails(WorkflowNodeDetails other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetNodeInstanceId()) {
+      this.nodeInstanceId = other.nodeInstanceId;
+    }
+    this.creationTime = other.creationTime;
+    if (other.isSetNodeName()) {
+      this.nodeName = other.nodeName;
+    }
+    if (other.isSetNodeInputs()) {
+      List<DataObjectType> __this__nodeInputs = new ArrayList<DataObjectType>(other.nodeInputs.size());
+      for (DataObjectType other_element : other.nodeInputs) {
+        __this__nodeInputs.add(new DataObjectType(other_element));
+      }
+      this.nodeInputs = __this__nodeInputs;
+    }
+    if (other.isSetNodeOutputs()) {
+      List<DataObjectType> __this__nodeOutputs = new ArrayList<DataObjectType>(other.nodeOutputs.size());
+      for (DataObjectType other_element : other.nodeOutputs) {
+        __this__nodeOutputs.add(new DataObjectType(other_element));
+      }
+      this.nodeOutputs = __this__nodeOutputs;
+    }
+    if (other.isSetWorkflowNodeStatus()) {
+      this.workflowNodeStatus = new WorkflowNodeStatus(other.workflowNodeStatus);
+    }
+    if (other.isSetTaskDetailsList()) {
+      List<TaskDetails> __this__taskDetailsList = new ArrayList<TaskDetails>(other.taskDetailsList.size());
+      for (TaskDetails other_element : other.taskDetailsList) {
+        __this__taskDetailsList.add(new TaskDetails(other_element));
+      }
+      this.taskDetailsList = __this__taskDetailsList;
+    }
+    if (other.isSetErrors()) {
+      List<ErrorDetails> __this__errors = new ArrayList<ErrorDetails>(other.errors.size());
+      for (ErrorDetails other_element : other.errors) {
+        __this__errors.add(new ErrorDetails(other_element));
+      }
+      this.errors = __this__errors;
+    }
+  }
+
+  public WorkflowNodeDetails deepCopy() {
+    return new WorkflowNodeDetails(this);
+  }
+
+  @Override
+  public void clear() {
+    this.nodeInstanceId = "DO_NO_SET_BY_CLIENT";
+
+    setCreationTimeIsSet(false);
+    this.creationTime = 0;
+    this.nodeName = "SIMPLE_APP_NODE";
+
+    this.nodeInputs = null;
+    this.nodeOutputs = null;
+    this.workflowNodeStatus = null;
+    this.taskDetailsList = null;
+    this.errors = null;
+  }
+
+  public String getNodeInstanceId() {
+    return this.nodeInstanceId;
+  }
+
+  public void setNodeInstanceId(String nodeInstanceId) {
+    this.nodeInstanceId = nodeInstanceId;
+  }
+
+  public void unsetNodeInstanceId() {
+    this.nodeInstanceId = null;
+  }
+
+  /** Returns true if field nodeInstanceId is set (has been assigned a value) and false otherwise */
+  public boolean isSetNodeInstanceId() {
+    return this.nodeInstanceId != null;
+  }
+
+  public void setNodeInstanceIdIsSet(boolean value) {
+    if (!value) {
+      this.nodeInstanceId = null;
+    }
+  }
+
+  public long getCreationTime() {
+    return this.creationTime;
+  }
+
+  public void setCreationTime(long creationTime) {
+    this.creationTime = creationTime;
+    setCreationTimeIsSet(true);
+  }
+
+  public void unsetCreationTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
+  }
+
+  /** Returns true if field creationTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetCreationTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
+  }
+
+  public void setCreationTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATIONTIME_ISSET_ID, value);
+  }
+
+  public String getNodeName() {
+    return this.nodeName;
+  }
+
+  public void setNodeName(String nodeName) {
+    this.nodeName = nodeName;
+  }
+
+  public void unsetNodeName() {
+    this.nodeName = null;
+  }
+
+  /** Returns true if field nodeName is set (has been assigned a value) and false otherwise */
+  public boolean isSetNodeName() {
+    return this.nodeName != null;
+  }
+
+  public void setNodeNameIsSet(boolean value) {
+    if (!value) {
+      this.nodeName = null;
+    }
+  }
+
+  public int getNodeInputsSize() {
+    return (this.nodeInputs == null) ? 0 : this.nodeInputs.size();
+  }
+
+  public java.util.Iterator<DataObjectType> getNodeInputsIterator() {
+    return (this.nodeInputs == null) ? null : this.nodeInputs.iterator();
+  }
+
+  public void addToNodeInputs(DataObjectType elem) {
+    if (this.nodeInputs == null) {
+      this.nodeInputs = new ArrayList<DataObjectType>();
+    }
+    this.nodeInputs.add(elem);
+  }
+
+  public List<DataObjectType> getNodeInputs() {
+    return this.nodeInputs;
+  }
+
+  public void setNodeInputs(List<DataObjectType> nodeInputs) {
+    this.nodeInputs = nodeInputs;
+  }
+
+  public void unsetNodeInputs() {
+    this.nodeInputs = null;
+  }
+
+  /** Returns true if field nodeInputs is set (has been assigned a value) and false otherwise */
+  public boolean isSetNodeInputs() {
+    return this.nodeInputs != null;
+  }
+
+  public void setNodeInputsIsSet(boolean value) {
+    if (!value) {
+      this.nodeInputs = null;
+    }
+  }
+
+  public int getNodeOutputsSize() {
+    return (this.nodeOutputs == null) ? 0 : this.nodeOutputs.size();
+  }
+
+  public java.util.Iterator<DataObjectType> getNodeOutputsIterator() {
+    return (this.nodeOutputs == null) ? null : this.nodeOutputs.iterator();
+  }
+
+  public void addToNodeOutputs(DataObjectType elem) {
+    if (this.nodeOutputs == null) {
+      this.nodeOutputs = new ArrayList<DataObjectType>();
+    }
+    this.nodeOutputs.add(elem);
+  }
+
+  public List<DataObjectType> getNodeOutputs() {
+    return this.nodeOutputs;
+  }
+
+  public void setNodeOutputs(List<DataObjectType> nodeOutputs) {
+    this.nodeOutputs = nodeOutputs;
+  }
+
+  public void unsetNodeOutputs() {
+    this.nodeOutputs = null;
+  }
+
+  /** Returns true if field nodeOutputs is set (has been assigned a value) and false otherwise */
+  public boolean isSetNodeOutputs() {
+    return this.nodeOutputs != null;
+  }
+
+  public void setNodeOutputsIsSet(boolean value) {
+    if (!value) {
+      this.nodeOutputs = null;
+    }
+  }
+
+  public WorkflowNodeStatus getWorkflowNodeStatus() {
+    return this.workflowNodeStatus;
+  }
+
+  public void setWorkflowNodeStatus(WorkflowNodeStatus workflowNodeStatus) {
+    this.workflowNodeStatus = workflowNodeStatus;
+  }
+
+  public void unsetWorkflowNodeStatus() {
+    this.workflowNodeStatus = null;
+  }
+
+  /** Returns true if field workflowNodeStatus is set (has been assigned a value) and false otherwise */
+  public boolean isSetWorkflowNodeStatus() {
+    return this.workflowNodeStatus != null;
+  }
+
+  public void setWorkflowNodeStatusIsSet(boolean value) {
+    if (!value) {
+      this.workflowNodeStatus = null;
+    }
+  }
+
+  public int getTaskDetailsListSize() {
+    return (this.taskDetailsList == null) ? 0 : this.taskDetailsList.size();
+  }
+
+  public java.util.Iterator<TaskDetails> getTaskDetailsListIterator() {
+    return (this.taskDetailsList == null) ? null : this.taskDetailsList.iterator();
+  }
+
+  public void addToTaskDetailsList(TaskDetails elem) {
+    if (this.taskDetailsList == null) {
+      this.taskDetailsList = new ArrayList<TaskDetails>();
+    }
+    this.taskDetailsList.add(elem);
+  }
+
+  public List<TaskDetails> getTaskDetailsList() {
+    return this.taskDetailsList;
+  }
+
+  public void setTaskDetailsList(List<TaskDetails> taskDetailsList) {
+    this.taskDetailsList = taskDetailsList;
+  }
+
+  public void unsetTaskDetailsList() {
+    this.taskDetailsList = null;
+  }
+
+  /** Returns true if field taskDetailsList is set (has been assigned a value) and false otherwise */
+  public boolean isSetTaskDetailsList() {
+    return this.taskDetailsList != null;
+  }
+
+  public void setTaskDetailsListIsSet(boolean value) {
+    if (!value) {
+      this.taskDetailsList = null;
+    }
+  }
+
+  public int getErrorsSize() {
+    return (this.errors == null) ? 0 : this.errors.size();
+  }
+
+  public java.util.Iterator<ErrorDetails> getErrorsIterator() {
+    return (this.errors == null) ? null : this.errors.iterator();
+  }
+
+  public void addToErrors(ErrorDetails elem) {
+    if (this.errors == null) {
+      this.errors = new ArrayList<ErrorDetails>();
+    }
+    this.errors.add(elem);
+  }
+
+  public List<ErrorDetails> getErrors() {
+    return this.errors;
+  }
+
+  public void setErrors(List<ErrorDetails> errors) {
+    this.errors = errors;
+  }
+
+  public void unsetErrors() {
+    this.errors = null;
+  }
+
+  /** Returns true if field errors is set (has been assigned a value) and false otherwise */
+  public boolean isSetErrors() {
+    return this.errors != null;
+  }
+
+  public void setErrorsIsSet(boolean value) {
+    if (!value) {
+      this.errors = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case NODE_INSTANCE_ID:
+      if (value == null) {
+        unsetNodeInstanceId();
+      } else {
+        setNodeInstanceId((String)value);
+      }
+      break;
+
+    case CREATION_TIME:
+      if (value == null) {
+        unsetCreationTime();
+      } else {
+        setCreationTime((Long)value);
+      }
+      break;
+
+    case NODE_NAME:
+      if (value == null) {
+        unsetNodeName();
+      } else {
+        setNodeName((String)value);
+      }
+      break;
+
+    case NODE_INPUTS:
+      if (value == null) {
+        unsetNodeInputs();
+      } else {
+        setNodeInputs((List<DataObjectType>)value);
+      }
+      break;
+
+    case NODE_OUTPUTS:
+      if (value == null) {
+        unsetNodeOutputs();
+      } else {
+        setNodeOutputs((List<DataObjectType>)value);
+      }
+      break;
+
+    case WORKFLOW_NODE_STATUS:
+      if (value == null) {
+        unsetWorkflowNodeStatus();
+      } else {
+        setWorkflowNodeStatus((WorkflowNodeStatus)value);
+      }
+      break;
+
+    case TASK_DETAILS_LIST:
+      if (value == null) {
+        unsetTaskDetailsList();
+      } else {
+        setTaskDetailsList((List<TaskDetails>)value);
+      }
+      break;
+
+    case ERRORS:
+      if (value == null) {
+        unsetErrors();
+      } else {
+        setErrors((List<ErrorDetails>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case NODE_INSTANCE_ID:
+      return getNodeInstanceId();
+
+    case CREATION_TIME:
+      return Long.valueOf(getCreationTime());
+
+    case NODE_NAME:
+      return getNodeName();
+
+    case NODE_INPUTS:
+      return getNodeInputs();
+
+    case NODE_OUTPUTS:
+      return getNodeOutputs();
+
+    case WORKFLOW_NODE_STATUS:
+      return getWorkflowNodeStatus();
+
+    case TASK_DETAILS_LIST:
+      return getTaskDetailsList();
+
+    case ERRORS:
+      return getErrors();
+
+    }
+    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 NODE_INSTANCE_ID:
+      return isSetNodeInstanceId();
+    case CREATION_TIME:
+      return isSetCreationTime();
+    case NODE_NAME:
+      return isSetNodeName();
+    case NODE_INPUTS:
+      return isSetNodeInputs();
+    case NODE_OUTPUTS:
+      return isSetNodeOutputs();
+    case WORKFLOW_NODE_STATUS:
+      return isSetWorkflowNodeStatus();
+    case TASK_DETAILS_LIST:
+      return isSetTaskDetailsList();
+    case ERRORS:
+      return isSetErrors();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof WorkflowNodeDetails)
+      return this.equals((WorkflowNodeDetails)that);
+    return false;
+  }
+
+  public boolean equals(WorkflowNodeDetails that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_nodeInstanceId = true && this.isSetNodeInstanceId();
+    boolean that_present_nodeInstanceId = true && that.isSetNodeInstanceId();
+    if (this_present_nodeInstanceId || that_present_nodeInstanceId) {
+      if (!(this_present_nodeInstanceId && that_present_nodeInstanceId))
+        return false;
+      if (!this.nodeInstanceId.equals(that.nodeInstanceId))
+        return false;
+    }
+
+    boolean this_present_creationTime = true && this.isSetCreationTime();
+    boolean that_present_creationTime = true && that.isSetCreationTime();
+    if (this_present_creationTime || that_present_creationTime) {
+      if (!(this_present_creationTime && that_present_creationTime))
+        return false;
+      if (this.creationTime != that.creationTime)
+        return false;
+    }
+
+    boolean this_present_nodeName = true && this.isSetNodeName();
+    boolean that_present_nodeName = true && that.isSetNodeName();
+    if (this_present_nodeName || that_present_nodeName) {
+      if (!(this_present_nodeName && that_present_nodeName))
+        return false;
+      if (!this.nodeName.equals(that.nodeName))
+        return false;
+    }
+
+    boolean this_present_nodeInputs = true && this.isSetNodeInputs();
+    boolean that_present_nodeInputs = true && that.isSetNodeInputs();
+    if (this_present_nodeInputs || that_present_nodeInputs) {
+      if (!(this_present_nodeInputs && that_present_nodeInputs))
+        return false;
+      if (!this.nodeInputs.equals(that.nodeInputs))
+        return false;
+    }
+
+    boolean this_present_nodeOutputs = true && this.isSetNodeOutputs();
+    boolean that_present_nodeOutputs = true && that.isSetNodeOutputs();
+    if (this_present_nodeOutputs || that_present_nodeOutputs) {
+      if (!(this_present_nodeOutputs && that_present_nodeOutputs))
+        return false;
+      if (!this.nodeOutputs.equals(that.nodeOutputs))
+        return false;
+    }
+
+    boolean this_present_workflowNodeStatus = true && this.isSetWorkflowNodeStatus();
+    boolean that_present_workflowNodeStatus = true && that.isSetWorkflowNodeStatus();
+    if (this_present_workflowNodeStatus || that_present_workflowNodeStatus) {
+      if (!(this_present_workflowNodeStatus && that_present_workflowNodeStatus))
+        return false;
+      if (!this.workflowNodeStatus.equals(that.workflowNodeStatus))
+        return false;
+    }
+
+    boolean this_present_taskDetailsList = true && this.isSetTaskDetailsList();
+    boolean that_present_taskDetailsList = true && that.isSetTaskDetailsList();
+    if (this_present_taskDetailsList || that_present_taskDetailsList) {
+      if (!(this_present_taskDetailsList && that_present_taskDetailsList))
+        return false;
+      if (!this.taskDetailsList.equals(that.taskDetailsList))
+        return false;
+    }
+
+    boolean this_present_errors = true && this.isSetErrors();
+    boolean that_present_errors = true && that.isSetErrors();
+    if (this_present_errors || that_present_errors) {
+      if (!(this_present_errors && that_present_errors))
+        return false;
+      if (!this.errors.equals(that.errors))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  @Override
+  public int compareTo(WorkflowNodeDetails other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetNodeInstanceId()).compareTo(other.isSetNodeInstanceId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNodeInstanceId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nodeInstanceId, other.nodeInstanceId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetCreationTime()).compareTo(other.isSetCreationTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetCreationTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.creationTime, other.creationTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetNodeName()).compareTo(other.isSetNodeName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNodeName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nodeName, other.nodeName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetNodeInputs()).compareTo(other.isSetNodeInputs());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNodeInputs()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nodeInputs, other.nodeInputs);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetNodeOutputs()).compareTo(other.isSetNodeOutputs());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNodeOutputs()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nodeOutputs, other.nodeOutputs);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetWorkflowNodeStatus()).compareTo(other.isSetWorkflowNodeStatus());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetWorkflowNodeStatus()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workflowNodeStatus, other.workflowNodeStatus);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetTaskDetailsList()).compareTo(other.isSetTaskDetailsList());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTaskDetailsList()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskDetailsList, other.taskDetailsList);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetErrors()).compareTo(other.isSetErrors());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetErrors()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.errors, other.errors);
+      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("WorkflowNodeDetails(");
+    boolean first = true;
+
+    sb.append("nodeInstanceId:");
+    if (this.nodeInstanceId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.nodeInstanceId);
+    }
+    first = false;
+    if (isSetCreationTime()) {
+      if (!first) sb.append(", ");
+      sb.append("creationTime:");
+      sb.append(this.creationTime);
+      first = false;
+    }
+    if (!first) sb.append(", ");
+    sb.append("nodeName:");
+    if (this.nodeName == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.nodeName);
+    }
+    first = false;
+    if (isSetNodeInputs()) {
+      if (!first) sb.append(", ");
+      sb.append("nodeInputs:");
+      if (this.nodeInputs == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.nodeInputs);
+      }
+      first = false;
+    }
+    if (isSetNodeOutputs()) {
+      if (!first) sb.append(", ");
+      sb.append("nodeOutputs:");
+      if (this.nodeOutputs == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.nodeOutputs);
+      }
+      first = false;
+    }
+    if (isSetWorkflowNodeStatus()) {
+      if (!first) sb.append(", ");
+      sb.append("workflowNodeStatus:");
+      if (this.workflowNodeStatus == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.workflowNodeStatus);
+      }
+      first = false;
+    }
+    if (isSetTaskDetailsList()) {
+      if (!first) sb.append(", ");
+      sb.append("taskDetailsList:");
+      if (this.taskDetailsList == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.taskDetailsList);
+      }
+      first = false;
+    }
+    if (isSetErrors()) {
+      if (!first) sb.append(", ");
+      sb.append("errors:");
+      if (this.errors == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.errors);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetNodeInstanceId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'nodeInstanceId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetNodeName()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'nodeName' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+    if (workflowNodeStatus != null) {
+      workflowNodeStatus.validate();
+    }
+  }
+
+  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 WorkflowNodeDetailsStandardSchemeFactory implements SchemeFactory {
+    public WorkflowNodeDetailsStandardScheme getScheme() {
+      return new WorkflowNodeDetailsStandardScheme();
+    }
+  }
+
+  private static class WorkflowNodeDetailsStandardScheme extends StandardScheme<WorkflowNodeDetails> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, WorkflowNodeDetails 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: // NODE_INSTANCE_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.nodeInstanceId = iprot.readString();
+              struct.setNodeInstanceIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // CREATION_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.creationTime = iprot.readI64();
+              struct.setCreationTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // NODE_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.nodeName = iprot.readString();
+              struct.setNodeNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // NODE_INPUTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list56 = iprot.readListBegin();
+                struct.nodeInputs = new ArrayList<DataObjectType>(_list56.size);
+                for (int _i57 = 0; _i57 < _list56.size; ++_i57)
+                {
+                  DataObjectType _elem58;
+                  _elem58 = new DataObjectType();
+                  _elem58.read(iprot);
+                  struct.nodeInputs.add(_elem58);
+                }
+                iprot.readListEnd();
+              }
+              struct.setNodeInputsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // NODE_OUTPUTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list59 = iprot.readListBegin();
+                struct.nodeOutputs = new ArrayList<DataObjectType>(_list59.size);
+                for (int _i60 = 0; _i60 < _list59.size; ++_i60)
+                {
+                  DataObjectType _elem61;
+                  _elem61 = new DataObjectType();
+                  _elem61.read(iprot);
+                  struct.nodeOutputs.add(_elem61);
+                }
+                iprot.readListEnd();
+              }
+              struct.setNodeOutputsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // WORKFLOW_NODE_STATUS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.workflowNodeStatus = new WorkflowNodeStatus();
+              struct.workflowNodeStatus.read(iprot);
+              struct.setWorkflowNodeStatusIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // TASK_DETAILS_LIST
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list62 = iprot.readListBegin();
+                struct.taskDetailsList = new ArrayList<TaskDetails>(_list62.size);
+                for (int _i63 = 0; _i63 < _list62.size; ++_i63)
+                {
+                  TaskDetails _elem64;
+                  _elem64 = new TaskDetails();
+                  _elem64.read(iprot);
+                  struct.taskDetailsList.add(_elem64);
+                }
+                iprot.readListEnd();
+              }
+              struct.setTaskDetailsListIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 8: // ERRORS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list65 = iprot.readListBegin();
+                struct.errors = new ArrayList<ErrorDetails>(_list65.size);
+                for (int _i66 = 0; _i66 < _list65.size; ++_i66)
+                {
+                  ErrorDetails _elem67;
+                  _elem67 = new ErrorDetails();
+                  _elem67.read(iprot);
+                  struct.errors.add(_elem67);
+                }
+                iprot.readListEnd();
+              }
+              struct.setErrorsIsSet(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, WorkflowNodeDetails struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.nodeInstanceId != null) {
+        oprot.writeFieldBegin(NODE_INSTANCE_ID_FIELD_DESC);
+        oprot.writeString(struct.nodeInstanceId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetCreationTime()) {
+        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
+        oprot.writeI64(struct.creationTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.nodeName != null) {
+        oprot.writeFieldBegin(NODE_NAME_FIELD_DESC);
+        oprot.writeString(struct.nodeName);
+        oprot.writeFieldEnd();
+      }
+      if (struct.nodeInputs != null) {
+        if (struct.isSetNodeInputs()) {
+          oprot.writeFieldBegin(NODE_INPUTS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.nodeInputs.size()));
+            for (DataObjectType _iter68 : struct.nodeInputs)
+            {
+              _iter68.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.nodeOutputs != null) {
+        if (struct.isSetNodeOutputs()) {
+          oprot.writeFieldBegin(NODE_OUTPUTS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.nodeOutputs.size()));
+            for (DataObjectType _iter69 : struct.nodeOutputs)
+            {
+              _iter69.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.workflowNodeStatus != null) {
+        if (struct.isSetWorkflowNodeStatus()) {
+          oprot.writeFieldBegin(WORKFLOW_NODE_STATUS_FIELD_DESC);
+          struct.workflowNodeStatus.write(oprot);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.taskDetailsList != null) {
+        if (struct.isSetTaskDetailsList()) {
+          oprot.writeFieldBegin(TASK_DETAILS_LIST_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.taskDetailsList.size()));
+            for (TaskDetails _iter70 : struct.taskDetailsList)
+            {
+              _iter70.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.errors != null) {
+        if (struct.isSetErrors()) {
+          oprot.writeFieldBegin(ERRORS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.errors.size()));
+            for (ErrorDetails _iter71 : struct.errors)
+            {
+              _iter71.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class WorkflowNodeDetailsTupleSchemeFactory implements SchemeFactory {
+    public WorkflowNodeDetailsTupleScheme getScheme() {
+      return new WorkflowNodeDetailsTupleScheme();
+    }
+  }
+
+  private static class WorkflowNodeDetailsTupleScheme extends TupleScheme<WorkflowNodeDetails> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, WorkflowNodeDetails struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.nodeInstanceId);
+      oprot.writeString(struct.nodeName);
+      BitSet optionals = new BitSet();
+      if (struct.isSetCreationTime()) {
+        optionals.set(0);
+      }
+      if (struct.isSetNodeInputs()) {
+        optionals.set(1);
+      }
+      if (struct.isSetNodeOutputs()) {
+        optionals.set(2);
+      }
+      if (struct.isSetWorkflowNodeStatus()) {
+        optionals.set(3);
+      }
+      if (struct.isSetTaskDetailsList()) {
+        optionals.set(4);
+      }
+      if (struct.isSetErrors()) {
+        optionals.set(5);
+      }
+      oprot.writeBitSet(optionals, 6);
+      if (struct.isSetCreationTime()) {
+        oprot.writeI64(struct.creationTime);
+      }
+      if (struct.isSetNodeInputs()) {
+        {
+          oprot.writeI32(struct.nodeInputs.size());
+          for (DataObjectType _iter72 : struct.nodeInputs)
+          {
+            _iter72.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetNodeOutputs()) {
+        {
+          oprot.writeI32(struct.nodeOutputs.size());
+          for (DataObjectType _iter73 : struct.nodeOutputs)
+          {
+            _iter73.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetWorkflowNodeStatus()) {
+        struct.workflowNodeStatus.write(oprot);
+      }
+      if (struct.isSetTaskDetailsList()) {
+        {
+          oprot.writeI32(struct.taskDetailsList.size());
+          for (TaskDetails _iter74 : struct.taskDetailsList)
+          {
+            _iter74.write(oprot);
+          }
+        }
+      }
+      if (struct.isSetErrors()) {
+        {
+          oprot.writeI32(struct.errors.size());
+          for (ErrorDetails _iter75 : struct.errors)
+          {
+            _iter75.write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, WorkflowNodeDetails struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.nodeInstanceId = iprot.readString();
+      struct.setNodeInstanceIdIsSet(true);
+      struct.nodeName = iprot.readString();
+      struct.setNodeNameIsSet(true);
+      BitSet incoming = iprot.readBitSet(6);
+      if (incoming.get(0)) {
+        struct.creationTime = iprot.readI64();
+        struct.setCreationTimeIsSet(true);
+      }
+      if (incoming.get(1)) {
+        {
+          org.apache.thrift.protocol.TList _list76 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.nodeInputs = new ArrayList<DataObjectType>(_list76.size);
+          for (int _i77 = 0; _i77 < _list76.size; ++_i77)
+          {
+            DataObjectType _elem78;
+            _elem78 = new DataObjectType();
+            _elem78.read(iprot);
+            struct.nodeInputs.add(_elem78);
+          }
+        }
+        struct.setNodeInputsIsSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TList _list79 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.nodeOutputs = new ArrayList<DataObjectType>(_list79.size);
+          for (int _i80 = 0; _i80 < _list79.size; ++_i80)
+          {
+            DataObjectType _elem81;
+            _elem81 = new DataObjectType();
+            _elem81.read(iprot);
+            struct.nodeOutputs.add(_elem81);
+          }
+        }
+        struct.setNodeOutputsIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.workflowNodeStatus = new WorkflowNodeStatus();
+        struct.workflowNodeStatus.read(iprot);
+        struct.setWorkflowNodeStatusIsSet(true);
+      }
+      if (incoming.get(4)) {
+        {
+          org.apache.thrift.protocol.TList _list82 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.taskDetailsList = new ArrayList<TaskDetails>(_list82.size);
+          for (int _i83 = 0; _i83 < _list82.size; ++_i83)
+          {
+            TaskDetails _elem84;
+            _elem84 = new TaskDetails();
+            _elem84.read(iprot);
+            struct.taskDetailsList.add(_elem84);
+          }
+        }
+        struct.setTaskDetailsListIsSet(true);
+      }
+      if (incoming.get(5)) {
+        {
+          org.apache.thrift.protocol.TList _list85 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.errors = new ArrayList<ErrorDetails>(_list85.size);
+          for (int _i86 = 0; _i86 < _list85.size; ++_i86)
+          {
+            ErrorDetails _elem87;
+            _elem87 = new ErrorDetails();
+            _elem87.read(iprot);
+            struct.errors.add(_elem87);
+          }
+        }
+        struct.setErrorsIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/719cbf9e/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeState.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeState.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeState.java
new file mode 100644
index 0000000..eb461cb
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeState.java
@@ -0,0 +1,73 @@
+    /*
+     * 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.experiment;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+@SuppressWarnings("all") public enum WorkflowNodeState implements org.apache.thrift.TEnum {
+  INVOKED(0),
+  EXECUTING(1),
+  CANCELED(2),
+  COMPLETED(3),
+  FAILED(4),
+  UNKNOWN(5);
+
+  private final int value;
+
+  private WorkflowNodeState(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static WorkflowNodeState findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return INVOKED;
+      case 1:
+        return EXECUTING;
+      case 2:
+        return CANCELED;
+      case 3:
+        return COMPLETED;
+      case 4:
+        return FAILED;
+      case 5:
+        return UNKNOWN;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/719cbf9e/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeStatus.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeStatus.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeStatus.java
new file mode 100644
index 0000000..4cb9338
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/WorkflowNodeStatus.java
@@ -0,0 +1,509 @@
+    /*
+     * 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.experiment;
+
+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;
+
+@SuppressWarnings("all") public class WorkflowNodeStatus implements org.apache.thrift.TBase<WorkflowNodeStatus, WorkflowNodeStatus._Fields>, java.io.Serializable, Cloneable, Comparable<WorkflowNodeStatus> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WorkflowNodeStatus");
+
+  private static final org.apache.thrift.protocol.TField WORKFLOW_NODE_STATE_FIELD_DESC = new org.apache.thrift.protocol.TField("workflowNodeState", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField TIME_OF_STATE_CHANGE_FIELD_DESC = new org.apache.thrift.protocol.TField("timeOfStateChange", org.apache.thrift.protocol.TType.I64, (short)2);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new WorkflowNodeStatusStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new WorkflowNodeStatusTupleSchemeFactory());
+  }
+
+  private WorkflowNodeState workflowNodeState; // required
+  private long timeOfStateChange; // 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 {
+    /**
+     * 
+     * @see WorkflowNodeState
+     */
+    WORKFLOW_NODE_STATE((short)1, "workflowNodeState"),
+    TIME_OF_STATE_CHANGE((short)2, "timeOfStateChange");
+
+    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: // WORKFLOW_NODE_STATE
+          return WORKFLOW_NODE_STATE;
+        case 2: // TIME_OF_STATE_CHANGE
+          return TIME_OF_STATE_CHANGE;
+        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 __TIMEOFSTATECHANGE_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.TIME_OF_STATE_CHANGE};
+  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.WORKFLOW_NODE_STATE, new org.apache.thrift.meta_data.FieldMetaData("workflowNodeState", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, WorkflowNodeState.class)));
+    tmpMap.put(_Fields.TIME_OF_STATE_CHANGE, new org.apache.thrift.meta_data.FieldMetaData("timeOfStateChange", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(WorkflowNodeStatus.class, metaDataMap);
+  }
+
+  public WorkflowNodeStatus() {
+  }
+
+  public WorkflowNodeStatus(
+    WorkflowNodeState workflowNodeState)
+  {
+    this();
+    this.workflowNodeState = workflowNodeState;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public WorkflowNodeStatus(WorkflowNodeStatus other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetWorkflowNodeState()) {
+      this.workflowNodeState = other.workflowNodeState;
+    }
+    this.timeOfStateChange = other.timeOfStateChange;
+  }
+
+  public WorkflowNodeStatus deepCopy() {
+    return new WorkflowNodeStatus(this);
+  }
+
+  @Override
+  public void clear() {
+    this.workflowNodeState = null;
+    setTimeOfStateChangeIsSet(false);
+    this.timeOfStateChange = 0;
+  }
+
+  /**
+   * 
+   * @see WorkflowNodeState
+   */
+  public WorkflowNodeState getWorkflowNodeState() {
+    return this.workflowNodeState;
+  }
+
+  /**
+   * 
+   * @see WorkflowNodeState
+   */
+  public void setWorkflowNodeState(WorkflowNodeState workflowNodeState) {
+    this.workflowNodeState = workflowNodeState;
+  }
+
+  public void unsetWorkflowNodeState() {
+    this.workflowNodeState = null;
+  }
+
+  /** Returns true if field workflowNodeState is set (has been assigned a value) and false otherwise */
+  public boolean isSetWorkflowNodeState() {
+    return this.workflowNodeState != null;
+  }
+
+  public void setWorkflowNodeStateIsSet(boolean value) {
+    if (!value) {
+      this.workflowNodeState = null;
+    }
+  }
+
+  public long getTimeOfStateChange() {
+    return this.timeOfStateChange;
+  }
+
+  public void setTimeOfStateChange(long timeOfStateChange) {
+    this.timeOfStateChange = timeOfStateChange;
+    setTimeOfStateChangeIsSet(true);
+  }
+
+  public void unsetTimeOfStateChange() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID);
+  }
+
+  /** Returns true if field timeOfStateChange is set (has been assigned a value) and false otherwise */
+  public boolean isSetTimeOfStateChange() {
+    return EncodingUtils.testBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID);
+  }
+
+  public void setTimeOfStateChangeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TIMEOFSTATECHANGE_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case WORKFLOW_NODE_STATE:
+      if (value == null) {
+        unsetWorkflowNodeState();
+      } else {
+        setWorkflowNodeState((WorkflowNodeState)value);
+      }
+      break;
+
+    case TIME_OF_STATE_CHANGE:
+      if (value == null) {
+        unsetTimeOfStateChange();
+      } else {
+        setTimeOfStateChange((Long)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case WORKFLOW_NODE_STATE:
+      return getWorkflowNodeState();
+
+    case TIME_OF_STATE_CHANGE:
+      return Long.valueOf(getTimeOfStateChange());
+
+    }
+    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 WORKFLOW_NODE_STATE:
+      return isSetWorkflowNodeState();
+    case TIME_OF_STATE_CHANGE:
+      return isSetTimeOfStateChange();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof WorkflowNodeStatus)
+      return this.equals((WorkflowNodeStatus)that);
+    return false;
+  }
+
+  public boolean equals(WorkflowNodeStatus that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_workflowNodeState = true && this.isSetWorkflowNodeState();
+    boolean that_present_workflowNodeState = true && that.isSetWorkflowNodeState();
+    if (this_present_workflowNodeState || that_present_workflowNodeState) {
+      if (!(this_present_workflowNodeState && that_present_workflowNodeState))
+        return false;
+      if (!this.workflowNodeState.equals(that.workflowNodeState))
+        return false;
+    }
+
+    boolean this_present_timeOfStateChange = true && this.isSetTimeOfStateChange();
+    boolean that_present_timeOfStateChange = true && that.isSetTimeOfStateChange();
+    if (this_present_timeOfStateChange || that_present_timeOfStateChange) {
+      if (!(this_present_timeOfStateChange && that_present_timeOfStateChange))
+        return false;
+      if (this.timeOfStateChange != that.timeOfStateChange)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  @Override
+  public int compareTo(WorkflowNodeStatus other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetWorkflowNodeState()).compareTo(other.isSetWorkflowNodeState());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetWorkflowNodeState()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workflowNodeState, other.workflowNodeState);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetTimeOfStateChange()).compareTo(other.isSetTimeOfStateChange());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTimeOfStateChange()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.timeOfStateChange, other.timeOfStateChange);
+      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("WorkflowNodeStatus(");
+    boolean first = true;
+
+    sb.append("workflowNodeState:");
+    if (this.workflowNodeState == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.workflowNodeState);
+    }
+    first = false;
+    if (isSetTimeOfStateChange()) {
+      if (!first) sb.append(", ");
+      sb.append("timeOfStateChange:");
+      sb.append(this.timeOfStateChange);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetWorkflowNodeState()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'workflowNodeState' 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 WorkflowNodeStatusStandardSchemeFactory implements SchemeFactory {
+    public WorkflowNodeStatusStandardScheme getScheme() {
+      return new WorkflowNodeStatusStandardScheme();
+    }
+  }
+
+  private static class WorkflowNodeStatusStandardScheme extends StandardScheme<WorkflowNodeStatus> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, WorkflowNodeStatus 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: // WORKFLOW_NODE_STATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.workflowNodeState = WorkflowNodeState.findByValue(iprot.readI32());
+              struct.setWorkflowNodeStateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // TIME_OF_STATE_CHANGE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.timeOfStateChange = iprot.readI64();
+              struct.setTimeOfStateChangeIsSet(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, WorkflowNodeStatus struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.workflowNodeState != null) {
+        oprot.writeFieldBegin(WORKFLOW_NODE_STATE_FIELD_DESC);
+        oprot.writeI32(struct.workflowNodeState.getValue());
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetTimeOfStateChange()) {
+        oprot.writeFieldBegin(TIME_OF_STATE_CHANGE_FIELD_DESC);
+        oprot.writeI64(struct.timeOfStateChange);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class WorkflowNodeStatusTupleSchemeFactory implements SchemeFactory {
+    public WorkflowNodeStatusTupleScheme getScheme() {
+      return new WorkflowNodeStatusTupleScheme();
+    }
+  }
+
+  private static class WorkflowNodeStatusTupleScheme extends TupleScheme<WorkflowNodeStatus> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, WorkflowNodeStatus struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeI32(struct.workflowNodeState.getValue());
+      BitSet optionals = new BitSet();
+      if (struct.isSetTimeOfStateChange()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetTimeOfStateChange()) {
+        oprot.writeI64(struct.timeOfStateChange);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, WorkflowNodeStatus struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.workflowNodeState = WorkflowNodeState.findByValue(iprot.readI32());
+      struct.setWorkflowNodeStateIsSet(true);
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.timeOfStateChange = iprot.readI64();
+        struct.setTimeOfStateChangeIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/719cbf9e/airavata-api/thrift-interface-descriptions/experimentModel.thrift
----------------------------------------------------------------------
diff --git a/airavata-api/thrift-interface-descriptions/experimentModel.thrift b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
index 0fc0908..4d84441 100644
--- a/airavata-api/thrift-interface-descriptions/experimentModel.thrift
+++ b/airavata-api/thrift-interface-descriptions/experimentModel.thrift
@@ -133,7 +133,7 @@ struct TransferStatus {
 }
 
 struct ApplicationStatus {
-    1: required ApplicationState applicationState,
+    1: required string applicationState,
     2: optional i64 timeOfStateChange
 }
 
@@ -168,9 +168,9 @@ enum CorrectiveAction {
 */
 struct DataObjectType {
     1: required string key,
-    2: optional string type,
-    3: optional string metaData,
-    3: optional string value
+    2: optional string value,
+    3: optional string type,
+    4: optional string metaData
 }
 
 /**


Mime
View raw message