airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shame...@apache.org
Subject [2/6] airavata git commit: Added missing thrift auto generated user profile model classes
Date Mon, 20 Jun 2016 14:33:59 GMT
http://git-wip-us.apache.org/repos/asf/airavata/blob/120d06af/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
new file mode 100644
index 0000000..d25905b
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
@@ -0,0 +1,2766 @@
+/**
+ * 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.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.airavata.model.user;
+
+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 javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+/**
+ * * A structure holding the user profile and its child models.
+ * *
+ * * Notes:
+ * *  The model does not include passwords as it is assumed an external identity provider is used to authenticate user.
+ * *  References:
+ * *     NSF Demographic Information - http://www.nsf.gov/pubs/2000/00form1225/00form1225.doc
+ * *     LDAP Schema - https://tools.ietf.org/html/rfc4519
+ * *     SCIM 2.0 - https://tools.ietf.org/html/rfc7643
+ * *
+ * * userModelVersion:
+ * *  Version number of profile
+ * *
+ * * airavataInternalUserId:
+ * *  internal to Airavata, not intended to be used outside of the Airavata platform or possibly by gateways
+ * *  (that is, never shown to users), never reassigned, REQUIRED
+ * *
+ * * userId:
+ * *  Externally assertable unique identifier. SAML (primarly in higher education, academic) tends to keep
+ * *   user name less opaque. OpenID Connect maintains them to be opaque.
+ * *
+ * * emails:
+ * *   Email identifier are Verified, REQUIRED and MULTIVALUED
+ * *
+ * * userName:
+ * *  Name-based identifiers can be multivalues. To keep it simple, Airavata will make it a string.
+ * *   In the future these can be enumerated as:
+ *     *   Official name (as asserted possibly by some external identity provider)
+ *     *   Prefered name (as asserted or suggested by user directly)
+ *     *   Components:
+ *     *      givenName
+ *     *      surname (familyName)
+ *     *      displayName (often asserted by user to handle things like middle names, suffix, prefix, and the like)
+ * *
+ * * orcidId: ORCID ID - http://orcid.org/about/what-is-orcid)
+ * *
+ * * phones: Telephone MULTIVALUED
+ * *
+ * * country: Country of Residance
+ * *
+ * * nationality Countries of citizenship
+ * *
+ * * comments:
+ * *   Free-form information (treated as opaque by Airavata and simply passed to resource).
+ * *
+ * * labeledURI:
+ *   * Google Scholar, Web of Science, ACS, e.t.c
+ * *
+ * * timeZone:
+ * *  User’s preferred timezone - IANA Timezone Databases - http://www.iana.org/time-zones.
+ * *
+ */
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-06-20")
+public class UserProfile implements org.apache.thrift.TBase<UserProfile, UserProfile._Fields>, java.io.Serializable, Cloneable, Comparable<UserProfile> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserProfile");
+
+  private static final org.apache.thrift.protocol.TField USER_MODEL_VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("userModelVersion", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField AIRAVATA_INTERNAL_USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("airavataInternalUserId", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("userId", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField EMAILS_FIELD_DESC = new org.apache.thrift.protocol.TField("emails", org.apache.thrift.protocol.TType.LIST, (short)4);
+  private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)5);
+  private static final org.apache.thrift.protocol.TField GATEWAY_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayId", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField ORCID_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("orcidId", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField PHONES_FIELD_DESC = new org.apache.thrift.protocol.TField("phones", org.apache.thrift.protocol.TType.LIST, (short)8);
+  private static final org.apache.thrift.protocol.TField COUNTRY_FIELD_DESC = new org.apache.thrift.protocol.TField("country", org.apache.thrift.protocol.TType.STRING, (short)9);
+  private static final org.apache.thrift.protocol.TField NATIONALITY_FIELD_DESC = new org.apache.thrift.protocol.TField("nationality", org.apache.thrift.protocol.TType.LIST, (short)10);
+  private static final org.apache.thrift.protocol.TField HOME_ORGANIZATION_FIELD_DESC = new org.apache.thrift.protocol.TField("homeOrganization", org.apache.thrift.protocol.TType.STRING, (short)11);
+  private static final org.apache.thrift.protocol.TField ORGINATION_AFFILIATION_FIELD_DESC = new org.apache.thrift.protocol.TField("orginationAffiliation", org.apache.thrift.protocol.TType.STRING, (short)12);
+  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.STRING, (short)13);
+  private static final org.apache.thrift.protocol.TField LAST_ACCESS_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastAccessTime", org.apache.thrift.protocol.TType.STRING, (short)14);
+  private static final org.apache.thrift.protocol.TField VALID_UNTIL_FIELD_DESC = new org.apache.thrift.protocol.TField("validUntil", org.apache.thrift.protocol.TType.STRING, (short)15);
+  private static final org.apache.thrift.protocol.TField STATE_FIELD_DESC = new org.apache.thrift.protocol.TField("State", org.apache.thrift.protocol.TType.I32, (short)16);
+  private static final org.apache.thrift.protocol.TField COMMENTS_FIELD_DESC = new org.apache.thrift.protocol.TField("comments", org.apache.thrift.protocol.TType.STRING, (short)17);
+  private static final org.apache.thrift.protocol.TField LABELED_URI_FIELD_DESC = new org.apache.thrift.protocol.TField("labeledURI", org.apache.thrift.protocol.TType.LIST, (short)18);
+  private static final org.apache.thrift.protocol.TField GPG_KEY_FIELD_DESC = new org.apache.thrift.protocol.TField("gpgKey", org.apache.thrift.protocol.TType.STRING, (short)19);
+  private static final org.apache.thrift.protocol.TField TIME_ZONE_FIELD_DESC = new org.apache.thrift.protocol.TField("timeZone", org.apache.thrift.protocol.TType.STRING, (short)20);
+  private static final org.apache.thrift.protocol.TField NSF_DEMOGRAPHICS_FIELD_DESC = new org.apache.thrift.protocol.TField("nsfDemographics", org.apache.thrift.protocol.TType.STRUCT, (short)21);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new UserProfileStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new UserProfileTupleSchemeFactory());
+  }
+
+  private String userModelVersion; // required
+  private String airavataInternalUserId; // required
+  private String userId; // required
+  private List<String> emails; // required
+  private String userName; // optional
+  private String gatewayId; // optional
+  private String orcidId; // optional
+  private List<String> phones; // optional
+  private String country; // optional
+  private List<String> nationality; // optional
+  private String homeOrganization; // optional
+  private String orginationAffiliation; // optional
+  private String creationTime; // required
+  private String lastAccessTime; // required
+  private String validUntil; // required
+  private Status State; // required
+  private String comments; // optional
+  private List<String> labeledURI; // optional
+  private String gpgKey; // optional
+  private String timeZone; // optional
+  private NSFDemographics nsfDemographics; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    USER_MODEL_VERSION((short)1, "userModelVersion"),
+    AIRAVATA_INTERNAL_USER_ID((short)2, "airavataInternalUserId"),
+    USER_ID((short)3, "userId"),
+    EMAILS((short)4, "emails"),
+    USER_NAME((short)5, "userName"),
+    GATEWAY_ID((short)6, "gatewayId"),
+    ORCID_ID((short)7, "orcidId"),
+    PHONES((short)8, "phones"),
+    COUNTRY((short)9, "country"),
+    NATIONALITY((short)10, "nationality"),
+    HOME_ORGANIZATION((short)11, "homeOrganization"),
+    ORGINATION_AFFILIATION((short)12, "orginationAffiliation"),
+    CREATION_TIME((short)13, "creationTime"),
+    LAST_ACCESS_TIME((short)14, "lastAccessTime"),
+    VALID_UNTIL((short)15, "validUntil"),
+    /**
+     * 
+     * @see Status
+     */
+    STATE((short)16, "State"),
+    COMMENTS((short)17, "comments"),
+    LABELED_URI((short)18, "labeledURI"),
+    GPG_KEY((short)19, "gpgKey"),
+    TIME_ZONE((short)20, "timeZone"),
+    NSF_DEMOGRAPHICS((short)21, "nsfDemographics");
+
+    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: // USER_MODEL_VERSION
+          return USER_MODEL_VERSION;
+        case 2: // AIRAVATA_INTERNAL_USER_ID
+          return AIRAVATA_INTERNAL_USER_ID;
+        case 3: // USER_ID
+          return USER_ID;
+        case 4: // EMAILS
+          return EMAILS;
+        case 5: // USER_NAME
+          return USER_NAME;
+        case 6: // GATEWAY_ID
+          return GATEWAY_ID;
+        case 7: // ORCID_ID
+          return ORCID_ID;
+        case 8: // PHONES
+          return PHONES;
+        case 9: // COUNTRY
+          return COUNTRY;
+        case 10: // NATIONALITY
+          return NATIONALITY;
+        case 11: // HOME_ORGANIZATION
+          return HOME_ORGANIZATION;
+        case 12: // ORGINATION_AFFILIATION
+          return ORGINATION_AFFILIATION;
+        case 13: // CREATION_TIME
+          return CREATION_TIME;
+        case 14: // LAST_ACCESS_TIME
+          return LAST_ACCESS_TIME;
+        case 15: // VALID_UNTIL
+          return VALID_UNTIL;
+        case 16: // STATE
+          return STATE;
+        case 17: // COMMENTS
+          return COMMENTS;
+        case 18: // LABELED_URI
+          return LABELED_URI;
+        case 19: // GPG_KEY
+          return GPG_KEY;
+        case 20: // TIME_ZONE
+          return TIME_ZONE;
+        case 21: // NSF_DEMOGRAPHICS
+          return NSF_DEMOGRAPHICS;
+        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 _Fields optionals[] = {_Fields.USER_NAME,_Fields.GATEWAY_ID,_Fields.ORCID_ID,_Fields.PHONES,_Fields.COUNTRY,_Fields.NATIONALITY,_Fields.HOME_ORGANIZATION,_Fields.ORGINATION_AFFILIATION,_Fields.COMMENTS,_Fields.LABELED_URI,_Fields.GPG_KEY,_Fields.TIME_ZONE,_Fields.NSF_DEMOGRAPHICS};
+  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.USER_MODEL_VERSION, new org.apache.thrift.meta_data.FieldMetaData("userModelVersion", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.AIRAVATA_INTERNAL_USER_ID, new org.apache.thrift.meta_data.FieldMetaData("airavataInternalUserId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.USER_ID, new org.apache.thrift.meta_data.FieldMetaData("userId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.EMAILS, new org.apache.thrift.meta_data.FieldMetaData("emails", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.GATEWAY_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ORCID_ID, new org.apache.thrift.meta_data.FieldMetaData("orcidId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PHONES, new org.apache.thrift.meta_data.FieldMetaData("phones", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.COUNTRY, new org.apache.thrift.meta_data.FieldMetaData("country", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NATIONALITY, new org.apache.thrift.meta_data.FieldMetaData("nationality", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.HOME_ORGANIZATION, new org.apache.thrift.meta_data.FieldMetaData("homeOrganization", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ORGINATION_AFFILIATION, new org.apache.thrift.meta_data.FieldMetaData("orginationAffiliation", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        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.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.LAST_ACCESS_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastAccessTime", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.VALID_UNTIL, new org.apache.thrift.meta_data.FieldMetaData("validUntil", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.STATE, new org.apache.thrift.meta_data.FieldMetaData("State", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, Status.class)));
+    tmpMap.put(_Fields.COMMENTS, new org.apache.thrift.meta_data.FieldMetaData("comments", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.LABELED_URI, new org.apache.thrift.meta_data.FieldMetaData("labeledURI", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.GPG_KEY, new org.apache.thrift.meta_data.FieldMetaData("gpgKey", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.TIME_ZONE, new org.apache.thrift.meta_data.FieldMetaData("timeZone", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.NSF_DEMOGRAPHICS, new org.apache.thrift.meta_data.FieldMetaData("nsfDemographics", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, NSFDemographics.class)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserProfile.class, metaDataMap);
+  }
+
+  public UserProfile() {
+    this.userModelVersion = "1.0";
+
+    this.airavataInternalUserId = "DO_NOT_SET_AT_CLIENTS";
+
+  }
+
+  public UserProfile(
+    String userModelVersion,
+    String airavataInternalUserId,
+    String userId,
+    List<String> emails,
+    String creationTime,
+    String lastAccessTime,
+    String validUntil,
+    Status State)
+  {
+    this();
+    this.userModelVersion = userModelVersion;
+    this.airavataInternalUserId = airavataInternalUserId;
+    this.userId = userId;
+    this.emails = emails;
+    this.creationTime = creationTime;
+    this.lastAccessTime = lastAccessTime;
+    this.validUntil = validUntil;
+    this.State = State;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public UserProfile(UserProfile other) {
+    if (other.isSetUserModelVersion()) {
+      this.userModelVersion = other.userModelVersion;
+    }
+    if (other.isSetAiravataInternalUserId()) {
+      this.airavataInternalUserId = other.airavataInternalUserId;
+    }
+    if (other.isSetUserId()) {
+      this.userId = other.userId;
+    }
+    if (other.isSetEmails()) {
+      List<String> __this__emails = new ArrayList<String>(other.emails);
+      this.emails = __this__emails;
+    }
+    if (other.isSetUserName()) {
+      this.userName = other.userName;
+    }
+    if (other.isSetGatewayId()) {
+      this.gatewayId = other.gatewayId;
+    }
+    if (other.isSetOrcidId()) {
+      this.orcidId = other.orcidId;
+    }
+    if (other.isSetPhones()) {
+      List<String> __this__phones = new ArrayList<String>(other.phones);
+      this.phones = __this__phones;
+    }
+    if (other.isSetCountry()) {
+      this.country = other.country;
+    }
+    if (other.isSetNationality()) {
+      List<String> __this__nationality = new ArrayList<String>(other.nationality);
+      this.nationality = __this__nationality;
+    }
+    if (other.isSetHomeOrganization()) {
+      this.homeOrganization = other.homeOrganization;
+    }
+    if (other.isSetOrginationAffiliation()) {
+      this.orginationAffiliation = other.orginationAffiliation;
+    }
+    if (other.isSetCreationTime()) {
+      this.creationTime = other.creationTime;
+    }
+    if (other.isSetLastAccessTime()) {
+      this.lastAccessTime = other.lastAccessTime;
+    }
+    if (other.isSetValidUntil()) {
+      this.validUntil = other.validUntil;
+    }
+    if (other.isSetState()) {
+      this.State = other.State;
+    }
+    if (other.isSetComments()) {
+      this.comments = other.comments;
+    }
+    if (other.isSetLabeledURI()) {
+      List<String> __this__labeledURI = new ArrayList<String>(other.labeledURI);
+      this.labeledURI = __this__labeledURI;
+    }
+    if (other.isSetGpgKey()) {
+      this.gpgKey = other.gpgKey;
+    }
+    if (other.isSetTimeZone()) {
+      this.timeZone = other.timeZone;
+    }
+    if (other.isSetNsfDemographics()) {
+      this.nsfDemographics = new NSFDemographics(other.nsfDemographics);
+    }
+  }
+
+  public UserProfile deepCopy() {
+    return new UserProfile(this);
+  }
+
+  @Override
+  public void clear() {
+    this.userModelVersion = "1.0";
+
+    this.airavataInternalUserId = "DO_NOT_SET_AT_CLIENTS";
+
+    this.userId = null;
+    this.emails = null;
+    this.userName = null;
+    this.gatewayId = null;
+    this.orcidId = null;
+    this.phones = null;
+    this.country = null;
+    this.nationality = null;
+    this.homeOrganization = null;
+    this.orginationAffiliation = null;
+    this.creationTime = null;
+    this.lastAccessTime = null;
+    this.validUntil = null;
+    this.State = null;
+    this.comments = null;
+    this.labeledURI = null;
+    this.gpgKey = null;
+    this.timeZone = null;
+    this.nsfDemographics = null;
+  }
+
+  public String getUserModelVersion() {
+    return this.userModelVersion;
+  }
+
+  public void setUserModelVersion(String userModelVersion) {
+    this.userModelVersion = userModelVersion;
+  }
+
+  public void unsetUserModelVersion() {
+    this.userModelVersion = null;
+  }
+
+  /** Returns true if field userModelVersion is set (has been assigned a value) and false otherwise */
+  public boolean isSetUserModelVersion() {
+    return this.userModelVersion != null;
+  }
+
+  public void setUserModelVersionIsSet(boolean value) {
+    if (!value) {
+      this.userModelVersion = null;
+    }
+  }
+
+  public String getAiravataInternalUserId() {
+    return this.airavataInternalUserId;
+  }
+
+  public void setAiravataInternalUserId(String airavataInternalUserId) {
+    this.airavataInternalUserId = airavataInternalUserId;
+  }
+
+  public void unsetAiravataInternalUserId() {
+    this.airavataInternalUserId = null;
+  }
+
+  /** Returns true if field airavataInternalUserId is set (has been assigned a value) and false otherwise */
+  public boolean isSetAiravataInternalUserId() {
+    return this.airavataInternalUserId != null;
+  }
+
+  public void setAiravataInternalUserIdIsSet(boolean value) {
+    if (!value) {
+      this.airavataInternalUserId = null;
+    }
+  }
+
+  public String getUserId() {
+    return this.userId;
+  }
+
+  public void setUserId(String userId) {
+    this.userId = userId;
+  }
+
+  public void unsetUserId() {
+    this.userId = null;
+  }
+
+  /** Returns true if field userId is set (has been assigned a value) and false otherwise */
+  public boolean isSetUserId() {
+    return this.userId != null;
+  }
+
+  public void setUserIdIsSet(boolean value) {
+    if (!value) {
+      this.userId = null;
+    }
+  }
+
+  public int getEmailsSize() {
+    return (this.emails == null) ? 0 : this.emails.size();
+  }
+
+  public java.util.Iterator<String> getEmailsIterator() {
+    return (this.emails == null) ? null : this.emails.iterator();
+  }
+
+  public void addToEmails(String elem) {
+    if (this.emails == null) {
+      this.emails = new ArrayList<String>();
+    }
+    this.emails.add(elem);
+  }
+
+  public List<String> getEmails() {
+    return this.emails;
+  }
+
+  public void setEmails(List<String> emails) {
+    this.emails = emails;
+  }
+
+  public void unsetEmails() {
+    this.emails = null;
+  }
+
+  /** Returns true if field emails is set (has been assigned a value) and false otherwise */
+  public boolean isSetEmails() {
+    return this.emails != null;
+  }
+
+  public void setEmailsIsSet(boolean value) {
+    if (!value) {
+      this.emails = null;
+    }
+  }
+
+  public String getUserName() {
+    return this.userName;
+  }
+
+  public void setUserName(String userName) {
+    this.userName = userName;
+  }
+
+  public void unsetUserName() {
+    this.userName = null;
+  }
+
+  /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+  public boolean isSetUserName() {
+    return this.userName != null;
+  }
+
+  public void setUserNameIsSet(boolean value) {
+    if (!value) {
+      this.userName = null;
+    }
+  }
+
+  public String getGatewayId() {
+    return this.gatewayId;
+  }
+
+  public void setGatewayId(String gatewayId) {
+    this.gatewayId = gatewayId;
+  }
+
+  public void unsetGatewayId() {
+    this.gatewayId = null;
+  }
+
+  /** Returns true if field gatewayId is set (has been assigned a value) and false otherwise */
+  public boolean isSetGatewayId() {
+    return this.gatewayId != null;
+  }
+
+  public void setGatewayIdIsSet(boolean value) {
+    if (!value) {
+      this.gatewayId = null;
+    }
+  }
+
+  public String getOrcidId() {
+    return this.orcidId;
+  }
+
+  public void setOrcidId(String orcidId) {
+    this.orcidId = orcidId;
+  }
+
+  public void unsetOrcidId() {
+    this.orcidId = null;
+  }
+
+  /** Returns true if field orcidId is set (has been assigned a value) and false otherwise */
+  public boolean isSetOrcidId() {
+    return this.orcidId != null;
+  }
+
+  public void setOrcidIdIsSet(boolean value) {
+    if (!value) {
+      this.orcidId = null;
+    }
+  }
+
+  public int getPhonesSize() {
+    return (this.phones == null) ? 0 : this.phones.size();
+  }
+
+  public java.util.Iterator<String> getPhonesIterator() {
+    return (this.phones == null) ? null : this.phones.iterator();
+  }
+
+  public void addToPhones(String elem) {
+    if (this.phones == null) {
+      this.phones = new ArrayList<String>();
+    }
+    this.phones.add(elem);
+  }
+
+  public List<String> getPhones() {
+    return this.phones;
+  }
+
+  public void setPhones(List<String> phones) {
+    this.phones = phones;
+  }
+
+  public void unsetPhones() {
+    this.phones = null;
+  }
+
+  /** Returns true if field phones is set (has been assigned a value) and false otherwise */
+  public boolean isSetPhones() {
+    return this.phones != null;
+  }
+
+  public void setPhonesIsSet(boolean value) {
+    if (!value) {
+      this.phones = null;
+    }
+  }
+
+  public String getCountry() {
+    return this.country;
+  }
+
+  public void setCountry(String country) {
+    this.country = country;
+  }
+
+  public void unsetCountry() {
+    this.country = null;
+  }
+
+  /** Returns true if field country is set (has been assigned a value) and false otherwise */
+  public boolean isSetCountry() {
+    return this.country != null;
+  }
+
+  public void setCountryIsSet(boolean value) {
+    if (!value) {
+      this.country = null;
+    }
+  }
+
+  public int getNationalitySize() {
+    return (this.nationality == null) ? 0 : this.nationality.size();
+  }
+
+  public java.util.Iterator<String> getNationalityIterator() {
+    return (this.nationality == null) ? null : this.nationality.iterator();
+  }
+
+  public void addToNationality(String elem) {
+    if (this.nationality == null) {
+      this.nationality = new ArrayList<String>();
+    }
+    this.nationality.add(elem);
+  }
+
+  public List<String> getNationality() {
+    return this.nationality;
+  }
+
+  public void setNationality(List<String> nationality) {
+    this.nationality = nationality;
+  }
+
+  public void unsetNationality() {
+    this.nationality = null;
+  }
+
+  /** Returns true if field nationality is set (has been assigned a value) and false otherwise */
+  public boolean isSetNationality() {
+    return this.nationality != null;
+  }
+
+  public void setNationalityIsSet(boolean value) {
+    if (!value) {
+      this.nationality = null;
+    }
+  }
+
+  public String getHomeOrganization() {
+    return this.homeOrganization;
+  }
+
+  public void setHomeOrganization(String homeOrganization) {
+    this.homeOrganization = homeOrganization;
+  }
+
+  public void unsetHomeOrganization() {
+    this.homeOrganization = null;
+  }
+
+  /** Returns true if field homeOrganization is set (has been assigned a value) and false otherwise */
+  public boolean isSetHomeOrganization() {
+    return this.homeOrganization != null;
+  }
+
+  public void setHomeOrganizationIsSet(boolean value) {
+    if (!value) {
+      this.homeOrganization = null;
+    }
+  }
+
+  public String getOrginationAffiliation() {
+    return this.orginationAffiliation;
+  }
+
+  public void setOrginationAffiliation(String orginationAffiliation) {
+    this.orginationAffiliation = orginationAffiliation;
+  }
+
+  public void unsetOrginationAffiliation() {
+    this.orginationAffiliation = null;
+  }
+
+  /** Returns true if field orginationAffiliation is set (has been assigned a value) and false otherwise */
+  public boolean isSetOrginationAffiliation() {
+    return this.orginationAffiliation != null;
+  }
+
+  public void setOrginationAffiliationIsSet(boolean value) {
+    if (!value) {
+      this.orginationAffiliation = null;
+    }
+  }
+
+  public String getCreationTime() {
+    return this.creationTime;
+  }
+
+  public void setCreationTime(String creationTime) {
+    this.creationTime = creationTime;
+  }
+
+  public void unsetCreationTime() {
+    this.creationTime = null;
+  }
+
+  /** Returns true if field creationTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetCreationTime() {
+    return this.creationTime != null;
+  }
+
+  public void setCreationTimeIsSet(boolean value) {
+    if (!value) {
+      this.creationTime = null;
+    }
+  }
+
+  public String getLastAccessTime() {
+    return this.lastAccessTime;
+  }
+
+  public void setLastAccessTime(String lastAccessTime) {
+    this.lastAccessTime = lastAccessTime;
+  }
+
+  public void unsetLastAccessTime() {
+    this.lastAccessTime = null;
+  }
+
+  /** Returns true if field lastAccessTime is set (has been assigned a value) and false otherwise */
+  public boolean isSetLastAccessTime() {
+    return this.lastAccessTime != null;
+  }
+
+  public void setLastAccessTimeIsSet(boolean value) {
+    if (!value) {
+      this.lastAccessTime = null;
+    }
+  }
+
+  public String getValidUntil() {
+    return this.validUntil;
+  }
+
+  public void setValidUntil(String validUntil) {
+    this.validUntil = validUntil;
+  }
+
+  public void unsetValidUntil() {
+    this.validUntil = null;
+  }
+
+  /** Returns true if field validUntil is set (has been assigned a value) and false otherwise */
+  public boolean isSetValidUntil() {
+    return this.validUntil != null;
+  }
+
+  public void setValidUntilIsSet(boolean value) {
+    if (!value) {
+      this.validUntil = null;
+    }
+  }
+
+  /**
+   * 
+   * @see Status
+   */
+  public Status getState() {
+    return this.State;
+  }
+
+  /**
+   * 
+   * @see Status
+   */
+  public void setState(Status State) {
+    this.State = State;
+  }
+
+  public void unsetState() {
+    this.State = null;
+  }
+
+  /** Returns true if field State is set (has been assigned a value) and false otherwise */
+  public boolean isSetState() {
+    return this.State != null;
+  }
+
+  public void setStateIsSet(boolean value) {
+    if (!value) {
+      this.State = null;
+    }
+  }
+
+  public String getComments() {
+    return this.comments;
+  }
+
+  public void setComments(String comments) {
+    this.comments = comments;
+  }
+
+  public void unsetComments() {
+    this.comments = null;
+  }
+
+  /** Returns true if field comments is set (has been assigned a value) and false otherwise */
+  public boolean isSetComments() {
+    return this.comments != null;
+  }
+
+  public void setCommentsIsSet(boolean value) {
+    if (!value) {
+      this.comments = null;
+    }
+  }
+
+  public int getLabeledURISize() {
+    return (this.labeledURI == null) ? 0 : this.labeledURI.size();
+  }
+
+  public java.util.Iterator<String> getLabeledURIIterator() {
+    return (this.labeledURI == null) ? null : this.labeledURI.iterator();
+  }
+
+  public void addToLabeledURI(String elem) {
+    if (this.labeledURI == null) {
+      this.labeledURI = new ArrayList<String>();
+    }
+    this.labeledURI.add(elem);
+  }
+
+  public List<String> getLabeledURI() {
+    return this.labeledURI;
+  }
+
+  public void setLabeledURI(List<String> labeledURI) {
+    this.labeledURI = labeledURI;
+  }
+
+  public void unsetLabeledURI() {
+    this.labeledURI = null;
+  }
+
+  /** Returns true if field labeledURI is set (has been assigned a value) and false otherwise */
+  public boolean isSetLabeledURI() {
+    return this.labeledURI != null;
+  }
+
+  public void setLabeledURIIsSet(boolean value) {
+    if (!value) {
+      this.labeledURI = null;
+    }
+  }
+
+  public String getGpgKey() {
+    return this.gpgKey;
+  }
+
+  public void setGpgKey(String gpgKey) {
+    this.gpgKey = gpgKey;
+  }
+
+  public void unsetGpgKey() {
+    this.gpgKey = null;
+  }
+
+  /** Returns true if field gpgKey is set (has been assigned a value) and false otherwise */
+  public boolean isSetGpgKey() {
+    return this.gpgKey != null;
+  }
+
+  public void setGpgKeyIsSet(boolean value) {
+    if (!value) {
+      this.gpgKey = null;
+    }
+  }
+
+  public String getTimeZone() {
+    return this.timeZone;
+  }
+
+  public void setTimeZone(String timeZone) {
+    this.timeZone = timeZone;
+  }
+
+  public void unsetTimeZone() {
+    this.timeZone = null;
+  }
+
+  /** Returns true if field timeZone is set (has been assigned a value) and false otherwise */
+  public boolean isSetTimeZone() {
+    return this.timeZone != null;
+  }
+
+  public void setTimeZoneIsSet(boolean value) {
+    if (!value) {
+      this.timeZone = null;
+    }
+  }
+
+  public NSFDemographics getNsfDemographics() {
+    return this.nsfDemographics;
+  }
+
+  public void setNsfDemographics(NSFDemographics nsfDemographics) {
+    this.nsfDemographics = nsfDemographics;
+  }
+
+  public void unsetNsfDemographics() {
+    this.nsfDemographics = null;
+  }
+
+  /** Returns true if field nsfDemographics is set (has been assigned a value) and false otherwise */
+  public boolean isSetNsfDemographics() {
+    return this.nsfDemographics != null;
+  }
+
+  public void setNsfDemographicsIsSet(boolean value) {
+    if (!value) {
+      this.nsfDemographics = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case USER_MODEL_VERSION:
+      if (value == null) {
+        unsetUserModelVersion();
+      } else {
+        setUserModelVersion((String)value);
+      }
+      break;
+
+    case AIRAVATA_INTERNAL_USER_ID:
+      if (value == null) {
+        unsetAiravataInternalUserId();
+      } else {
+        setAiravataInternalUserId((String)value);
+      }
+      break;
+
+    case USER_ID:
+      if (value == null) {
+        unsetUserId();
+      } else {
+        setUserId((String)value);
+      }
+      break;
+
+    case EMAILS:
+      if (value == null) {
+        unsetEmails();
+      } else {
+        setEmails((List<String>)value);
+      }
+      break;
+
+    case USER_NAME:
+      if (value == null) {
+        unsetUserName();
+      } else {
+        setUserName((String)value);
+      }
+      break;
+
+    case GATEWAY_ID:
+      if (value == null) {
+        unsetGatewayId();
+      } else {
+        setGatewayId((String)value);
+      }
+      break;
+
+    case ORCID_ID:
+      if (value == null) {
+        unsetOrcidId();
+      } else {
+        setOrcidId((String)value);
+      }
+      break;
+
+    case PHONES:
+      if (value == null) {
+        unsetPhones();
+      } else {
+        setPhones((List<String>)value);
+      }
+      break;
+
+    case COUNTRY:
+      if (value == null) {
+        unsetCountry();
+      } else {
+        setCountry((String)value);
+      }
+      break;
+
+    case NATIONALITY:
+      if (value == null) {
+        unsetNationality();
+      } else {
+        setNationality((List<String>)value);
+      }
+      break;
+
+    case HOME_ORGANIZATION:
+      if (value == null) {
+        unsetHomeOrganization();
+      } else {
+        setHomeOrganization((String)value);
+      }
+      break;
+
+    case ORGINATION_AFFILIATION:
+      if (value == null) {
+        unsetOrginationAffiliation();
+      } else {
+        setOrginationAffiliation((String)value);
+      }
+      break;
+
+    case CREATION_TIME:
+      if (value == null) {
+        unsetCreationTime();
+      } else {
+        setCreationTime((String)value);
+      }
+      break;
+
+    case LAST_ACCESS_TIME:
+      if (value == null) {
+        unsetLastAccessTime();
+      } else {
+        setLastAccessTime((String)value);
+      }
+      break;
+
+    case VALID_UNTIL:
+      if (value == null) {
+        unsetValidUntil();
+      } else {
+        setValidUntil((String)value);
+      }
+      break;
+
+    case STATE:
+      if (value == null) {
+        unsetState();
+      } else {
+        setState((Status)value);
+      }
+      break;
+
+    case COMMENTS:
+      if (value == null) {
+        unsetComments();
+      } else {
+        setComments((String)value);
+      }
+      break;
+
+    case LABELED_URI:
+      if (value == null) {
+        unsetLabeledURI();
+      } else {
+        setLabeledURI((List<String>)value);
+      }
+      break;
+
+    case GPG_KEY:
+      if (value == null) {
+        unsetGpgKey();
+      } else {
+        setGpgKey((String)value);
+      }
+      break;
+
+    case TIME_ZONE:
+      if (value == null) {
+        unsetTimeZone();
+      } else {
+        setTimeZone((String)value);
+      }
+      break;
+
+    case NSF_DEMOGRAPHICS:
+      if (value == null) {
+        unsetNsfDemographics();
+      } else {
+        setNsfDemographics((NSFDemographics)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case USER_MODEL_VERSION:
+      return getUserModelVersion();
+
+    case AIRAVATA_INTERNAL_USER_ID:
+      return getAiravataInternalUserId();
+
+    case USER_ID:
+      return getUserId();
+
+    case EMAILS:
+      return getEmails();
+
+    case USER_NAME:
+      return getUserName();
+
+    case GATEWAY_ID:
+      return getGatewayId();
+
+    case ORCID_ID:
+      return getOrcidId();
+
+    case PHONES:
+      return getPhones();
+
+    case COUNTRY:
+      return getCountry();
+
+    case NATIONALITY:
+      return getNationality();
+
+    case HOME_ORGANIZATION:
+      return getHomeOrganization();
+
+    case ORGINATION_AFFILIATION:
+      return getOrginationAffiliation();
+
+    case CREATION_TIME:
+      return getCreationTime();
+
+    case LAST_ACCESS_TIME:
+      return getLastAccessTime();
+
+    case VALID_UNTIL:
+      return getValidUntil();
+
+    case STATE:
+      return getState();
+
+    case COMMENTS:
+      return getComments();
+
+    case LABELED_URI:
+      return getLabeledURI();
+
+    case GPG_KEY:
+      return getGpgKey();
+
+    case TIME_ZONE:
+      return getTimeZone();
+
+    case NSF_DEMOGRAPHICS:
+      return getNsfDemographics();
+
+    }
+    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 USER_MODEL_VERSION:
+      return isSetUserModelVersion();
+    case AIRAVATA_INTERNAL_USER_ID:
+      return isSetAiravataInternalUserId();
+    case USER_ID:
+      return isSetUserId();
+    case EMAILS:
+      return isSetEmails();
+    case USER_NAME:
+      return isSetUserName();
+    case GATEWAY_ID:
+      return isSetGatewayId();
+    case ORCID_ID:
+      return isSetOrcidId();
+    case PHONES:
+      return isSetPhones();
+    case COUNTRY:
+      return isSetCountry();
+    case NATIONALITY:
+      return isSetNationality();
+    case HOME_ORGANIZATION:
+      return isSetHomeOrganization();
+    case ORGINATION_AFFILIATION:
+      return isSetOrginationAffiliation();
+    case CREATION_TIME:
+      return isSetCreationTime();
+    case LAST_ACCESS_TIME:
+      return isSetLastAccessTime();
+    case VALID_UNTIL:
+      return isSetValidUntil();
+    case STATE:
+      return isSetState();
+    case COMMENTS:
+      return isSetComments();
+    case LABELED_URI:
+      return isSetLabeledURI();
+    case GPG_KEY:
+      return isSetGpgKey();
+    case TIME_ZONE:
+      return isSetTimeZone();
+    case NSF_DEMOGRAPHICS:
+      return isSetNsfDemographics();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof UserProfile)
+      return this.equals((UserProfile)that);
+    return false;
+  }
+
+  public boolean equals(UserProfile that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_userModelVersion = true && this.isSetUserModelVersion();
+    boolean that_present_userModelVersion = true && that.isSetUserModelVersion();
+    if (this_present_userModelVersion || that_present_userModelVersion) {
+      if (!(this_present_userModelVersion && that_present_userModelVersion))
+        return false;
+      if (!this.userModelVersion.equals(that.userModelVersion))
+        return false;
+    }
+
+    boolean this_present_airavataInternalUserId = true && this.isSetAiravataInternalUserId();
+    boolean that_present_airavataInternalUserId = true && that.isSetAiravataInternalUserId();
+    if (this_present_airavataInternalUserId || that_present_airavataInternalUserId) {
+      if (!(this_present_airavataInternalUserId && that_present_airavataInternalUserId))
+        return false;
+      if (!this.airavataInternalUserId.equals(that.airavataInternalUserId))
+        return false;
+    }
+
+    boolean this_present_userId = true && this.isSetUserId();
+    boolean that_present_userId = true && that.isSetUserId();
+    if (this_present_userId || that_present_userId) {
+      if (!(this_present_userId && that_present_userId))
+        return false;
+      if (!this.userId.equals(that.userId))
+        return false;
+    }
+
+    boolean this_present_emails = true && this.isSetEmails();
+    boolean that_present_emails = true && that.isSetEmails();
+    if (this_present_emails || that_present_emails) {
+      if (!(this_present_emails && that_present_emails))
+        return false;
+      if (!this.emails.equals(that.emails))
+        return false;
+    }
+
+    boolean this_present_userName = true && this.isSetUserName();
+    boolean that_present_userName = true && that.isSetUserName();
+    if (this_present_userName || that_present_userName) {
+      if (!(this_present_userName && that_present_userName))
+        return false;
+      if (!this.userName.equals(that.userName))
+        return false;
+    }
+
+    boolean this_present_gatewayId = true && this.isSetGatewayId();
+    boolean that_present_gatewayId = true && that.isSetGatewayId();
+    if (this_present_gatewayId || that_present_gatewayId) {
+      if (!(this_present_gatewayId && that_present_gatewayId))
+        return false;
+      if (!this.gatewayId.equals(that.gatewayId))
+        return false;
+    }
+
+    boolean this_present_orcidId = true && this.isSetOrcidId();
+    boolean that_present_orcidId = true && that.isSetOrcidId();
+    if (this_present_orcidId || that_present_orcidId) {
+      if (!(this_present_orcidId && that_present_orcidId))
+        return false;
+      if (!this.orcidId.equals(that.orcidId))
+        return false;
+    }
+
+    boolean this_present_phones = true && this.isSetPhones();
+    boolean that_present_phones = true && that.isSetPhones();
+    if (this_present_phones || that_present_phones) {
+      if (!(this_present_phones && that_present_phones))
+        return false;
+      if (!this.phones.equals(that.phones))
+        return false;
+    }
+
+    boolean this_present_country = true && this.isSetCountry();
+    boolean that_present_country = true && that.isSetCountry();
+    if (this_present_country || that_present_country) {
+      if (!(this_present_country && that_present_country))
+        return false;
+      if (!this.country.equals(that.country))
+        return false;
+    }
+
+    boolean this_present_nationality = true && this.isSetNationality();
+    boolean that_present_nationality = true && that.isSetNationality();
+    if (this_present_nationality || that_present_nationality) {
+      if (!(this_present_nationality && that_present_nationality))
+        return false;
+      if (!this.nationality.equals(that.nationality))
+        return false;
+    }
+
+    boolean this_present_homeOrganization = true && this.isSetHomeOrganization();
+    boolean that_present_homeOrganization = true && that.isSetHomeOrganization();
+    if (this_present_homeOrganization || that_present_homeOrganization) {
+      if (!(this_present_homeOrganization && that_present_homeOrganization))
+        return false;
+      if (!this.homeOrganization.equals(that.homeOrganization))
+        return false;
+    }
+
+    boolean this_present_orginationAffiliation = true && this.isSetOrginationAffiliation();
+    boolean that_present_orginationAffiliation = true && that.isSetOrginationAffiliation();
+    if (this_present_orginationAffiliation || that_present_orginationAffiliation) {
+      if (!(this_present_orginationAffiliation && that_present_orginationAffiliation))
+        return false;
+      if (!this.orginationAffiliation.equals(that.orginationAffiliation))
+        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.equals(that.creationTime))
+        return false;
+    }
+
+    boolean this_present_lastAccessTime = true && this.isSetLastAccessTime();
+    boolean that_present_lastAccessTime = true && that.isSetLastAccessTime();
+    if (this_present_lastAccessTime || that_present_lastAccessTime) {
+      if (!(this_present_lastAccessTime && that_present_lastAccessTime))
+        return false;
+      if (!this.lastAccessTime.equals(that.lastAccessTime))
+        return false;
+    }
+
+    boolean this_present_validUntil = true && this.isSetValidUntil();
+    boolean that_present_validUntil = true && that.isSetValidUntil();
+    if (this_present_validUntil || that_present_validUntil) {
+      if (!(this_present_validUntil && that_present_validUntil))
+        return false;
+      if (!this.validUntil.equals(that.validUntil))
+        return false;
+    }
+
+    boolean this_present_State = true && this.isSetState();
+    boolean that_present_State = true && that.isSetState();
+    if (this_present_State || that_present_State) {
+      if (!(this_present_State && that_present_State))
+        return false;
+      if (!this.State.equals(that.State))
+        return false;
+    }
+
+    boolean this_present_comments = true && this.isSetComments();
+    boolean that_present_comments = true && that.isSetComments();
+    if (this_present_comments || that_present_comments) {
+      if (!(this_present_comments && that_present_comments))
+        return false;
+      if (!this.comments.equals(that.comments))
+        return false;
+    }
+
+    boolean this_present_labeledURI = true && this.isSetLabeledURI();
+    boolean that_present_labeledURI = true && that.isSetLabeledURI();
+    if (this_present_labeledURI || that_present_labeledURI) {
+      if (!(this_present_labeledURI && that_present_labeledURI))
+        return false;
+      if (!this.labeledURI.equals(that.labeledURI))
+        return false;
+    }
+
+    boolean this_present_gpgKey = true && this.isSetGpgKey();
+    boolean that_present_gpgKey = true && that.isSetGpgKey();
+    if (this_present_gpgKey || that_present_gpgKey) {
+      if (!(this_present_gpgKey && that_present_gpgKey))
+        return false;
+      if (!this.gpgKey.equals(that.gpgKey))
+        return false;
+    }
+
+    boolean this_present_timeZone = true && this.isSetTimeZone();
+    boolean that_present_timeZone = true && that.isSetTimeZone();
+    if (this_present_timeZone || that_present_timeZone) {
+      if (!(this_present_timeZone && that_present_timeZone))
+        return false;
+      if (!this.timeZone.equals(that.timeZone))
+        return false;
+    }
+
+    boolean this_present_nsfDemographics = true && this.isSetNsfDemographics();
+    boolean that_present_nsfDemographics = true && that.isSetNsfDemographics();
+    if (this_present_nsfDemographics || that_present_nsfDemographics) {
+      if (!(this_present_nsfDemographics && that_present_nsfDemographics))
+        return false;
+      if (!this.nsfDemographics.equals(that.nsfDemographics))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_userModelVersion = true && (isSetUserModelVersion());
+    list.add(present_userModelVersion);
+    if (present_userModelVersion)
+      list.add(userModelVersion);
+
+    boolean present_airavataInternalUserId = true && (isSetAiravataInternalUserId());
+    list.add(present_airavataInternalUserId);
+    if (present_airavataInternalUserId)
+      list.add(airavataInternalUserId);
+
+    boolean present_userId = true && (isSetUserId());
+    list.add(present_userId);
+    if (present_userId)
+      list.add(userId);
+
+    boolean present_emails = true && (isSetEmails());
+    list.add(present_emails);
+    if (present_emails)
+      list.add(emails);
+
+    boolean present_userName = true && (isSetUserName());
+    list.add(present_userName);
+    if (present_userName)
+      list.add(userName);
+
+    boolean present_gatewayId = true && (isSetGatewayId());
+    list.add(present_gatewayId);
+    if (present_gatewayId)
+      list.add(gatewayId);
+
+    boolean present_orcidId = true && (isSetOrcidId());
+    list.add(present_orcidId);
+    if (present_orcidId)
+      list.add(orcidId);
+
+    boolean present_phones = true && (isSetPhones());
+    list.add(present_phones);
+    if (present_phones)
+      list.add(phones);
+
+    boolean present_country = true && (isSetCountry());
+    list.add(present_country);
+    if (present_country)
+      list.add(country);
+
+    boolean present_nationality = true && (isSetNationality());
+    list.add(present_nationality);
+    if (present_nationality)
+      list.add(nationality);
+
+    boolean present_homeOrganization = true && (isSetHomeOrganization());
+    list.add(present_homeOrganization);
+    if (present_homeOrganization)
+      list.add(homeOrganization);
+
+    boolean present_orginationAffiliation = true && (isSetOrginationAffiliation());
+    list.add(present_orginationAffiliation);
+    if (present_orginationAffiliation)
+      list.add(orginationAffiliation);
+
+    boolean present_creationTime = true && (isSetCreationTime());
+    list.add(present_creationTime);
+    if (present_creationTime)
+      list.add(creationTime);
+
+    boolean present_lastAccessTime = true && (isSetLastAccessTime());
+    list.add(present_lastAccessTime);
+    if (present_lastAccessTime)
+      list.add(lastAccessTime);
+
+    boolean present_validUntil = true && (isSetValidUntil());
+    list.add(present_validUntil);
+    if (present_validUntil)
+      list.add(validUntil);
+
+    boolean present_State = true && (isSetState());
+    list.add(present_State);
+    if (present_State)
+      list.add(State.getValue());
+
+    boolean present_comments = true && (isSetComments());
+    list.add(present_comments);
+    if (present_comments)
+      list.add(comments);
+
+    boolean present_labeledURI = true && (isSetLabeledURI());
+    list.add(present_labeledURI);
+    if (present_labeledURI)
+      list.add(labeledURI);
+
+    boolean present_gpgKey = true && (isSetGpgKey());
+    list.add(present_gpgKey);
+    if (present_gpgKey)
+      list.add(gpgKey);
+
+    boolean present_timeZone = true && (isSetTimeZone());
+    list.add(present_timeZone);
+    if (present_timeZone)
+      list.add(timeZone);
+
+    boolean present_nsfDemographics = true && (isSetNsfDemographics());
+    list.add(present_nsfDemographics);
+    if (present_nsfDemographics)
+      list.add(nsfDemographics);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(UserProfile other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetUserModelVersion()).compareTo(other.isSetUserModelVersion());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUserModelVersion()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userModelVersion, other.userModelVersion);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAiravataInternalUserId()).compareTo(other.isSetAiravataInternalUserId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAiravataInternalUserId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.airavataInternalUserId, other.airavataInternalUserId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetUserId()).compareTo(other.isSetUserId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUserId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userId, other.userId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetEmails()).compareTo(other.isSetEmails());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetEmails()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.emails, other.emails);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUserName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetGatewayId()).compareTo(other.isSetGatewayId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGatewayId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayId, other.gatewayId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetOrcidId()).compareTo(other.isSetOrcidId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetOrcidId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.orcidId, other.orcidId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetPhones()).compareTo(other.isSetPhones());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPhones()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.phones, other.phones);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetCountry()).compareTo(other.isSetCountry());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetCountry()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.country, other.country);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetNationality()).compareTo(other.isSetNationality());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNationality()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nationality, other.nationality);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetHomeOrganization()).compareTo(other.isSetHomeOrganization());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetHomeOrganization()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.homeOrganization, other.homeOrganization);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetOrginationAffiliation()).compareTo(other.isSetOrginationAffiliation());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetOrginationAffiliation()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.orginationAffiliation, other.orginationAffiliation);
+      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(isSetLastAccessTime()).compareTo(other.isSetLastAccessTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLastAccessTime()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastAccessTime, other.lastAccessTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetValidUntil()).compareTo(other.isSetValidUntil());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetValidUntil()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validUntil, other.validUntil);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetState()).compareTo(other.isSetState());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetState()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.State, other.State);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetComments()).compareTo(other.isSetComments());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetComments()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.comments, other.comments);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetLabeledURI()).compareTo(other.isSetLabeledURI());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetLabeledURI()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.labeledURI, other.labeledURI);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetGpgKey()).compareTo(other.isSetGpgKey());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGpgKey()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gpgKey, other.gpgKey);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetTimeZone()).compareTo(other.isSetTimeZone());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTimeZone()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.timeZone, other.timeZone);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetNsfDemographics()).compareTo(other.isSetNsfDemographics());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNsfDemographics()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nsfDemographics, other.nsfDemographics);
+      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("UserProfile(");
+    boolean first = true;
+
+    sb.append("userModelVersion:");
+    if (this.userModelVersion == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.userModelVersion);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("airavataInternalUserId:");
+    if (this.airavataInternalUserId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.airavataInternalUserId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("userId:");
+    if (this.userId == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.userId);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("emails:");
+    if (this.emails == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.emails);
+    }
+    first = false;
+    if (isSetUserName()) {
+      if (!first) sb.append(", ");
+      sb.append("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      first = false;
+    }
+    if (isSetGatewayId()) {
+      if (!first) sb.append(", ");
+      sb.append("gatewayId:");
+      if (this.gatewayId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gatewayId);
+      }
+      first = false;
+    }
+    if (isSetOrcidId()) {
+      if (!first) sb.append(", ");
+      sb.append("orcidId:");
+      if (this.orcidId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.orcidId);
+      }
+      first = false;
+    }
+    if (isSetPhones()) {
+      if (!first) sb.append(", ");
+      sb.append("phones:");
+      if (this.phones == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.phones);
+      }
+      first = false;
+    }
+    if (isSetCountry()) {
+      if (!first) sb.append(", ");
+      sb.append("country:");
+      if (this.country == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.country);
+      }
+      first = false;
+    }
+    if (isSetNationality()) {
+      if (!first) sb.append(", ");
+      sb.append("nationality:");
+      if (this.nationality == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.nationality);
+      }
+      first = false;
+    }
+    if (isSetHomeOrganization()) {
+      if (!first) sb.append(", ");
+      sb.append("homeOrganization:");
+      if (this.homeOrganization == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.homeOrganization);
+      }
+      first = false;
+    }
+    if (isSetOrginationAffiliation()) {
+      if (!first) sb.append(", ");
+      sb.append("orginationAffiliation:");
+      if (this.orginationAffiliation == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.orginationAffiliation);
+      }
+      first = false;
+    }
+    if (!first) sb.append(", ");
+    sb.append("creationTime:");
+    if (this.creationTime == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.creationTime);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("lastAccessTime:");
+    if (this.lastAccessTime == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.lastAccessTime);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("validUntil:");
+    if (this.validUntil == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.validUntil);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("State:");
+    if (this.State == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.State);
+    }
+    first = false;
+    if (isSetComments()) {
+      if (!first) sb.append(", ");
+      sb.append("comments:");
+      if (this.comments == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.comments);
+      }
+      first = false;
+    }
+    if (isSetLabeledURI()) {
+      if (!first) sb.append(", ");
+      sb.append("labeledURI:");
+      if (this.labeledURI == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.labeledURI);
+      }
+      first = false;
+    }
+    if (isSetGpgKey()) {
+      if (!first) sb.append(", ");
+      sb.append("gpgKey:");
+      if (this.gpgKey == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.gpgKey);
+      }
+      first = false;
+    }
+    if (isSetTimeZone()) {
+      if (!first) sb.append(", ");
+      sb.append("timeZone:");
+      if (this.timeZone == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.timeZone);
+      }
+      first = false;
+    }
+    if (isSetNsfDemographics()) {
+      if (!first) sb.append(", ");
+      sb.append("nsfDemographics:");
+      if (this.nsfDemographics == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.nsfDemographics);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetUserModelVersion()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'userModelVersion' is unset! Struct:" + toString());
+    }
+
+    if (!isSetAiravataInternalUserId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'airavataInternalUserId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetUserId()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'userId' is unset! Struct:" + toString());
+    }
+
+    if (!isSetEmails()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'emails' is unset! Struct:" + toString());
+    }
+
+    if (!isSetCreationTime()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'creationTime' is unset! Struct:" + toString());
+    }
+
+    if (!isSetLastAccessTime()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'lastAccessTime' is unset! Struct:" + toString());
+    }
+
+    if (!isSetValidUntil()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'validUntil' is unset! Struct:" + toString());
+    }
+
+    if (!isSetState()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'State' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+    if (nsfDemographics != null) {
+      nsfDemographics.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 {
+      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 UserProfileStandardSchemeFactory implements SchemeFactory {
+    public UserProfileStandardScheme getScheme() {
+      return new UserProfileStandardScheme();
+    }
+  }
+
+  private static class UserProfileStandardScheme extends StandardScheme<UserProfile> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, UserProfile 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: // USER_MODEL_VERSION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.userModelVersion = iprot.readString();
+              struct.setUserModelVersionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // AIRAVATA_INTERNAL_USER_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.airavataInternalUserId = iprot.readString();
+              struct.setAiravataInternalUserIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // USER_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.userId = iprot.readString();
+              struct.setUserIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // EMAILS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list24 = iprot.readListBegin();
+                struct.emails = new ArrayList<String>(_list24.size);
+                String _elem25;
+                for (int _i26 = 0; _i26 < _list24.size; ++_i26)
+                {
+                  _elem25 = iprot.readString();
+                  struct.emails.add(_elem25);
+                }
+                iprot.readListEnd();
+              }
+              struct.setEmailsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // USER_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.userName = iprot.readString();
+              struct.setUserNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // GATEWAY_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.gatewayId = iprot.readString();
+              struct.setGatewayIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // ORCID_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.orcidId = iprot.readString();
+              struct.setOrcidIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 8: // PHONES
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list27 = iprot.readListBegin();
+                struct.phones = new ArrayList<String>(_list27.size);
+                String _elem28;
+                for (int _i29 = 0; _i29 < _list27.size; ++_i29)
+                {
+                  _elem28 = iprot.readString();
+                  struct.phones.add(_elem28);
+                }
+                iprot.readListEnd();
+              }
+              struct.setPhonesIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 9: // COUNTRY
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.country = iprot.readString();
+              struct.setCountryIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 10: // NATIONALITY
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list30 = iprot.readListBegin();
+                struct.nationality = new ArrayList<String>(_list30.size);
+                String _elem31;
+                for (int _i32 = 0; _i32 < _list30.size; ++_i32)
+                {
+                  _elem31 = iprot.readString();
+                  struct.nationality.add(_elem31);
+                }
+                iprot.readListEnd();
+              }
+              struct.setNationalityIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 11: // HOME_ORGANIZATION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.homeOrganization = iprot.readString();
+              struct.setHomeOrganizationIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 12: // ORGINATION_AFFILIATION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.orginationAffiliation = iprot.readString();
+              struct.setOrginationAffiliationIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 13: // CREATION_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.creationTime = iprot.readString();
+              struct.setCreationTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 14: // LAST_ACCESS_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.lastAccessTime = iprot.readString();
+              struct.setLastAccessTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 15: // VALID_UNTIL
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.validUntil = iprot.readString();
+              struct.setValidUntilIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 16: // STATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.State = org.apache.airavata.model.user.Status.findByValue(iprot.readI32());
+              struct.setStateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 17: // COMMENTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.comments = iprot.readString();
+              struct.setCommentsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 18: // LABELED_URI
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list33 = iprot.readListBegin();
+                struct.labeledURI = new ArrayList<String>(_list33.size);
+                String _elem34;
+                for (int _i35 = 0; _i35 < _list33.size; ++_i35)
+                {
+                  _elem34 = iprot.readString();
+                  struct.labeledURI.add(_elem34);
+                }
+                iprot.readListEnd();
+              }
+              struct.setLabeledURIIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 19: // GPG_KEY
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.gpgKey = iprot.readString();
+              struct.setGpgKeyIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 20: // TIME_ZONE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.timeZone = iprot.readString();
+              struct.setTimeZoneIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 21: // NSF_DEMOGRAPHICS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.nsfDemographics = new NSFDemographics();
+              struct.nsfDemographics.read(iprot);
+              struct.setNsfDemographicsIsSet(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, UserProfile struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.userModelVersion != null) {
+        oprot.writeFieldBegin(USER_MODEL_VERSION_FIELD_DESC);
+        oprot.writeString(struct.userModelVersion);
+        oprot.writeFieldEnd();
+      }
+      if (struct.airavataInternalUserId != null) {
+        oprot.writeFieldBegin(AIRAVATA_INTERNAL_USER_ID_FIELD_DESC);
+        oprot.writeString(struct.airavataInternalUserId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.userId != null) {
+        oprot.writeFieldBegin(USER_ID_FIELD_DESC);
+        oprot.writeString(struct.userId);
+        oprot.writeFieldEnd();
+      }
+      if (struct.emails != null) {
+        oprot.writeFieldBegin(EMAILS_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.emails.size()));
+          for (String _iter36 : struct.emails)
+          {
+            oprot.writeString(_iter36);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      if (struct.userName != null) {
+        if (struct.isSetUserName()) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.gatewayId != null) {
+        if (struct.isSetGatewayId()) {
+          oprot.writeFieldBegin(GATEWAY_ID_FIELD_DESC);
+          oprot.writeString(struct.gatewayId);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.orcidId != null) {
+        if (struct.isSetOrcidId()) {
+          oprot.writeFieldBegin(ORCID_ID_FIELD_DESC);
+          oprot.writeString(struct.orcidId);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.phones != null) {
+        if (struct.isSetPhones()) {
+          oprot.writeFieldBegin(PHONES_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.phones.size()));
+            for (String _iter37 : struct.phones)
+            {
+              oprot.writeString(_iter37);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.country != null) {
+        if (struct.isSetCountry()) {
+          oprot.writeFieldBegin(COUNTRY_FIELD_DESC);
+          oprot.writeString(struct.country);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.nationality != null) {
+        if (struct.isSetNationality()) {
+          oprot.writeFieldBegin(NATIONALITY_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.nationality.size()));
+            for (String _iter38 : struct.nationality)
+            {
+              oprot.writeString(_iter38);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.homeOrganization != null) {
+        if (struct.isSetHomeOrganization()) {
+          oprot.writeFieldBegin(HOME_ORGANIZATION_FIELD_DESC);
+          oprot.writeString(struct.homeOrganization);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.orginationAffiliation != null) {
+        if (struct.isSetOrginationAffiliation()) {
+          oprot.writeFieldBegin(ORGINATION_AFFILIATION_FIELD_DESC);
+          oprot.writeString(struct.orginationAffiliation);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.creationTime != null) {
+        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
+        oprot.writeString(struct.creationTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.lastAccessTime != null) {
+        oprot.writeFieldBegin(LAST_ACCESS_TIME_FIELD_DESC);
+        oprot.writeString(struct.lastAccessTime);
+        oprot.writeFieldEnd();
+      }
+      if (struct.validUntil != null) {
+        oprot.writeFieldBegin(VALID_UNTIL_FIELD_DESC);
+        oprot.writeString(struct.validUntil);
+        oprot.writeFieldEnd();
+      }
+      if (struct.State != null) {
+        oprot.writeFieldBegin(STATE_FIELD_DESC);
+        oprot.writeI32(struct.State.getValue());
+        oprot.writeFieldEnd();
+      }
+      if (struct.comments != null) {
+        if (struct.isSetComments()) {
+          oprot.writeFieldBegin(COMMENTS_FIELD_DESC);
+          oprot.writeString(struct.comments);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.labeledURI != null) {
+        if (struct.isSetLabeledURI()) {
+          oprot.writeFieldBegin(LABELED_URI_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.labeledURI.size()));
+            for (String _iter39 : struct.labeledURI)
+            {
+              oprot.writeString(_iter39);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.gpgKey != null) {
+        if (struct.isSetGpgKey()) {
+          oprot.writeFieldBegin(GPG_KEY_FIELD_DESC);
+          oprot.writeString(struct.gpgKey);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.timeZone != null) {
+        if (struct.isSetTimeZone()) {
+          oprot.writeFieldBegin(TIME_ZONE_FIELD_DESC);
+          oprot.writeString(struct.timeZone);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.nsfDemographics != null) {
+        if (struct.isSetNsfDemographics()) {
+          oprot.writeFieldBegin(NSF_DEMOGRAPHICS_FIELD_DESC);
+          struct.nsfDemographics.write(oprot);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class UserProfileTupleSchemeFactory implements SchemeFactory {
+    public UserProfileTupleScheme getScheme() {
+      return new UserProfileTupleScheme();
+    }
+  }
+
+  private static class UserProfileTupleScheme extends TupleScheme<UserProfile> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, UserProfile struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.userModelVersion);
+      oprot.writeString(struct.airavataInternalUserId);
+      oprot.writeString(struct.userId);
+      {
+        oprot.writeI32(struct.emails.size());
+        for (String _iter40 : struct.emails)
+        {
+          oprot.writeString(_iter40);
+        }
+      }
+      oprot.writeString(struct.creationTime);
+      oprot.writeString(struct.lastAccessTime);
+      oprot.writeString(struct.validUntil);
+      oprot.writeI32(struct.State.getValue());
+      BitSet optionals = new BitSet();
+      if (struct.isSetUserName()) {
+        optionals.set(0);
+      }
+      if (struct.isSetGatewayId()) {
+        optionals.set(1);
+      }
+      if (struct.isSetOrcidId()) {
+        optionals.set(2);
+      }
+      if (struct.isSetPhones()) {
+        optionals.set(3);
+      }
+      if (struct.isSetCountry()) {
+        optionals.set(4);
+      }
+      if (struct.isSetNationality()) {
+        optionals.set(5);
+      }
+      

<TRUNCATED>

Mime
View raw message