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 < 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 < 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<? extends Row> 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 <R> void batchCallback(List<? extends Row> actions, Object[] results,<a name="line.795"></a> -<span class="sourceLineNo">796</span> Batch.Callback<R> 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 <T extends Service, R> Map<byte[], R> coprocessorService(Class<T> service,<a name="line.806"></a> -<span class="sourceLineNo">807</span> byte[] startKey, byte[] endKey, Batch.Call<T, R> 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<? extends Row> 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 <R> void batchCallback(List<? extends Row> actions, Object[] results,<a name="line.807"></a> +<span class="sourceLineNo">808</span> Batch.Callback<R> 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 <T extends Service, R> void coprocessorService(Class<T> service,<a name="line.813"></a> -<span class="sourceLineNo">814</span> byte[] startKey, byte[] endKey, Batch.Call<T, R> callable, Batch.Callback<R> 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 <T extends Service, R> Map<byte[], R> coprocessorService(Class<T> service,<a name="line.818"></a> +<span class="sourceLineNo">819</span> byte[] startKey, byte[] endKey, Batch.Call<T, R> 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 <R extends Message> Map<byte[], R> 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 <T extends Service, R> void coprocessorService(Class<T> service,<a name="line.825"></a> +<span class="sourceLineNo">826</span> byte[] startKey, byte[] endKey, Batch.Call<T, R> callable, Batch.Callback<R> 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 <R extends Message> 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<R> 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 <R extends Message> Map<byte[], R> 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 <R extends Message> 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<R> 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<String, Boolean> keyProviderResults = new ConcurrentHashMap<>();<a name="line.41"></a> -<span class="sourceLineNo">042</span> static final Map<String, Boolean> cipherProviderResults = new ConcurrentHashMap<>();<a name="line.42"></a> -<span class="sourceLineNo">043</span> static final Map<String, Boolean> cipherResults = new ConcurrentHashMap<>();<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() > 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 – 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>