You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2015/05/21 18:43:26 UTC

[43/50] [abbrv] hbase git commit: HBASE-13698 Add RegionLocator methods to Thrift2

http://git-wip-us.apache.org/repos/asf/hbase/blob/1bfe3879/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionInfo.java
----------------------------------------------------------------------
diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionInfo.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionInfo.java
new file mode 100644
index 0000000..e709612
--- /dev/null
+++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionInfo.java
@@ -0,0 +1,1038 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.hadoop.hbase.thrift2.generated;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+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 java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class THRegionInfo implements org.apache.thrift.TBase<THRegionInfo, THRegionInfo._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("THRegionInfo");
+
+  private static final org.apache.thrift.protocol.TField REGION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("regionId", org.apache.thrift.protocol.TType.I64, (short)1);
+  private static final org.apache.thrift.protocol.TField TABLE_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("tableName", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField START_KEY_FIELD_DESC = new org.apache.thrift.protocol.TField("startKey", org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField END_KEY_FIELD_DESC = new org.apache.thrift.protocol.TField("endKey", org.apache.thrift.protocol.TType.STRING, (short)4);
+  private static final org.apache.thrift.protocol.TField OFFLINE_FIELD_DESC = new org.apache.thrift.protocol.TField("offline", org.apache.thrift.protocol.TType.BOOL, (short)5);
+  private static final org.apache.thrift.protocol.TField SPLIT_FIELD_DESC = new org.apache.thrift.protocol.TField("split", org.apache.thrift.protocol.TType.BOOL, (short)6);
+  private static final org.apache.thrift.protocol.TField REPLICA_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("replicaId", org.apache.thrift.protocol.TType.I32, (short)7);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new THRegionInfoStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new THRegionInfoTupleSchemeFactory());
+  }
+
+  public long regionId; // required
+  public ByteBuffer tableName; // required
+  public ByteBuffer startKey; // optional
+  public ByteBuffer endKey; // optional
+  public boolean offline; // optional
+  public boolean split; // optional
+  public int replicaId; // 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 {
+    REGION_ID((short)1, "regionId"),
+    TABLE_NAME((short)2, "tableName"),
+    START_KEY((short)3, "startKey"),
+    END_KEY((short)4, "endKey"),
+    OFFLINE((short)5, "offline"),
+    SPLIT((short)6, "split"),
+    REPLICA_ID((short)7, "replicaId");
+
+    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: // REGION_ID
+          return REGION_ID;
+        case 2: // TABLE_NAME
+          return TABLE_NAME;
+        case 3: // START_KEY
+          return START_KEY;
+        case 4: // END_KEY
+          return END_KEY;
+        case 5: // OFFLINE
+          return OFFLINE;
+        case 6: // SPLIT
+          return SPLIT;
+        case 7: // REPLICA_ID
+          return REPLICA_ID;
+        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 __REGIONID_ISSET_ID = 0;
+  private static final int __OFFLINE_ISSET_ID = 1;
+  private static final int __SPLIT_ISSET_ID = 2;
+  private static final int __REPLICAID_ISSET_ID = 3;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.START_KEY,_Fields.END_KEY,_Fields.OFFLINE,_Fields.SPLIT,_Fields.REPLICA_ID};
+  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.REGION_ID, new org.apache.thrift.meta_data.FieldMetaData("regionId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.TABLE_NAME, new org.apache.thrift.meta_data.FieldMetaData("tableName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
+    tmpMap.put(_Fields.START_KEY, new org.apache.thrift.meta_data.FieldMetaData("startKey", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
+    tmpMap.put(_Fields.END_KEY, new org.apache.thrift.meta_data.FieldMetaData("endKey", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
+    tmpMap.put(_Fields.OFFLINE, new org.apache.thrift.meta_data.FieldMetaData("offline", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.SPLIT, new org.apache.thrift.meta_data.FieldMetaData("split", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.REPLICA_ID, new org.apache.thrift.meta_data.FieldMetaData("replicaId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(THRegionInfo.class, metaDataMap);
+  }
+
+  public THRegionInfo() {
+  }
+
+  public THRegionInfo(
+    long regionId,
+    ByteBuffer tableName)
+  {
+    this();
+    this.regionId = regionId;
+    setRegionIdIsSet(true);
+    this.tableName = tableName;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public THRegionInfo(THRegionInfo other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.regionId = other.regionId;
+    if (other.isSetTableName()) {
+      this.tableName = org.apache.thrift.TBaseHelper.copyBinary(other.tableName);
+;
+    }
+    if (other.isSetStartKey()) {
+      this.startKey = org.apache.thrift.TBaseHelper.copyBinary(other.startKey);
+;
+    }
+    if (other.isSetEndKey()) {
+      this.endKey = org.apache.thrift.TBaseHelper.copyBinary(other.endKey);
+;
+    }
+    this.offline = other.offline;
+    this.split = other.split;
+    this.replicaId = other.replicaId;
+  }
+
+  public THRegionInfo deepCopy() {
+    return new THRegionInfo(this);
+  }
+
+  @Override
+  public void clear() {
+    setRegionIdIsSet(false);
+    this.regionId = 0;
+    this.tableName = null;
+    this.startKey = null;
+    this.endKey = null;
+    setOfflineIsSet(false);
+    this.offline = false;
+    setSplitIsSet(false);
+    this.split = false;
+    setReplicaIdIsSet(false);
+    this.replicaId = 0;
+  }
+
+  public long getRegionId() {
+    return this.regionId;
+  }
+
+  public THRegionInfo setRegionId(long regionId) {
+    this.regionId = regionId;
+    setRegionIdIsSet(true);
+    return this;
+  }
+
+  public void unsetRegionId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __REGIONID_ISSET_ID);
+  }
+
+  /** Returns true if field regionId is set (has been assigned a value) and false otherwise */
+  public boolean isSetRegionId() {
+    return EncodingUtils.testBit(__isset_bitfield, __REGIONID_ISSET_ID);
+  }
+
+  public void setRegionIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __REGIONID_ISSET_ID, value);
+  }
+
+  public byte[] getTableName() {
+    setTableName(org.apache.thrift.TBaseHelper.rightSize(tableName));
+    return tableName == null ? null : tableName.array();
+  }
+
+  public ByteBuffer bufferForTableName() {
+    return tableName;
+  }
+
+  public THRegionInfo setTableName(byte[] tableName) {
+    setTableName(tableName == null ? (ByteBuffer)null : ByteBuffer.wrap(tableName));
+    return this;
+  }
+
+  public THRegionInfo setTableName(ByteBuffer tableName) {
+    this.tableName = tableName;
+    return this;
+  }
+
+  public void unsetTableName() {
+    this.tableName = null;
+  }
+
+  /** Returns true if field tableName is set (has been assigned a value) and false otherwise */
+  public boolean isSetTableName() {
+    return this.tableName != null;
+  }
+
+  public void setTableNameIsSet(boolean value) {
+    if (!value) {
+      this.tableName = null;
+    }
+  }
+
+  public byte[] getStartKey() {
+    setStartKey(org.apache.thrift.TBaseHelper.rightSize(startKey));
+    return startKey == null ? null : startKey.array();
+  }
+
+  public ByteBuffer bufferForStartKey() {
+    return startKey;
+  }
+
+  public THRegionInfo setStartKey(byte[] startKey) {
+    setStartKey(startKey == null ? (ByteBuffer)null : ByteBuffer.wrap(startKey));
+    return this;
+  }
+
+  public THRegionInfo setStartKey(ByteBuffer startKey) {
+    this.startKey = startKey;
+    return this;
+  }
+
+  public void unsetStartKey() {
+    this.startKey = null;
+  }
+
+  /** Returns true if field startKey is set (has been assigned a value) and false otherwise */
+  public boolean isSetStartKey() {
+    return this.startKey != null;
+  }
+
+  public void setStartKeyIsSet(boolean value) {
+    if (!value) {
+      this.startKey = null;
+    }
+  }
+
+  public byte[] getEndKey() {
+    setEndKey(org.apache.thrift.TBaseHelper.rightSize(endKey));
+    return endKey == null ? null : endKey.array();
+  }
+
+  public ByteBuffer bufferForEndKey() {
+    return endKey;
+  }
+
+  public THRegionInfo setEndKey(byte[] endKey) {
+    setEndKey(endKey == null ? (ByteBuffer)null : ByteBuffer.wrap(endKey));
+    return this;
+  }
+
+  public THRegionInfo setEndKey(ByteBuffer endKey) {
+    this.endKey = endKey;
+    return this;
+  }
+
+  public void unsetEndKey() {
+    this.endKey = null;
+  }
+
+  /** Returns true if field endKey is set (has been assigned a value) and false otherwise */
+  public boolean isSetEndKey() {
+    return this.endKey != null;
+  }
+
+  public void setEndKeyIsSet(boolean value) {
+    if (!value) {
+      this.endKey = null;
+    }
+  }
+
+  public boolean isOffline() {
+    return this.offline;
+  }
+
+  public THRegionInfo setOffline(boolean offline) {
+    this.offline = offline;
+    setOfflineIsSet(true);
+    return this;
+  }
+
+  public void unsetOffline() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __OFFLINE_ISSET_ID);
+  }
+
+  /** Returns true if field offline is set (has been assigned a value) and false otherwise */
+  public boolean isSetOffline() {
+    return EncodingUtils.testBit(__isset_bitfield, __OFFLINE_ISSET_ID);
+  }
+
+  public void setOfflineIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __OFFLINE_ISSET_ID, value);
+  }
+
+  public boolean isSplit() {
+    return this.split;
+  }
+
+  public THRegionInfo setSplit(boolean split) {
+    this.split = split;
+    setSplitIsSet(true);
+    return this;
+  }
+
+  public void unsetSplit() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SPLIT_ISSET_ID);
+  }
+
+  /** Returns true if field split is set (has been assigned a value) and false otherwise */
+  public boolean isSetSplit() {
+    return EncodingUtils.testBit(__isset_bitfield, __SPLIT_ISSET_ID);
+  }
+
+  public void setSplitIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SPLIT_ISSET_ID, value);
+  }
+
+  public int getReplicaId() {
+    return this.replicaId;
+  }
+
+  public THRegionInfo setReplicaId(int replicaId) {
+    this.replicaId = replicaId;
+    setReplicaIdIsSet(true);
+    return this;
+  }
+
+  public void unsetReplicaId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __REPLICAID_ISSET_ID);
+  }
+
+  /** Returns true if field replicaId is set (has been assigned a value) and false otherwise */
+  public boolean isSetReplicaId() {
+    return EncodingUtils.testBit(__isset_bitfield, __REPLICAID_ISSET_ID);
+  }
+
+  public void setReplicaIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __REPLICAID_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case REGION_ID:
+      if (value == null) {
+        unsetRegionId();
+      } else {
+        setRegionId((Long)value);
+      }
+      break;
+
+    case TABLE_NAME:
+      if (value == null) {
+        unsetTableName();
+      } else {
+        setTableName((ByteBuffer)value);
+      }
+      break;
+
+    case START_KEY:
+      if (value == null) {
+        unsetStartKey();
+      } else {
+        setStartKey((ByteBuffer)value);
+      }
+      break;
+
+    case END_KEY:
+      if (value == null) {
+        unsetEndKey();
+      } else {
+        setEndKey((ByteBuffer)value);
+      }
+      break;
+
+    case OFFLINE:
+      if (value == null) {
+        unsetOffline();
+      } else {
+        setOffline((Boolean)value);
+      }
+      break;
+
+    case SPLIT:
+      if (value == null) {
+        unsetSplit();
+      } else {
+        setSplit((Boolean)value);
+      }
+      break;
+
+    case REPLICA_ID:
+      if (value == null) {
+        unsetReplicaId();
+      } else {
+        setReplicaId((Integer)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case REGION_ID:
+      return Long.valueOf(getRegionId());
+
+    case TABLE_NAME:
+      return getTableName();
+
+    case START_KEY:
+      return getStartKey();
+
+    case END_KEY:
+      return getEndKey();
+
+    case OFFLINE:
+      return Boolean.valueOf(isOffline());
+
+    case SPLIT:
+      return Boolean.valueOf(isSplit());
+
+    case REPLICA_ID:
+      return Integer.valueOf(getReplicaId());
+
+    }
+    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 REGION_ID:
+      return isSetRegionId();
+    case TABLE_NAME:
+      return isSetTableName();
+    case START_KEY:
+      return isSetStartKey();
+    case END_KEY:
+      return isSetEndKey();
+    case OFFLINE:
+      return isSetOffline();
+    case SPLIT:
+      return isSetSplit();
+    case REPLICA_ID:
+      return isSetReplicaId();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof THRegionInfo)
+      return this.equals((THRegionInfo)that);
+    return false;
+  }
+
+  public boolean equals(THRegionInfo that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_regionId = true;
+    boolean that_present_regionId = true;
+    if (this_present_regionId || that_present_regionId) {
+      if (!(this_present_regionId && that_present_regionId))
+        return false;
+      if (this.regionId != that.regionId)
+        return false;
+    }
+
+    boolean this_present_tableName = true && this.isSetTableName();
+    boolean that_present_tableName = true && that.isSetTableName();
+    if (this_present_tableName || that_present_tableName) {
+      if (!(this_present_tableName && that_present_tableName))
+        return false;
+      if (!this.tableName.equals(that.tableName))
+        return false;
+    }
+
+    boolean this_present_startKey = true && this.isSetStartKey();
+    boolean that_present_startKey = true && that.isSetStartKey();
+    if (this_present_startKey || that_present_startKey) {
+      if (!(this_present_startKey && that_present_startKey))
+        return false;
+      if (!this.startKey.equals(that.startKey))
+        return false;
+    }
+
+    boolean this_present_endKey = true && this.isSetEndKey();
+    boolean that_present_endKey = true && that.isSetEndKey();
+    if (this_present_endKey || that_present_endKey) {
+      if (!(this_present_endKey && that_present_endKey))
+        return false;
+      if (!this.endKey.equals(that.endKey))
+        return false;
+    }
+
+    boolean this_present_offline = true && this.isSetOffline();
+    boolean that_present_offline = true && that.isSetOffline();
+    if (this_present_offline || that_present_offline) {
+      if (!(this_present_offline && that_present_offline))
+        return false;
+      if (this.offline != that.offline)
+        return false;
+    }
+
+    boolean this_present_split = true && this.isSetSplit();
+    boolean that_present_split = true && that.isSetSplit();
+    if (this_present_split || that_present_split) {
+      if (!(this_present_split && that_present_split))
+        return false;
+      if (this.split != that.split)
+        return false;
+    }
+
+    boolean this_present_replicaId = true && this.isSetReplicaId();
+    boolean that_present_replicaId = true && that.isSetReplicaId();
+    if (this_present_replicaId || that_present_replicaId) {
+      if (!(this_present_replicaId && that_present_replicaId))
+        return false;
+      if (this.replicaId != that.replicaId)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    HashCodeBuilder builder = new HashCodeBuilder();
+
+    boolean present_regionId = true;
+    builder.append(present_regionId);
+    if (present_regionId)
+      builder.append(regionId);
+
+    boolean present_tableName = true && (isSetTableName());
+    builder.append(present_tableName);
+    if (present_tableName)
+      builder.append(tableName);
+
+    boolean present_startKey = true && (isSetStartKey());
+    builder.append(present_startKey);
+    if (present_startKey)
+      builder.append(startKey);
+
+    boolean present_endKey = true && (isSetEndKey());
+    builder.append(present_endKey);
+    if (present_endKey)
+      builder.append(endKey);
+
+    boolean present_offline = true && (isSetOffline());
+    builder.append(present_offline);
+    if (present_offline)
+      builder.append(offline);
+
+    boolean present_split = true && (isSetSplit());
+    builder.append(present_split);
+    if (present_split)
+      builder.append(split);
+
+    boolean present_replicaId = true && (isSetReplicaId());
+    builder.append(present_replicaId);
+    if (present_replicaId)
+      builder.append(replicaId);
+
+    return builder.toHashCode();
+  }
+
+  public int compareTo(THRegionInfo other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    THRegionInfo typedOther = (THRegionInfo)other;
+
+    lastComparison = Boolean.valueOf(isSetRegionId()).compareTo(typedOther.isSetRegionId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetRegionId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.regionId, typedOther.regionId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetTableName()).compareTo(typedOther.isSetTableName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetTableName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tableName, typedOther.tableName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStartKey()).compareTo(typedOther.isSetStartKey());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStartKey()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.startKey, typedOther.startKey);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetEndKey()).compareTo(typedOther.isSetEndKey());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetEndKey()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.endKey, typedOther.endKey);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetOffline()).compareTo(typedOther.isSetOffline());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetOffline()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.offline, typedOther.offline);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSplit()).compareTo(typedOther.isSetSplit());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSplit()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.split, typedOther.split);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetReplicaId()).compareTo(typedOther.isSetReplicaId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetReplicaId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.replicaId, typedOther.replicaId);
+      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("THRegionInfo(");
+    boolean first = true;
+
+    sb.append("regionId:");
+    sb.append(this.regionId);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("tableName:");
+    if (this.tableName == null) {
+      sb.append("null");
+    } else {
+      org.apache.thrift.TBaseHelper.toString(this.tableName, sb);
+    }
+    first = false;
+    if (isSetStartKey()) {
+      if (!first) sb.append(", ");
+      sb.append("startKey:");
+      if (this.startKey == null) {
+        sb.append("null");
+      } else {
+        org.apache.thrift.TBaseHelper.toString(this.startKey, sb);
+      }
+      first = false;
+    }
+    if (isSetEndKey()) {
+      if (!first) sb.append(", ");
+      sb.append("endKey:");
+      if (this.endKey == null) {
+        sb.append("null");
+      } else {
+        org.apache.thrift.TBaseHelper.toString(this.endKey, sb);
+      }
+      first = false;
+    }
+    if (isSetOffline()) {
+      if (!first) sb.append(", ");
+      sb.append("offline:");
+      sb.append(this.offline);
+      first = false;
+    }
+    if (isSetSplit()) {
+      if (!first) sb.append(", ");
+      sb.append("split:");
+      sb.append(this.split);
+      first = false;
+    }
+    if (isSetReplicaId()) {
+      if (!first) sb.append(", ");
+      sb.append("replicaId:");
+      sb.append(this.replicaId);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // alas, we cannot check 'regionId' because it's a primitive and you chose the non-beans generator.
+    if (tableName == null) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'tableName' was not present! Struct: " + toString());
+    }
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class THRegionInfoStandardSchemeFactory implements SchemeFactory {
+    public THRegionInfoStandardScheme getScheme() {
+      return new THRegionInfoStandardScheme();
+    }
+  }
+
+  private static class THRegionInfoStandardScheme extends StandardScheme<THRegionInfo> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, THRegionInfo 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: // REGION_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.regionId = iprot.readI64();
+              struct.setRegionIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // TABLE_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.tableName = iprot.readBinary();
+              struct.setTableNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // START_KEY
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.startKey = iprot.readBinary();
+              struct.setStartKeyIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // END_KEY
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.endKey = iprot.readBinary();
+              struct.setEndKeyIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // OFFLINE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.offline = iprot.readBool();
+              struct.setOfflineIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // SPLIT
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.split = iprot.readBool();
+              struct.setSplitIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // REPLICA_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.replicaId = iprot.readI32();
+              struct.setReplicaIdIsSet(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();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      if (!struct.isSetRegionId()) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'regionId' was not found in serialized data! Struct: " + toString());
+      }
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, THRegionInfo struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      oprot.writeFieldBegin(REGION_ID_FIELD_DESC);
+      oprot.writeI64(struct.regionId);
+      oprot.writeFieldEnd();
+      if (struct.tableName != null) {
+        oprot.writeFieldBegin(TABLE_NAME_FIELD_DESC);
+        oprot.writeBinary(struct.tableName);
+        oprot.writeFieldEnd();
+      }
+      if (struct.startKey != null) {
+        if (struct.isSetStartKey()) {
+          oprot.writeFieldBegin(START_KEY_FIELD_DESC);
+          oprot.writeBinary(struct.startKey);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.endKey != null) {
+        if (struct.isSetEndKey()) {
+          oprot.writeFieldBegin(END_KEY_FIELD_DESC);
+          oprot.writeBinary(struct.endKey);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetOffline()) {
+        oprot.writeFieldBegin(OFFLINE_FIELD_DESC);
+        oprot.writeBool(struct.offline);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetSplit()) {
+        oprot.writeFieldBegin(SPLIT_FIELD_DESC);
+        oprot.writeBool(struct.split);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetReplicaId()) {
+        oprot.writeFieldBegin(REPLICA_ID_FIELD_DESC);
+        oprot.writeI32(struct.replicaId);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class THRegionInfoTupleSchemeFactory implements SchemeFactory {
+    public THRegionInfoTupleScheme getScheme() {
+      return new THRegionInfoTupleScheme();
+    }
+  }
+
+  private static class THRegionInfoTupleScheme extends TupleScheme<THRegionInfo> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, THRegionInfo struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeI64(struct.regionId);
+      oprot.writeBinary(struct.tableName);
+      BitSet optionals = new BitSet();
+      if (struct.isSetStartKey()) {
+        optionals.set(0);
+      }
+      if (struct.isSetEndKey()) {
+        optionals.set(1);
+      }
+      if (struct.isSetOffline()) {
+        optionals.set(2);
+      }
+      if (struct.isSetSplit()) {
+        optionals.set(3);
+      }
+      if (struct.isSetReplicaId()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetStartKey()) {
+        oprot.writeBinary(struct.startKey);
+      }
+      if (struct.isSetEndKey()) {
+        oprot.writeBinary(struct.endKey);
+      }
+      if (struct.isSetOffline()) {
+        oprot.writeBool(struct.offline);
+      }
+      if (struct.isSetSplit()) {
+        oprot.writeBool(struct.split);
+      }
+      if (struct.isSetReplicaId()) {
+        oprot.writeI32(struct.replicaId);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, THRegionInfo struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.regionId = iprot.readI64();
+      struct.setRegionIdIsSet(true);
+      struct.tableName = iprot.readBinary();
+      struct.setTableNameIsSet(true);
+      BitSet incoming = iprot.readBitSet(5);
+      if (incoming.get(0)) {
+        struct.startKey = iprot.readBinary();
+        struct.setStartKeyIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.endKey = iprot.readBinary();
+        struct.setEndKeyIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.offline = iprot.readBool();
+        struct.setOfflineIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.split = iprot.readBool();
+        struct.setSplitIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.replicaId = iprot.readI32();
+        struct.setReplicaIdIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/hbase/blob/1bfe3879/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionLocation.java
----------------------------------------------------------------------
diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionLocation.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionLocation.java
new file mode 100644
index 0000000..22d00fc
--- /dev/null
+++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionLocation.java
@@ -0,0 +1,498 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.hadoop.hbase.thrift2.generated;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+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 java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class THRegionLocation implements org.apache.thrift.TBase<THRegionLocation, THRegionLocation._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("THRegionLocation");
+
+  private static final org.apache.thrift.protocol.TField SERVER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("serverName", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+  private static final org.apache.thrift.protocol.TField REGION_INFO_FIELD_DESC = new org.apache.thrift.protocol.TField("regionInfo", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new THRegionLocationStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new THRegionLocationTupleSchemeFactory());
+  }
+
+  public TServerName serverName; // required
+  public THRegionInfo regionInfo; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    SERVER_NAME((short)1, "serverName"),
+    REGION_INFO((short)2, "regionInfo");
+
+    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: // SERVER_NAME
+          return SERVER_NAME;
+        case 2: // REGION_INFO
+          return REGION_INFO;
+        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
+  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.SERVER_NAME, new org.apache.thrift.meta_data.FieldMetaData("serverName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TServerName.class)));
+    tmpMap.put(_Fields.REGION_INFO, new org.apache.thrift.meta_data.FieldMetaData("regionInfo", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, THRegionInfo.class)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(THRegionLocation.class, metaDataMap);
+  }
+
+  public THRegionLocation() {
+  }
+
+  public THRegionLocation(
+    TServerName serverName,
+    THRegionInfo regionInfo)
+  {
+    this();
+    this.serverName = serverName;
+    this.regionInfo = regionInfo;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public THRegionLocation(THRegionLocation other) {
+    if (other.isSetServerName()) {
+      this.serverName = new TServerName(other.serverName);
+    }
+    if (other.isSetRegionInfo()) {
+      this.regionInfo = new THRegionInfo(other.regionInfo);
+    }
+  }
+
+  public THRegionLocation deepCopy() {
+    return new THRegionLocation(this);
+  }
+
+  @Override
+  public void clear() {
+    this.serverName = null;
+    this.regionInfo = null;
+  }
+
+  public TServerName getServerName() {
+    return this.serverName;
+  }
+
+  public THRegionLocation setServerName(TServerName serverName) {
+    this.serverName = serverName;
+    return this;
+  }
+
+  public void unsetServerName() {
+    this.serverName = null;
+  }
+
+  /** Returns true if field serverName is set (has been assigned a value) and false otherwise */
+  public boolean isSetServerName() {
+    return this.serverName != null;
+  }
+
+  public void setServerNameIsSet(boolean value) {
+    if (!value) {
+      this.serverName = null;
+    }
+  }
+
+  public THRegionInfo getRegionInfo() {
+    return this.regionInfo;
+  }
+
+  public THRegionLocation setRegionInfo(THRegionInfo regionInfo) {
+    this.regionInfo = regionInfo;
+    return this;
+  }
+
+  public void unsetRegionInfo() {
+    this.regionInfo = null;
+  }
+
+  /** Returns true if field regionInfo is set (has been assigned a value) and false otherwise */
+  public boolean isSetRegionInfo() {
+    return this.regionInfo != null;
+  }
+
+  public void setRegionInfoIsSet(boolean value) {
+    if (!value) {
+      this.regionInfo = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case SERVER_NAME:
+      if (value == null) {
+        unsetServerName();
+      } else {
+        setServerName((TServerName)value);
+      }
+      break;
+
+    case REGION_INFO:
+      if (value == null) {
+        unsetRegionInfo();
+      } else {
+        setRegionInfo((THRegionInfo)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case SERVER_NAME:
+      return getServerName();
+
+    case REGION_INFO:
+      return getRegionInfo();
+
+    }
+    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 SERVER_NAME:
+      return isSetServerName();
+    case REGION_INFO:
+      return isSetRegionInfo();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof THRegionLocation)
+      return this.equals((THRegionLocation)that);
+    return false;
+  }
+
+  public boolean equals(THRegionLocation that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_serverName = true && this.isSetServerName();
+    boolean that_present_serverName = true && that.isSetServerName();
+    if (this_present_serverName || that_present_serverName) {
+      if (!(this_present_serverName && that_present_serverName))
+        return false;
+      if (!this.serverName.equals(that.serverName))
+        return false;
+    }
+
+    boolean this_present_regionInfo = true && this.isSetRegionInfo();
+    boolean that_present_regionInfo = true && that.isSetRegionInfo();
+    if (this_present_regionInfo || that_present_regionInfo) {
+      if (!(this_present_regionInfo && that_present_regionInfo))
+        return false;
+      if (!this.regionInfo.equals(that.regionInfo))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    HashCodeBuilder builder = new HashCodeBuilder();
+
+    boolean present_serverName = true && (isSetServerName());
+    builder.append(present_serverName);
+    if (present_serverName)
+      builder.append(serverName);
+
+    boolean present_regionInfo = true && (isSetRegionInfo());
+    builder.append(present_regionInfo);
+    if (present_regionInfo)
+      builder.append(regionInfo);
+
+    return builder.toHashCode();
+  }
+
+  public int compareTo(THRegionLocation other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    THRegionLocation typedOther = (THRegionLocation)other;
+
+    lastComparison = Boolean.valueOf(isSetServerName()).compareTo(typedOther.isSetServerName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetServerName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.serverName, typedOther.serverName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetRegionInfo()).compareTo(typedOther.isSetRegionInfo());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetRegionInfo()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.regionInfo, typedOther.regionInfo);
+      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("THRegionLocation(");
+    boolean first = true;
+
+    sb.append("serverName:");
+    if (this.serverName == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.serverName);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("regionInfo:");
+    if (this.regionInfo == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.regionInfo);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (serverName == null) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'serverName' was not present! Struct: " + toString());
+    }
+    if (regionInfo == null) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'regionInfo' was not present! Struct: " + toString());
+    }
+    // check for sub-struct validity
+    if (serverName != null) {
+      serverName.validate();
+    }
+    if (regionInfo != null) {
+      regionInfo.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 THRegionLocationStandardSchemeFactory implements SchemeFactory {
+    public THRegionLocationStandardScheme getScheme() {
+      return new THRegionLocationStandardScheme();
+    }
+  }
+
+  private static class THRegionLocationStandardScheme extends StandardScheme<THRegionLocation> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, THRegionLocation 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: // SERVER_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.serverName = new TServerName();
+              struct.serverName.read(iprot);
+              struct.setServerNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // REGION_INFO
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.regionInfo = new THRegionInfo();
+              struct.regionInfo.read(iprot);
+              struct.setRegionInfoIsSet(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();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, THRegionLocation struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.serverName != null) {
+        oprot.writeFieldBegin(SERVER_NAME_FIELD_DESC);
+        struct.serverName.write(oprot);
+        oprot.writeFieldEnd();
+      }
+      if (struct.regionInfo != null) {
+        oprot.writeFieldBegin(REGION_INFO_FIELD_DESC);
+        struct.regionInfo.write(oprot);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class THRegionLocationTupleSchemeFactory implements SchemeFactory {
+    public THRegionLocationTupleScheme getScheme() {
+      return new THRegionLocationTupleScheme();
+    }
+  }
+
+  private static class THRegionLocationTupleScheme extends TupleScheme<THRegionLocation> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, THRegionLocation struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      struct.serverName.write(oprot);
+      struct.regionInfo.write(oprot);
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, THRegionLocation struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.serverName = new TServerName();
+      struct.serverName.read(iprot);
+      struct.setServerNameIsSet(true);
+      struct.regionInfo = new THRegionInfo();
+      struct.regionInfo.read(iprot);
+      struct.setRegionInfoIsSet(true);
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/hbase/blob/1bfe3879/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TMutation.java
----------------------------------------------------------------------
diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TMutation.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TMutation.java
index b08a6af..8fb1567 100644
--- a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TMutation.java
+++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TMutation.java
@@ -103,9 +103,9 @@ public class TMutation extends org.apache.thrift.TUnion<TMutation, TMutation._Fi
   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.PUT, new org.apache.thrift.meta_data.FieldMetaData("put", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.PUT, new org.apache.thrift.meta_data.FieldMetaData("put", org.apache.thrift.TFieldRequirementType.DEFAULT, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TPut.class)));
-    tmpMap.put(_Fields.DELETE_SINGLE, new org.apache.thrift.meta_data.FieldMetaData("deleteSingle", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.DELETE_SINGLE, new org.apache.thrift.meta_data.FieldMetaData("deleteSingle", org.apache.thrift.TFieldRequirementType.DEFAULT, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TDelete.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TMutation.class, metaDataMap);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1bfe3879/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TServerName.java
----------------------------------------------------------------------
diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TServerName.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TServerName.java
new file mode 100644
index 0000000..652fa3f
--- /dev/null
+++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TServerName.java
@@ -0,0 +1,595 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.hadoop.hbase.thrift2.generated;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+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 java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TServerName implements org.apache.thrift.TBase<TServerName, TServerName._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TServerName");
+
+  private static final org.apache.thrift.protocol.TField HOST_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("hostName", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField PORT_FIELD_DESC = new org.apache.thrift.protocol.TField("port", org.apache.thrift.protocol.TType.I32, (short)2);
+  private static final org.apache.thrift.protocol.TField START_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("startCode", org.apache.thrift.protocol.TType.I64, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new TServerNameStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new TServerNameTupleSchemeFactory());
+  }
+
+  public String hostName; // required
+  public int port; // optional
+  public long startCode; // 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 {
+    HOST_NAME((short)1, "hostName"),
+    PORT((short)2, "port"),
+    START_CODE((short)3, "startCode");
+
+    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: // HOST_NAME
+          return HOST_NAME;
+        case 2: // PORT
+          return PORT;
+        case 3: // START_CODE
+          return START_CODE;
+        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 __PORT_ISSET_ID = 0;
+  private static final int __STARTCODE_ISSET_ID = 1;
+  private byte __isset_bitfield = 0;
+  private _Fields optionals[] = {_Fields.PORT,_Fields.START_CODE};
+  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.HOST_NAME, new org.apache.thrift.meta_data.FieldMetaData("hostName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PORT, new org.apache.thrift.meta_data.FieldMetaData("port", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.START_CODE, new org.apache.thrift.meta_data.FieldMetaData("startCode", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TServerName.class, metaDataMap);
+  }
+
+  public TServerName() {
+  }
+
+  public TServerName(
+    String hostName)
+  {
+    this();
+    this.hostName = hostName;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public TServerName(TServerName other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetHostName()) {
+      this.hostName = other.hostName;
+    }
+    this.port = other.port;
+    this.startCode = other.startCode;
+  }
+
+  public TServerName deepCopy() {
+    return new TServerName(this);
+  }
+
+  @Override
+  public void clear() {
+    this.hostName = null;
+    setPortIsSet(false);
+    this.port = 0;
+    setStartCodeIsSet(false);
+    this.startCode = 0;
+  }
+
+  public String getHostName() {
+    return this.hostName;
+  }
+
+  public TServerName setHostName(String hostName) {
+    this.hostName = hostName;
+    return this;
+  }
+
+  public void unsetHostName() {
+    this.hostName = null;
+  }
+
+  /** Returns true if field hostName is set (has been assigned a value) and false otherwise */
+  public boolean isSetHostName() {
+    return this.hostName != null;
+  }
+
+  public void setHostNameIsSet(boolean value) {
+    if (!value) {
+      this.hostName = null;
+    }
+  }
+
+  public int getPort() {
+    return this.port;
+  }
+
+  public TServerName setPort(int port) {
+    this.port = port;
+    setPortIsSet(true);
+    return this;
+  }
+
+  public void unsetPort() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PORT_ISSET_ID);
+  }
+
+  /** Returns true if field port is set (has been assigned a value) and false otherwise */
+  public boolean isSetPort() {
+    return EncodingUtils.testBit(__isset_bitfield, __PORT_ISSET_ID);
+  }
+
+  public void setPortIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PORT_ISSET_ID, value);
+  }
+
+  public long getStartCode() {
+    return this.startCode;
+  }
+
+  public TServerName setStartCode(long startCode) {
+    this.startCode = startCode;
+    setStartCodeIsSet(true);
+    return this;
+  }
+
+  public void unsetStartCode() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __STARTCODE_ISSET_ID);
+  }
+
+  /** Returns true if field startCode is set (has been assigned a value) and false otherwise */
+  public boolean isSetStartCode() {
+    return EncodingUtils.testBit(__isset_bitfield, __STARTCODE_ISSET_ID);
+  }
+
+  public void setStartCodeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __STARTCODE_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case HOST_NAME:
+      if (value == null) {
+        unsetHostName();
+      } else {
+        setHostName((String)value);
+      }
+      break;
+
+    case PORT:
+      if (value == null) {
+        unsetPort();
+      } else {
+        setPort((Integer)value);
+      }
+      break;
+
+    case START_CODE:
+      if (value == null) {
+        unsetStartCode();
+      } else {
+        setStartCode((Long)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case HOST_NAME:
+      return getHostName();
+
+    case PORT:
+      return Integer.valueOf(getPort());
+
+    case START_CODE:
+      return Long.valueOf(getStartCode());
+
+    }
+    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 HOST_NAME:
+      return isSetHostName();
+    case PORT:
+      return isSetPort();
+    case START_CODE:
+      return isSetStartCode();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof TServerName)
+      return this.equals((TServerName)that);
+    return false;
+  }
+
+  public boolean equals(TServerName that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_hostName = true && this.isSetHostName();
+    boolean that_present_hostName = true && that.isSetHostName();
+    if (this_present_hostName || that_present_hostName) {
+      if (!(this_present_hostName && that_present_hostName))
+        return false;
+      if (!this.hostName.equals(that.hostName))
+        return false;
+    }
+
+    boolean this_present_port = true && this.isSetPort();
+    boolean that_present_port = true && that.isSetPort();
+    if (this_present_port || that_present_port) {
+      if (!(this_present_port && that_present_port))
+        return false;
+      if (this.port != that.port)
+        return false;
+    }
+
+    boolean this_present_startCode = true && this.isSetStartCode();
+    boolean that_present_startCode = true && that.isSetStartCode();
+    if (this_present_startCode || that_present_startCode) {
+      if (!(this_present_startCode && that_present_startCode))
+        return false;
+      if (this.startCode != that.startCode)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    HashCodeBuilder builder = new HashCodeBuilder();
+
+    boolean present_hostName = true && (isSetHostName());
+    builder.append(present_hostName);
+    if (present_hostName)
+      builder.append(hostName);
+
+    boolean present_port = true && (isSetPort());
+    builder.append(present_port);
+    if (present_port)
+      builder.append(port);
+
+    boolean present_startCode = true && (isSetStartCode());
+    builder.append(present_startCode);
+    if (present_startCode)
+      builder.append(startCode);
+
+    return builder.toHashCode();
+  }
+
+  public int compareTo(TServerName other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    TServerName typedOther = (TServerName)other;
+
+    lastComparison = Boolean.valueOf(isSetHostName()).compareTo(typedOther.isSetHostName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetHostName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.hostName, typedOther.hostName);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetPort()).compareTo(typedOther.isSetPort());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPort()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.port, typedOther.port);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStartCode()).compareTo(typedOther.isSetStartCode());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStartCode()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.startCode, typedOther.startCode);
+      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("TServerName(");
+    boolean first = true;
+
+    sb.append("hostName:");
+    if (this.hostName == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.hostName);
+    }
+    first = false;
+    if (isSetPort()) {
+      if (!first) sb.append(", ");
+      sb.append("port:");
+      sb.append(this.port);
+      first = false;
+    }
+    if (isSetStartCode()) {
+      if (!first) sb.append(", ");
+      sb.append("startCode:");
+      sb.append(this.startCode);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (hostName == null) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'hostName' was not present! Struct: " + toString());
+    }
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class TServerNameStandardSchemeFactory implements SchemeFactory {
+    public TServerNameStandardScheme getScheme() {
+      return new TServerNameStandardScheme();
+    }
+  }
+
+  private static class TServerNameStandardScheme extends StandardScheme<TServerName> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, TServerName 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: // HOST_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.hostName = iprot.readString();
+              struct.setHostNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // PORT
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.port = iprot.readI32();
+              struct.setPortIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // START_CODE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.startCode = iprot.readI64();
+              struct.setStartCodeIsSet(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();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, TServerName struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.hostName != null) {
+        oprot.writeFieldBegin(HOST_NAME_FIELD_DESC);
+        oprot.writeString(struct.hostName);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetPort()) {
+        oprot.writeFieldBegin(PORT_FIELD_DESC);
+        oprot.writeI32(struct.port);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetStartCode()) {
+        oprot.writeFieldBegin(START_CODE_FIELD_DESC);
+        oprot.writeI64(struct.startCode);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class TServerNameTupleSchemeFactory implements SchemeFactory {
+    public TServerNameTupleScheme getScheme() {
+      return new TServerNameTupleScheme();
+    }
+  }
+
+  private static class TServerNameTupleScheme extends TupleScheme<TServerName> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, TServerName struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      oprot.writeString(struct.hostName);
+      BitSet optionals = new BitSet();
+      if (struct.isSetPort()) {
+        optionals.set(0);
+      }
+      if (struct.isSetStartCode()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetPort()) {
+        oprot.writeI32(struct.port);
+      }
+      if (struct.isSetStartCode()) {
+        oprot.writeI64(struct.startCode);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, TServerName struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.hostName = iprot.readString();
+      struct.setHostNameIsSet(true);
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.port = iprot.readI32();
+        struct.setPortIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.startCode = iprot.readI64();
+        struct.setStartCodeIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/hbase/blob/1bfe3879/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
----------------------------------------------------------------------
diff --git a/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift b/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
index bc790e7..4ad4cdd 100644
--- a/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
+++ b/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
@@ -242,6 +242,27 @@ struct TRowMutations {
   2: required list<TMutation> mutations
 }
 
+struct THRegionInfo {
+  1: required i64 regionId
+  2: required binary tableName
+  3: optional binary startKey
+  4: optional binary endKey
+  5: optional bool offline
+  6: optional bool split
+  7: optional i32 replicaId
+}
+
+struct TServerName {
+  1: required string hostName
+  2: optional i32 port
+  3: optional i64 startCode
+}
+
+struct THRegionLocation {
+  1: required TServerName serverName
+  2: required THRegionInfo regionInfo
+}
+
 //
 // Exceptions
 //
@@ -512,4 +533,27 @@ service THBaseService {
     1: TIOError io
   )
 
+  /**
+   * Given a table and a row get the location of the region that
+   * would contain the given row key.
+   *
+   * reload = true means the cache will be cleared and the location
+   * will be fetched from meta.
+   */
+  THRegionLocation getRegionLocation(
+    1: required binary table,
+    2: required binary row,
+    3: bool reload,
+  ) throws (
+    1: TIOError io
+  )
+
+  /**
+   * Get all of the region locations for a given table.
+   **/
+  list<THRegionLocation> getAllRegionLocations(
+    1: required binary table,
+  ) throws (
+    1: TIOError io
+  )
 }