http://git-wip-us.apache.org/repos/asf/hbase-site/blob/00c22388/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.html b/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.html index f6b3fec..b2d188d 100644 --- a/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.html +++ b/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.html @@ -59,73 +59,79 @@ <span class="sourceLineNo">051</span> return false;<a name="line.51"></a> <span class="sourceLineNo">052</span> }<a name="line.52"></a> <span class="sourceLineNo">053</span><a name="line.53"></a> -<span class="sourceLineNo">054</span> @Override<a name="line.54"></a> -<span class="sourceLineNo">055</span> public ReturnCode filterKeyValue(Cell v) {<a name="line.55"></a> -<span class="sourceLineNo">056</span> if(foundKV) return ReturnCode.NEXT_ROW;<a name="line.56"></a> -<span class="sourceLineNo">057</span> foundKV = true;<a name="line.57"></a> -<span class="sourceLineNo">058</span> return ReturnCode.INCLUDE;<a name="line.58"></a> -<span class="sourceLineNo">059</span> }<a name="line.59"></a> -<span class="sourceLineNo">060</span><a name="line.60"></a> -<span class="sourceLineNo">061</span> public static Filter createFilterFromArguments(ArrayList<byte []> filterArguments) {<a name="line.61"></a> -<span class="sourceLineNo">062</span> Preconditions.checkArgument(filterArguments.isEmpty(),<a name="line.62"></a> -<span class="sourceLineNo">063</span> "Expected 0 but got: %s", filterArguments.size());<a name="line.63"></a> -<span class="sourceLineNo">064</span> return new FirstKeyOnlyFilter();<a name="line.64"></a> +<span class="sourceLineNo">054</span> @Deprecated<a name="line.54"></a> +<span class="sourceLineNo">055</span> @Override<a name="line.55"></a> +<span class="sourceLineNo">056</span> public ReturnCode filterKeyValue(final Cell c) {<a name="line.56"></a> +<span class="sourceLineNo">057</span> return filterCell(c);<a name="line.57"></a> +<span class="sourceLineNo">058</span> }<a name="line.58"></a> +<span class="sourceLineNo">059</span><a name="line.59"></a> +<span class="sourceLineNo">060</span> @Override<a name="line.60"></a> +<span class="sourceLineNo">061</span> public ReturnCode filterCell(final Cell c) {<a name="line.61"></a> +<span class="sourceLineNo">062</span> if(foundKV) return ReturnCode.NEXT_ROW;<a name="line.62"></a> +<span class="sourceLineNo">063</span> foundKV = true;<a name="line.63"></a> +<span class="sourceLineNo">064</span> return ReturnCode.INCLUDE;<a name="line.64"></a> <span class="sourceLineNo">065</span> }<a name="line.65"></a> <span class="sourceLineNo">066</span><a name="line.66"></a> -<span class="sourceLineNo">067</span> /**<a name="line.67"></a> -<span class="sourceLineNo">068</span> * @return true if first KV has been found.<a name="line.68"></a> -<span class="sourceLineNo">069</span> */<a name="line.69"></a> -<span class="sourceLineNo">070</span> protected boolean hasFoundKV() {<a name="line.70"></a> -<span class="sourceLineNo">071</span> return this.foundKV;<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> /**<a name="line.74"></a> -<span class="sourceLineNo">075</span> *<a name="line.75"></a> -<span class="sourceLineNo">076</span> * @param value update {@link #foundKV} flag with value.<a name="line.76"></a> -<span class="sourceLineNo">077</span> */<a name="line.77"></a> -<span class="sourceLineNo">078</span> protected void setFoundKV(boolean value) {<a name="line.78"></a> -<span class="sourceLineNo">079</span> this.foundKV = value;<a name="line.79"></a> -<span class="sourceLineNo">080</span> }<a name="line.80"></a> -<span class="sourceLineNo">081</span><a name="line.81"></a> -<span class="sourceLineNo">082</span> /**<a name="line.82"></a> -<span class="sourceLineNo">083</span> * @return The filter serialized using pb<a name="line.83"></a> -<span class="sourceLineNo">084</span> */<a name="line.84"></a> -<span class="sourceLineNo">085</span> public byte [] toByteArray() {<a name="line.85"></a> -<span class="sourceLineNo">086</span> FilterProtos.FirstKeyOnlyFilter.Builder builder =<a name="line.86"></a> -<span class="sourceLineNo">087</span> FilterProtos.FirstKeyOnlyFilter.newBuilder();<a name="line.87"></a> -<span class="sourceLineNo">088</span> return builder.build().toByteArray();<a name="line.88"></a> -<span class="sourceLineNo">089</span> }<a name="line.89"></a> -<span class="sourceLineNo">090</span><a name="line.90"></a> -<span class="sourceLineNo">091</span> /**<a name="line.91"></a> -<span class="sourceLineNo">092</span> * @param pbBytes A pb serialized {@link FirstKeyOnlyFilter} instance<a name="line.92"></a> -<span class="sourceLineNo">093</span> * @return An instance of {@link FirstKeyOnlyFilter} made from <code>bytes</code><a name="line.93"></a> -<span class="sourceLineNo">094</span> * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.94"></a> -<span class="sourceLineNo">095</span> * @see #toByteArray<a name="line.95"></a> -<span class="sourceLineNo">096</span> */<a name="line.96"></a> -<span class="sourceLineNo">097</span> public static FirstKeyOnlyFilter parseFrom(final byte [] pbBytes)<a name="line.97"></a> -<span class="sourceLineNo">098</span> throws DeserializationException {<a name="line.98"></a> -<span class="sourceLineNo">099</span> // There is nothing to deserialize. Why do this at all?<a name="line.99"></a> -<span class="sourceLineNo">100</span> try {<a name="line.100"></a> -<span class="sourceLineNo">101</span> FilterProtos.FirstKeyOnlyFilter.parseFrom(pbBytes);<a name="line.101"></a> -<span class="sourceLineNo">102</span> } catch (InvalidProtocolBufferException e) {<a name="line.102"></a> -<span class="sourceLineNo">103</span> throw new DeserializationException(e);<a name="line.103"></a> -<span class="sourceLineNo">104</span> }<a name="line.104"></a> -<span class="sourceLineNo">105</span> // Just return a new instance.<a name="line.105"></a> -<span class="sourceLineNo">106</span> return new FirstKeyOnlyFilter();<a name="line.106"></a> -<span class="sourceLineNo">107</span> }<a name="line.107"></a> -<span class="sourceLineNo">108</span><a name="line.108"></a> -<span class="sourceLineNo">109</span> /**<a name="line.109"></a> -<span class="sourceLineNo">110</span> * @param other<a name="line.110"></a> -<span class="sourceLineNo">111</span> * @return true if and only if the fields of the filter that are serialized<a name="line.111"></a> -<span class="sourceLineNo">112</span> * are equal to the corresponding fields in other. Used for testing.<a name="line.112"></a> -<span class="sourceLineNo">113</span> */<a name="line.113"></a> -<span class="sourceLineNo">114</span> boolean areSerializedFieldsEqual(Filter o) {<a name="line.114"></a> -<span class="sourceLineNo">115</span> if (o == this) return true;<a name="line.115"></a> -<span class="sourceLineNo">116</span> if (!(o instanceof FirstKeyOnlyFilter)) return false;<a name="line.116"></a> -<span class="sourceLineNo">117</span><a name="line.117"></a> -<span class="sourceLineNo">118</span> return true;<a name="line.118"></a> -<span class="sourceLineNo">119</span> }<a name="line.119"></a> -<span class="sourceLineNo">120</span>}<a name="line.120"></a> +<span class="sourceLineNo">067</span> public static Filter createFilterFromArguments(ArrayList<byte []> filterArguments) {<a name="line.67"></a> +<span class="sourceLineNo">068</span> Preconditions.checkArgument(filterArguments.isEmpty(),<a name="line.68"></a> +<span class="sourceLineNo">069</span> "Expected 0 but got: %s", filterArguments.size());<a name="line.69"></a> +<span class="sourceLineNo">070</span> return new FirstKeyOnlyFilter();<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> * @return true if first KV has been found.<a name="line.74"></a> +<span class="sourceLineNo">075</span> */<a name="line.75"></a> +<span class="sourceLineNo">076</span> protected boolean hasFoundKV() {<a name="line.76"></a> +<span class="sourceLineNo">077</span> return this.foundKV;<a name="line.77"></a> +<span class="sourceLineNo">078</span> }<a name="line.78"></a> +<span class="sourceLineNo">079</span><a name="line.79"></a> +<span class="sourceLineNo">080</span> /**<a name="line.80"></a> +<span class="sourceLineNo">081</span> *<a name="line.81"></a> +<span class="sourceLineNo">082</span> * @param value update {@link #foundKV} flag with value.<a name="line.82"></a> +<span class="sourceLineNo">083</span> */<a name="line.83"></a> +<span class="sourceLineNo">084</span> protected void setFoundKV(boolean value) {<a name="line.84"></a> +<span class="sourceLineNo">085</span> this.foundKV = value;<a name="line.85"></a> +<span class="sourceLineNo">086</span> }<a name="line.86"></a> +<span class="sourceLineNo">087</span><a name="line.87"></a> +<span class="sourceLineNo">088</span> /**<a name="line.88"></a> +<span class="sourceLineNo">089</span> * @return The filter serialized using pb<a name="line.89"></a> +<span class="sourceLineNo">090</span> */<a name="line.90"></a> +<span class="sourceLineNo">091</span> public byte [] toByteArray() {<a name="line.91"></a> +<span class="sourceLineNo">092</span> FilterProtos.FirstKeyOnlyFilter.Builder builder =<a name="line.92"></a> +<span class="sourceLineNo">093</span> FilterProtos.FirstKeyOnlyFilter.newBuilder();<a name="line.93"></a> +<span class="sourceLineNo">094</span> return builder.build().toByteArray();<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> * @param pbBytes A pb serialized {@link FirstKeyOnlyFilter} instance<a name="line.98"></a> +<span class="sourceLineNo">099</span> * @return An instance of {@link FirstKeyOnlyFilter} made from <code>bytes</code><a name="line.99"></a> +<span class="sourceLineNo">100</span> * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.100"></a> +<span class="sourceLineNo">101</span> * @see #toByteArray<a name="line.101"></a> +<span class="sourceLineNo">102</span> */<a name="line.102"></a> +<span class="sourceLineNo">103</span> public static FirstKeyOnlyFilter parseFrom(final byte [] pbBytes)<a name="line.103"></a> +<span class="sourceLineNo">104</span> throws DeserializationException {<a name="line.104"></a> +<span class="sourceLineNo">105</span> // There is nothing to deserialize. Why do this at all?<a name="line.105"></a> +<span class="sourceLineNo">106</span> try {<a name="line.106"></a> +<span class="sourceLineNo">107</span> FilterProtos.FirstKeyOnlyFilter.parseFrom(pbBytes);<a name="line.107"></a> +<span class="sourceLineNo">108</span> } catch (InvalidProtocolBufferException e) {<a name="line.108"></a> +<span class="sourceLineNo">109</span> throw new DeserializationException(e);<a name="line.109"></a> +<span class="sourceLineNo">110</span> }<a name="line.110"></a> +<span class="sourceLineNo">111</span> // Just return a new instance.<a name="line.111"></a> +<span class="sourceLineNo">112</span> return new FirstKeyOnlyFilter();<a name="line.112"></a> +<span class="sourceLineNo">113</span> }<a name="line.113"></a> +<span class="sourceLineNo">114</span><a name="line.114"></a> +<span class="sourceLineNo">115</span> /**<a name="line.115"></a> +<span class="sourceLineNo">116</span> * @param o the other filter to compare with<a name="line.116"></a> +<span class="sourceLineNo">117</span> * @return true if and only if the fields of the filter that are serialized<a name="line.117"></a> +<span class="sourceLineNo">118</span> * are equal to the corresponding fields in other. Used for testing.<a name="line.118"></a> +<span class="sourceLineNo">119</span> */<a name="line.119"></a> +<span class="sourceLineNo">120</span> boolean areSerializedFieldsEqual(Filter o) {<a name="line.120"></a> +<span class="sourceLineNo">121</span> if (o == this) return true;<a name="line.121"></a> +<span class="sourceLineNo">122</span> if (!(o instanceof FirstKeyOnlyFilter)) return false;<a name="line.122"></a> +<span class="sourceLineNo">123</span><a name="line.123"></a> +<span class="sourceLineNo">124</span> return true;<a name="line.124"></a> +<span class="sourceLineNo">125</span> }<a name="line.125"></a> +<span class="sourceLineNo">126</span>}<a name="line.126"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/00c22388/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.html b/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.html index 1ff6ac2..55b4f3f 100644 --- a/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.html +++ b/apidocs/src-html/org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.html @@ -68,72 +68,78 @@ <span class="sourceLineNo">060</span> this.qualifiers = qualifiers;<a name="line.60"></a> <span class="sourceLineNo">061</span> }<a name="line.61"></a> <span class="sourceLineNo">062</span><a name="line.62"></a> -<span class="sourceLineNo">063</span> @Override<a name="line.63"></a> -<span class="sourceLineNo">064</span> public ReturnCode filterKeyValue(Cell v) {<a name="line.64"></a> -<span class="sourceLineNo">065</span> if (hasFoundKV()) {<a name="line.65"></a> -<span class="sourceLineNo">066</span> return ReturnCode.NEXT_ROW;<a name="line.66"></a> -<span class="sourceLineNo">067</span> } else if (hasOneMatchingQualifier(v)) {<a name="line.67"></a> -<span class="sourceLineNo">068</span> setFoundKV(true);<a name="line.68"></a> -<span class="sourceLineNo">069</span> }<a name="line.69"></a> -<span class="sourceLineNo">070</span> return ReturnCode.INCLUDE;<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> private boolean hasOneMatchingQualifier(Cell v) {<a name="line.73"></a> -<span class="sourceLineNo">074</span> for (byte[] q : qualifiers) {<a name="line.74"></a> -<span class="sourceLineNo">075</span> if (CellUtil.matchingQualifier(v, q)) {<a name="line.75"></a> -<span class="sourceLineNo">076</span> return true;<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> return false;<a name="line.79"></a> -<span class="sourceLineNo">080</span> }<a name="line.80"></a> -<span class="sourceLineNo">081</span><a name="line.81"></a> -<span class="sourceLineNo">082</span> /**<a name="line.82"></a> -<span class="sourceLineNo">083</span> * @return The filter serialized using pb<a name="line.83"></a> -<span class="sourceLineNo">084</span> */<a name="line.84"></a> -<span class="sourceLineNo">085</span> public byte [] toByteArray() {<a name="line.85"></a> -<span class="sourceLineNo">086</span> FilterProtos.FirstKeyValueMatchingQualifiersFilter.Builder builder =<a name="line.86"></a> -<span class="sourceLineNo">087</span> FilterProtos.FirstKeyValueMatchingQualifiersFilter.newBuilder();<a name="line.87"></a> -<span class="sourceLineNo">088</span> for (byte[] qualifier : qualifiers) {<a name="line.88"></a> -<span class="sourceLineNo">089</span> if (qualifier != null) builder.addQualifiers(UnsafeByteOperations.unsafeWrap(qualifier));<a name="line.89"></a> -<span class="sourceLineNo">090</span> }<a name="line.90"></a> -<span class="sourceLineNo">091</span> return builder.build().toByteArray();<a name="line.91"></a> -<span class="sourceLineNo">092</span> }<a name="line.92"></a> -<span class="sourceLineNo">093</span><a name="line.93"></a> -<span class="sourceLineNo">094</span> /**<a name="line.94"></a> -<span class="sourceLineNo">095</span> * @param pbBytes A pb serialized {@link FirstKeyValueMatchingQualifiersFilter} instance<a name="line.95"></a> -<span class="sourceLineNo">096</span> * @return An instance of {@link FirstKeyValueMatchingQualifiersFilter} made from <code>bytes</code><a name="line.96"></a> -<span class="sourceLineNo">097</span> * @throws DeserializationException<a name="line.97"></a> -<span class="sourceLineNo">098</span> * @see #toByteArray<a name="line.98"></a> -<span class="sourceLineNo">099</span> */<a name="line.99"></a> -<span class="sourceLineNo">100</span> public static FirstKeyValueMatchingQualifiersFilter parseFrom(final byte [] pbBytes)<a name="line.100"></a> -<span class="sourceLineNo">101</span> throws DeserializationException {<a name="line.101"></a> -<span class="sourceLineNo">102</span> FilterProtos.FirstKeyValueMatchingQualifiersFilter proto;<a name="line.102"></a> -<span class="sourceLineNo">103</span> try {<a name="line.103"></a> -<span class="sourceLineNo">104</span> proto = FilterProtos.FirstKeyValueMatchingQualifiersFilter.parseFrom(pbBytes);<a name="line.104"></a> -<span class="sourceLineNo">105</span> } catch (InvalidProtocolBufferException e) {<a name="line.105"></a> -<span class="sourceLineNo">106</span> throw new DeserializationException(e);<a name="line.106"></a> -<span class="sourceLineNo">107</span> }<a name="line.107"></a> -<span class="sourceLineNo">108</span><a name="line.108"></a> -<span class="sourceLineNo">109</span> TreeSet<byte []> qualifiers = new TreeSet<>(Bytes.BYTES_COMPARATOR);<a name="line.109"></a> -<span class="sourceLineNo">110</span> for (ByteString qualifier : proto.getQualifiersList()) {<a name="line.110"></a> -<span class="sourceLineNo">111</span> qualifiers.add(qualifier.toByteArray());<a name="line.111"></a> -<span class="sourceLineNo">112</span> }<a name="line.112"></a> -<span class="sourceLineNo">113</span> return new FirstKeyValueMatchingQualifiersFilter(qualifiers);<a name="line.113"></a> -<span class="sourceLineNo">114</span> }<a name="line.114"></a> -<span class="sourceLineNo">115</span><a name="line.115"></a> -<span class="sourceLineNo">116</span> /**<a name="line.116"></a> -<span class="sourceLineNo">117</span> * @param other<a name="line.117"></a> -<span class="sourceLineNo">118</span> * @return true if and only if the fields of the filter that are serialized<a name="line.118"></a> -<span class="sourceLineNo">119</span> * are equal to the corresponding fields in other. Used for testing.<a name="line.119"></a> -<span class="sourceLineNo">120</span> */<a name="line.120"></a> -<span class="sourceLineNo">121</span> boolean areSerializedFieldsEqual(Filter o) {<a name="line.121"></a> -<span class="sourceLineNo">122</span> if (o == this) return true;<a name="line.122"></a> -<span class="sourceLineNo">123</span> if (!(o instanceof FirstKeyValueMatchingQualifiersFilter)) return false;<a name="line.123"></a> -<span class="sourceLineNo">124</span><a name="line.124"></a> -<span class="sourceLineNo">125</span> FirstKeyValueMatchingQualifiersFilter other = (FirstKeyValueMatchingQualifiersFilter)o;<a name="line.125"></a> -<span class="sourceLineNo">126</span> return this.qualifiers.equals(other.qualifiers);<a name="line.126"></a> -<span class="sourceLineNo">127</span> }<a name="line.127"></a> -<span class="sourceLineNo">128</span>}<a name="line.128"></a> +<span class="sourceLineNo">063</span> @Deprecated<a name="line.63"></a> +<span class="sourceLineNo">064</span> @Override<a name="line.64"></a> +<span class="sourceLineNo">065</span> public ReturnCode filterKeyValue(final Cell c) {<a name="line.65"></a> +<span class="sourceLineNo">066</span> return filterCell(c);<a name="line.66"></a> +<span class="sourceLineNo">067</span> }<a name="line.67"></a> +<span class="sourceLineNo">068</span><a name="line.68"></a> +<span class="sourceLineNo">069</span> @Override<a name="line.69"></a> +<span class="sourceLineNo">070</span> public ReturnCode filterCell(final Cell c) {<a name="line.70"></a> +<span class="sourceLineNo">071</span> if (hasFoundKV()) {<a name="line.71"></a> +<span class="sourceLineNo">072</span> return ReturnCode.NEXT_ROW;<a name="line.72"></a> +<span class="sourceLineNo">073</span> } else if (hasOneMatchingQualifier(c)) {<a name="line.73"></a> +<span class="sourceLineNo">074</span> setFoundKV(true);<a name="line.74"></a> +<span class="sourceLineNo">075</span> }<a name="line.75"></a> +<span class="sourceLineNo">076</span> return ReturnCode.INCLUDE;<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> private boolean hasOneMatchingQualifier(Cell c) {<a name="line.79"></a> +<span class="sourceLineNo">080</span> for (byte[] q : qualifiers) {<a name="line.80"></a> +<span class="sourceLineNo">081</span> if (CellUtil.matchingQualifier(c, q)) {<a name="line.81"></a> +<span class="sourceLineNo">082</span> return true;<a name="line.82"></a> +<span class="sourceLineNo">083</span> }<a name="line.83"></a> +<span class="sourceLineNo">084</span> }<a name="line.84"></a> +<span class="sourceLineNo">085</span> return false;<a name="line.85"></a> +<span class="sourceLineNo">086</span> }<a name="line.86"></a> +<span class="sourceLineNo">087</span><a name="line.87"></a> +<span class="sourceLineNo">088</span> /**<a name="line.88"></a> +<span class="sourceLineNo">089</span> * @return The filter serialized using pb<a name="line.89"></a> +<span class="sourceLineNo">090</span> */<a name="line.90"></a> +<span class="sourceLineNo">091</span> public byte [] toByteArray() {<a name="line.91"></a> +<span class="sourceLineNo">092</span> FilterProtos.FirstKeyValueMatchingQualifiersFilter.Builder builder =<a name="line.92"></a> +<span class="sourceLineNo">093</span> FilterProtos.FirstKeyValueMatchingQualifiersFilter.newBuilder();<a name="line.93"></a> +<span class="sourceLineNo">094</span> for (byte[] qualifier : qualifiers) {<a name="line.94"></a> +<span class="sourceLineNo">095</span> if (qualifier != null) builder.addQualifiers(UnsafeByteOperations.unsafeWrap(qualifier));<a name="line.95"></a> +<span class="sourceLineNo">096</span> }<a name="line.96"></a> +<span class="sourceLineNo">097</span> return builder.build().toByteArray();<a name="line.97"></a> +<span class="sourceLineNo">098</span> }<a name="line.98"></a> +<span class="sourceLineNo">099</span><a name="line.99"></a> +<span class="sourceLineNo">100</span> /**<a name="line.100"></a> +<span class="sourceLineNo">101</span> * @param pbBytes A pb serialized {@link FirstKeyValueMatchingQualifiersFilter} instance<a name="line.101"></a> +<span class="sourceLineNo">102</span> * @return An instance of {@link FirstKeyValueMatchingQualifiersFilter} made from <code>bytes</code><a name="line.102"></a> +<span class="sourceLineNo">103</span> * @throws DeserializationException<a name="line.103"></a> +<span class="sourceLineNo">104</span> * @see #toByteArray<a name="line.104"></a> +<span class="sourceLineNo">105</span> */<a name="line.105"></a> +<span class="sourceLineNo">106</span> public static FirstKeyValueMatchingQualifiersFilter parseFrom(final byte [] pbBytes)<a name="line.106"></a> +<span class="sourceLineNo">107</span> throws DeserializationException {<a name="line.107"></a> +<span class="sourceLineNo">108</span> FilterProtos.FirstKeyValueMatchingQualifiersFilter proto;<a name="line.108"></a> +<span class="sourceLineNo">109</span> try {<a name="line.109"></a> +<span class="sourceLineNo">110</span> proto = FilterProtos.FirstKeyValueMatchingQualifiersFilter.parseFrom(pbBytes);<a name="line.110"></a> +<span class="sourceLineNo">111</span> } catch (InvalidProtocolBufferException e) {<a name="line.111"></a> +<span class="sourceLineNo">112</span> throw new DeserializationException(e);<a name="line.112"></a> +<span class="sourceLineNo">113</span> }<a name="line.113"></a> +<span class="sourceLineNo">114</span><a name="line.114"></a> +<span class="sourceLineNo">115</span> TreeSet<byte []> qualifiers = new TreeSet<>(Bytes.BYTES_COMPARATOR);<a name="line.115"></a> +<span class="sourceLineNo">116</span> for (ByteString qualifier : proto.getQualifiersList()) {<a name="line.116"></a> +<span class="sourceLineNo">117</span> qualifiers.add(qualifier.toByteArray());<a name="line.117"></a> +<span class="sourceLineNo">118</span> }<a name="line.118"></a> +<span class="sourceLineNo">119</span> return new FirstKeyValueMatchingQualifiersFilter(qualifiers);<a name="line.119"></a> +<span class="sourceLineNo">120</span> }<a name="line.120"></a> +<span class="sourceLineNo">121</span><a name="line.121"></a> +<span class="sourceLineNo">122</span> /**<a name="line.122"></a> +<span class="sourceLineNo">123</span> * @param o the other filter to compare with<a name="line.123"></a> +<span class="sourceLineNo">124</span> * @return true if and only if the fields of the filter that are serialized<a name="line.124"></a> +<span class="sourceLineNo">125</span> * are equal to the corresponding fields in other. Used for testing.<a name="line.125"></a> +<span class="sourceLineNo">126</span> */<a name="line.126"></a> +<span class="sourceLineNo">127</span> boolean areSerializedFieldsEqual(Filter o) {<a name="line.127"></a> +<span class="sourceLineNo">128</span> if (o == this) return true;<a name="line.128"></a> +<span class="sourceLineNo">129</span> if (!(o instanceof FirstKeyValueMatchingQualifiersFilter)) return false;<a name="line.129"></a> +<span class="sourceLineNo">130</span><a name="line.130"></a> +<span class="sourceLineNo">131</span> FirstKeyValueMatchingQualifiersFilter other = (FirstKeyValueMatchingQualifiersFilter)o;<a name="line.131"></a> +<span class="sourceLineNo">132</span> return this.qualifiers.equals(other.qualifiers);<a name="line.132"></a> +<span class="sourceLineNo">133</span> }<a name="line.133"></a> +<span class="sourceLineNo">134</span>}<a name="line.134"></a>