http://git-wip-us.apache.org/repos/asf/hbase-site/blob/985cca06/apidocs/src-html/org/apache/hadoop/hbase/rest/client/RemoteHTable.html
----------------------------------------------------------------------
diff --git 
a/apidocs/src-html/org/apache/hadoop/hbase/rest/client/RemoteHTable.html 
b/apidocs/src-html/org/apache/hadoop/hbase/rest/client/RemoteHTable.html
index 1067d9a..f8fb8f1 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/rest/client/RemoteHTable.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/rest/client/RemoteHTable.html
@@ -27,61 +27,61 @@
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>package 
org.apache.hadoop.hbase.rest.client;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a 
name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.InterruptedIOException;<a 
name="line.23"></a>
-<span class="sourceLineNo">024</span>import 
java.io.UnsupportedEncodingException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.URLEncoder;<a 
name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.ArrayList;<a 
name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Collection;<a 
name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.Iterator;<a 
name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.List;<a 
name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Map;<a 
name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Set;<a 
name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.TreeMap;<a 
name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.logging.Log;<a 
name="line.34"></a>
-<span class="sourceLineNo">035</span>import 
org.apache.commons.logging.LogFactory;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.37"></a>
-<span class="sourceLineNo">038</span>import 
org.apache.hadoop.hbase.CellUtil;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import 
org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import 
org.apache.hadoop.hbase.HTableDescriptor;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import 
org.apache.hadoop.hbase.KeyValue;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import 
org.apache.hadoop.hbase.TableName;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import 
org.apache.hadoop.hbase.client.Append;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import 
org.apache.hadoop.hbase.client.Delete;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import 
org.apache.hadoop.hbase.client.Durability;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import 
org.apache.hadoop.hbase.client.Get;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import 
org.apache.hadoop.hbase.client.Increment;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import 
org.apache.hadoop.hbase.client.Put;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import 
org.apache.hadoop.hbase.client.Result;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import 
org.apache.hadoop.hbase.client.ResultScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import 
org.apache.hadoop.hbase.client.Row;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import 
org.apache.hadoop.hbase.client.RowMutations;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import 
org.apache.hadoop.hbase.client.Scan;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import 
org.apache.hadoop.hbase.client.Table;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import 
org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import 
org.apache.hadoop.hbase.client.coprocessor.Batch;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import 
org.apache.hadoop.hbase.client.coprocessor.Batch.Callback;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import 
org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import 
org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import 
org.apache.hadoop.hbase.io.TimeRange;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import 
org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import 
org.apache.hadoop.hbase.rest.Constants;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import 
org.apache.hadoop.hbase.rest.model.CellModel;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import 
org.apache.hadoop.hbase.rest.model.CellSetModel;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import 
org.apache.hadoop.hbase.rest.model.RowModel;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import 
org.apache.hadoop.hbase.rest.model.ScannerModel;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import 
org.apache.hadoop.hbase.rest.model.TableSchemaModel;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import 
org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import 
org.apache.hadoop.util.StringUtils;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>import com.google.protobuf.Descriptors;<a 
name="line.73"></a>
-<span class="sourceLineNo">074</span>import com.google.protobuf.Message;<a 
name="line.74"></a>
-<span class="sourceLineNo">075</span>import com.google.protobuf.Service;<a 
name="line.75"></a>
-<span class="sourceLineNo">076</span>import 
com.google.protobuf.ServiceException;<a name="line.76"></a>
+<span class="sourceLineNo">022</span>import com.google.protobuf.Descriptors;<a 
name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.Message;<a 
name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.Service;<a 
name="line.24"></a>
+<span class="sourceLineNo">025</span>import 
com.google.protobuf.ServiceException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.Log;<a 
name="line.26"></a>
+<span class="sourceLineNo">027</span>import 
org.apache.commons.logging.LogFactory;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.29"></a>
+<span class="sourceLineNo">030</span>import 
org.apache.hadoop.hbase.CellUtil;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import 
org.apache.hadoop.hbase.CompareOperator;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import 
org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import 
org.apache.hadoop.hbase.HTableDescriptor;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import 
org.apache.hadoop.hbase.KeyValue;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import 
org.apache.hadoop.hbase.TableName;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import 
org.apache.hadoop.hbase.client.Append;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import 
org.apache.hadoop.hbase.client.Delete;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import 
org.apache.hadoop.hbase.client.Durability;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import 
org.apache.hadoop.hbase.client.Get;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import 
org.apache.hadoop.hbase.client.Increment;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import 
org.apache.hadoop.hbase.client.Put;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import 
org.apache.hadoop.hbase.client.Result;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import 
org.apache.hadoop.hbase.client.ResultScanner;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import 
org.apache.hadoop.hbase.client.Row;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import 
org.apache.hadoop.hbase.client.RowMutations;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import 
org.apache.hadoop.hbase.client.Scan;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import 
org.apache.hadoop.hbase.client.Table;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import 
org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import 
org.apache.hadoop.hbase.client.coprocessor.Batch;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import 
org.apache.hadoop.hbase.client.coprocessor.Batch.Callback;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import 
org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import 
org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import 
org.apache.hadoop.hbase.io.TimeRange;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import 
org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import 
org.apache.hadoop.hbase.rest.Constants;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import 
org.apache.hadoop.hbase.rest.model.CellModel;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import 
org.apache.hadoop.hbase.rest.model.CellSetModel;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import 
org.apache.hadoop.hbase.rest.model.RowModel;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import 
org.apache.hadoop.hbase.rest.model.ScannerModel;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import 
org.apache.hadoop.hbase.rest.model.TableSchemaModel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import 
org.apache.hadoop.hbase.util.Bytes;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import 
org.apache.hadoop.util.StringUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>import java.io.IOException;<a 
name="line.66"></a>
+<span class="sourceLineNo">067</span>import java.io.InterruptedIOException;<a 
name="line.67"></a>
+<span class="sourceLineNo">068</span>import 
java.io.UnsupportedEncodingException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import java.net.URLEncoder;<a 
name="line.69"></a>
+<span class="sourceLineNo">070</span>import java.util.ArrayList;<a 
name="line.70"></a>
+<span class="sourceLineNo">071</span>import java.util.Collection;<a 
name="line.71"></a>
+<span class="sourceLineNo">072</span>import java.util.Iterator;<a 
name="line.72"></a>
+<span class="sourceLineNo">073</span>import java.util.List;<a 
name="line.73"></a>
+<span class="sourceLineNo">074</span>import java.util.Map;<a 
name="line.74"></a>
+<span class="sourceLineNo">075</span>import java.util.Set;<a 
name="line.75"></a>
+<span class="sourceLineNo">076</span>import java.util.TreeMap;<a 
name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
 <span class="sourceLineNo">078</span>/**<a name="line.78"></a>
 <span class="sourceLineNo">079</span> * HTable interface to remote tables 
accessed via REST gateway<a name="line.79"></a>
@@ -729,183 +729,200 @@
 <span class="sourceLineNo">721</span>  }<a name="line.721"></a>
 <span class="sourceLineNo">722</span><a name="line.722"></a>
 <span class="sourceLineNo">723</span>  @Override<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  public boolean checkAndDelete(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>      byte[] value, Delete delete) throws 
IOException {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    Put put = new Put(row);<a 
name="line.726"></a>
-<span class="sourceLineNo">727</span>    
put.setFamilyCellMap(delete.getFamilyCellMap());<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    // column to check-the-value<a 
name="line.728"></a>
-<span class="sourceLineNo">729</span>    put.add(new KeyValue(row, family, 
qualifier, value));<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    CellSetModel model = 
buildModelFromPut(put);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    StringBuilder sb = new 
StringBuilder();<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    sb.append('/');<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    sb.append(Bytes.toString(name));<a 
name="line.733"></a>
-<span class="sourceLineNo">734</span>    sb.append('/');<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    sb.append(toURLEncodedBytes(row));<a 
name="line.735"></a>
-<span class="sourceLineNo">736</span>    sb.append("?check=delete");<a 
name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>    for (int i = 0; i &lt; maxRetries; 
i++) {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      Response response = 
client.put(sb.toString(),<a name="line.739"></a>
-<span class="sourceLineNo">740</span>        Constants.MIMETYPE_PROTOBUF, 
model.createProtobufOutput());<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      int code = response.getCode();<a 
name="line.741"></a>
-<span class="sourceLineNo">742</span>      switch (code) {<a 
name="line.742"></a>
-<span class="sourceLineNo">743</span>      case 200:<a name="line.743"></a>
-<span class="sourceLineNo">744</span>        return true;<a 
name="line.744"></a>
-<span class="sourceLineNo">745</span>      case 304: // NOT-MODIFIED<a 
name="line.745"></a>
-<span class="sourceLineNo">746</span>        return false;<a 
name="line.746"></a>
-<span class="sourceLineNo">747</span>      case 509:<a name="line.747"></a>
-<span class="sourceLineNo">748</span>        try {<a name="line.748"></a>
-<span class="sourceLineNo">749</span>          Thread.sleep(sleepTime);<a 
name="line.749"></a>
-<span class="sourceLineNo">750</span>        } catch (final 
InterruptedException e) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>          throw 
(InterruptedIOException)new InterruptedIOException().initCause(e);<a 
name="line.751"></a>
-<span class="sourceLineNo">752</span>        }<a name="line.752"></a>
-<span class="sourceLineNo">753</span>        break;<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      default:<a name="line.754"></a>
-<span class="sourceLineNo">755</span>        throw new 
IOException("checkAndDelete request failed with " + code);<a 
name="line.755"></a>
-<span class="sourceLineNo">756</span>      }<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    throw new IOException("checkAndDelete 
request timed out");<a name="line.758"></a>
-<span class="sourceLineNo">759</span>  }<a name="line.759"></a>
-<span class="sourceLineNo">760</span><a name="line.760"></a>
-<span class="sourceLineNo">761</span>  @Override<a name="line.761"></a>
-<span class="sourceLineNo">762</span>  public boolean checkAndDelete(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      CompareOp compareOp, byte[] value, 
Delete delete) throws IOException {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    throw new IOException("checkAndDelete 
for non-equal comparison not implemented");<a name="line.764"></a>
+<span class="sourceLineNo">724</span>  public boolean checkAndPut(byte[] row, 
byte[] family, byte[] qualifier,<a name="line.724"></a>
+<span class="sourceLineNo">725</span>                             
CompareOperator compareOp, byte[] value, Put put) throws IOException {<a 
name="line.725"></a>
+<span class="sourceLineNo">726</span>    throw new IOException("checkAndPut 
for non-equal comparison not implemented");<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @Override<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  public boolean checkAndDelete(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      byte[] value, Delete delete) throws 
IOException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    Put put = new Put(row);<a 
name="line.732"></a>
+<span class="sourceLineNo">733</span>    
put.setFamilyCellMap(delete.getFamilyCellMap());<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    // column to check-the-value<a 
name="line.734"></a>
+<span class="sourceLineNo">735</span>    put.add(new KeyValue(row, family, 
qualifier, value));<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    CellSetModel model = 
buildModelFromPut(put);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    StringBuilder sb = new 
StringBuilder();<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    sb.append('/');<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    sb.append(Bytes.toString(name));<a 
name="line.739"></a>
+<span class="sourceLineNo">740</span>    sb.append('/');<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    sb.append(toURLEncodedBytes(row));<a 
name="line.741"></a>
+<span class="sourceLineNo">742</span>    sb.append("?check=delete");<a 
name="line.742"></a>
+<span class="sourceLineNo">743</span><a name="line.743"></a>
+<span class="sourceLineNo">744</span>    for (int i = 0; i &lt; maxRetries; 
i++) {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      Response response = 
client.put(sb.toString(),<a name="line.745"></a>
+<span class="sourceLineNo">746</span>        Constants.MIMETYPE_PROTOBUF, 
model.createProtobufOutput());<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      int code = response.getCode();<a 
name="line.747"></a>
+<span class="sourceLineNo">748</span>      switch (code) {<a 
name="line.748"></a>
+<span class="sourceLineNo">749</span>      case 200:<a name="line.749"></a>
+<span class="sourceLineNo">750</span>        return true;<a 
name="line.750"></a>
+<span class="sourceLineNo">751</span>      case 304: // NOT-MODIFIED<a 
name="line.751"></a>
+<span class="sourceLineNo">752</span>        return false;<a 
name="line.752"></a>
+<span class="sourceLineNo">753</span>      case 509:<a name="line.753"></a>
+<span class="sourceLineNo">754</span>        try {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>          Thread.sleep(sleepTime);<a 
name="line.755"></a>
+<span class="sourceLineNo">756</span>        } catch (final 
InterruptedException e) {<a name="line.756"></a>
+<span class="sourceLineNo">757</span>          throw 
(InterruptedIOException)new InterruptedIOException().initCause(e);<a 
name="line.757"></a>
+<span class="sourceLineNo">758</span>        }<a name="line.758"></a>
+<span class="sourceLineNo">759</span>        break;<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      default:<a name="line.760"></a>
+<span class="sourceLineNo">761</span>        throw new 
IOException("checkAndDelete request failed with " + code);<a 
name="line.761"></a>
+<span class="sourceLineNo">762</span>      }<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    }<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    throw new IOException("checkAndDelete 
request timed out");<a name="line.764"></a>
 <span class="sourceLineNo">765</span>  }<a name="line.765"></a>
 <span class="sourceLineNo">766</span><a name="line.766"></a>
 <span class="sourceLineNo">767</span>  @Override<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public Result increment(Increment 
increment) throws IOException {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    throw new IOException("Increment not 
supported");<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  @Override<a name="line.772"></a>
-<span class="sourceLineNo">773</span>  public Result append(Append append) 
throws IOException {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    throw new IOException("Append not 
supported");<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  @Override<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  public long incrementColumnValue(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      long amount) throws IOException {<a 
name="line.779"></a>
-<span class="sourceLineNo">780</span>    throw new 
IOException("incrementColumnValue not supported");<a name="line.780"></a>
-<span class="sourceLineNo">781</span>  }<a name="line.781"></a>
-<span class="sourceLineNo">782</span><a name="line.782"></a>
-<span class="sourceLineNo">783</span>  @Override<a name="line.783"></a>
-<span class="sourceLineNo">784</span>  public long incrementColumnValue(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      long amount, Durability durability) 
throws IOException {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    throw new 
IOException("incrementColumnValue not supported");<a name="line.786"></a>
+<span class="sourceLineNo">768</span>  public boolean checkAndDelete(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      CompareOp compareOp, byte[] value, 
Delete delete) throws IOException {<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    throw new IOException("checkAndDelete 
for non-equal comparison not implemented");<a name="line.770"></a>
+<span class="sourceLineNo">771</span>  }<a name="line.771"></a>
+<span class="sourceLineNo">772</span><a name="line.772"></a>
+<span class="sourceLineNo">773</span>  @Override<a name="line.773"></a>
+<span class="sourceLineNo">774</span>  public boolean checkAndDelete(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.774"></a>
+<span class="sourceLineNo">775</span>                                
CompareOperator compareOp, byte[] value, Delete delete) throws IOException {<a 
name="line.775"></a>
+<span class="sourceLineNo">776</span>    throw new IOException("checkAndDelete 
for non-equal comparison not implemented");<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  }<a name="line.777"></a>
+<span class="sourceLineNo">778</span><a name="line.778"></a>
+<span class="sourceLineNo">779</span>  @Override<a name="line.779"></a>
+<span class="sourceLineNo">780</span>  public Result increment(Increment 
increment) throws IOException {<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    throw new IOException("Increment not 
supported");<a name="line.781"></a>
+<span class="sourceLineNo">782</span>  }<a name="line.782"></a>
+<span class="sourceLineNo">783</span><a name="line.783"></a>
+<span class="sourceLineNo">784</span>  @Override<a name="line.784"></a>
+<span class="sourceLineNo">785</span>  public Result append(Append append) 
throws IOException {<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    throw new IOException("Append not 
supported");<a name="line.786"></a>
 <span class="sourceLineNo">787</span>  }<a name="line.787"></a>
 <span class="sourceLineNo">788</span><a name="line.788"></a>
 <span class="sourceLineNo">789</span>  @Override<a name="line.789"></a>
-<span class="sourceLineNo">790</span>  public void batch(List&lt;? extends 
Row&gt; actions, Object[] results) throws IOException {<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    throw new IOException("batch not 
supported");<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>  @Override<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public &lt;R&gt; void 
batchCallback(List&lt;? extends Row&gt; actions, Object[] results,<a 
name="line.795"></a>
-<span class="sourceLineNo">796</span>      Batch.Callback&lt;R&gt; callback) 
throws IOException, InterruptedException {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    throw new IOException("batchCallback 
not supported");<a name="line.797"></a>
-<span class="sourceLineNo">798</span>  }<a name="line.798"></a>
-<span class="sourceLineNo">799</span><a name="line.799"></a>
-<span class="sourceLineNo">800</span>  @Override<a name="line.800"></a>
-<span class="sourceLineNo">801</span>  public CoprocessorRpcChannel 
coprocessorService(byte[] row) {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    throw new 
UnsupportedOperationException("coprocessorService not implemented");<a 
name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  @Override<a name="line.805"></a>
-<span class="sourceLineNo">806</span>  public &lt;T extends Service, R&gt; 
Map&lt;byte[], R&gt; coprocessorService(Class&lt;T&gt; service,<a 
name="line.806"></a>
-<span class="sourceLineNo">807</span>      byte[] startKey, byte[] endKey, 
Batch.Call&lt;T, R&gt; callable)<a name="line.807"></a>
-<span class="sourceLineNo">808</span>      throws ServiceException, Throwable 
{<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    throw new 
UnsupportedOperationException("coprocessorService not implemented");<a 
name="line.809"></a>
+<span class="sourceLineNo">790</span>  public long incrementColumnValue(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      long amount) throws IOException {<a 
name="line.791"></a>
+<span class="sourceLineNo">792</span>    throw new 
IOException("incrementColumnValue not supported");<a name="line.792"></a>
+<span class="sourceLineNo">793</span>  }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>  @Override<a name="line.795"></a>
+<span class="sourceLineNo">796</span>  public long incrementColumnValue(byte[] 
row, byte[] family, byte[] qualifier,<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      long amount, Durability durability) 
throws IOException {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    throw new 
IOException("incrementColumnValue not supported");<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
+<span class="sourceLineNo">800</span><a name="line.800"></a>
+<span class="sourceLineNo">801</span>  @Override<a name="line.801"></a>
+<span class="sourceLineNo">802</span>  public void batch(List&lt;? extends 
Row&gt; actions, Object[] results) throws IOException {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    throw new IOException("batch not 
supported");<a name="line.803"></a>
+<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>  @Override<a name="line.806"></a>
+<span class="sourceLineNo">807</span>  public &lt;R&gt; void 
batchCallback(List&lt;? extends Row&gt; actions, Object[] results,<a 
name="line.807"></a>
+<span class="sourceLineNo">808</span>      Batch.Callback&lt;R&gt; callback) 
throws IOException, InterruptedException {<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    throw new IOException("batchCallback 
not supported");<a name="line.809"></a>
 <span class="sourceLineNo">810</span>  }<a name="line.810"></a>
 <span class="sourceLineNo">811</span><a name="line.811"></a>
 <span class="sourceLineNo">812</span>  @Override<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  public &lt;T extends Service, R&gt; 
void coprocessorService(Class&lt;T&gt; service,<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      byte[] startKey, byte[] endKey, 
Batch.Call&lt;T, R&gt; callable, Batch.Callback&lt;R&gt; callback)<a 
name="line.814"></a>
-<span class="sourceLineNo">815</span>      throws ServiceException, Throwable 
{<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    throw new 
UnsupportedOperationException("coprocessorService not implemented");<a 
name="line.816"></a>
-<span class="sourceLineNo">817</span>  }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>  @Override<a name="line.819"></a>
-<span class="sourceLineNo">820</span>  public void mutateRow(RowMutations rm) 
throws IOException {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    throw new IOException("atomicMutation 
not supported");<a name="line.821"></a>
+<span class="sourceLineNo">813</span>  public CoprocessorRpcChannel 
coprocessorService(byte[] row) {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    throw new 
UnsupportedOperationException("coprocessorService not implemented");<a 
name="line.814"></a>
+<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>  @Override<a name="line.817"></a>
+<span class="sourceLineNo">818</span>  public &lt;T extends Service, R&gt; 
Map&lt;byte[], R&gt; coprocessorService(Class&lt;T&gt; service,<a 
name="line.818"></a>
+<span class="sourceLineNo">819</span>      byte[] startKey, byte[] endKey, 
Batch.Call&lt;T, R&gt; callable)<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      throws ServiceException, Throwable 
{<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    throw new 
UnsupportedOperationException("coprocessorService not implemented");<a 
name="line.821"></a>
 <span class="sourceLineNo">822</span>  }<a name="line.822"></a>
 <span class="sourceLineNo">823</span><a name="line.823"></a>
 <span class="sourceLineNo">824</span>  @Override<a name="line.824"></a>
-<span class="sourceLineNo">825</span>  public &lt;R extends Message&gt; 
Map&lt;byte[], R&gt; batchCoprocessorService(<a name="line.825"></a>
-<span class="sourceLineNo">826</span>      Descriptors.MethodDescriptor 
method, Message request,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      byte[] startKey, byte[] endKey, R 
responsePrototype) throws ServiceException, Throwable {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    throw new 
UnsupportedOperationException("batchCoprocessorService not implemented");<a 
name="line.828"></a>
+<span class="sourceLineNo">825</span>  public &lt;T extends Service, R&gt; 
void coprocessorService(Class&lt;T&gt; service,<a name="line.825"></a>
+<span class="sourceLineNo">826</span>      byte[] startKey, byte[] endKey, 
Batch.Call&lt;T, R&gt; callable, Batch.Callback&lt;R&gt; callback)<a 
name="line.826"></a>
+<span class="sourceLineNo">827</span>      throws ServiceException, Throwable 
{<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    throw new 
UnsupportedOperationException("coprocessorService not implemented");<a 
name="line.828"></a>
 <span class="sourceLineNo">829</span>  }<a name="line.829"></a>
 <span class="sourceLineNo">830</span><a name="line.830"></a>
 <span class="sourceLineNo">831</span>  @Override<a name="line.831"></a>
-<span class="sourceLineNo">832</span>  public &lt;R extends Message&gt; void 
batchCoprocessorService(<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      Descriptors.MethodDescriptor 
method, Message request,<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      byte[] startKey, byte[] endKey, R 
responsePrototype, Callback&lt;R&gt; callback)<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      throws ServiceException, Throwable 
{<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    throw new 
UnsupportedOperationException("batchCoprocessorService not implemented");<a 
name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  @Override public boolean 
checkAndMutate(byte[] row, byte[] family, byte[] qualifier,<a 
name="line.839"></a>
-<span class="sourceLineNo">840</span>      CompareOp compareOp, byte[] value, 
RowMutations rm) throws IOException {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    throw new 
UnsupportedOperationException("checkAndMutate not implemented");<a 
name="line.841"></a>
-<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
-<span class="sourceLineNo">843</span><a name="line.843"></a>
-<span class="sourceLineNo">844</span>  @Override<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  public void setOperationTimeout(int 
operationTimeout) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    throw new 
UnsupportedOperationException();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  }<a name="line.847"></a>
-<span class="sourceLineNo">848</span><a name="line.848"></a>
-<span class="sourceLineNo">849</span>  @Override<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  public int getOperationTimeout() {<a 
name="line.850"></a>
-<span class="sourceLineNo">851</span>    throw new 
UnsupportedOperationException();<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>  @Override<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  @Deprecated<a name="line.855"></a>
-<span class="sourceLineNo">856</span>  public void setRpcTimeout(int 
rpcTimeout) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    throw new 
UnsupportedOperationException();<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  @Override<a name="line.860"></a>
-<span class="sourceLineNo">861</span>  @Deprecated<a name="line.861"></a>
-<span class="sourceLineNo">862</span>  public int getRpcTimeout() {<a 
name="line.862"></a>
+<span class="sourceLineNo">832</span>  public void mutateRow(RowMutations rm) 
throws IOException {<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    throw new IOException("atomicMutation 
not supported");<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
+<span class="sourceLineNo">835</span><a name="line.835"></a>
+<span class="sourceLineNo">836</span>  @Override<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  public &lt;R extends Message&gt; 
Map&lt;byte[], R&gt; batchCoprocessorService(<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      Descriptors.MethodDescriptor 
method, Message request,<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      byte[] startKey, byte[] endKey, R 
responsePrototype) throws ServiceException, Throwable {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    throw new 
UnsupportedOperationException("batchCoprocessorService not implemented");<a 
name="line.840"></a>
+<span class="sourceLineNo">841</span>  }<a name="line.841"></a>
+<span class="sourceLineNo">842</span><a name="line.842"></a>
+<span class="sourceLineNo">843</span>  @Override<a name="line.843"></a>
+<span class="sourceLineNo">844</span>  public &lt;R extends Message&gt; void 
batchCoprocessorService(<a name="line.844"></a>
+<span class="sourceLineNo">845</span>      Descriptors.MethodDescriptor 
method, Message request,<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      byte[] startKey, byte[] endKey, R 
responsePrototype, Callback&lt;R&gt; callback)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      throws ServiceException, Throwable 
{<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    throw new 
UnsupportedOperationException("batchCoprocessorService not implemented");<a 
name="line.848"></a>
+<span class="sourceLineNo">849</span>  }<a name="line.849"></a>
+<span class="sourceLineNo">850</span><a name="line.850"></a>
+<span class="sourceLineNo">851</span>  @Override public boolean 
checkAndMutate(byte[] row, byte[] family, byte[] qualifier,<a 
name="line.851"></a>
+<span class="sourceLineNo">852</span>      CompareOp compareOp, byte[] value, 
RowMutations rm) throws IOException {<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    throw new 
UnsupportedOperationException("checkAndMutate not implemented");<a 
name="line.853"></a>
+<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>  @Override public boolean 
checkAndMutate(byte[] row, byte[] family, byte[] qualifier,<a 
name="line.856"></a>
+<span class="sourceLineNo">857</span>                                          
CompareOperator compareOp, byte[] value, RowMutations rm) throws IOException 
{<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    throw new 
UnsupportedOperationException("checkAndMutate not implemented");<a 
name="line.858"></a>
+<span class="sourceLineNo">859</span>  }<a name="line.859"></a>
+<span class="sourceLineNo">860</span><a name="line.860"></a>
+<span class="sourceLineNo">861</span>  @Override<a name="line.861"></a>
+<span class="sourceLineNo">862</span>  public void setOperationTimeout(int 
operationTimeout) {<a name="line.862"></a>
 <span class="sourceLineNo">863</span>    throw new 
UnsupportedOperationException();<a name="line.863"></a>
 <span class="sourceLineNo">864</span>  }<a name="line.864"></a>
 <span class="sourceLineNo">865</span><a name="line.865"></a>
 <span class="sourceLineNo">866</span>  @Override<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  public int getReadRpcTimeout() {<a 
name="line.867"></a>
+<span class="sourceLineNo">867</span>  public int getOperationTimeout() {<a 
name="line.867"></a>
 <span class="sourceLineNo">868</span>    throw new 
UnsupportedOperationException();<a name="line.868"></a>
 <span class="sourceLineNo">869</span>  }<a name="line.869"></a>
 <span class="sourceLineNo">870</span><a name="line.870"></a>
 <span class="sourceLineNo">871</span>  @Override<a name="line.871"></a>
-<span class="sourceLineNo">872</span>  public void setReadRpcTimeout(int 
readRpcTimeout) {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    throw new 
UnsupportedOperationException();<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  }<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>  @Override<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  public int getWriteRpcTimeout() {<a 
name="line.877"></a>
-<span class="sourceLineNo">878</span>    throw new 
UnsupportedOperationException();<a name="line.878"></a>
-<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
-<span class="sourceLineNo">880</span><a name="line.880"></a>
-<span class="sourceLineNo">881</span>  @Override<a name="line.881"></a>
-<span class="sourceLineNo">882</span>  public void setWriteRpcTimeout(int 
writeRpcTimeout) {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    throw new 
UnsupportedOperationException();<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  }<a name="line.884"></a>
-<span class="sourceLineNo">885</span><a name="line.885"></a>
-<span class="sourceLineNo">886</span>  /*<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   * Only a small subset of characters 
are valid in URLs.<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   *<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Row keys, column families, and 
qualifiers cannot be appended to URLs without first URL<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * escaping. Table names are ok because 
they can only contain alphanumeric, ".","_", and "-"<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * which are valid characters in 
URLs.<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   */<a name="line.892"></a>
-<span class="sourceLineNo">893</span>  private static String 
toURLEncodedBytes(byte[] row) {<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    try {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      return URLEncoder.encode(new 
String(row, "UTF-8"), "UTF-8");<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    } catch (UnsupportedEncodingException 
e) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span>      throw new 
IllegalStateException("URLEncoder doesn't support UTF-8", e);<a 
name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>}<a name="line.900"></a>
+<span class="sourceLineNo">872</span>  @Deprecated<a name="line.872"></a>
+<span class="sourceLineNo">873</span>  public void setRpcTimeout(int 
rpcTimeout) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    throw new 
UnsupportedOperationException();<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  }<a name="line.875"></a>
+<span class="sourceLineNo">876</span><a name="line.876"></a>
+<span class="sourceLineNo">877</span>  @Override<a name="line.877"></a>
+<span class="sourceLineNo">878</span>  @Deprecated<a name="line.878"></a>
+<span class="sourceLineNo">879</span>  public int getRpcTimeout() {<a 
name="line.879"></a>
+<span class="sourceLineNo">880</span>    throw new 
UnsupportedOperationException();<a name="line.880"></a>
+<span class="sourceLineNo">881</span>  }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span>  @Override<a name="line.883"></a>
+<span class="sourceLineNo">884</span>  public int getReadRpcTimeout() {<a 
name="line.884"></a>
+<span class="sourceLineNo">885</span>    throw new 
UnsupportedOperationException();<a name="line.885"></a>
+<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
+<span class="sourceLineNo">887</span><a name="line.887"></a>
+<span class="sourceLineNo">888</span>  @Override<a name="line.888"></a>
+<span class="sourceLineNo">889</span>  public void setReadRpcTimeout(int 
readRpcTimeout) {<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    throw new 
UnsupportedOperationException();<a name="line.890"></a>
+<span class="sourceLineNo">891</span>  }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>  @Override<a name="line.893"></a>
+<span class="sourceLineNo">894</span>  public int getWriteRpcTimeout() {<a 
name="line.894"></a>
+<span class="sourceLineNo">895</span>    throw new 
UnsupportedOperationException();<a name="line.895"></a>
+<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
+<span class="sourceLineNo">897</span><a name="line.897"></a>
+<span class="sourceLineNo">898</span>  @Override<a name="line.898"></a>
+<span class="sourceLineNo">899</span>  public void setWriteRpcTimeout(int 
writeRpcTimeout) {<a name="line.899"></a>
+<span class="sourceLineNo">900</span>    throw new 
UnsupportedOperationException();<a name="line.900"></a>
+<span class="sourceLineNo">901</span>  }<a name="line.901"></a>
+<span class="sourceLineNo">902</span><a name="line.902"></a>
+<span class="sourceLineNo">903</span>  /*<a name="line.903"></a>
+<span class="sourceLineNo">904</span>   * Only a small subset of characters 
are valid in URLs.<a name="line.904"></a>
+<span class="sourceLineNo">905</span>   *<a name="line.905"></a>
+<span class="sourceLineNo">906</span>   * Row keys, column families, and 
qualifiers cannot be appended to URLs without first URL<a name="line.906"></a>
+<span class="sourceLineNo">907</span>   * escaping. Table names are ok because 
they can only contain alphanumeric, ".","_", and "-"<a name="line.907"></a>
+<span class="sourceLineNo">908</span>   * which are valid characters in 
URLs.<a name="line.908"></a>
+<span class="sourceLineNo">909</span>   */<a name="line.909"></a>
+<span class="sourceLineNo">910</span>  private static String 
toURLEncodedBytes(byte[] row) {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>    try {<a name="line.911"></a>
+<span class="sourceLineNo">912</span>      return URLEncoder.encode(new 
String(row, "UTF-8"), "UTF-8");<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    } catch (UnsupportedEncodingException 
e) {<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      throw new 
IllegalStateException("URLEncoder doesn't support UTF-8", e);<a 
name="line.914"></a>
+<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
+<span class="sourceLineNo">916</span>  }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>}<a name="line.917"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/985cca06/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html 
b/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
deleted file mode 100644
index 4b665f1..0000000
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
+++ /dev/null
@@ -1,227 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" 
title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software 
Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license 
agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for 
additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The 
ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, 
Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file 
except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a 
copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     
http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or 
agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is 
distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific 
language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a 
name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.util;<a 
name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.ByteArrayInputStream;<a 
name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.ByteArrayOutputStream;<a 
name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.IOException;<a 
name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Map;<a 
name="line.24"></a>
-<span class="sourceLineNo">025</span>import 
java.util.concurrent.ConcurrentHashMap;<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a 
name="line.27"></a>
-<span class="sourceLineNo">028</span>import 
org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import 
org.apache.hadoop.hbase.io.crypto.DefaultCipherProvider;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import 
org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import 
org.apache.hadoop.hbase.io.crypto.KeyStoreKeyProvider;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import 
org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>@InterfaceAudience.Public<a 
name="line.37"></a>
-<span class="sourceLineNo">038</span>public class EncryptionTest {<a 
name="line.38"></a>
-<span class="sourceLineNo">039</span>  private static final Log LOG = 
LogFactory.getLog(EncryptionTest.class);<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  static final Map&lt;String, Boolean&gt; 
keyProviderResults = new ConcurrentHashMap&lt;&gt;();<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  static final Map&lt;String, Boolean&gt; 
cipherProviderResults = new ConcurrentHashMap&lt;&gt;();<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  static final Map&lt;String, Boolean&gt; 
cipherResults = new ConcurrentHashMap&lt;&gt;();<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private EncryptionTest() {<a 
name="line.45"></a>
-<span class="sourceLineNo">046</span>  }<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  /**<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * Check that the configured key 
provider can be loaded and initialized, or<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * throw an exception.<a 
name="line.50"></a>
-<span class="sourceLineNo">051</span>   *<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * @param conf<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * @throws IOException<a 
name="line.53"></a>
-<span class="sourceLineNo">054</span>   */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static void 
testKeyProvider(final Configuration conf) throws IOException {<a 
name="line.55"></a>
-<span class="sourceLineNo">056</span>    String providerClassName = 
conf.get(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY,<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      
KeyStoreKeyProvider.class.getName());<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    Boolean result = 
keyProviderResults.get(providerClassName);<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    if (result == null) {<a 
name="line.59"></a>
-<span class="sourceLineNo">060</span>      try {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>        
Encryption.getKeyProvider(conf);<a name="line.61"></a>
-<span class="sourceLineNo">062</span>        
keyProviderResults.put(providerClassName, true);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      } catch (Exception e) { // most 
likely a RuntimeException<a name="line.63"></a>
-<span class="sourceLineNo">064</span>        
keyProviderResults.put(providerClassName, false);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        throw new IOException("Key 
provider " + providerClassName + " failed test: " +<a name="line.65"></a>
-<span class="sourceLineNo">066</span>          e.getMessage(), e);<a 
name="line.66"></a>
-<span class="sourceLineNo">067</span>      }<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    } else if (result.booleanValue() == 
false) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      throw new IOException("Key provider 
" + providerClassName + " previously failed test");<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  }<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  /**<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   * Check that the configured cipher 
provider can be loaded and initialized, or<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * throw an exception.<a 
name="line.75"></a>
-<span class="sourceLineNo">076</span>   *<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * @param conf<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * @throws IOException<a 
name="line.78"></a>
-<span class="sourceLineNo">079</span>   */<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  public static void 
testCipherProvider(final Configuration conf) throws IOException {<a 
name="line.80"></a>
-<span class="sourceLineNo">081</span>    String providerClassName = 
conf.get(HConstants.CRYPTO_CIPHERPROVIDER_CONF_KEY,<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      
DefaultCipherProvider.class.getName());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    Boolean result = 
cipherProviderResults.get(providerClassName);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    if (result == null) {<a 
name="line.84"></a>
-<span class="sourceLineNo">085</span>      try {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>        
Encryption.getCipherProvider(conf);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>        
cipherProviderResults.put(providerClassName, true);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      } catch (Exception e) { // most 
likely a RuntimeException<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        
cipherProviderResults.put(providerClassName, false);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        throw new IOException("Cipher 
provider " + providerClassName + " failed test: " +<a name="line.90"></a>
-<span class="sourceLineNo">091</span>          e.getMessage(), e);<a 
name="line.91"></a>
-<span class="sourceLineNo">092</span>      }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    } else if (result.booleanValue() == 
false) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      throw new IOException("Cipher 
provider " + providerClassName + " previously failed test");<a 
name="line.94"></a>
-<span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Check that the specified cipher can 
be loaded and initialized, or throw<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * an exception. Verifies key and 
cipher provider configuration as a<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * prerequisite for cipher 
verification.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param conf<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param cipher<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param key<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @throws IOException<a 
name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public static void testEncryption(final 
Configuration conf, final String cipher,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      byte[] key) throws IOException {<a 
name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (cipher == null) {<a 
name="line.110"></a>
-<span class="sourceLineNo">111</span>      return;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    testKeyProvider(conf);<a 
name="line.113"></a>
-<span class="sourceLineNo">114</span>    testCipherProvider(conf);<a 
name="line.114"></a>
-<span class="sourceLineNo">115</span>    Boolean result = 
cipherResults.get(cipher);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    if (result == null) {<a 
name="line.116"></a>
-<span class="sourceLineNo">117</span>      try {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        Encryption.Context context = 
Encryption.newContext(conf);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        
context.setCipher(Encryption.getCipher(conf, cipher));<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        if (key == null) {<a 
name="line.120"></a>
-<span class="sourceLineNo">121</span>          // Make a random key since one 
was not provided<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          
context.setKey(context.getCipher().getRandomKey());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        } else {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          // This will be a wrapped key 
from schema<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          
context.setKey(EncryptionUtil.unwrapKey(conf,<a name="line.125"></a>
-<span class="sourceLineNo">126</span>            
conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase"),<a 
name="line.126"></a>
-<span class="sourceLineNo">127</span>            key));<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        byte[] iv = null;<a 
name="line.129"></a>
-<span class="sourceLineNo">130</span>        if 
(context.getCipher().getIvLength() &gt; 0) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>          iv = new 
byte[context.getCipher().getIvLength()];<a name="line.131"></a>
-<span class="sourceLineNo">132</span>          Bytes.random(iv);<a 
name="line.132"></a>
-<span class="sourceLineNo">133</span>        }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        byte[] plaintext = new 
byte[1024];<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        Bytes.random(plaintext);<a 
name="line.135"></a>
-<span class="sourceLineNo">136</span>        ByteArrayOutputStream out = new 
ByteArrayOutputStream();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        Encryption.encrypt(out, new 
ByteArrayInputStream(plaintext), context, iv);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        byte[] ciphertext = 
out.toByteArray();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        out.reset();<a 
name="line.139"></a>
-<span class="sourceLineNo">140</span>        Encryption.decrypt(out, new 
ByteArrayInputStream(ciphertext), plaintext.length,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          context, iv);<a 
name="line.141"></a>
-<span class="sourceLineNo">142</span>        byte[] test = 
out.toByteArray();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        if (!Bytes.equals(plaintext, 
test)) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          throw new IOException("Did not 
pass encrypt/decrypt test");<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        cipherResults.put(cipher, 
true);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      } catch (Exception e) {<a 
name="line.147"></a>
-<span class="sourceLineNo">148</span>        cipherResults.put(cipher, 
false);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        throw new IOException("Cipher " + 
cipher + " failed test: " + e.getMessage(), e);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    } else if (result.booleanValue() == 
false) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      throw new IOException("Cipher " + 
cipher + " previously failed test");<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>}<a name="line.155"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/985cca06/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index c5cb466..0a365e5 100644
--- a/book.html
+++ b/book.html
@@ -35075,7 +35075,7 @@ The server will return cellblocks compressed using this 
same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2017-09-07 14:29:38 UTC
+Last updated 2017-09-08 14:29:37 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/985cca06/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 4067229..32fe7a1 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170907" />
+    <meta name="Date-Revision-yyyymmdd" content="20170908" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,7 @@ under the License. -->
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-09-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-09-08</li>
             </p>
                 </div>
 

Reply via email to