All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiaomi.infra.galaxy.emq.thrift.QueueMeta Maven / Gradle / Ivy

The newest version!
/**
 * Autogenerated by Thrift Compiler (0.9.2)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package com.xiaomi.infra.galaxy.emq.thrift;

import libthrift091.scheme.IScheme;
import libthrift091.scheme.SchemeFactory;
import libthrift091.scheme.StandardScheme;

import libthrift091.scheme.TupleScheme;
import libthrift091.protocol.TTupleProtocol;
import libthrift091.protocol.TProtocolException;
import libthrift091.EncodingUtils;
import libthrift091.TException;
import libthrift091.async.AsyncMethodCallback;
import libthrift091.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"})
@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-9-13")
public class QueueMeta implements libthrift091.TBase, java.io.Serializable, Cloneable, Comparable {
  private static final libthrift091.protocol.TStruct STRUCT_DESC = new libthrift091.protocol.TStruct("QueueMeta");

  private static final libthrift091.protocol.TField QUEUE_NAME_FIELD_DESC = new libthrift091.protocol.TField("queueName", libthrift091.protocol.TType.STRING, (short)1);
  private static final libthrift091.protocol.TField QUEUE_ATTRIBUTE_FIELD_DESC = new libthrift091.protocol.TField("queueAttribute", libthrift091.protocol.TType.STRUCT, (short)2);
  private static final libthrift091.protocol.TField QUEUE_QUOTA_FIELD_DESC = new libthrift091.protocol.TField("queueQuota", libthrift091.protocol.TType.STRUCT, (short)3);
  private static final libthrift091.protocol.TField ENABLE_PRIORITY_FIELD_DESC = new libthrift091.protocol.TField("enablePriority", libthrift091.protocol.TType.BOOL, (short)4);
  private static final libthrift091.protocol.TField TOPIC_QUEUE_FIELD_DESC = new libthrift091.protocol.TField("topicQueue", libthrift091.protocol.TType.BOOL, (short)5);
  private static final libthrift091.protocol.TField DELETE_MESSAGE_FORCE_FIELD_DESC = new libthrift091.protocol.TField("deleteMessageForce", libthrift091.protocol.TType.BOOL, (short)6);
  private static final libthrift091.protocol.TField DEFAULT_TAG_NAME_FIELD_DESC = new libthrift091.protocol.TField("defaultTagName", libthrift091.protocol.TType.STRING, (short)7);
  private static final libthrift091.protocol.TField PERMISSION_LIST_FIELD_DESC = new libthrift091.protocol.TField("permissionList", libthrift091.protocol.TType.MAP, (short)8);
  private static final libthrift091.protocol.TField REDRIVE_POLICY_FIELD_DESC = new libthrift091.protocol.TField("redrivePolicy", libthrift091.protocol.TType.STRUCT, (short)9);
  private static final libthrift091.protocol.TField SOURCE_QUEUES_FIELD_DESC = new libthrift091.protocol.TField("sourceQueues", libthrift091.protocol.TType.LIST, (short)10);
  private static final libthrift091.protocol.TField CREATE_TIMESTAMP_FIELD_DESC = new libthrift091.protocol.TField("createTimestamp", libthrift091.protocol.TType.I64, (short)11);
  private static final libthrift091.protocol.TField LAST_MODIFIED_TIMESTAMP_FIELD_DESC = new libthrift091.protocol.TField("lastModifiedTimestamp", libthrift091.protocol.TType.I64, (short)12);
  private static final libthrift091.protocol.TField QUEUE_TAG_MAP_FIELD_DESC = new libthrift091.protocol.TField("queueTagMap", libthrift091.protocol.TType.MAP, (short)13);

  private static final Map, SchemeFactory> schemes = new HashMap, SchemeFactory>();
  static {
    schemes.put(StandardScheme.class, new QueueMetaStandardSchemeFactory());
    schemes.put(TupleScheme.class, new QueueMetaTupleSchemeFactory());
  }

  /**
   * The queue name, prefix is developerId, must has prefix;
   * 
   */
  public String queueName; // required
  /**
   * The queue attribute;
   * 
   */
  public QueueAttribute queueAttribute; // required
  /**
   * The queue quota, including space quota, read qps, and write qps;
   * 
   */
  public QueueQuota queueQuota; // optional
  /**
   * Set the queue using priority of not;
   * 
   */
  public boolean enablePriority; // optional
  /**
   * Set the queue be a topic queue or not;
   * All messages with the same topic in topic queue will be received one by one
   * Default: false
   * 
   */
  public boolean topicQueue; // optional
  /**
   * Purge expired messages even if they have not been received by users
   * Default: true
   * 
   */
  public boolean deleteMessageForce; // optional
  /**
   * Name default tag
   * You can use "" as default tag name while receiving messages if this field is not set
   * 
   */
  public String defaultTagName; // optional
  public Map permissionList; // optional
  public RedrivePolicy redrivePolicy; // optional
  public List sourceQueues; // optional
  /**
   * Queue create timestamp;
   * 
   */
  public long createTimestamp; // optional
  /**
   * Queue last modified timestamp;
   * 
   */
  public long lastModifiedTimestamp; // optional
  /**
   * Tag ids must be unique in the map
   * 
   */
  public Map queueTagMap; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements libthrift091.TFieldIdEnum {
    /**
     * The queue name, prefix is developerId, must has prefix;
     * 
     */
    QUEUE_NAME((short)1, "queueName"),
    /**
     * The queue attribute;
     * 
     */
    QUEUE_ATTRIBUTE((short)2, "queueAttribute"),
    /**
     * The queue quota, including space quota, read qps, and write qps;
     * 
     */
    QUEUE_QUOTA((short)3, "queueQuota"),
    /**
     * Set the queue using priority of not;
     * 
     */
    ENABLE_PRIORITY((short)4, "enablePriority"),
    /**
     * Set the queue be a topic queue or not;
     * All messages with the same topic in topic queue will be received one by one
     * Default: false
     * 
     */
    TOPIC_QUEUE((short)5, "topicQueue"),
    /**
     * Purge expired messages even if they have not been received by users
     * Default: true
     * 
     */
    DELETE_MESSAGE_FORCE((short)6, "deleteMessageForce"),
    /**
     * Name default tag
     * You can use "" as default tag name while receiving messages if this field is not set
     * 
     */
    DEFAULT_TAG_NAME((short)7, "defaultTagName"),
    PERMISSION_LIST((short)8, "permissionList"),
    REDRIVE_POLICY((short)9, "redrivePolicy"),
    SOURCE_QUEUES((short)10, "sourceQueues"),
    /**
     * Queue create timestamp;
     * 
     */
    CREATE_TIMESTAMP((short)11, "createTimestamp"),
    /**
     * Queue last modified timestamp;
     * 
     */
    LAST_MODIFIED_TIMESTAMP((short)12, "lastModifiedTimestamp"),
    /**
     * Tag ids must be unique in the map
     * 
     */
    QUEUE_TAG_MAP((short)13, "queueTagMap");

    private static final Map byName = new HashMap();

    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: // QUEUE_NAME
          return QUEUE_NAME;
        case 2: // QUEUE_ATTRIBUTE
          return QUEUE_ATTRIBUTE;
        case 3: // QUEUE_QUOTA
          return QUEUE_QUOTA;
        case 4: // ENABLE_PRIORITY
          return ENABLE_PRIORITY;
        case 5: // TOPIC_QUEUE
          return TOPIC_QUEUE;
        case 6: // DELETE_MESSAGE_FORCE
          return DELETE_MESSAGE_FORCE;
        case 7: // DEFAULT_TAG_NAME
          return DEFAULT_TAG_NAME;
        case 8: // PERMISSION_LIST
          return PERMISSION_LIST;
        case 9: // REDRIVE_POLICY
          return REDRIVE_POLICY;
        case 10: // SOURCE_QUEUES
          return SOURCE_QUEUES;
        case 11: // CREATE_TIMESTAMP
          return CREATE_TIMESTAMP;
        case 12: // LAST_MODIFIED_TIMESTAMP
          return LAST_MODIFIED_TIMESTAMP;
        case 13: // QUEUE_TAG_MAP
          return QUEUE_TAG_MAP;
        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 __ENABLEPRIORITY_ISSET_ID = 0;
  private static final int __TOPICQUEUE_ISSET_ID = 1;
  private static final int __DELETEMESSAGEFORCE_ISSET_ID = 2;
  private static final int __CREATETIMESTAMP_ISSET_ID = 3;
  private static final int __LASTMODIFIEDTIMESTAMP_ISSET_ID = 4;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.QUEUE_QUOTA,_Fields.ENABLE_PRIORITY,_Fields.TOPIC_QUEUE,_Fields.DELETE_MESSAGE_FORCE,_Fields.DEFAULT_TAG_NAME,_Fields.PERMISSION_LIST,_Fields.REDRIVE_POLICY,_Fields.SOURCE_QUEUES,_Fields.CREATE_TIMESTAMP,_Fields.LAST_MODIFIED_TIMESTAMP,_Fields.QUEUE_TAG_MAP};
  public static final Map<_Fields, libthrift091.meta_data.FieldMetaData> metaDataMap;
  static {
    Map<_Fields, libthrift091.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, libthrift091.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.QUEUE_NAME, new libthrift091.meta_data.FieldMetaData("queueName", libthrift091.TFieldRequirementType.REQUIRED, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.STRING)));
    tmpMap.put(_Fields.QUEUE_ATTRIBUTE, new libthrift091.meta_data.FieldMetaData("queueAttribute", libthrift091.TFieldRequirementType.REQUIRED, 
        new libthrift091.meta_data.StructMetaData(libthrift091.protocol.TType.STRUCT, QueueAttribute.class)));
    tmpMap.put(_Fields.QUEUE_QUOTA, new libthrift091.meta_data.FieldMetaData("queueQuota", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.StructMetaData(libthrift091.protocol.TType.STRUCT, QueueQuota.class)));
    tmpMap.put(_Fields.ENABLE_PRIORITY, new libthrift091.meta_data.FieldMetaData("enablePriority", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.BOOL)));
    tmpMap.put(_Fields.TOPIC_QUEUE, new libthrift091.meta_data.FieldMetaData("topicQueue", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.BOOL)));
    tmpMap.put(_Fields.DELETE_MESSAGE_FORCE, new libthrift091.meta_data.FieldMetaData("deleteMessageForce", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.BOOL)));
    tmpMap.put(_Fields.DEFAULT_TAG_NAME, new libthrift091.meta_data.FieldMetaData("defaultTagName", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.STRING)));
    tmpMap.put(_Fields.PERMISSION_LIST, new libthrift091.meta_data.FieldMetaData("permissionList", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.MapMetaData(libthrift091.protocol.TType.MAP, 
            new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.STRING), 
            new libthrift091.meta_data.EnumMetaData(libthrift091.protocol.TType.ENUM, Permission.class))));
    tmpMap.put(_Fields.REDRIVE_POLICY, new libthrift091.meta_data.FieldMetaData("redrivePolicy", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.StructMetaData(libthrift091.protocol.TType.STRUCT, RedrivePolicy.class)));
    tmpMap.put(_Fields.SOURCE_QUEUES, new libthrift091.meta_data.FieldMetaData("sourceQueues", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.ListMetaData(libthrift091.protocol.TType.LIST, 
            new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.STRING))));
    tmpMap.put(_Fields.CREATE_TIMESTAMP, new libthrift091.meta_data.FieldMetaData("createTimestamp", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.I64)));
    tmpMap.put(_Fields.LAST_MODIFIED_TIMESTAMP, new libthrift091.meta_data.FieldMetaData("lastModifiedTimestamp", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.I64)));
    tmpMap.put(_Fields.QUEUE_TAG_MAP, new libthrift091.meta_data.FieldMetaData("queueTagMap", libthrift091.TFieldRequirementType.OPTIONAL, 
        new libthrift091.meta_data.MapMetaData(libthrift091.protocol.TType.MAP, 
            new libthrift091.meta_data.FieldValueMetaData(libthrift091.protocol.TType.STRING), 
            new libthrift091.meta_data.StructMetaData(libthrift091.protocol.TType.STRUCT, QueueTag.class))));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    libthrift091.meta_data.FieldMetaData.addStructMetaDataMap(QueueMeta.class, metaDataMap);
  }

  public QueueMeta() {
    this.deleteMessageForce = true;

  }

  public QueueMeta(
    String queueName,
    QueueAttribute queueAttribute)
  {
    this();
    this.queueName = queueName;
    this.queueAttribute = queueAttribute;
  }

  /**
   * Performs a deep copy on other.
   */
  public QueueMeta(QueueMeta other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetQueueName()) {
      this.queueName = other.queueName;
    }
    if (other.isSetQueueAttribute()) {
      this.queueAttribute = new QueueAttribute(other.queueAttribute);
    }
    if (other.isSetQueueQuota()) {
      this.queueQuota = new QueueQuota(other.queueQuota);
    }
    this.enablePriority = other.enablePriority;
    this.topicQueue = other.topicQueue;
    this.deleteMessageForce = other.deleteMessageForce;
    if (other.isSetDefaultTagName()) {
      this.defaultTagName = other.defaultTagName;
    }
    if (other.isSetPermissionList()) {
      Map __this__permissionList = new HashMap(other.permissionList.size());
      for (Map.Entry other_element : other.permissionList.entrySet()) {

        String other_element_key = other_element.getKey();
        Permission other_element_value = other_element.getValue();

        String __this__permissionList_copy_key = other_element_key;

        Permission __this__permissionList_copy_value = other_element_value;

        __this__permissionList.put(__this__permissionList_copy_key, __this__permissionList_copy_value);
      }
      this.permissionList = __this__permissionList;
    }
    if (other.isSetRedrivePolicy()) {
      this.redrivePolicy = new RedrivePolicy(other.redrivePolicy);
    }
    if (other.isSetSourceQueues()) {
      List __this__sourceQueues = new ArrayList(other.sourceQueues);
      this.sourceQueues = __this__sourceQueues;
    }
    this.createTimestamp = other.createTimestamp;
    this.lastModifiedTimestamp = other.lastModifiedTimestamp;
    if (other.isSetQueueTagMap()) {
      Map __this__queueTagMap = new HashMap(other.queueTagMap.size());
      for (Map.Entry other_element : other.queueTagMap.entrySet()) {

        String other_element_key = other_element.getKey();
        QueueTag other_element_value = other_element.getValue();

        String __this__queueTagMap_copy_key = other_element_key;

        QueueTag __this__queueTagMap_copy_value = new QueueTag(other_element_value);

        __this__queueTagMap.put(__this__queueTagMap_copy_key, __this__queueTagMap_copy_value);
      }
      this.queueTagMap = __this__queueTagMap;
    }
  }

  public QueueMeta deepCopy() {
    return new QueueMeta(this);
  }

  @Override
  public void clear() {
    this.queueName = null;
    this.queueAttribute = null;
    this.queueQuota = null;
    setEnablePriorityIsSet(false);
    this.enablePriority = false;
    setTopicQueueIsSet(false);
    this.topicQueue = false;
    this.deleteMessageForce = true;

    this.defaultTagName = null;
    this.permissionList = null;
    this.redrivePolicy = null;
    this.sourceQueues = null;
    setCreateTimestampIsSet(false);
    this.createTimestamp = 0;
    setLastModifiedTimestampIsSet(false);
    this.lastModifiedTimestamp = 0;
    this.queueTagMap = null;
  }

  /**
   * The queue name, prefix is developerId, must has prefix;
   * 
   */
  public String getQueueName() {
    return this.queueName;
  }

  /**
   * The queue name, prefix is developerId, must has prefix;
   * 
   */
  public QueueMeta setQueueName(String queueName) {
    this.queueName = queueName;
    return this;
  }

  public void unsetQueueName() {
    this.queueName = null;
  }

  /** Returns true if field queueName is set (has been assigned a value) and false otherwise */
  public boolean isSetQueueName() {
    return this.queueName != null;
  }

  public void setQueueNameIsSet(boolean value) {
    if (!value) {
      this.queueName = null;
    }
  }

  /**
   * The queue attribute;
   * 
   */
  public QueueAttribute getQueueAttribute() {
    return this.queueAttribute;
  }

  /**
   * The queue attribute;
   * 
   */
  public QueueMeta setQueueAttribute(QueueAttribute queueAttribute) {
    this.queueAttribute = queueAttribute;
    return this;
  }

  public void unsetQueueAttribute() {
    this.queueAttribute = null;
  }

  /** Returns true if field queueAttribute is set (has been assigned a value) and false otherwise */
  public boolean isSetQueueAttribute() {
    return this.queueAttribute != null;
  }

  public void setQueueAttributeIsSet(boolean value) {
    if (!value) {
      this.queueAttribute = null;
    }
  }

  /**
   * The queue quota, including space quota, read qps, and write qps;
   * 
   */
  public QueueQuota getQueueQuota() {
    return this.queueQuota;
  }

  /**
   * The queue quota, including space quota, read qps, and write qps;
   * 
   */
  public QueueMeta setQueueQuota(QueueQuota queueQuota) {
    this.queueQuota = queueQuota;
    return this;
  }

  public void unsetQueueQuota() {
    this.queueQuota = null;
  }

  /** Returns true if field queueQuota is set (has been assigned a value) and false otherwise */
  public boolean isSetQueueQuota() {
    return this.queueQuota != null;
  }

  public void setQueueQuotaIsSet(boolean value) {
    if (!value) {
      this.queueQuota = null;
    }
  }

  /**
   * Set the queue using priority of not;
   * 
   */
  public boolean isEnablePriority() {
    return this.enablePriority;
  }

  /**
   * Set the queue using priority of not;
   * 
   */
  public QueueMeta setEnablePriority(boolean enablePriority) {
    this.enablePriority = enablePriority;
    setEnablePriorityIsSet(true);
    return this;
  }

  public void unsetEnablePriority() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ENABLEPRIORITY_ISSET_ID);
  }

  /** Returns true if field enablePriority is set (has been assigned a value) and false otherwise */
  public boolean isSetEnablePriority() {
    return EncodingUtils.testBit(__isset_bitfield, __ENABLEPRIORITY_ISSET_ID);
  }

  public void setEnablePriorityIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ENABLEPRIORITY_ISSET_ID, value);
  }

  /**
   * Set the queue be a topic queue or not;
   * All messages with the same topic in topic queue will be received one by one
   * Default: false
   * 
   */
  public boolean isTopicQueue() {
    return this.topicQueue;
  }

  /**
   * Set the queue be a topic queue or not;
   * All messages with the same topic in topic queue will be received one by one
   * Default: false
   * 
   */
  public QueueMeta setTopicQueue(boolean topicQueue) {
    this.topicQueue = topicQueue;
    setTopicQueueIsSet(true);
    return this;
  }

  public void unsetTopicQueue() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TOPICQUEUE_ISSET_ID);
  }

  /** Returns true if field topicQueue is set (has been assigned a value) and false otherwise */
  public boolean isSetTopicQueue() {
    return EncodingUtils.testBit(__isset_bitfield, __TOPICQUEUE_ISSET_ID);
  }

  public void setTopicQueueIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TOPICQUEUE_ISSET_ID, value);
  }

  /**
   * Purge expired messages even if they have not been received by users
   * Default: true
   * 
   */
  public boolean isDeleteMessageForce() {
    return this.deleteMessageForce;
  }

  /**
   * Purge expired messages even if they have not been received by users
   * Default: true
   * 
   */
  public QueueMeta setDeleteMessageForce(boolean deleteMessageForce) {
    this.deleteMessageForce = deleteMessageForce;
    setDeleteMessageForceIsSet(true);
    return this;
  }

  public void unsetDeleteMessageForce() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELETEMESSAGEFORCE_ISSET_ID);
  }

  /** Returns true if field deleteMessageForce is set (has been assigned a value) and false otherwise */
  public boolean isSetDeleteMessageForce() {
    return EncodingUtils.testBit(__isset_bitfield, __DELETEMESSAGEFORCE_ISSET_ID);
  }

  public void setDeleteMessageForceIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELETEMESSAGEFORCE_ISSET_ID, value);
  }

  /**
   * Name default tag
   * You can use "" as default tag name while receiving messages if this field is not set
   * 
   */
  public String getDefaultTagName() {
    return this.defaultTagName;
  }

  /**
   * Name default tag
   * You can use "" as default tag name while receiving messages if this field is not set
   * 
   */
  public QueueMeta setDefaultTagName(String defaultTagName) {
    this.defaultTagName = defaultTagName;
    return this;
  }

  public void unsetDefaultTagName() {
    this.defaultTagName = null;
  }

  /** Returns true if field defaultTagName is set (has been assigned a value) and false otherwise */
  public boolean isSetDefaultTagName() {
    return this.defaultTagName != null;
  }

  public void setDefaultTagNameIsSet(boolean value) {
    if (!value) {
      this.defaultTagName = null;
    }
  }

  public int getPermissionListSize() {
    return (this.permissionList == null) ? 0 : this.permissionList.size();
  }

  public void putToPermissionList(String key, Permission val) {
    if (this.permissionList == null) {
      this.permissionList = new HashMap();
    }
    this.permissionList.put(key, val);
  }

  public Map getPermissionList() {
    return this.permissionList;
  }

  public QueueMeta setPermissionList(Map permissionList) {
    this.permissionList = permissionList;
    return this;
  }

  public void unsetPermissionList() {
    this.permissionList = null;
  }

  /** Returns true if field permissionList is set (has been assigned a value) and false otherwise */
  public boolean isSetPermissionList() {
    return this.permissionList != null;
  }

  public void setPermissionListIsSet(boolean value) {
    if (!value) {
      this.permissionList = null;
    }
  }

  public RedrivePolicy getRedrivePolicy() {
    return this.redrivePolicy;
  }

  public QueueMeta setRedrivePolicy(RedrivePolicy redrivePolicy) {
    this.redrivePolicy = redrivePolicy;
    return this;
  }

  public void unsetRedrivePolicy() {
    this.redrivePolicy = null;
  }

  /** Returns true if field redrivePolicy is set (has been assigned a value) and false otherwise */
  public boolean isSetRedrivePolicy() {
    return this.redrivePolicy != null;
  }

  public void setRedrivePolicyIsSet(boolean value) {
    if (!value) {
      this.redrivePolicy = null;
    }
  }

  public int getSourceQueuesSize() {
    return (this.sourceQueues == null) ? 0 : this.sourceQueues.size();
  }

  public java.util.Iterator getSourceQueuesIterator() {
    return (this.sourceQueues == null) ? null : this.sourceQueues.iterator();
  }

  public void addToSourceQueues(String elem) {
    if (this.sourceQueues == null) {
      this.sourceQueues = new ArrayList();
    }
    this.sourceQueues.add(elem);
  }

  public List getSourceQueues() {
    return this.sourceQueues;
  }

  public QueueMeta setSourceQueues(List sourceQueues) {
    this.sourceQueues = sourceQueues;
    return this;
  }

  public void unsetSourceQueues() {
    this.sourceQueues = null;
  }

  /** Returns true if field sourceQueues is set (has been assigned a value) and false otherwise */
  public boolean isSetSourceQueues() {
    return this.sourceQueues != null;
  }

  public void setSourceQueuesIsSet(boolean value) {
    if (!value) {
      this.sourceQueues = null;
    }
  }

  /**
   * Queue create timestamp;
   * 
   */
  public long getCreateTimestamp() {
    return this.createTimestamp;
  }

  /**
   * Queue create timestamp;
   * 
   */
  public QueueMeta setCreateTimestamp(long createTimestamp) {
    this.createTimestamp = createTimestamp;
    setCreateTimestampIsSet(true);
    return this;
  }

  public void unsetCreateTimestamp() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATETIMESTAMP_ISSET_ID);
  }

  /** Returns true if field createTimestamp is set (has been assigned a value) and false otherwise */
  public boolean isSetCreateTimestamp() {
    return EncodingUtils.testBit(__isset_bitfield, __CREATETIMESTAMP_ISSET_ID);
  }

  public void setCreateTimestampIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATETIMESTAMP_ISSET_ID, value);
  }

  /**
   * Queue last modified timestamp;
   * 
   */
  public long getLastModifiedTimestamp() {
    return this.lastModifiedTimestamp;
  }

  /**
   * Queue last modified timestamp;
   * 
   */
  public QueueMeta setLastModifiedTimestamp(long lastModifiedTimestamp) {
    this.lastModifiedTimestamp = lastModifiedTimestamp;
    setLastModifiedTimestampIsSet(true);
    return this;
  }

  public void unsetLastModifiedTimestamp() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTMODIFIEDTIMESTAMP_ISSET_ID);
  }

  /** Returns true if field lastModifiedTimestamp is set (has been assigned a value) and false otherwise */
  public boolean isSetLastModifiedTimestamp() {
    return EncodingUtils.testBit(__isset_bitfield, __LASTMODIFIEDTIMESTAMP_ISSET_ID);
  }

  public void setLastModifiedTimestampIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTMODIFIEDTIMESTAMP_ISSET_ID, value);
  }

  public int getQueueTagMapSize() {
    return (this.queueTagMap == null) ? 0 : this.queueTagMap.size();
  }

  public void putToQueueTagMap(String key, QueueTag val) {
    if (this.queueTagMap == null) {
      this.queueTagMap = new HashMap();
    }
    this.queueTagMap.put(key, val);
  }

  /**
   * Tag ids must be unique in the map
   * 
   */
  public Map getQueueTagMap() {
    return this.queueTagMap;
  }

  /**
   * Tag ids must be unique in the map
   * 
   */
  public QueueMeta setQueueTagMap(Map queueTagMap) {
    this.queueTagMap = queueTagMap;
    return this;
  }

  public void unsetQueueTagMap() {
    this.queueTagMap = null;
  }

  /** Returns true if field queueTagMap is set (has been assigned a value) and false otherwise */
  public boolean isSetQueueTagMap() {
    return this.queueTagMap != null;
  }

  public void setQueueTagMapIsSet(boolean value) {
    if (!value) {
      this.queueTagMap = null;
    }
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case QUEUE_NAME:
      if (value == null) {
        unsetQueueName();
      } else {
        setQueueName((String)value);
      }
      break;

    case QUEUE_ATTRIBUTE:
      if (value == null) {
        unsetQueueAttribute();
      } else {
        setQueueAttribute((QueueAttribute)value);
      }
      break;

    case QUEUE_QUOTA:
      if (value == null) {
        unsetQueueQuota();
      } else {
        setQueueQuota((QueueQuota)value);
      }
      break;

    case ENABLE_PRIORITY:
      if (value == null) {
        unsetEnablePriority();
      } else {
        setEnablePriority((Boolean)value);
      }
      break;

    case TOPIC_QUEUE:
      if (value == null) {
        unsetTopicQueue();
      } else {
        setTopicQueue((Boolean)value);
      }
      break;

    case DELETE_MESSAGE_FORCE:
      if (value == null) {
        unsetDeleteMessageForce();
      } else {
        setDeleteMessageForce((Boolean)value);
      }
      break;

    case DEFAULT_TAG_NAME:
      if (value == null) {
        unsetDefaultTagName();
      } else {
        setDefaultTagName((String)value);
      }
      break;

    case PERMISSION_LIST:
      if (value == null) {
        unsetPermissionList();
      } else {
        setPermissionList((Map)value);
      }
      break;

    case REDRIVE_POLICY:
      if (value == null) {
        unsetRedrivePolicy();
      } else {
        setRedrivePolicy((RedrivePolicy)value);
      }
      break;

    case SOURCE_QUEUES:
      if (value == null) {
        unsetSourceQueues();
      } else {
        setSourceQueues((List)value);
      }
      break;

    case CREATE_TIMESTAMP:
      if (value == null) {
        unsetCreateTimestamp();
      } else {
        setCreateTimestamp((Long)value);
      }
      break;

    case LAST_MODIFIED_TIMESTAMP:
      if (value == null) {
        unsetLastModifiedTimestamp();
      } else {
        setLastModifiedTimestamp((Long)value);
      }
      break;

    case QUEUE_TAG_MAP:
      if (value == null) {
        unsetQueueTagMap();
      } else {
        setQueueTagMap((Map)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case QUEUE_NAME:
      return getQueueName();

    case QUEUE_ATTRIBUTE:
      return getQueueAttribute();

    case QUEUE_QUOTA:
      return getQueueQuota();

    case ENABLE_PRIORITY:
      return Boolean.valueOf(isEnablePriority());

    case TOPIC_QUEUE:
      return Boolean.valueOf(isTopicQueue());

    case DELETE_MESSAGE_FORCE:
      return Boolean.valueOf(isDeleteMessageForce());

    case DEFAULT_TAG_NAME:
      return getDefaultTagName();

    case PERMISSION_LIST:
      return getPermissionList();

    case REDRIVE_POLICY:
      return getRedrivePolicy();

    case SOURCE_QUEUES:
      return getSourceQueues();

    case CREATE_TIMESTAMP:
      return Long.valueOf(getCreateTimestamp());

    case LAST_MODIFIED_TIMESTAMP:
      return Long.valueOf(getLastModifiedTimestamp());

    case QUEUE_TAG_MAP:
      return getQueueTagMap();

    }
    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 QUEUE_NAME:
      return isSetQueueName();
    case QUEUE_ATTRIBUTE:
      return isSetQueueAttribute();
    case QUEUE_QUOTA:
      return isSetQueueQuota();
    case ENABLE_PRIORITY:
      return isSetEnablePriority();
    case TOPIC_QUEUE:
      return isSetTopicQueue();
    case DELETE_MESSAGE_FORCE:
      return isSetDeleteMessageForce();
    case DEFAULT_TAG_NAME:
      return isSetDefaultTagName();
    case PERMISSION_LIST:
      return isSetPermissionList();
    case REDRIVE_POLICY:
      return isSetRedrivePolicy();
    case SOURCE_QUEUES:
      return isSetSourceQueues();
    case CREATE_TIMESTAMP:
      return isSetCreateTimestamp();
    case LAST_MODIFIED_TIMESTAMP:
      return isSetLastModifiedTimestamp();
    case QUEUE_TAG_MAP:
      return isSetQueueTagMap();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof QueueMeta)
      return this.equals((QueueMeta)that);
    return false;
  }

  public boolean equals(QueueMeta that) {
    if (that == null)
      return false;

    boolean this_present_queueName = true && this.isSetQueueName();
    boolean that_present_queueName = true && that.isSetQueueName();
    if (this_present_queueName || that_present_queueName) {
      if (!(this_present_queueName && that_present_queueName))
        return false;
      if (!this.queueName.equals(that.queueName))
        return false;
    }

    boolean this_present_queueAttribute = true && this.isSetQueueAttribute();
    boolean that_present_queueAttribute = true && that.isSetQueueAttribute();
    if (this_present_queueAttribute || that_present_queueAttribute) {
      if (!(this_present_queueAttribute && that_present_queueAttribute))
        return false;
      if (!this.queueAttribute.equals(that.queueAttribute))
        return false;
    }

    boolean this_present_queueQuota = true && this.isSetQueueQuota();
    boolean that_present_queueQuota = true && that.isSetQueueQuota();
    if (this_present_queueQuota || that_present_queueQuota) {
      if (!(this_present_queueQuota && that_present_queueQuota))
        return false;
      if (!this.queueQuota.equals(that.queueQuota))
        return false;
    }

    boolean this_present_enablePriority = true && this.isSetEnablePriority();
    boolean that_present_enablePriority = true && that.isSetEnablePriority();
    if (this_present_enablePriority || that_present_enablePriority) {
      if (!(this_present_enablePriority && that_present_enablePriority))
        return false;
      if (this.enablePriority != that.enablePriority)
        return false;
    }

    boolean this_present_topicQueue = true && this.isSetTopicQueue();
    boolean that_present_topicQueue = true && that.isSetTopicQueue();
    if (this_present_topicQueue || that_present_topicQueue) {
      if (!(this_present_topicQueue && that_present_topicQueue))
        return false;
      if (this.topicQueue != that.topicQueue)
        return false;
    }

    boolean this_present_deleteMessageForce = true && this.isSetDeleteMessageForce();
    boolean that_present_deleteMessageForce = true && that.isSetDeleteMessageForce();
    if (this_present_deleteMessageForce || that_present_deleteMessageForce) {
      if (!(this_present_deleteMessageForce && that_present_deleteMessageForce))
        return false;
      if (this.deleteMessageForce != that.deleteMessageForce)
        return false;
    }

    boolean this_present_defaultTagName = true && this.isSetDefaultTagName();
    boolean that_present_defaultTagName = true && that.isSetDefaultTagName();
    if (this_present_defaultTagName || that_present_defaultTagName) {
      if (!(this_present_defaultTagName && that_present_defaultTagName))
        return false;
      if (!this.defaultTagName.equals(that.defaultTagName))
        return false;
    }

    boolean this_present_permissionList = true && this.isSetPermissionList();
    boolean that_present_permissionList = true && that.isSetPermissionList();
    if (this_present_permissionList || that_present_permissionList) {
      if (!(this_present_permissionList && that_present_permissionList))
        return false;
      if (!this.permissionList.equals(that.permissionList))
        return false;
    }

    boolean this_present_redrivePolicy = true && this.isSetRedrivePolicy();
    boolean that_present_redrivePolicy = true && that.isSetRedrivePolicy();
    if (this_present_redrivePolicy || that_present_redrivePolicy) {
      if (!(this_present_redrivePolicy && that_present_redrivePolicy))
        return false;
      if (!this.redrivePolicy.equals(that.redrivePolicy))
        return false;
    }

    boolean this_present_sourceQueues = true && this.isSetSourceQueues();
    boolean that_present_sourceQueues = true && that.isSetSourceQueues();
    if (this_present_sourceQueues || that_present_sourceQueues) {
      if (!(this_present_sourceQueues && that_present_sourceQueues))
        return false;
      if (!this.sourceQueues.equals(that.sourceQueues))
        return false;
    }

    boolean this_present_createTimestamp = true && this.isSetCreateTimestamp();
    boolean that_present_createTimestamp = true && that.isSetCreateTimestamp();
    if (this_present_createTimestamp || that_present_createTimestamp) {
      if (!(this_present_createTimestamp && that_present_createTimestamp))
        return false;
      if (this.createTimestamp != that.createTimestamp)
        return false;
    }

    boolean this_present_lastModifiedTimestamp = true && this.isSetLastModifiedTimestamp();
    boolean that_present_lastModifiedTimestamp = true && that.isSetLastModifiedTimestamp();
    if (this_present_lastModifiedTimestamp || that_present_lastModifiedTimestamp) {
      if (!(this_present_lastModifiedTimestamp && that_present_lastModifiedTimestamp))
        return false;
      if (this.lastModifiedTimestamp != that.lastModifiedTimestamp)
        return false;
    }

    boolean this_present_queueTagMap = true && this.isSetQueueTagMap();
    boolean that_present_queueTagMap = true && that.isSetQueueTagMap();
    if (this_present_queueTagMap || that_present_queueTagMap) {
      if (!(this_present_queueTagMap && that_present_queueTagMap))
        return false;
      if (!this.queueTagMap.equals(that.queueTagMap))
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    List list = new ArrayList();

    boolean present_queueName = true && (isSetQueueName());
    list.add(present_queueName);
    if (present_queueName)
      list.add(queueName);

    boolean present_queueAttribute = true && (isSetQueueAttribute());
    list.add(present_queueAttribute);
    if (present_queueAttribute)
      list.add(queueAttribute);

    boolean present_queueQuota = true && (isSetQueueQuota());
    list.add(present_queueQuota);
    if (present_queueQuota)
      list.add(queueQuota);

    boolean present_enablePriority = true && (isSetEnablePriority());
    list.add(present_enablePriority);
    if (present_enablePriority)
      list.add(enablePriority);

    boolean present_topicQueue = true && (isSetTopicQueue());
    list.add(present_topicQueue);
    if (present_topicQueue)
      list.add(topicQueue);

    boolean present_deleteMessageForce = true && (isSetDeleteMessageForce());
    list.add(present_deleteMessageForce);
    if (present_deleteMessageForce)
      list.add(deleteMessageForce);

    boolean present_defaultTagName = true && (isSetDefaultTagName());
    list.add(present_defaultTagName);
    if (present_defaultTagName)
      list.add(defaultTagName);

    boolean present_permissionList = true && (isSetPermissionList());
    list.add(present_permissionList);
    if (present_permissionList)
      list.add(permissionList);

    boolean present_redrivePolicy = true && (isSetRedrivePolicy());
    list.add(present_redrivePolicy);
    if (present_redrivePolicy)
      list.add(redrivePolicy);

    boolean present_sourceQueues = true && (isSetSourceQueues());
    list.add(present_sourceQueues);
    if (present_sourceQueues)
      list.add(sourceQueues);

    boolean present_createTimestamp = true && (isSetCreateTimestamp());
    list.add(present_createTimestamp);
    if (present_createTimestamp)
      list.add(createTimestamp);

    boolean present_lastModifiedTimestamp = true && (isSetLastModifiedTimestamp());
    list.add(present_lastModifiedTimestamp);
    if (present_lastModifiedTimestamp)
      list.add(lastModifiedTimestamp);

    boolean present_queueTagMap = true && (isSetQueueTagMap());
    list.add(present_queueTagMap);
    if (present_queueTagMap)
      list.add(queueTagMap);

    return list.hashCode();
  }

  @Override
  public int compareTo(QueueMeta other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetQueueName()).compareTo(other.isSetQueueName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetQueueName()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.queueName, other.queueName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetQueueAttribute()).compareTo(other.isSetQueueAttribute());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetQueueAttribute()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.queueAttribute, other.queueAttribute);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetQueueQuota()).compareTo(other.isSetQueueQuota());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetQueueQuota()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.queueQuota, other.queueQuota);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetEnablePriority()).compareTo(other.isSetEnablePriority());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEnablePriority()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.enablePriority, other.enablePriority);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTopicQueue()).compareTo(other.isSetTopicQueue());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTopicQueue()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.topicQueue, other.topicQueue);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetDeleteMessageForce()).compareTo(other.isSetDeleteMessageForce());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDeleteMessageForce()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.deleteMessageForce, other.deleteMessageForce);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetDefaultTagName()).compareTo(other.isSetDefaultTagName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDefaultTagName()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.defaultTagName, other.defaultTagName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPermissionList()).compareTo(other.isSetPermissionList());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPermissionList()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.permissionList, other.permissionList);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetRedrivePolicy()).compareTo(other.isSetRedrivePolicy());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRedrivePolicy()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.redrivePolicy, other.redrivePolicy);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSourceQueues()).compareTo(other.isSetSourceQueues());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSourceQueues()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.sourceQueues, other.sourceQueues);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetCreateTimestamp()).compareTo(other.isSetCreateTimestamp());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCreateTimestamp()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.createTimestamp, other.createTimestamp);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetLastModifiedTimestamp()).compareTo(other.isSetLastModifiedTimestamp());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetLastModifiedTimestamp()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.lastModifiedTimestamp, other.lastModifiedTimestamp);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetQueueTagMap()).compareTo(other.isSetQueueTagMap());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetQueueTagMap()) {
      lastComparison = libthrift091.TBaseHelper.compareTo(this.queueTagMap, other.queueTagMap);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(libthrift091.protocol.TProtocol iprot) throws libthrift091.TException {
    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
  }

  public void write(libthrift091.protocol.TProtocol oprot) throws libthrift091.TException {
    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder("QueueMeta(");
    boolean first = true;

    sb.append("queueName:");
    if (this.queueName == null) {
      sb.append("null");
    } else {
      sb.append(this.queueName);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("queueAttribute:");
    if (this.queueAttribute == null) {
      sb.append("null");
    } else {
      sb.append(this.queueAttribute);
    }
    first = false;
    if (isSetQueueQuota()) {
      if (!first) sb.append(", ");
      sb.append("queueQuota:");
      if (this.queueQuota == null) {
        sb.append("null");
      } else {
        sb.append(this.queueQuota);
      }
      first = false;
    }
    if (isSetEnablePriority()) {
      if (!first) sb.append(", ");
      sb.append("enablePriority:");
      sb.append(this.enablePriority);
      first = false;
    }
    if (isSetTopicQueue()) {
      if (!first) sb.append(", ");
      sb.append("topicQueue:");
      sb.append(this.topicQueue);
      first = false;
    }
    if (isSetDeleteMessageForce()) {
      if (!first) sb.append(", ");
      sb.append("deleteMessageForce:");
      sb.append(this.deleteMessageForce);
      first = false;
    }
    if (isSetDefaultTagName()) {
      if (!first) sb.append(", ");
      sb.append("defaultTagName:");
      if (this.defaultTagName == null) {
        sb.append("null");
      } else {
        sb.append(this.defaultTagName);
      }
      first = false;
    }
    if (isSetPermissionList()) {
      if (!first) sb.append(", ");
      sb.append("permissionList:");
      if (this.permissionList == null) {
        sb.append("null");
      } else {
        sb.append(this.permissionList);
      }
      first = false;
    }
    if (isSetRedrivePolicy()) {
      if (!first) sb.append(", ");
      sb.append("redrivePolicy:");
      if (this.redrivePolicy == null) {
        sb.append("null");
      } else {
        sb.append(this.redrivePolicy);
      }
      first = false;
    }
    if (isSetSourceQueues()) {
      if (!first) sb.append(", ");
      sb.append("sourceQueues:");
      if (this.sourceQueues == null) {
        sb.append("null");
      } else {
        sb.append(this.sourceQueues);
      }
      first = false;
    }
    if (isSetCreateTimestamp()) {
      if (!first) sb.append(", ");
      sb.append("createTimestamp:");
      sb.append(this.createTimestamp);
      first = false;
    }
    if (isSetLastModifiedTimestamp()) {
      if (!first) sb.append(", ");
      sb.append("lastModifiedTimestamp:");
      sb.append(this.lastModifiedTimestamp);
      first = false;
    }
    if (isSetQueueTagMap()) {
      if (!first) sb.append(", ");
      sb.append("queueTagMap:");
      if (this.queueTagMap == null) {
        sb.append("null");
      } else {
        sb.append(this.queueTagMap);
      }
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws libthrift091.TException {
    // check for required fields
    if (queueName == null) {
      throw new libthrift091.protocol.TProtocolException("Required field 'queueName' was not present! Struct: " + toString());
    }
    if (queueAttribute == null) {
      throw new libthrift091.protocol.TProtocolException("Required field 'queueAttribute' was not present! Struct: " + toString());
    }
    // check for sub-struct validity
    if (queueAttribute != null) {
      queueAttribute.validate();
    }
    if (queueQuota != null) {
      queueQuota.validate();
    }
    if (redrivePolicy != null) {
      redrivePolicy.validate();
    }
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new libthrift091.protocol.TCompactProtocol(new libthrift091.transport.TIOStreamTransport(out)));
    } catch (libthrift091.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 libthrift091.protocol.TCompactProtocol(new libthrift091.transport.TIOStreamTransport(in)));
    } catch (libthrift091.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class QueueMetaStandardSchemeFactory implements SchemeFactory {
    public QueueMetaStandardScheme getScheme() {
      return new QueueMetaStandardScheme();
    }
  }

  private static class QueueMetaStandardScheme extends StandardScheme {

    public void read(libthrift091.protocol.TProtocol iprot, QueueMeta struct) throws libthrift091.TException {
      libthrift091.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == libthrift091.protocol.TType.STOP) { 
          break;
        }
        switch (schemeField.id) {
          case 1: // QUEUE_NAME
            if (schemeField.type == libthrift091.protocol.TType.STRING) {
              struct.queueName = iprot.readString();
              struct.setQueueNameIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // QUEUE_ATTRIBUTE
            if (schemeField.type == libthrift091.protocol.TType.STRUCT) {
              struct.queueAttribute = new QueueAttribute();
              struct.queueAttribute.read(iprot);
              struct.setQueueAttributeIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // QUEUE_QUOTA
            if (schemeField.type == libthrift091.protocol.TType.STRUCT) {
              struct.queueQuota = new QueueQuota();
              struct.queueQuota.read(iprot);
              struct.setQueueQuotaIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // ENABLE_PRIORITY
            if (schemeField.type == libthrift091.protocol.TType.BOOL) {
              struct.enablePriority = iprot.readBool();
              struct.setEnablePriorityIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // TOPIC_QUEUE
            if (schemeField.type == libthrift091.protocol.TType.BOOL) {
              struct.topicQueue = iprot.readBool();
              struct.setTopicQueueIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // DELETE_MESSAGE_FORCE
            if (schemeField.type == libthrift091.protocol.TType.BOOL) {
              struct.deleteMessageForce = iprot.readBool();
              struct.setDeleteMessageForceIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // DEFAULT_TAG_NAME
            if (schemeField.type == libthrift091.protocol.TType.STRING) {
              struct.defaultTagName = iprot.readString();
              struct.setDefaultTagNameIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // PERMISSION_LIST
            if (schemeField.type == libthrift091.protocol.TType.MAP) {
              {
                libthrift091.protocol.TMap _map122 = iprot.readMapBegin();
                struct.permissionList = new HashMap(2*_map122.size);
                String _key123;
                Permission _val124;
                for (int _i125 = 0; _i125 < _map122.size; ++_i125)
                {
                  _key123 = iprot.readString();
                  _val124 = com.xiaomi.infra.galaxy.emq.thrift.Permission.findByValue(iprot.readI32());
                  struct.permissionList.put(_key123, _val124);
                }
                iprot.readMapEnd();
              }
              struct.setPermissionListIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // REDRIVE_POLICY
            if (schemeField.type == libthrift091.protocol.TType.STRUCT) {
              struct.redrivePolicy = new RedrivePolicy();
              struct.redrivePolicy.read(iprot);
              struct.setRedrivePolicyIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // SOURCE_QUEUES
            if (schemeField.type == libthrift091.protocol.TType.LIST) {
              {
                libthrift091.protocol.TList _list126 = iprot.readListBegin();
                struct.sourceQueues = new ArrayList(_list126.size);
                String _elem127;
                for (int _i128 = 0; _i128 < _list126.size; ++_i128)
                {
                  _elem127 = iprot.readString();
                  struct.sourceQueues.add(_elem127);
                }
                iprot.readListEnd();
              }
              struct.setSourceQueuesIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // CREATE_TIMESTAMP
            if (schemeField.type == libthrift091.protocol.TType.I64) {
              struct.createTimestamp = iprot.readI64();
              struct.setCreateTimestampIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 12: // LAST_MODIFIED_TIMESTAMP
            if (schemeField.type == libthrift091.protocol.TType.I64) {
              struct.lastModifiedTimestamp = iprot.readI64();
              struct.setLastModifiedTimestampIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 13: // QUEUE_TAG_MAP
            if (schemeField.type == libthrift091.protocol.TType.MAP) {
              {
                libthrift091.protocol.TMap _map129 = iprot.readMapBegin();
                struct.queueTagMap = new HashMap(2*_map129.size);
                String _key130;
                QueueTag _val131;
                for (int _i132 = 0; _i132 < _map129.size; ++_i132)
                {
                  _key130 = iprot.readString();
                  _val131 = new QueueTag();
                  _val131.read(iprot);
                  struct.queueTagMap.put(_key130, _val131);
                }
                iprot.readMapEnd();
              }
              struct.setQueueTagMapIsSet(true);
            } else { 
              libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            libthrift091.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();

      // check for required fields of primitive type, which can't be checked in the validate method
      struct.validate();
    }

    public void write(libthrift091.protocol.TProtocol oprot, QueueMeta struct) throws libthrift091.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.queueName != null) {
        oprot.writeFieldBegin(QUEUE_NAME_FIELD_DESC);
        oprot.writeString(struct.queueName);
        oprot.writeFieldEnd();
      }
      if (struct.queueAttribute != null) {
        oprot.writeFieldBegin(QUEUE_ATTRIBUTE_FIELD_DESC);
        struct.queueAttribute.write(oprot);
        oprot.writeFieldEnd();
      }
      if (struct.queueQuota != null) {
        if (struct.isSetQueueQuota()) {
          oprot.writeFieldBegin(QUEUE_QUOTA_FIELD_DESC);
          struct.queueQuota.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetEnablePriority()) {
        oprot.writeFieldBegin(ENABLE_PRIORITY_FIELD_DESC);
        oprot.writeBool(struct.enablePriority);
        oprot.writeFieldEnd();
      }
      if (struct.isSetTopicQueue()) {
        oprot.writeFieldBegin(TOPIC_QUEUE_FIELD_DESC);
        oprot.writeBool(struct.topicQueue);
        oprot.writeFieldEnd();
      }
      if (struct.isSetDeleteMessageForce()) {
        oprot.writeFieldBegin(DELETE_MESSAGE_FORCE_FIELD_DESC);
        oprot.writeBool(struct.deleteMessageForce);
        oprot.writeFieldEnd();
      }
      if (struct.defaultTagName != null) {
        if (struct.isSetDefaultTagName()) {
          oprot.writeFieldBegin(DEFAULT_TAG_NAME_FIELD_DESC);
          oprot.writeString(struct.defaultTagName);
          oprot.writeFieldEnd();
        }
      }
      if (struct.permissionList != null) {
        if (struct.isSetPermissionList()) {
          oprot.writeFieldBegin(PERMISSION_LIST_FIELD_DESC);
          {
            oprot.writeMapBegin(new libthrift091.protocol.TMap(libthrift091.protocol.TType.STRING, libthrift091.protocol.TType.I32, struct.permissionList.size()));
            for (Map.Entry _iter133 : struct.permissionList.entrySet())
            {
              oprot.writeString(_iter133.getKey());
              oprot.writeI32(_iter133.getValue().getValue());
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.redrivePolicy != null) {
        if (struct.isSetRedrivePolicy()) {
          oprot.writeFieldBegin(REDRIVE_POLICY_FIELD_DESC);
          struct.redrivePolicy.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.sourceQueues != null) {
        if (struct.isSetSourceQueues()) {
          oprot.writeFieldBegin(SOURCE_QUEUES_FIELD_DESC);
          {
            oprot.writeListBegin(new libthrift091.protocol.TList(libthrift091.protocol.TType.STRING, struct.sourceQueues.size()));
            for (String _iter134 : struct.sourceQueues)
            {
              oprot.writeString(_iter134);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetCreateTimestamp()) {
        oprot.writeFieldBegin(CREATE_TIMESTAMP_FIELD_DESC);
        oprot.writeI64(struct.createTimestamp);
        oprot.writeFieldEnd();
      }
      if (struct.isSetLastModifiedTimestamp()) {
        oprot.writeFieldBegin(LAST_MODIFIED_TIMESTAMP_FIELD_DESC);
        oprot.writeI64(struct.lastModifiedTimestamp);
        oprot.writeFieldEnd();
      }
      if (struct.queueTagMap != null) {
        if (struct.isSetQueueTagMap()) {
          oprot.writeFieldBegin(QUEUE_TAG_MAP_FIELD_DESC);
          {
            oprot.writeMapBegin(new libthrift091.protocol.TMap(libthrift091.protocol.TType.STRING, libthrift091.protocol.TType.STRUCT, struct.queueTagMap.size()));
            for (Map.Entry _iter135 : struct.queueTagMap.entrySet())
            {
              oprot.writeString(_iter135.getKey());
              _iter135.getValue().write(oprot);
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class QueueMetaTupleSchemeFactory implements SchemeFactory {
    public QueueMetaTupleScheme getScheme() {
      return new QueueMetaTupleScheme();
    }
  }

  private static class QueueMetaTupleScheme extends TupleScheme {

    @Override
    public void write(libthrift091.protocol.TProtocol prot, QueueMeta struct) throws libthrift091.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      oprot.writeString(struct.queueName);
      struct.queueAttribute.write(oprot);
      BitSet optionals = new BitSet();
      if (struct.isSetQueueQuota()) {
        optionals.set(0);
      }
      if (struct.isSetEnablePriority()) {
        optionals.set(1);
      }
      if (struct.isSetTopicQueue()) {
        optionals.set(2);
      }
      if (struct.isSetDeleteMessageForce()) {
        optionals.set(3);
      }
      if (struct.isSetDefaultTagName()) {
        optionals.set(4);
      }
      if (struct.isSetPermissionList()) {
        optionals.set(5);
      }
      if (struct.isSetRedrivePolicy()) {
        optionals.set(6);
      }
      if (struct.isSetSourceQueues()) {
        optionals.set(7);
      }
      if (struct.isSetCreateTimestamp()) {
        optionals.set(8);
      }
      if (struct.isSetLastModifiedTimestamp()) {
        optionals.set(9);
      }
      if (struct.isSetQueueTagMap()) {
        optionals.set(10);
      }
      oprot.writeBitSet(optionals, 11);
      if (struct.isSetQueueQuota()) {
        struct.queueQuota.write(oprot);
      }
      if (struct.isSetEnablePriority()) {
        oprot.writeBool(struct.enablePriority);
      }
      if (struct.isSetTopicQueue()) {
        oprot.writeBool(struct.topicQueue);
      }
      if (struct.isSetDeleteMessageForce()) {
        oprot.writeBool(struct.deleteMessageForce);
      }
      if (struct.isSetDefaultTagName()) {
        oprot.writeString(struct.defaultTagName);
      }
      if (struct.isSetPermissionList()) {
        {
          oprot.writeI32(struct.permissionList.size());
          for (Map.Entry _iter136 : struct.permissionList.entrySet())
          {
            oprot.writeString(_iter136.getKey());
            oprot.writeI32(_iter136.getValue().getValue());
          }
        }
      }
      if (struct.isSetRedrivePolicy()) {
        struct.redrivePolicy.write(oprot);
      }
      if (struct.isSetSourceQueues()) {
        {
          oprot.writeI32(struct.sourceQueues.size());
          for (String _iter137 : struct.sourceQueues)
          {
            oprot.writeString(_iter137);
          }
        }
      }
      if (struct.isSetCreateTimestamp()) {
        oprot.writeI64(struct.createTimestamp);
      }
      if (struct.isSetLastModifiedTimestamp()) {
        oprot.writeI64(struct.lastModifiedTimestamp);
      }
      if (struct.isSetQueueTagMap()) {
        {
          oprot.writeI32(struct.queueTagMap.size());
          for (Map.Entry _iter138 : struct.queueTagMap.entrySet())
          {
            oprot.writeString(_iter138.getKey());
            _iter138.getValue().write(oprot);
          }
        }
      }
    }

    @Override
    public void read(libthrift091.protocol.TProtocol prot, QueueMeta struct) throws libthrift091.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      struct.queueName = iprot.readString();
      struct.setQueueNameIsSet(true);
      struct.queueAttribute = new QueueAttribute();
      struct.queueAttribute.read(iprot);
      struct.setQueueAttributeIsSet(true);
      BitSet incoming = iprot.readBitSet(11);
      if (incoming.get(0)) {
        struct.queueQuota = new QueueQuota();
        struct.queueQuota.read(iprot);
        struct.setQueueQuotaIsSet(true);
      }
      if (incoming.get(1)) {
        struct.enablePriority = iprot.readBool();
        struct.setEnablePriorityIsSet(true);
      }
      if (incoming.get(2)) {
        struct.topicQueue = iprot.readBool();
        struct.setTopicQueueIsSet(true);
      }
      if (incoming.get(3)) {
        struct.deleteMessageForce = iprot.readBool();
        struct.setDeleteMessageForceIsSet(true);
      }
      if (incoming.get(4)) {
        struct.defaultTagName = iprot.readString();
        struct.setDefaultTagNameIsSet(true);
      }
      if (incoming.get(5)) {
        {
          libthrift091.protocol.TMap _map139 = new libthrift091.protocol.TMap(libthrift091.protocol.TType.STRING, libthrift091.protocol.TType.I32, iprot.readI32());
          struct.permissionList = new HashMap(2*_map139.size);
          String _key140;
          Permission _val141;
          for (int _i142 = 0; _i142 < _map139.size; ++_i142)
          {
            _key140 = iprot.readString();
            _val141 = com.xiaomi.infra.galaxy.emq.thrift.Permission.findByValue(iprot.readI32());
            struct.permissionList.put(_key140, _val141);
          }
        }
        struct.setPermissionListIsSet(true);
      }
      if (incoming.get(6)) {
        struct.redrivePolicy = new RedrivePolicy();
        struct.redrivePolicy.read(iprot);
        struct.setRedrivePolicyIsSet(true);
      }
      if (incoming.get(7)) {
        {
          libthrift091.protocol.TList _list143 = new libthrift091.protocol.TList(libthrift091.protocol.TType.STRING, iprot.readI32());
          struct.sourceQueues = new ArrayList(_list143.size);
          String _elem144;
          for (int _i145 = 0; _i145 < _list143.size; ++_i145)
          {
            _elem144 = iprot.readString();
            struct.sourceQueues.add(_elem144);
          }
        }
        struct.setSourceQueuesIsSet(true);
      }
      if (incoming.get(8)) {
        struct.createTimestamp = iprot.readI64();
        struct.setCreateTimestampIsSet(true);
      }
      if (incoming.get(9)) {
        struct.lastModifiedTimestamp = iprot.readI64();
        struct.setLastModifiedTimestampIsSet(true);
      }
      if (incoming.get(10)) {
        {
          libthrift091.protocol.TMap _map146 = new libthrift091.protocol.TMap(libthrift091.protocol.TType.STRING, libthrift091.protocol.TType.STRUCT, iprot.readI32());
          struct.queueTagMap = new HashMap(2*_map146.size);
          String _key147;
          QueueTag _val148;
          for (int _i149 = 0; _i149 < _map146.size; ++_i149)
          {
            _key147 = iprot.readString();
            _val148 = new QueueTag();
            _val148.read(iprot);
            struct.queueTagMap.put(_key147, _val148);
          }
        }
        struct.setQueueTagMapIsSet(true);
      }
    }
  }

}