You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2025/02/12 14:47:45 UTC
(hbase-site) branch asf-site updated: Published site at e9869ae1cc7ec8ec1a34389170da767b30b3ebd9.
This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 674ecc69299 Published site at e9869ae1cc7ec8ec1a34389170da767b30b3ebd9.
674ecc69299 is described below
commit 674ecc6929970acd4d8a3ba6217779abf2a84a2b
Author: jenkins <bu...@apache.org>
AuthorDate: Wed Feb 12 14:47:29 2025 +0000
Published site at e9869ae1cc7ec8ec1a34389170da767b30b3ebd9.
---
acid-semantics.html | 2 +-
apache_hbase_reference_guide.pdf | 4 +-
apidocs/index-all.html | 32 +-
apidocs/member-search-index.js | 2 +-
book.html | 2 +-
bulk-loads.html | 2 +-
checkstyle-aggregate.html | 50 +-
checkstyle.rss | 446 ++---
coc.html | 2 +-
dependencies.html | 2 +-
dependency-convergence.html | 2 +-
dependency-info.html | 2 +-
dependency-management.html | 2 +-
...el.ByteArrayComparableModel.ComparatorType.html | 20 +-
...Model.FilterModel.ByteArrayComparableModel.html | 14 +-
.../model/ScannerModel.FilterModel.FilterType.html | 56 +-
.../ScannerModel.FilterModel.FuzzyKeyModel.html | 24 +-
.../ScannerModel.FilterModel.RowRangeModel.html | 28 +-
.../hbase/rest/model/ScannerModel.FilterModel.html | 50 +-
.../model/ScannerModel.IncludeStartRowFilter.html | 4 +-
.../model/ScannerModel.JaxbJsonProviderHolder.html | 6 +-
.../hadoop/hbase/rest/model/ScannerModel.html | 74 +-
...el.ByteArrayComparableModel.ComparatorType.html | 1891 ++++++++++----------
...Model.FilterModel.ByteArrayComparableModel.html | 1891 ++++++++++----------
.../model/ScannerModel.FilterModel.FilterType.html | 1891 ++++++++++----------
.../ScannerModel.FilterModel.FuzzyKeyModel.html | 1891 ++++++++++----------
.../ScannerModel.FilterModel.RowRangeModel.html | 1891 ++++++++++----------
.../hbase/rest/model/ScannerModel.FilterModel.html | 1891 ++++++++++----------
.../model/ScannerModel.IncludeStartRowFilter.html | 1891 ++++++++++----------
.../model/ScannerModel.JaxbJsonProviderHolder.html | 1891 ++++++++++----------
.../hadoop/hbase/rest/model/ScannerModel.html | 1891 ++++++++++----------
downloads.html | 2 +-
export_control.html | 2 +-
index.html | 2 +-
issue-management.html | 2 +-
licenses.html | 2 +-
mailing-lists.html | 2 +-
metrics.html | 2 +-
old_news.html | 2 +-
plugin-management.html | 2 +-
plugins.html | 2 +-
poweredbyhbase.html | 2 +-
project-info.html | 2 +-
project-reports.html | 2 +-
pseudo-distributed.html | 2 +-
replication.html | 2 +-
resources.html | 2 +-
scm.html | 2 +-
sponsors.html | 2 +-
summary.html | 2 +-
supportingprojects.html | 2 +-
team.html | 2 +-
testapidocs/index-all.html | 92 +-
testapidocs/member-search-index.js | 2 +-
testdevapidocs/index-all.html | 70 +-
testdevapidocs/member-search-index.js | 2 +-
56 files changed, 9031 insertions(+), 9022 deletions(-)
diff --git a/acid-semantics.html b/acid-semantics.html
index 3a78d027816..f5d90ea9b59 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -468,7 +468,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 6362013564c..38789085dfa 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
/Author (Apache HBase Team)
/Creator (Asciidoctor PDF 2.0.6, based on Prawn 2.4.0)
/Producer (Apache HBase Team)
-/ModDate (D:20250211142955+00'00')
-/CreationDate (D:20250211144512+00'00')
+/ModDate (D:20250212143056+00'00')
+/CreationDate (D:20250212144445+00'00')
>>
endobj
2 0 obj
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 3c46490db7b..093d4100bd7 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -1488,9 +1488,9 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt>affixShutdownHook(Thread, int) - Static method in class org.apache.hadoop.hbase.util.ShutdownHookManager</dt>
<dd> </dd>
-<dt>afterDecodingKeyValue(DataInputStream, ByteBuffer, HFileBlockDefaultDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>afterDecodingKeyValue(DataInputStream, ByteBuffer, HFileBlockDefaultDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
-<dt>afterEncodingKeyValue(ExtendedCell, DataOutputStream, HFileBlockDefaultEncodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>afterEncodingKeyValue(ExtendedCell, DataOutputStream, HFileBlockDefaultEncodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd>
<div class="block">Returns unencoded size added</div>
</dd>
@@ -5098,7 +5098,7 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt>call(O) - Method in class org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverOperationWithResult</dt>
<dd> </dd>
-<dt>call(AbstractRpcBasedConnectionRegistry.Callable<T>, Predicate<T>, String) - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>call(AbstractRpcBasedConnectionRegistry.Callable<T>, Predicate<T>, String) - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd> </dd>
<dt>call(HBaseRpcController, AdminProtos.AdminService.Interface) - Method in interface org.apache.hadoop.hbase.client.AsyncAdminRequestRetryingCaller.Callable</dt>
<dd> </dd>
@@ -7148,7 +7148,7 @@ loadScripts(document, 'script');</script>
</dd>
<dt>close() - Method in class org.apache.hadoop.hbase.chaos.ChaosAgent</dt>
<dd> </dd>
-<dt>close() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>close() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd> </dd>
<dt>close() - Method in interface org.apache.hadoop.hbase.client.Admin</dt>
<dd> </dd>
@@ -8515,11 +8515,11 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Compares the family and qualifier part of the cell</div>
</dd>
-<dt>compareCommonFamilyPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonFamilyPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
-<dt>compareCommonQualifierPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonQualifierPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
-<dt>compareCommonRowPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonRowPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd>
<div class="block">common prefixes</div>
</dd>
@@ -13000,7 +13000,7 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Decode an <code>int8</code> value.</div>
</dd>
-<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
<dd>
@@ -15834,7 +15834,7 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Separator used to demarcate the encodedName in a region name in the new format.</div>
</dd>
-<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
<dd>
@@ -16248,7 +16248,7 @@ loadScripts(document, 'script');</script>
</dd>
<dt>END_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
<dd> </dd>
-<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
<dd>
@@ -16359,7 +16359,7 @@ loadScripts(document, 'script');</script>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Make sure that at least the specified number of region servers are running</div>
</dd>
-<dt>ensureSpace(ByteBuffer, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>ensureSpace(ByteBuffer, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd>
<div class="block">Asserts that there is at least the given amount of unfilled space remaining in the given
buffer.</div>
@@ -19940,7 +19940,7 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt>getActiveLogFiles() - Static method in class org.apache.hadoop.hbase.logging.Log4jUtils</dt>
<dd> </dd>
-<dt>getActiveMaster() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>getActiveMaster() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd> </dd>
<dt>getActiveMaster() - Method in interface org.apache.hadoop.hbase.client.ConnectionRegistry</dt>
<dd>
@@ -21728,7 +21728,7 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Returns the cluster definition</div>
</dd>
-<dt>getClusterId() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>getClusterId() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd> </dd>
<dt>getClusterId() - Method in interface org.apache.hadoop.hbase.client.Connection</dt>
<dd>
@@ -26876,7 +26876,7 @@ loadScripts(document, 'script');</script>
</dd>
<dt>getMetaRegionLocationCache() - Method in class org.apache.hadoop.hbase.HBaseServerBase</dt>
<dd> </dd>
-<dt>getMetaRegionLocations() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>getMetaRegionLocations() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd> </dd>
<dt>getMetaRegionLocations() - Method in interface org.apache.hadoop.hbase.client.ConnectionRegistry</dt>
<dd>
@@ -37357,7 +37357,7 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt>HEDGED_READS_DESC - Static variable in interface org.apache.hadoop.hbase.regionserver.MetricsRegionServerSource</dt>
<dd> </dd>
-<dt>HEDGED_REQS_FANOUT_DEFAULT - Static variable in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>HEDGED_REQS_FANOUT_DEFAULT - Static variable in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd>
<div class="block">Default value for the fan out of hedged requests.</div>
</dd>
@@ -67191,7 +67191,7 @@ service.</div>
</dd>
<dt>START_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
<dd> </dd>
-<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
<dd> </dd>
<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder</dt>
<dd> </dd>
diff --git a/apidocs/member-search-index.js b/apidocs/member-search-index.js
index 87d6e508a3a..f707384f02b 100644
--- a/apidocs/member-search-index.js
+++ b/apidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
diff --git a/book.html b/book.html
index 94a7b1dc3d2..c447d5610f0 100644
--- a/book.html
+++ b/book.html
@@ -49812,7 +49812,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
<div id="footer">
<div id="footer-text">
Version 4.0.0-alpha-1-SNAPSHOT<br>
-Last updated 2025-02-11 14:29:55 UTC
+Last updated 2025-02-12 14:30:56 UTC
</div>
</div>
<script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 442a24e9051..0514e830f4e 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -184,7 +184,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 13a150de4ca..18e139ac3e3 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -14628,145 +14628,145 @@
<td>sizes</td>
<td>LineLength</td>
<td>Line is longer than 100 characters (found 186).</td>
-<td>150</td></tr>
+<td>151</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>coding</td>
<td>EqualsHashCode</td>
<td>Definition of 'equals()' without corresponding definition of 'hashCode()'.</td>
-<td>152</td></tr>
+<td>153</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'type' must be private and have accessor methods.</td>
-<td>172</td></tr>
+<td>173</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'value' must be private and have accessor methods.</td>
-<td>174</td></tr>
+<td>175</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'op' must be private and have accessor methods.</td>
-<td>176</td></tr>
+<td>177</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'type' must be private and have accessor methods.</td>
-<td>377</td></tr>
+<td>378</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'op' must be private and have accessor methods.</td>
-<td>379</td></tr>
+<td>380</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'value' must be private and have accessor methods.</td>
-<td>383</td></tr>
+<td>384</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'filters' must be private and have accessor methods.</td>
-<td>385</td></tr>
+<td>386</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'limit' must be private and have accessor methods.</td>
-<td>387</td></tr>
+<td>388</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'offset' must be private and have accessor methods.</td>
-<td>389</td></tr>
+<td>390</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'family' must be private and have accessor methods.</td>
-<td>391</td></tr>
+<td>392</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'qualifier' must be private and have accessor methods.</td>
-<td>393</td></tr>
+<td>394</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'ifMissing' must be private and have accessor methods.</td>
-<td>395</td></tr>
+<td>396</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'latestVersion' must be private and have accessor methods.</td>
-<td>397</td></tr>
+<td>398</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'minColumn' must be private and have accessor methods.</td>
-<td>399</td></tr>
+<td>400</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'minColumnInclusive' must be private and have accessor methods.</td>
-<td>401</td></tr>
+<td>402</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'maxColumn' must be private and have accessor methods.</td>
-<td>403</td></tr>
+<td>404</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'maxColumnInclusive' must be private and have accessor methods.</td>
-<td>405</td></tr>
+<td>406</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'dropDependentColumn' must be private and have accessor methods.</td>
-<td>407</td></tr>
+<td>408</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'chance' must be private and have accessor methods.</td>
-<td>409</td></tr>
+<td>410</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'prefixes' must be private and have accessor methods.</td>
-<td>411</td></tr>
+<td>412</td></tr>
<tr class="a">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>design</td>
<td>VisibilityModifier</td>
<td>Variable 'timestamps' must be private and have accessor methods.</td>
-<td>415</td></tr>
+<td>416</td></tr>
<tr class="b">
<td><figure><img src="images/icon_error_sml.gif" alt="" /></figure> Error</td>
<td>blocks</td>
<td>NeedBraces</td>
<td>'for' construct must use '{}'s.</td>
-<td>1032</td></tr></table></section><section>
+<td>1033</td></tr></table></section><section>
<h3 id="org.apache.hadoop.hbase.rest.model.TableRegionModel.java">org/apache/hadoop/hbase/rest/model/TableRegionModel.java</h3>
<table border="0" class="table table-striped">
<tr class="a">
@@ -18457,7 +18457,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle.rss b/checkstyle.rss
index d30681e1271..e4d3ed409df 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -718,7 +718,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionVisualizer.java">org/apache/hadoop/hbase/master/http/RegionVisualizer.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SplitWALProcedure.java">org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java</a>
</td>
<td>
0
@@ -732,7 +732,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SplitWALProcedure.java">org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionVisualizer.java">org/apache/hadoop/hbase/master/http/RegionVisualizer.java</a>
</td>
<td>
0
@@ -872,7 +872,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.NonThreadSafeMemStoreSizing.java">org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.java</a>
</td>
<td>
0
@@ -886,7 +886,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.NonThreadSafeMemStoreSizing.java">org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a>
</td>
<td>
0
@@ -1376,7 +1376,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TableSnapshotScanner.java">org/apache/hadoop/hbase/client/TableSnapshotScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.QueueBalancer.java">org/apache/hadoop/hbase/ipc/QueueBalancer.java</a>
</td>
<td>
0
@@ -1390,7 +1390,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.QueueBalancer.java">org/apache/hadoop/hbase/ipc/QueueBalancer.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TableSnapshotScanner.java">org/apache/hadoop/hbase/client/TableSnapshotScanner.java</a>
</td>
<td>
0
@@ -2720,7 +2720,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java</a>
</td>
<td>
0
@@ -2734,7 +2734,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.java</a>
</td>
<td>
0
@@ -3154,7 +3154,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestPreadReversedScanner.java">org/apache/hadoop/hbase/client/TestPreadReversedScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.SinusoidalFileListGenerator.java">org/apache/hadoop/hbase/regionserver/compactions/SinusoidalFileListGenerator.java</a>
</td>
<td>
0
@@ -3168,7 +3168,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.SinusoidalFileListGenerator.java">org/apache/hadoop/hbase/regionserver/compactions/SinusoidalFileListGenerator.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestPreadReversedScanner.java">org/apache/hadoop/hbase/client/TestPreadReversedScanner.java</a>
</td>
<td>
0
@@ -3532,7 +3532,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestRpcConnectionRegistry.java">org/apache/hadoop/hbase/client/TestRpcConnectionRegistry.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.java">org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java</a>
</td>
<td>
0
@@ -3541,12 +3541,12 @@ under the License.
0
</td>
<td>
- 0
+ 4
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.java">org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestRpcConnectionRegistry.java">org/apache/hadoop/hbase/client/TestRpcConnectionRegistry.java</a>
</td>
<td>
0
@@ -3555,7 +3555,7 @@ under the License.
0
</td>
<td>
- 4
+ 0
</td>
</tr>
<tr>
@@ -4680,7 +4680,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.TestReplicationLogCleaner.java">org/apache/hadoop/hbase/replication/master/TestReplicationLogCleaner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveAsyncFSWAL.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveAsyncFSWAL.java</a>
</td>
<td>
0
@@ -4694,7 +4694,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveAsyncFSWAL.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveAsyncFSWAL.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.TestReplicationLogCleaner.java">org/apache/hadoop/hbase/replication/master/TestReplicationLogCleaner.java</a>
</td>
<td>
0
@@ -5492,7 +5492,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChore.java</a>
</td>
<td>
0
@@ -5501,12 +5501,12 @@ under the License.
0
</td>
<td>
- 6
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterChoreScheduled.java">org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a>
</td>
<td>
0
@@ -5515,12 +5515,12 @@ under the License.
0
</td>
<td>
- 0
+ 6
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChore.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterChoreScheduled.java">org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java</a>
</td>
<td>
0
@@ -7676,7 +7676,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRegionSnapshotTask.java">org/apache/hadoop/hbase/snapshot/TestRegionSnapshotTask.java</a>
</td>
<td>
0
@@ -7690,7 +7690,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRegionSnapshotTask.java">org/apache/hadoop/hbase/snapshot/TestRegionSnapshotTask.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java</a>
</td>
<td>
0
@@ -8138,7 +8138,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAdminMasterSwitch.java">org/apache/hadoop/hbase/client/TestAsyncAdminMasterSwitch.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.AbstractTestMutualTls.java">org/apache/hadoop/hbase/security/AbstractTestMutualTls.java</a>
</td>
<td>
0
@@ -8152,7 +8152,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.AbstractTestMutualTls.java">org/apache/hadoop/hbase/security/AbstractTestMutualTls.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAdminMasterSwitch.java">org/apache/hadoop/hbase/client/TestAsyncAdminMasterSwitch.java</a>
</td>
<td>
0
@@ -8908,7 +8908,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.replication.TestSyncReplicationReplayWALManager.java">org/apache/hadoop/hbase/master/replication/TestSyncReplicationReplayWALManager.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.cleaner.TestCleanerClearHFiles.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerClearHFiles.java</a>
</td>
<td>
0
@@ -8922,7 +8922,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.cleaner.TestCleanerClearHFiles.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerClearHFiles.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.replication.TestSyncReplicationReplayWALManager.java">org/apache/hadoop/hbase/master/replication/TestSyncReplicationReplayWALManager.java</a>
</td>
<td>
0
@@ -9524,7 +9524,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MetricsMasterFileSystem.java">org/apache/hadoop/hbase/master/MetricsMasterFileSystem.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a>
</td>
<td>
0
@@ -9533,12 +9533,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MetricsMasterFileSystem.java">org/apache/hadoop/hbase/master/MetricsMasterFileSystem.java</a>
</td>
<td>
0
@@ -9547,7 +9547,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -9748,7 +9748,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.PeerProcedureHandler.java">org/apache/hadoop/hbase/replication/regionserver/PeerProcedureHandler.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a>
</td>
<td>
0
@@ -9762,7 +9762,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.PeerProcedureHandler.java">org/apache/hadoop/hbase/replication/regionserver/PeerProcedureHandler.java</a>
</td>
<td>
0
@@ -11568,7 +11568,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionServerCrashDisableWAL.java">org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMetaTableAccessor.java">org/apache/hadoop/hbase/TestMetaTableAccessor.java</a>
</td>
<td>
0
@@ -11577,12 +11577,12 @@ under the License.
0
</td>
<td>
- 0
+ 2
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMetaTableAccessor.java">org/apache/hadoop/hbase/TestMetaTableAccessor.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionServerCrashDisableWAL.java">org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.java</a>
</td>
<td>
0
@@ -11591,7 +11591,7 @@ under the License.
0
</td>
<td>
- 2
+ 0
</td>
</tr>
<tr>
@@ -11736,7 +11736,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.protobuf.ReplicationProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtobufUtil.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.java</a>
</td>
<td>
0
@@ -11745,12 +11745,12 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.protobuf.ReplicationProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtobufUtil.java</a>
</td>
<td>
0
@@ -11759,12 +11759,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMultiVersions.java">org/apache/hadoop/hbase/TestMultiVersions.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestWALCellCodecWithCompression.java">org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.java</a>
</td>
<td>
0
@@ -11778,7 +11778,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestWALCellCodecWithCompression.java">org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMultiVersions.java">org/apache/hadoop/hbase/TestMultiVersions.java</a>
</td>
<td>
0
@@ -11904,7 +11904,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestCleanupMetaReplicaThroughConfig.java">org/apache/hadoop/hbase/client/TestCleanupMetaReplicaThroughConfig.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java</a>
</td>
<td>
0
@@ -11918,7 +11918,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestCleanupMetaReplicaThroughConfig.java">org/apache/hadoop/hbase/client/TestCleanupMetaReplicaThroughConfig.java</a>
</td>
<td>
0
@@ -12240,7 +12240,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestReportRegionStateTransitionRetry.java">org/apache/hadoop/hbase/master/assignment/TestReportRegionStateTransitionRetry.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestTableSpaceQuotaViolationNotifier.java">org/apache/hadoop/hbase/quotas/TestTableSpaceQuotaViolationNotifier.java</a>
</td>
<td>
0
@@ -12254,7 +12254,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestTableSpaceQuotaViolationNotifier.java">org/apache/hadoop/hbase/quotas/TestTableSpaceQuotaViolationNotifier.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestReportRegionStateTransitionRetry.java">org/apache/hadoop/hbase/master/assignment/TestReportRegionStateTransitionRetry.java</a>
</td>
<td>
0
@@ -12772,7 +12772,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.types.StructBuilder.java">org/apache/hadoop/hbase/types/StructBuilder.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.DeallocateRewriteByteBuffAllocator.java">org/apache/hadoop/hbase/io/DeallocateRewriteByteBuffAllocator.java</a>
</td>
<td>
0
@@ -12786,7 +12786,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.DeallocateRewriteByteBuffAllocator.java">org/apache/hadoop/hbase/io/DeallocateRewriteByteBuffAllocator.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.types.StructBuilder.java">org/apache/hadoop/hbase/types/StructBuilder.java</a>
</td>
<td>
0
@@ -12884,7 +12884,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.java</a>
</td>
<td>
0
@@ -12893,12 +12893,12 @@ under the License.
0
</td>
<td>
- 4
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a>
</td>
<td>
0
@@ -12907,7 +12907,7 @@ under the License.
0
</td>
<td>
- 0
+ 4
</td>
</tr>
<tr>
@@ -13640,7 +13640,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestReplicasClient.java">org/apache/hadoop/hbase/client/TestReplicasClient.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestSuperUserQuotaPermissions.java">org/apache/hadoop/hbase/quotas/TestSuperUserQuotaPermissions.java</a>
</td>
<td>
0
@@ -13649,12 +13649,12 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestSuperUserQuotaPermissions.java">org/apache/hadoop/hbase/quotas/TestSuperUserQuotaPermissions.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestReplicasClient.java">org/apache/hadoop/hbase/client/TestReplicasClient.java</a>
</td>
<td>
0
@@ -13663,7 +13663,7 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
@@ -14004,7 +14004,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationStandbyKillMaster.java">org/apache/hadoop/hbase/replication/TestSyncReplicationStandbyKillMaster.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithDefaultVisLabelService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</a>
</td>
<td>
0
@@ -14013,12 +14013,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithDefaultVisLabelService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationStandbyKillMaster.java">org/apache/hadoop/hbase/replication/TestSyncReplicationStandbyKillMaster.java</a>
</td>
<td>
0
@@ -14027,7 +14027,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -14480,7 +14480,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner.java">org/apache/hadoop/hbase/replication/master/ReplicationHFileCleaner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java</a>
</td>
<td>
0
@@ -14494,7 +14494,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner.java">org/apache/hadoop/hbase/replication/master/ReplicationHFileCleaner.java</a>
</td>
<td>
0
@@ -15418,7 +15418,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AsyncMasterRequestRpcRetryingCaller.java">org/apache/hadoop/hbase/client/AsyncMasterRequestRpcRetryingCaller.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.WrongRegionException.java">org/apache/hadoop/hbase/regionserver/WrongRegionException.java</a>
</td>
<td>
0
@@ -15432,7 +15432,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.WrongRegionException.java">org/apache/hadoop/hbase/regionserver/WrongRegionException.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AsyncMasterRequestRpcRetryingCaller.java">org/apache/hadoop/hbase/client/AsyncMasterRequestRpcRetryingCaller.java</a>
</td>
<td>
0
@@ -17000,7 +17000,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaUserOverride.java">org/apache/hadoop/hbase/quotas/TestQuotaUserOverride.java</a>
</td>
<td>
0
@@ -17014,7 +17014,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaUserOverride.java">org/apache/hadoop/hbase/quotas/TestQuotaUserOverride.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedure.java</a>
</td>
<td>
0
@@ -19226,7 +19226,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBufferedMutator.java">org/apache/hadoop/hbase/client/TestBufferedMutator.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSHLog.java">org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java</a>
</td>
<td>
0
@@ -19240,7 +19240,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSHLog.java">org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBufferedMutator.java">org/apache/hadoop/hbase/client/TestBufferedMutator.java</a>
</td>
<td>
0
@@ -19772,7 +19772,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AbstractTestCITimeout.java">org/apache/hadoop/hbase/client/AbstractTestCITimeout.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestReadAndWriteRegionInfoFile.java">org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.java</a>
</td>
<td>
0
@@ -19786,7 +19786,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestReadAndWriteRegionInfoFile.java">org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AbstractTestCITimeout.java">org/apache/hadoop/hbase/client/AbstractTestCITimeout.java</a>
</td>
<td>
0
@@ -20262,7 +20262,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestSourceFSConfigurationProvider.java">org/apache/hadoop/hbase/replication/regionserver/TestSourceFSConfigurationProvider.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionIncrement.java">org/apache/hadoop/hbase/regionserver/TestRegionIncrement.java</a>
</td>
<td>
0
@@ -20271,12 +20271,12 @@ under the License.
0
</td>
<td>
- 0
+ 5
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionIncrement.java">org/apache/hadoop/hbase/regionserver/TestRegionIncrement.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestSourceFSConfigurationProvider.java">org/apache/hadoop/hbase/replication/regionserver/TestSourceFSConfigurationProvider.java</a>
</td>
<td>
0
@@ -20285,7 +20285,7 @@ under the License.
0
</td>
<td>
- 5
+ 0
</td>
</tr>
<tr>
@@ -20500,7 +20500,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestMobUtils.java">org/apache/hadoop/hbase/mob/TestMobUtils.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestShutdownWhileWALBroken.java">org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.java</a>
</td>
<td>
0
@@ -20514,7 +20514,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestShutdownWhileWALBroken.java">org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestMobUtils.java">org/apache/hadoop/hbase/mob/TestMobUtils.java</a>
</td>
<td>
0
@@ -22348,7 +22348,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TracedAdvancedScanResultConsumer.java">org/apache/hadoop/hbase/client/TracedAdvancedScanResultConsumer.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterTransitions.java">org/apache/hadoop/hbase/master/TestMasterTransitions.java</a>
</td>
<td>
0
@@ -22357,12 +22357,12 @@ under the License.
0
</td>
<td>
- 0
+ 2
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterTransitions.java">org/apache/hadoop/hbase/master/TestMasterTransitions.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TracedAdvancedScanResultConsumer.java">org/apache/hadoop/hbase/client/TracedAdvancedScanResultConsumer.java</a>
</td>
<td>
0
@@ -22371,7 +22371,7 @@ under the License.
0
</td>
<td>
- 2
+ 0
</td>
</tr>
<tr>
@@ -22978,7 +22978,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestEnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestNodeHealthCheckChore.java">org/apache/hadoop/hbase/TestNodeHealthCheckChore.java</a>
</td>
<td>
0
@@ -22987,12 +22987,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestNodeHealthCheckChore.java">org/apache/hadoop/hbase/TestNodeHealthCheckChore.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestEnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java</a>
</td>
<td>
0
@@ -23001,7 +23001,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -23370,7 +23370,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.compress.HFileTestBase.java">org/apache/hadoop/hbase/io/compress/HFileTestBase.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.java</a>
</td>
<td>
0
@@ -23384,7 +23384,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.compress.HFileTestBase.java">org/apache/hadoop/hbase/io/compress/HFileTestBase.java</a>
</td>
<td>
0
@@ -27556,7 +27556,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.DrainingServerTracker.java">org/apache/hadoop/hbase/master/DrainingServerTracker.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</a>
</td>
<td>
0
@@ -27565,12 +27565,12 @@ under the License.
0
</td>
<td>
- 0
+ 3
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.DrainingServerTracker.java">org/apache/hadoop/hbase/master/DrainingServerTracker.java</a>
</td>
<td>
0
@@ -27579,7 +27579,7 @@ under the License.
0
</td>
<td>
- 3
+ 0
</td>
</tr>
<tr>
@@ -28396,7 +28396,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a>
</td>
<td>
0
@@ -28405,12 +28405,12 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a>
</td>
<td>
0
@@ -28419,7 +28419,7 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
@@ -28536,7 +28536,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestClientOperationInterrupt.java">org/apache/hadoop/hbase/client/TestClientOperationInterrupt.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotProcedureWithLockTimeout.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotProcedureWithLockTimeout.java</a>
</td>
<td>
0
@@ -28550,7 +28550,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotProcedureWithLockTimeout.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotProcedureWithLockTimeout.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestClientOperationInterrupt.java">org/apache/hadoop/hbase/client/TestClientOperationInterrupt.java</a>
</td>
<td>
0
@@ -29488,7 +29488,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.crypto.tls.HBaseTrustManager.java">org/apache/hadoop/hbase/io/crypto/tls/HBaseTrustManager.java</a>
</td>
<td>
0
@@ -29497,12 +29497,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.crypto.tls.HBaseTrustManager.java">org/apache/hadoop/hbase/io/crypto/tls/HBaseTrustManager.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a>
</td>
<td>
0
@@ -29511,7 +29511,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -30076,7 +30076,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableAdminApi2.java">org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterRestartAfterDisablingTable.java">org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java</a>
</td>
<td>
0
@@ -30090,7 +30090,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterRestartAfterDisablingTable.java">org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableAdminApi2.java">org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.java</a>
</td>
<td>
0
@@ -31896,7 +31896,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncClusterConnection.java">org/apache/hadoop/hbase/client/DummyAsyncClusterConnection.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestTableProcedureWaitingQueueCleanup.java">org/apache/hadoop/hbase/master/procedure/TestTableProcedureWaitingQueueCleanup.java</a>
</td>
<td>
0
@@ -31910,7 +31910,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestTableProcedureWaitingQueueCleanup.java">org/apache/hadoop/hbase/master/procedure/TestTableProcedureWaitingQueueCleanup.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.tool.TestSecureBulkLoadHFiles.java">org/apache/hadoop/hbase/tool/TestSecureBulkLoadHFiles.java</a>
</td>
<td>
0
@@ -31924,7 +31924,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.tool.TestSecureBulkLoadHFiles.java">org/apache/hadoop/hbase/tool/TestSecureBulkLoadHFiles.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncClusterConnection.java">org/apache/hadoop/hbase/client/DummyAsyncClusterConnection.java</a>
</td>
<td>
0
@@ -32008,7 +32008,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RowMutations.java">org/apache/hadoop/hbase/client/RowMutations.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException.java">org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.java</a>
</td>
<td>
0
@@ -32022,7 +32022,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException.java">org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RowMutations.java">org/apache/hadoop/hbase/client/RowMutations.java</a>
</td>
<td>
0
@@ -32918,7 +32918,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.BucketCachePersister.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCachePersister.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java</a>
</td>
<td>
0
@@ -32932,7 +32932,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.BucketCachePersister.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCachePersister.java</a>
</td>
<td>
0
@@ -33744,7 +33744,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestClockSkewDetection.java">org/apache/hadoop/hbase/master/TestClockSkewDetection.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestMigrateRSGroupInfo.java">org/apache/hadoop/hbase/rsgroup/TestMigrateRSGroupInfo.java</a>
</td>
<td>
0
@@ -33758,7 +33758,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestMigrateRSGroupInfo.java">org/apache/hadoop/hbase/rsgroup/TestMigrateRSGroupInfo.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestClockSkewDetection.java">org/apache/hadoop/hbase/master/TestClockSkewDetection.java</a>
</td>
<td>
0
@@ -35592,7 +35592,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestFromClientSideWithCoprocessor.java">org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a>
</td>
<td>
0
@@ -35606,7 +35606,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestFromClientSideWithCoprocessor.java">org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.java</a>
</td>
<td>
0
@@ -36306,7 +36306,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestNamespaceReplication.java">org/apache/hadoop/hbase/replication/TestNamespaceReplication.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestPerColumnFamilyFlush.java">org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java</a>
</td>
<td>
0
@@ -36320,7 +36320,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestPerColumnFamilyFlush.java">org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestNamespaceReplication.java">org/apache/hadoop/hbase/replication/TestNamespaceReplication.java</a>
</td>
<td>
0
@@ -37678,7 +37678,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestRaceBetweenSCPAndTRSP.java">org/apache/hadoop/hbase/master/assignment/TestRaceBetweenSCPAndTRSP.java</a>
</td>
<td>
0
@@ -37692,7 +37692,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestRaceBetweenSCPAndTRSP.java">org/apache/hadoop/hbase/master/assignment/TestRaceBetweenSCPAndTRSP.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.java</a>
</td>
<td>
0
@@ -38112,7 +38112,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestLogRollPeriod.java">org/apache/hadoop/hbase/regionserver/wal/TestLogRollPeriod.java</a>
</td>
<td>
0
@@ -38126,7 +38126,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestLogRollPeriod.java">org/apache/hadoop/hbase/regionserver/wal/TestLogRollPeriod.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a>
</td>
<td>
0
@@ -38196,7 +38196,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncClientPauseForRpcThrottling.java">org/apache/hadoop/hbase/client/TestAsyncClientPauseForRpcThrottling.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestMemStoreLAB.java">org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java</a>
</td>
<td>
0
@@ -38210,7 +38210,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestMemStoreLAB.java">org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncClientPauseForRpcThrottling.java">org/apache/hadoop/hbase/client/TestAsyncClientPauseForRpcThrottling.java</a>
</td>
<td>
0
@@ -39358,7 +39358,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.FromClientSideBase.java">org/apache/hadoop/hbase/client/FromClientSideBase.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a>
</td>
<td>
0
@@ -39372,7 +39372,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.FromClientSideBase.java">org/apache/hadoop/hbase/client/FromClientSideBase.java</a>
</td>
<td>
0
@@ -40352,7 +40352,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRSQosFunction.java">org/apache/hadoop/hbase/regionserver/TestRSQosFunction.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestHRegionOnCluster.java">org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.java</a>
</td>
<td>
0
@@ -40361,12 +40361,12 @@ under the License.
0
</td>
<td>
- 0
+ 2
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestHRegionOnCluster.java">org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRSQosFunction.java">org/apache/hadoop/hbase/regionserver/TestRSQosFunction.java</a>
</td>
<td>
0
@@ -40375,7 +40375,7 @@ under the License.
0
</td>
<td>
- 2
+ 0
</td>
</tr>
<tr>
@@ -40800,7 +40800,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.RegionSizeReportingChore.java">org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.java</a>
</td>
<td>
0
@@ -40809,12 +40809,12 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.RegionSizeReportingChore.java">org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a>
</td>
<td>
0
@@ -40823,7 +40823,7 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
@@ -41878,7 +41878,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestRaceWhenCreatingReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/TestRaceWhenCreatingReplicationSource.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionReplicationLagEvaluation.java">org/apache/hadoop/hbase/RegionReplicationLagEvaluation.java</a>
</td>
<td>
0
@@ -41892,7 +41892,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionReplicationLagEvaluation.java">org/apache/hadoop/hbase/RegionReplicationLagEvaluation.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestRaceWhenCreatingReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/TestRaceWhenCreatingReplicationSource.java</a>
</td>
<td>
0
@@ -42536,7 +42536,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestResultFromCoprocessor.java">org/apache/hadoop/hbase/client/TestResultFromCoprocessor.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSCP.java">org/apache/hadoop/hbase/master/procedure/TestSCP.java</a>
</td>
<td>
0
@@ -42550,7 +42550,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSCP.java">org/apache/hadoop/hbase/master/procedure/TestSCP.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestResultFromCoprocessor.java">org/apache/hadoop/hbase/client/TestResultFromCoprocessor.java</a>
</td>
<td>
0
@@ -44272,7 +44272,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestScanWithoutFetchingData.java">org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.access.TestCoprocessorWhitelistMasterObserver.java">org/apache/hadoop/hbase/security/access/TestCoprocessorWhitelistMasterObserver.java</a>
</td>
<td>
0
@@ -44286,7 +44286,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.access.TestCoprocessorWhitelistMasterObserver.java">org/apache/hadoop/hbase/security/access/TestCoprocessorWhitelistMasterObserver.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestScanWithoutFetchingData.java">org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.java</a>
</td>
<td>
0
@@ -44384,7 +44384,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TableProcedureWaitingQueue.java">org/apache/hadoop/hbase/master/procedure/TableProcedureWaitingQueue.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a>
</td>
<td>
0
@@ -44398,7 +44398,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TableProcedureWaitingQueue.java">org/apache/hadoop/hbase/master/procedure/TableProcedureWaitingQueue.java</a>
</td>
<td>
0
@@ -44888,7 +44888,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientGetCompactionStateTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a>
</td>
<td>
0
@@ -44897,12 +44897,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientGetCompactionStateTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java</a>
</td>
<td>
0
@@ -44911,7 +44911,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -45896,7 +45896,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientGetCompactionState.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a>
</td>
<td>
0
@@ -45910,7 +45910,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientGetCompactionState.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java</a>
</td>
<td>
0
@@ -47226,7 +47226,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionReplicaInfo.java">org/apache/hadoop/hbase/master/http/RegionReplicaInfo.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MasterWalManager.java">org/apache/hadoop/hbase/master/MasterWalManager.java</a>
</td>
<td>
0
@@ -47235,12 +47235,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MasterWalManager.java">org/apache/hadoop/hbase/master/MasterWalManager.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionReplicaInfo.java">org/apache/hadoop/hbase/master/http/RegionReplicaInfo.java</a>
</td>
<td>
0
@@ -47249,12 +47249,12 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableScannerCloseWhileSuspending.java">org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.java</a>
</td>
<td>
0
@@ -47268,7 +47268,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableScannerCloseWhileSuspending.java">org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.java</a>
</td>
<td>
0
@@ -47352,7 +47352,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientAfterTruncate.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestNewStartedRegionServerVersion.java">org/apache/hadoop/hbase/master/TestNewStartedRegionServerVersion.java</a>
</td>
<td>
0
@@ -47366,7 +47366,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestNewStartedRegionServerVersion.java">org/apache/hadoop/hbase/master/TestNewStartedRegionServerVersion.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientAfterTruncate.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java</a>
</td>
<td>
0
@@ -49970,7 +49970,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.RejectReplicationRequestStateChecker.java">org/apache/hadoop/hbase/replication/regionserver/RejectReplicationRequestStateChecker.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.Compressor.java">org/apache/hadoop/hbase/regionserver/wal/Compressor.java</a>
</td>
<td>
0
@@ -49979,12 +49979,12 @@ under the License.
0
</td>
<td>
- 0
+ 4
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.Compressor.java">org/apache/hadoop/hbase/regionserver/wal/Compressor.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.RejectReplicationRequestStateChecker.java">org/apache/hadoop/hbase/replication/regionserver/RejectReplicationRequestStateChecker.java</a>
</td>
<td>
0
@@ -49993,7 +49993,7 @@ under the License.
0
</td>
<td>
- 4
+ 0
</td>
</tr>
<tr>
@@ -50656,7 +50656,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAccessControlAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncAccessControlAdminApi.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSWALEntry.java">org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.java</a>
</td>
<td>
0
@@ -50684,7 +50684,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSWALEntry.java">org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAccessControlAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncAccessControlAdminApi.java</a>
</td>
<td>
0
@@ -51524,7 +51524,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestReseekTo.java">org/apache/hadoop/hbase/io/hfile/TestReseekTo.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.policies.TestNoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestNoInsertsViolationPolicyEnforcement.java</a>
</td>
<td>
0
@@ -51538,7 +51538,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.policies.TestNoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestNoInsertsViolationPolicyEnforcement.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestReseekTo.java">org/apache/hadoop/hbase/io/hfile/TestReseekTo.java</a>
</td>
<td>
0
@@ -53134,7 +53134,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientSchemaChangeTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCompactionWithByteBuff.java">org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.java</a>
</td>
<td>
0
@@ -53148,7 +53148,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCompactionWithByteBuff.java">org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientSchemaChangeTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java</a>
</td>
<td>
0
@@ -53596,7 +53596,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.TestHbckMetricsResource.java">org/apache/hadoop/hbase/master/http/TestHbckMetricsResource.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotRegionProcedure.java</a>
</td>
<td>
0
@@ -53610,7 +53610,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotRegionProcedure.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.TestHbckMetricsResource.java">org/apache/hadoop/hbase/master/http/TestHbckMetricsResource.java</a>
</td>
<td>
0
@@ -54450,7 +54450,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.CloneSnapshotFromClientNormalTestBase.java">org/apache/hadoop/hbase/client/CloneSnapshotFromClientNormalTestBase.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.TestCallRunner.java">org/apache/hadoop/hbase/ipc/TestCallRunner.java</a>
</td>
<td>
0
@@ -54464,7 +54464,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.TestCallRunner.java">org/apache/hadoop/hbase/ipc/TestCallRunner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.CloneSnapshotFromClientNormalTestBase.java">org/apache/hadoop/hbase/client/CloneSnapshotFromClientNormalTestBase.java</a>
</td>
<td>
0
@@ -54562,7 +54562,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBootstrapNodeUpdate.java">org/apache/hadoop/hbase/client/TestBootstrapNodeUpdate.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestGetProcedureResult.java">org/apache/hadoop/hbase/client/TestGetProcedureResult.java</a>
</td>
<td>
0
@@ -54576,7 +54576,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestGetProcedureResult.java">org/apache/hadoop/hbase/client/TestGetProcedureResult.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBootstrapNodeUpdate.java">org/apache/hadoop/hbase/client/TestBootstrapNodeUpdate.java</a>
</td>
<td>
0
@@ -55276,7 +55276,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestLruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/TestLruCachedBlock.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestEnableRSGroupsCompatibility.java">org/apache/hadoop/hbase/rsgroup/TestEnableRSGroupsCompatibility.java</a>
</td>
<td>
0
@@ -55290,7 +55290,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestEnableRSGroupsCompatibility.java">org/apache/hadoop/hbase/rsgroup/TestEnableRSGroupsCompatibility.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestLruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/TestLruCachedBlock.java</a>
</td>
<td>
0
@@ -55990,7 +55990,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMvccConsistentScanner.java">org/apache/hadoop/hbase/client/TestMvccConsistentScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedureBase.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedureBase.java</a>
</td>
<td>
0
@@ -56004,7 +56004,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedureBase.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedureBase.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMvccConsistentScanner.java">org/apache/hadoop/hbase/client/TestMvccConsistentScanner.java</a>
</td>
<td>
0
@@ -56298,7 +56298,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestScanner.java">org/apache/hadoop/hbase/regionserver/TestScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionReplicas.java">org/apache/hadoop/hbase/regionserver/TestRegionReplicas.java</a>
</td>
<td>
0
@@ -56312,7 +56312,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionReplicas.java">org/apache/hadoop/hbase/regionserver/TestRegionReplicas.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestScanner.java">org/apache/hadoop/hbase/regionserver/TestScanner.java</a>
</td>
<td>
0
@@ -57432,7 +57432,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncTable.java">org/apache/hadoop/hbase/client/DummyAsyncTable.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestSyncFuture.java">org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.java</a>
</td>
<td>
0
@@ -57446,7 +57446,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestSyncFuture.java">org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncTable.java">org/apache/hadoop/hbase/client/DummyAsyncTable.java</a>
</td>
<td>
0
@@ -57852,7 +57852,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.gson.GsonFactory.java">org/apache/hadoop/hbase/master/http/gson/GsonFactory.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl.java">org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java</a>
</td>
<td>
0
@@ -57866,7 +57866,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl.java">org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.gson.GsonFactory.java">org/apache/hadoop/hbase/master/http/gson/GsonFactory.java</a>
</td>
<td>
0
@@ -58370,7 +58370,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCacheOnWriteInSchema.java">org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.java">org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.java</a>
</td>
<td>
0
@@ -58379,12 +58379,12 @@ under the License.
0
</td>
<td>
- 0
+ 2
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestBlocksRead.java">org/apache/hadoop/hbase/regionserver/TestBlocksRead.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCacheOnWriteInSchema.java">org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java</a>
</td>
<td>
0
@@ -58398,7 +58398,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.java">org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestBlocksRead.java">org/apache/hadoop/hbase/regionserver/TestBlocksRead.java</a>
</td>
<td>
0
@@ -58407,7 +58407,7 @@ under the License.
0
</td>
<td>
- 2
+ 0
</td>
</tr>
<tr>
@@ -59266,7 +59266,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMutationGetCellBuilder.java">org/apache/hadoop/hbase/client/TestMutationGetCellBuilder.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a>
</td>
<td>
0
@@ -59280,7 +59280,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMutationGetCellBuilder.java">org/apache/hadoop/hbase/client/TestMutationGetCellBuilder.java</a>
</td>
<td>
0
@@ -59910,7 +59910,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.SplitWALCallable.java">org/apache/hadoop/hbase/regionserver/SplitWALCallable.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a>
</td>
<td>
0
@@ -59924,7 +59924,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.SplitWALCallable.java">org/apache/hadoop/hbase/regionserver/SplitWALCallable.java</a>
</td>
<td>
0
@@ -61016,7 +61016,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestAssignmentManagerLoadMetaRegionState.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManagerLoadMetaRegionState.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.region.TestMasterRegionWALRecovery.java">org/apache/hadoop/hbase/master/region/TestMasterRegionWALRecovery.java</a>
</td>
<td>
0
@@ -61030,7 +61030,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.region.TestMasterRegionWALRecovery.java">org/apache/hadoop/hbase/master/region/TestMasterRegionWALRecovery.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestAssignmentManagerLoadMetaRegionState.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManagerLoadMetaRegionState.java</a>
</td>
<td>
0
@@ -62556,7 +62556,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.namequeues.TestWALEventTracker.java">org/apache/hadoop/hbase/namequeues/TestWALEventTracker.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestSeekHints.java">org/apache/hadoop/hbase/filter/TestSeekHints.java</a>
</td>
<td>
0
@@ -62570,7 +62570,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestSeekHints.java">org/apache/hadoop/hbase/filter/TestSeekHints.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.namequeues.TestWALEventTracker.java">org/apache/hadoop/hbase/namequeues/TestWALEventTracker.java</a>
</td>
<td>
0
@@ -63004,7 +63004,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncNamespaceAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingTTL.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingTTL.java</a>
</td>
<td>
0
@@ -63018,7 +63018,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingTTL.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingTTL.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncNamespaceAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java</a>
</td>
<td>
0
@@ -63046,7 +63046,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.java</a>
</td>
<td>
0
@@ -63060,7 +63060,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.java</a>
</td>
<td>
0
@@ -64236,7 +64236,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.ManualMobMaintHFileCleaner.java">org/apache/hadoop/hbase/mob/ManualMobMaintHFileCleaner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a>
</td>
<td>
0
@@ -64245,12 +64245,12 @@ under the License.
0
</td>
<td>
- 0
+ 4
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.ManualMobMaintHFileCleaner.java">org/apache/hadoop/hbase/mob/ManualMobMaintHFileCleaner.java</a>
</td>
<td>
0
@@ -64259,7 +64259,7 @@ under the License.
0
</td>
<td>
- 4
+ 0
</td>
</tr>
<tr>
@@ -64712,7 +64712,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.wal.TestWALSplitValueCompression.java">org/apache/hadoop/hbase/wal/TestWALSplitValueCompression.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.monitoring.TestTaskMonitor.java">org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java</a>
</td>
<td>
0
@@ -64726,7 +64726,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.monitoring.TestTaskMonitor.java">org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.wal.TestWALSplitValueCompression.java">org/apache/hadoop/hbase/wal/TestWALSplitValueCompression.java</a>
</td>
<td>
0
@@ -64782,7 +64782,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncMetaRegionLocator.java">org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDeleteMobTable.java">org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java</a>
</td>
<td>
0
@@ -64796,7 +64796,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDeleteMobTable.java">org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncMetaRegionLocator.java">org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.java</a>
</td>
<td>
0
@@ -65272,7 +65272,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterFromRegionSide.java">org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a>
</td>
<td>
0
@@ -65286,7 +65286,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterFromRegionSide.java">org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.java</a>
</td>
<td>
0
@@ -66462,7 +66462,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TableExistsException.java">org/apache/hadoop/hbase/TableExistsException.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionMetrics.java">org/apache/hadoop/hbase/RegionMetrics.java</a>
</td>
<td>
0
@@ -66476,7 +66476,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionMetrics.java">org/apache/hadoop/hbase/RegionMetrics.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TableExistsException.java">org/apache/hadoop/hbase/TableExistsException.java</a>
</td>
<td>
0
@@ -66686,7 +66686,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestEditsStuckBehindDroppedTable.java">org/apache/hadoop/hbase/replication/TestEditsStuckBehindDroppedTable.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction.java">org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java</a>
</td>
<td>
0
@@ -66700,7 +66700,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction.java">org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestEditsStuckBehindDroppedTable.java">org/apache/hadoop/hbase/replication/TestEditsStuckBehindDroppedTable.java</a>
</td>
<td>
0
@@ -67218,7 +67218,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.LimitedScanResultConsumer.java">org/apache/hadoop/hbase/client/LimitedScanResultConsumer.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestWideScanner.java">org/apache/hadoop/hbase/regionserver/TestWideScanner.java</a>
</td>
<td>
0
@@ -67232,7 +67232,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestWideScanner.java">org/apache/hadoop/hbase/regionserver/TestWideScanner.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.LimitedScanResultConsumer.java">org/apache/hadoop/hbase/client/LimitedScanResultConsumer.java</a>
</td>
<td>
0
@@ -67330,7 +67330,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.JMXListener.java">org/apache/hadoop/hbase/JMXListener.java</a>
</td>
<td>
0
@@ -67339,12 +67339,12 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.JMXListener.java">org/apache/hadoop/hbase/JMXListener.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</a>
</td>
<td>
0
@@ -67353,7 +67353,7 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
@@ -69444,7 +69444,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveFSHLog.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveFSHLog.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestHBaseMetaEdit.java">org/apache/hadoop/hbase/TestHBaseMetaEdit.java</a>
</td>
<td>
0
@@ -69458,7 +69458,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestHBaseMetaEdit.java">org/apache/hadoop/hbase/TestHBaseMetaEdit.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveFSHLog.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveFSHLog.java</a>
</td>
<td>
0
@@ -69906,7 +69906,7 @@ under the License.
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.ResizableBlockCache.java">org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a>
</td>
<td>
0
@@ -69915,12 +69915,12 @@ under the License.
0
</td>
<td>
- 0
+ 1
</td>
</tr>
<tr>
<td>
- <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a>
+ <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.ResizableBlockCache.java">org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java</a>
</td>
<td>
0
@@ -69929,7 +69929,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
diff --git a/coc.html b/coc.html
index 7a7bca4a207..d497e15b939 100644
--- a/coc.html
+++ b/coc.html
@@ -252,7 +252,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index a71ecf8b58e..1058e7be2b1 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -317,7 +317,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index a9f5623504e..4a5b4975d26 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1234,7 +1234,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index cf5315e2b9d..73fa0ddccd4 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -199,7 +199,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index e883565d6a8..78022be0358 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1768,7 +1768,7 @@
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</div>
<div style="float: right">
- Last Published: 2025-02-11
+ Last Published: 2025-02-12
</div>
</div>
<p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html
index c55e6a9e446..1afbb4b4bcc 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html
@@ -87,7 +87,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.FilterModel.ByteArrayComparableModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">static enum </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-178">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span>
+<div class="type-signature"><span class="modifiers">static enum </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-179">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a><<a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a>></span></div>
</section>
<section class="summary">
@@ -184,37 +184,37 @@ the order they are declared.</div>
<li>
<section class="detail" id="BinaryComparator">
<h3>BinaryComparator</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
</section>
</li>
<li>
<section class="detail" id="BinaryPrefixComparator">
<h3>BinaryPrefixComparator</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
</section>
</li>
<li>
<section class="detail" id="BitComparator">
<h3>BitComparator</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
</section>
</li>
<li>
<section class="detail" id="NullComparator">
<h3>NullComparator</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
</section>
</li>
<li>
<section class="detail" id="RegexStringComparator">
<h3>RegexStringComparator</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
</section>
</li>
<li>
<section class="detail" id="SubstringComparator">
<h3>SubstringComparator</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType [...]
</section>
</li>
</ul>
@@ -228,7 +228,7 @@ the order they are declared.</div>
<li>
<section class="detail" id="<init>()">
<h3>ComparatorType</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html#line-178">ComparatorType</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html#line-179">ComparatorType</a></span>()</div>
</section>
</li>
</ul>
@@ -242,7 +242,7 @@ the order they are declared.</div>
<li>
<section class="detail" id="values()">
<h3>values</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.htm [...]
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.htm [...]
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
<dl class="notes">
@@ -254,7 +254,7 @@ the order they are declared.</div>
<li>
<section class="detail" id="valueOf(java.lang.String)">
<h3>valueOf</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html# [...]
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html# [...]
<div class="block">Returns the enum constant of this class with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this class. (Extraneous whitespace characters are
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html
index 2c277349f68..2145f9b6c8f 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html
@@ -81,7 +81,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-169">ScannerModel.FilterModel.ByteArrayComparableModel</a></span>
+<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-170">ScannerModel.FilterModel.ByteArrayComparableModel</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
</section>
<section class="summary">
@@ -171,19 +171,19 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="type">
<h3>type</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-171">type</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-172">type</a></span></div>
</section>
</li>
<li>
<section class="detail" id="value">
<h3>value</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-173">value</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-174">value</a></span></div>
</section>
</li>
<li>
<section class="detail" id="op">
<h3>op</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-175">op</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-176">op</a></span></div>
</section>
</li>
</ul>
@@ -197,13 +197,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>ByteArrayComparableModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-187">ByteArrayComparableModel</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-188">ByteArrayComparableModel</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.filter.ByteArrayComparable)">
<h3>ByteArrayComparableModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-190">ByteArrayComparableModel</a></span><wbr><span class="parameters">(<a href="../../filter/ByteArrayComparable.html" title="class in org.apache.hadoop.hbase.filter">ByteArrayComparable</a> comparator)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-191">ByteArrayComparableModel</a></span><wbr><span class="parameters">(<a href="../../filter/ByteArrayComparable.html" title="class in org.apache.hadoop.hbase.filter">ByteArrayComparable</a> comparator)</span></div>
</section>
</li>
</ul>
@@ -217,7 +217,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="build()">
<h3>build</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../filter/ByteArrayComparable.html" title="class in org.apache.hadoop.hbase.filter">ByteArrayComparable</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-214">build</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../filter/ByteArrayComparable.html" title="class in org.apache.hadoop.hbase.filter">ByteArrayComparable</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html#line-215">build</a></span>()</div>
</section>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html
index 0b7c870b03d..b81ab77cb59 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html
@@ -87,7 +87,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">static enum </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-419">ScannerModel.FilterModel.FilterType</a></span>
+<div class="type-signature"><span class="modifiers">static enum </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-420">ScannerModel.FilterModel.FilterType</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a><<a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a>></span></div>
</section>
<section class="summary">
@@ -220,145 +220,145 @@ the order they are declared.</div>
<li>
<section class="detail" id="ColumnCountGetFilter">
<h3>ColumnCountGetFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-420">ColumnCountGetFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-421">ColumnCountGetFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="ColumnPaginationFilter">
<h3>ColumnPaginationFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-421">ColumnPaginationFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-422">ColumnPaginationFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="ColumnPrefixFilter">
<h3>ColumnPrefixFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-422">ColumnPrefixFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-423">ColumnPrefixFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="ColumnRangeFilter">
<h3>ColumnRangeFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-423">ColumnRangeFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-424">ColumnRangeFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="DependentColumnFilter">
<h3>DependentColumnFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-424">DependentColumnFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-425">DependentColumnFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="FamilyFilter">
<h3>FamilyFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-425">FamilyFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-426">FamilyFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="FilterList">
<h3>FilterList</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-426">FilterList</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-427">FilterList</a></span></div>
</section>
</li>
<li>
<section class="detail" id="FirstKeyOnlyFilter">
<h3>FirstKeyOnlyFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-427">FirstKeyOnlyFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-428">FirstKeyOnlyFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="InclusiveStopFilter">
<h3>InclusiveStopFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-428">InclusiveStopFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-429">InclusiveStopFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="KeyOnlyFilter">
<h3>KeyOnlyFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-429">KeyOnlyFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-430">KeyOnlyFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="MultipleColumnPrefixFilter">
<h3>MultipleColumnPrefixFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-430">MultipleColumnPrefixFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-431">MultipleColumnPrefixFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="MultiRowRangeFilter">
<h3>MultiRowRangeFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-431">MultiRowRangeFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-432">MultiRowRangeFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="PageFilter">
<h3>PageFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-432">PageFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-433">PageFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="PrefixFilter">
<h3>PrefixFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-433">PrefixFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-434">PrefixFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="QualifierFilter">
<h3>QualifierFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-434">QualifierFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-435">QualifierFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="RandomRowFilter">
<h3>RandomRowFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-435">RandomRowFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-436">RandomRowFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="RowFilter">
<h3>RowFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-436">RowFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-437">RowFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="SingleColumnValueExcludeFilter">
<h3>SingleColumnValueExcludeFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-437">SingleColumnValueExcludeFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-438">SingleColumnValueExcludeFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="SingleColumnValueFilter">
<h3>SingleColumnValueFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-438">SingleColumnValueFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-439">SingleColumnValueFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="SkipFilter">
<h3>SkipFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-439">SkipFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-440">SkipFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="TimestampsFilter">
<h3>TimestampsFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-440">TimestampsFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-441">TimestampsFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="ValueFilter">
<h3>ValueFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-441">ValueFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-442">ValueFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="WhileMatchFilter">
<h3>WhileMatchFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-442">WhileMatchFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-443">WhileMatchFilter</a></span></div>
</section>
</li>
<li>
<section class="detail" id="FuzzyRowFilter">
<h3>FuzzyRowFilter</h3>
-<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-443">FuzzyRowFilter</a></span></div>
+<div class="member-signature"><span class="modifiers">public static final</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-444">FuzzyRowFilter</a></span></div>
</section>
</li>
</ul>
@@ -372,7 +372,7 @@ the order they are declared.</div>
<li>
<section class="detail" id="<init>()">
<h3>FilterType</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-419">FilterType</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-420">FilterType</a></span>()</div>
</section>
</li>
</ul>
@@ -386,7 +386,7 @@ the order they are declared.</div>
<li>
<section class="detail" id="values()">
<h3>values</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-419">values</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a>[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-420">values</a></span>()</div>
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
<dl class="notes">
@@ -398,7 +398,7 @@ the order they are declared.</div>
<li>
<section class="detail" id="valueOf(java.lang.String)">
<h3>valueOf</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-419">valueOf</a></span><wbr><span class="parameters">(<a href="https://docs.oracle [...]
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html#line-420">valueOf</a></span><wbr><span class="parameters">(<a href="https://docs.oracle [...]
<div class="block">Returns the enum constant of this class with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this class. (Extraneous whitespace characters are
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html
index e5bebf4d07d..6657e3124e6 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html
@@ -81,7 +81,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-317">ScannerModel.FilterModel.FuzzyKeyModel</a></span>
+<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-318">ScannerModel.FilterModel.FuzzyKeyModel</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
</section>
<section class="summary">
@@ -171,13 +171,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="key">
<h3>key</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-319">key</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-320">key</a></span></div>
</section>
</li>
<li>
<section class="detail" id="mask">
<h3>mask</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-321">mask</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-322">mask</a></span></div>
</section>
</li>
</ul>
@@ -191,13 +191,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>FuzzyKeyModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-323">FuzzyKeyModel</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-324">FuzzyKeyModel</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.util.Pair)">
<h3>FuzzyKeyModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-326">FuzzyKeyModel</a></span><wbr><span class="parameters">(<a href="../../util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[],<wbr>byte[]> keyWithMask)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-327">FuzzyKeyModel</a></span><wbr><span class="parameters">(<a href="../../util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[],<wbr>byte[]> keyWithMask)</span></div>
</section>
</li>
</ul>
@@ -211,37 +211,37 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="build()">
<h3>build</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[],<wbr>byte[]></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-331">build</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><byte[],<wbr>byte[]></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-332">build</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="getKey()">
<h3>getKey</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-335">getKey</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-336">getKey</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="setKey(byte[])">
<h3>setKey</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-339">setKey</a></span><wbr><span class="parameters">(byte[] key)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-340">setKey</a></span><wbr><span class="parameters">(byte[] key)</span></div>
</section>
</li>
<li>
<section class="detail" id="getMask()">
<h3>getMask</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-343">getMask</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-344">getMask</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="setMask(byte[])">
<h3>setMask</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-347">setMask</a></span><wbr><span class="parameters">(byte[] mask)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-348">setMask</a></span><wbr><span class="parameters">(byte[] mask)</span></div>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-351">hashCode</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-352">hashCode</a></span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code> in class <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
@@ -251,7 +251,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-360">equals</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> ob [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html#line-361">equals</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> ob [...]
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code> in class <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html
index 0a6ac1f3d83..1fbfd14640a 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html
@@ -81,7 +81,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-248">ScannerModel.FilterModel.RowRangeModel</a></span>
+<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-249">ScannerModel.FilterModel.RowRangeModel</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson
deserialization. It also avoids adding those as dummy JSON elements.</div>
@@ -183,25 +183,25 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="startRow">
<h3>startRow</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-250">startRow</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-251">startRow</a></span></div>
</section>
</li>
<li>
<section class="detail" id="startRowInclusive">
<h3>startRowInclusive</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-252">startRowInclusive</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-253">startRowInclusive</a></span></div>
</section>
</li>
<li>
<section class="detail" id="stopRow">
<h3>stopRow</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-254">stopRow</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-255">stopRow</a></span></div>
</section>
</li>
<li>
<section class="detail" id="stopRowInclusive">
<h3>stopRowInclusive</h3>
-<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-256">stopRowInclusive</a></span></div>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-257">stopRowInclusive</a></span></div>
</section>
</li>
</ul>
@@ -215,13 +215,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>RowRangeModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-258">RowRangeModel</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-259">RowRangeModel</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.filter.MultiRowRangeFilter.RowRange)">
<h3>RowRangeModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-261">RowRangeModel</a></span><wbr><span class="parameters">(<a href="../../filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a> rr)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-262">RowRangeModel</a></span><wbr><span class="parameters">(<a href="../../filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a> rr)</span></div>
</section>
</li>
</ul>
@@ -235,39 +235,39 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="build()">
<h3>build</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-268">build</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-269">build</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="getStartRow()">
<h3>getStartRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-273">getStartRow</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-274">getStartRow</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="getStopRow()">
<h3>getStopRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-277">getStopRow</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-278">getStopRow</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="isStartRowInclusive()">
<h3>isStartRowInclusive</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-282">isStartRowInclusive</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-283">isStartRowInclusive</a></span>()</div>
<div class="block">Returns if start row is inclusive.</div>
</section>
</li>
<li>
<section class="detail" id="isStopRowInclusive()">
<h3>isStopRowInclusive</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-287">isStopRowInclusive</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-288">isStopRowInclusive</a></span>()</div>
<div class="block">Returns if stop row is inclusive.</div>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-291">hashCode</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-292">hashCode</a></span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code> in class <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
@@ -277,7 +277,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-301">equals</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> ob [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.RowRangeModel.html#line-302">equals</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> ob [...]
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code> in class <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html
index 0b86f3246a7..eee9f461379 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html
@@ -81,7 +81,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-166">ScannerModel.FilterModel</a></span>
+<div class="type-signature"><span class="modifiers">static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-167">ScannerModel.FilterModel</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
</section>
<section class="summary">
@@ -237,127 +237,127 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="type">
<h3>type</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-376">type</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-377">type</a></span></div>
</section>
</li>
<li>
<section class="detail" id="op">
<h3>op</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-378">op</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-379">op</a></span></div>
</section>
</li>
<li>
<section class="detail" id="comparator">
<h3>comparator</h3>
-<div class="member-signature"><span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-380">comparator</a></span></div>
+<div class="member-signature"><span class="return-type"><a href="ScannerModel.FilterModel.ByteArrayComparableModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-381">comparator</a></span></div>
</section>
</li>
<li>
<section class="detail" id="value">
<h3>value</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-382">value</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-383">value</a></span></div>
</section>
</li>
<li>
<section class="detail" id="filters">
<h3>filters</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a>></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a>></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest [...]
</section>
</li>
<li>
<section class="detail" id="limit">
<h3>limit</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-386">limit</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-387">limit</a></span></div>
</section>
</li>
<li>
<section class="detail" id="offset">
<h3>offset</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-388">offset</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-389">offset</a></span></div>
</section>
</li>
<li>
<section class="detail" id="family">
<h3>family</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-390">family</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-391">family</a></span></div>
</section>
</li>
<li>
<section class="detail" id="qualifier">
<h3>qualifier</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-392">qualifier</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-393">qualifier</a></span></div>
</section>
</li>
<li>
<section class="detail" id="ifMissing">
<h3>ifMissing</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-394">ifMissing</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-395">ifMissing</a></span></div>
</section>
</li>
<li>
<section class="detail" id="latestVersion">
<h3>latestVersion</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-396">latestVersion</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-397">latestVersion</a></span></div>
</section>
</li>
<li>
<section class="detail" id="minColumn">
<h3>minColumn</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-398">minColumn</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-399">minColumn</a></span></div>
</section>
</li>
<li>
<section class="detail" id="minColumnInclusive">
<h3>minColumnInclusive</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-400">minColumnInclusive</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-401">minColumnInclusive</a></span></div>
</section>
</li>
<li>
<section class="detail" id="maxColumn">
<h3>maxColumn</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-402">maxColumn</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-403">maxColumn</a></span></div>
</section>
</li>
<li>
<section class="detail" id="maxColumnInclusive">
<h3>maxColumnInclusive</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-404">maxColumnInclusive</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-405">maxColumnInclusive</a></span></div>
</section>
</li>
<li>
<section class="detail" id="dropDependentColumn">
<h3>dropDependentColumn</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-406">dropDependentColumn</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-407">dropDependentColumn</a></span></div>
</section>
</li>
<li>
<section class="detail" id="chance">
<h3>chance</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Float.html" title="class or interface in java.lang" class="external-link">Float</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-408">chance</a></span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Float.html" title="class or interface in java.lang" class="external-link">Float</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-409">chance</a></span></div>
</section>
</li>
<li>
<section class="detail" id="prefixes">
<h3>prefixes</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>></span> <span class="element-name"><a href="../../../. [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>></span> <span class="element-name"><a href="../../../. [...]
</section>
</li>
<li>
<section class="detail" id="ranges">
<h3>ranges</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="ScannerModel.FilterModel.RowRangeModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.RowRangeModel</a>></span> <span class="element-name"><a href="../../../../../../src-html [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="ScannerModel.FilterModel.RowRangeModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.RowRangeModel</a>></span> <span class="element-name"><a href="../../../../../../src-html [...]
</section>
</li>
<li>
<section class="detail" id="timestamps">
<h3>timestamps</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>></span> <span class="element-name"><a href="../../../../.. [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>></span> <span class="element-name"><a href="../../../../.. [...]
</section>
</li>
<li>
<section class="detail" id="fuzzyKeys">
<h3>fuzzyKeys</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="ScannerModel.FilterModel.FuzzyKeyModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FuzzyKeyModel</a>></span> <span class="element-name"><a href="../../../../../../src-html [...]
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="ScannerModel.FilterModel.FuzzyKeyModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FuzzyKeyModel</a>></span> <span class="element-name"><a href="../../../../../../src-html [...]
</section>
</li>
</ul>
@@ -371,13 +371,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>FilterModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-446">FilterModel</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-447">FilterModel</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="<init>(org.apache.hadoop.hbase.filter.Filter)">
<h3>FilterModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-449">FilterModel</a></span><wbr><span class="parameters">(<a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a> filter)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-450">FilterModel</a></span><wbr><span class="parameters">(<a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a> filter)</span></div>
</section>
</li>
</ul>
@@ -391,7 +391,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="build()">
<h3>build</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-567">build</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.html#line-568">build</a></span>()</div>
</section>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html
index db9dd92cd28..fc7b3620b86 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html
@@ -135,7 +135,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>IncludeStartRowFilter</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html#line-151">IncludeStartRowFilter</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html#line-152">IncludeStartRowFilter</a></span>()</div>
</section>
</li>
</ul>
@@ -149,7 +149,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html#line-152">equals</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> value) [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.IncludeStartRowFilter.html#line-153">equals</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> value) [...]
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code> in class <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html
index e1c6614daa7..34b3412a4ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html
@@ -77,7 +77,7 @@ loadScripts(document, 'script');</script>
<dd><a href="ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a></dd>
</dl>
<hr>
-<div class="type-signature"><span class="modifiers">private static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-162">ScannerModel.JaxbJsonProviderHolder</a></span>
+<div class="type-signature"><span class="modifiers">private static class </span><span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-163">ScannerModel.JaxbJsonProviderHolder</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Implement lazily-instantiated singleton as per recipe here:
http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</div>
@@ -135,7 +135,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="INSTANCE">
<h3>INSTANCE</h3>
-<div class="member-signature"><span class="modifiers">static final</span> <span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html#line-163">INSTANCE</a></span></div>
+<div class="member-signature"><span class="modifiers">static final</span> <span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html#line-164">INSTANCE</a></span></div>
</section>
</li>
</ul>
@@ -149,7 +149,7 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="<init>()">
<h3>JaxbJsonProviderHolder</h3>
-<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html#line-162">JaxbJsonProviderHolder</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.JaxbJsonProviderHolder.html#line-163">JaxbJsonProviderHolder</a></span>()</div>
</section>
</li>
</ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.html b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.html
index 68ff8b552f7..9f26c7069cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/ScannerModel.html
@@ -514,7 +514,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="COLUMN_DIVIDER">
<h3>COLUMN_DIVIDER</h3>
-<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-717">COLUMN_DIVIDER</a></span></div>
+<div class="member-signature"><span class="modifiers">private static final</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-718">COLUMN_DIVIDER</a></span></div>
</section>
</li>
</ul>
@@ -528,14 +528,14 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="<init>()">
<h3>ScannerModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-775">ScannerModel</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-776">ScannerModel</a></span>()</div>
<div class="block">Default constructor</div>
</section>
</li>
<li>
<section class="detail" id="<init>(byte[],byte[],java.util.List,int,int,long,int,java.lang.String)">
<h3>ScannerModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-789">ScannerModel</a></span><wbr><span class="parameters">(byte[] startRow,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-790">ScannerModel</a></span><wbr><span class="parameters">(byte[] startRow,
byte[] endRow,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><byte[]> columns,
int batch,
@@ -560,7 +560,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="<init>(byte[],byte[],java.util.List,int,int,long,long,java.lang.String)">
<h3>ScannerModel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-815">ScannerModel</a></span><wbr><span class="parameters">(byte[] startRow,
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-816">ScannerModel</a></span><wbr><span class="parameters">(byte[] startRow,
byte[] endRow,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><byte[]> columns,
int batch,
@@ -619,7 +619,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="getJasonProvider()">
<h3>getJasonProvider</h3>
-<div class="member-signature"><span class="modifiers">private static</span> <span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-693">getJasonProvider</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private static</span> <span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-694">getJasonProvider</a></span>()</div>
<div class="block">Get the <code>JacksonJaxbJsonProvider</code> instance;</div>
<dl class="notes">
<dt>Returns:</dt>
@@ -630,7 +630,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="buildFilter(java.lang.String)">
<h3>buildFilter</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-701">buildFilter</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="c [...]
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-702">buildFilter</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="c [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Parameters:</dt>
@@ -645,7 +645,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="stringifyFilter(org.apache.hadoop.hbase.filter.Filter)">
<h3>stringifyFilter</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-712">stringifyFilter</a></span><wbr><span class="parameters">(<a href="../../filter/Fil [...]
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-713">stringifyFilter</a></span><wbr><span class="parameters">(<a href="../../filter/Fil [...]
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Parameters:</dt>
@@ -660,7 +660,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="fromScan(org.apache.hadoop.hbase.client.Scan)">
<h3>fromScan</h3>
-<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-722">fromScan</a></span><wbr><span class="parameters">(<a href="../../client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> scan)</span>
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type"><a href="ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-723">fromScan</a></span><wbr><span class="parameters">(<a href="../../client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> scan)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<dl class="notes">
<dt>Parameters:</dt>
@@ -673,7 +673,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="addColumn(byte[])">
<h3>addColumn</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-832">addColumn</a></span><wbr><span class="parameters">(byte[] column)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-833">addColumn</a></span><wbr><span class="parameters">(byte[] column)</span></div>
<div class="block">Add a column to the column set</div>
<dl class="notes">
<dt>Parameters:</dt>
@@ -684,111 +684,111 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="addLabel(java.lang.String)">
<h3>addLabel</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-839">addLabel</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> label)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-840">addLabel</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> label)</span></div>
<div class="block">Add a visibility label to the scan</div>
</section>
</li>
<li>
<section class="detail" id="hasStartRow()">
<h3>hasStartRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-844">hasStartRow</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-845">hasStartRow</a></span>()</div>
<div class="block">Returns true if a start row was specified</div>
</section>
</li>
<li>
<section class="detail" id="getStartRow()">
<h3>getStartRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-849">getStartRow</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-850">getStartRow</a></span>()</div>
<div class="block">Returns start row</div>
</section>
</li>
<li>
<section class="detail" id="hasEndRow()">
<h3>hasEndRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-855">hasEndRow</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-856">hasEndRow</a></span>()</div>
<div class="block">Returns true if an end row was specified</div>
</section>
</li>
<li>
<section class="detail" id="getEndRow()">
<h3>getEndRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-860">getEndRow</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">byte[]</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-861">getEndRow</a></span>()</div>
<div class="block">Returns end row</div>
</section>
</li>
<li>
<section class="detail" id="getColumns()">
<h3>getColumns</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><byte[]></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-866">getColumns</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><byte[]></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-867">getColumns</a></span>()</div>
<div class="block">Returns list of columns of interest in column:qualifier format, or empty for all</div>
</section>
</li>
<li>
<section class="detail" id="getLabels()">
<h3>getLabels</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>></span> <span class="element-name"><a href="../../../. [...]
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>></span> <span class="element-name"><a href="../../../. [...]
</section>
</li>
<li>
<section class="detail" id="getBatch()">
<h3>getBatch</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-877">getBatch</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-878">getBatch</a></span>()</div>
<div class="block">Returns the number of cells to return in batch</div>
</section>
</li>
<li>
<section class="detail" id="getCaching()">
<h3>getCaching</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-883">getCaching</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-884">getCaching</a></span>()</div>
<div class="block">Returns the number of rows that the scanner to fetch at once</div>
</section>
</li>
<li>
<section class="detail" id="getLimit()">
<h3>getLimit</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-889">getLimit</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-890">getLimit</a></span>()</div>
<div class="block">Returns the limit specification</div>
</section>
</li>
<li>
<section class="detail" id="getCacheBlocks()">
<h3>getCacheBlocks</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-895">getCacheBlocks</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-896">getCacheBlocks</a></span>()</div>
<div class="block">Returns true if HFile blocks should be cached on the servers for this scan, false otherwise</div>
</section>
</li>
<li>
<section class="detail" id="getStartTime()">
<h3>getStartTime</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-901">getStartTime</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-902">getStartTime</a></span>()</div>
<div class="block">Returns the lower bound on timestamps of items of interest</div>
</section>
</li>
<li>
<section class="detail" id="getEndTime()">
<h3>getEndTime</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-907">getEndTime</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">long</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-908">getEndTime</a></span>()</div>
<div class="block">Returns the upper bound on timestamps of items of interest</div>
</section>
</li>
<li>
<section class="detail" id="getMaxVersions()">
<h3>getMaxVersions</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-913">getMaxVersions</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">int</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-914">getMaxVersions</a></span>()</div>
<div class="block">Returns maximum number of versions to return</div>
</section>
</li>
<li>
<section class="detail" id="getFilter()">
<h3>getFilter</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-919">getFilter</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-920">getFilter</a></span>()</div>
<div class="block">Returns the filter specification</div>
</section>
</li>
<li>
<section class="detail" id="setStartRow(byte[])">
<h3>setStartRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-927">setStartRow</a></span><wbr><span class="parameters">(byte[] startRow)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-928">setStartRow</a></span><wbr><span class="parameters">(byte[] startRow)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>startRow</code> - start row</dd>
@@ -798,7 +798,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setEndRow(byte[])">
<h3>setEndRow</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-934">setEndRow</a></span><wbr><span class="parameters">(byte[] endRow)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-935">setEndRow</a></span><wbr><span class="parameters">(byte[] endRow)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>endRow</code> - end row</dd>
@@ -808,7 +808,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setColumns(java.util.List)">
<h3>setColumns</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-941">setColumns</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><byte[]> columns)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-942">setColumns</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><byte[]> columns)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>columns</code> - list of columns of interest in column:qualifier format, or empty for all</dd>
@@ -818,7 +818,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setBatch(int)">
<h3>setBatch</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-948">setBatch</a></span><wbr><span class="parameters">(int batch)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-949">setBatch</a></span><wbr><span class="parameters">(int batch)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>batch</code> - the number of cells to return in batch</dd>
@@ -828,7 +828,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setCaching(int)">
<h3>setCaching</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-955">setCaching</a></span><wbr><span class="parameters">(int caching)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-956">setCaching</a></span><wbr><span class="parameters">(int caching)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>caching</code> - the number of rows to fetch at once</dd>
@@ -838,7 +838,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setCacheBlocks(boolean)">
<h3>setCacheBlocks</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-963">setCacheBlocks</a></span><wbr><span class="parameters">(boolean value)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-964">setCacheBlocks</a></span><wbr><span class="parameters">(boolean value)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>value</code> - true if HFile blocks should be cached on the servers for this scan, false
@@ -849,7 +849,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setLimit(int)">
<h3>setLimit</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-970">setLimit</a></span><wbr><span class="parameters">(int limit)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-971">setLimit</a></span><wbr><span class="parameters">(int limit)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>limit</code> - the number of rows can fetch of each scanner at lifetime</dd>
@@ -859,7 +859,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setMaxVersions(int)">
<h3>setMaxVersions</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-977">setMaxVersions</a></span><wbr><span class="parameters">(int maxVersions)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-978">setMaxVersions</a></span><wbr><span class="parameters">(int maxVersions)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>maxVersions</code> - maximum number of versions to return</dd>
@@ -869,7 +869,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setStartTime(long)">
<h3>setStartTime</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-984">setStartTime</a></span><wbr><span class="parameters">(long startTime)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-985">setStartTime</a></span><wbr><span class="parameters">(long startTime)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>startTime</code> - the lower bound on timestamps of values of interest</dd>
@@ -879,7 +879,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setEndTime(long)">
<h3>setEndTime</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-991">setEndTime</a></span><wbr><span class="parameters">(long endTime)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-992">setEndTime</a></span><wbr><span class="parameters">(long endTime)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>endTime</code> - the upper bound on timestamps of values of interest</dd>
@@ -889,7 +889,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="setFilter(java.lang.String)">
<h3>setFilter</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-998">setFilter</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> filter)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-999">setFilter</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> filter)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>filter</code> - the filter specification</dd>
@@ -899,7 +899,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="messageFromObject()">
<h3>messageFromObject</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hbase.thirdparty.com.google.protobuf.Message</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-1002">messageFromObject</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.hbase.thirdparty.com.google.protobuf.Message</span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-1003">messageFromObject</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="../ProtobufMessageHandler.html#messageFromObject()">ProtobufMessageHandler</a></code></span></div>
<div class="block">Convert to model to a protobuf Message object</div>
<dl class="notes">
@@ -913,7 +913,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
<li>
<section class="detail" id="getObjectFromMessage(org.apache.hbase.thirdparty.com.google.protobuf.CodedInputStream)">
<h3>getObjectFromMessage</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../ProtobufMessageHandler.html" title="interface in org.apache.hadoop.hbase.rest">ProtobufMessageHandler</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-1041">getObjectFromMessage</a></span><wbr><span class="parameters">(org.apache.hbase.thirdparty.com.google.protobuf.CodedInputStream cis)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="../ProtobufMessageHandler.html" title="interface in org.apache.hadoop.hbase.rest">ProtobufMessageHandler</a></span> <span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.html#line-1042">getObjectFromMessage</a></span><wbr><span class="parameters">(org.apache.hbase.thirdparty.com.google.protobuf.CodedInputStream cis)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Specified by:</dt>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html
index c76c522cff6..f5c47bc89c2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html
@@ -159,951 +159,952 @@
<span class="source-line-no">146</span><span id="line-146"> }</span>
<span class="source-line-no">147</span><span id="line-147"></span>
<span class="source-line-no">148</span><span id="line-148"> @edu.umd.cs.findbugs.annotations.SuppressWarnings(</span>
-<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE" },</span>
-<span class="source-line-no">150</span><span id="line-150"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
-<span class="source-line-no">151</span><span id="line-151"> private static class IncludeStartRowFilter {</span>
-<span class="source-line-no">152</span><span id="line-152"> @Override</span>
-<span class="source-line-no">153</span><span id="line-153"> public boolean equals(Object value) {</span>
-<span class="source-line-no">154</span><span id="line-154"> return Boolean.TRUE.equals(value);</span>
-<span class="source-line-no">155</span><span id="line-155"> }</span>
-<span class="source-line-no">156</span><span id="line-156"> }</span>
-<span class="source-line-no">157</span><span id="line-157"></span>
-<span class="source-line-no">158</span><span id="line-158"> /**</span>
-<span class="source-line-no">159</span><span id="line-159"> * Implement lazily-instantiated singleton as per recipe here:</span>
-<span class="source-line-no">160</span><span id="line-160"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
-<span class="source-line-no">161</span><span id="line-161"> */</span>
-<span class="source-line-no">162</span><span id="line-162"> private static class JaxbJsonProviderHolder {</span>
-<span class="source-line-no">163</span><span id="line-163"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
-<span class="source-line-no">164</span><span id="line-164"> }</span>
-<span class="source-line-no">165</span><span id="line-165"></span>
-<span class="source-line-no">166</span><span id="line-166"> @XmlRootElement</span>
-<span class="source-line-no">167</span><span id="line-167"> static class FilterModel {</span>
-<span class="source-line-no">168</span><span id="line-168"></span>
-<span class="source-line-no">169</span><span id="line-169"> @XmlRootElement</span>
-<span class="source-line-no">170</span><span id="line-170"> static class ByteArrayComparableModel {</span>
-<span class="source-line-no">171</span><span id="line-171"> @XmlAttribute</span>
-<span class="source-line-no">172</span><span id="line-172"> public String type;</span>
-<span class="source-line-no">173</span><span id="line-173"> @XmlAttribute</span>
-<span class="source-line-no">174</span><span id="line-174"> public String value;</span>
-<span class="source-line-no">175</span><span id="line-175"> @XmlAttribute</span>
-<span class="source-line-no">176</span><span id="line-176"> public String op;</span>
-<span class="source-line-no">177</span><span id="line-177"></span>
-<span class="source-line-no">178</span><span id="line-178"> static enum ComparatorType {</span>
-<span class="source-line-no">179</span><span id="line-179"> BinaryComparator,</span>
-<span class="source-line-no">180</span><span id="line-180"> BinaryPrefixComparator,</span>
-<span class="source-line-no">181</span><span id="line-181"> BitComparator,</span>
-<span class="source-line-no">182</span><span id="line-182"> NullComparator,</span>
-<span class="source-line-no">183</span><span id="line-183"> RegexStringComparator,</span>
-<span class="source-line-no">184</span><span id="line-184"> SubstringComparator</span>
-<span class="source-line-no">185</span><span id="line-185"> }</span>
-<span class="source-line-no">186</span><span id="line-186"></span>
-<span class="source-line-no">187</span><span id="line-187"> public ByteArrayComparableModel() {</span>
-<span class="source-line-no">188</span><span id="line-188"> }</span>
-<span class="source-line-no">189</span><span id="line-189"></span>
-<span class="source-line-no">190</span><span id="line-190"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
-<span class="source-line-no">191</span><span id="line-191"> String typeName = comparator.getClass().getSimpleName();</span>
-<span class="source-line-no">192</span><span id="line-192"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
-<span class="source-line-no">193</span><span id="line-193"> this.type = typeName;</span>
-<span class="source-line-no">194</span><span id="line-194"> switch (type) {</span>
-<span class="source-line-no">195</span><span id="line-195"> case BinaryComparator:</span>
-<span class="source-line-no">196</span><span id="line-196"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">197</span><span id="line-197"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">198</span><span id="line-198"> break;</span>
-<span class="source-line-no">199</span><span id="line-199"> case BitComparator:</span>
-<span class="source-line-no">200</span><span id="line-200"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">201</span><span id="line-201"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
-<span class="source-line-no">202</span><span id="line-202"> break;</span>
-<span class="source-line-no">203</span><span id="line-203"> case NullComparator:</span>
-<span class="source-line-no">204</span><span id="line-204"> break;</span>
-<span class="source-line-no">205</span><span id="line-205"> case RegexStringComparator:</span>
-<span class="source-line-no">206</span><span id="line-206"> case SubstringComparator:</span>
-<span class="source-line-no">207</span><span id="line-207"> this.value = Bytes.toString(comparator.getValue());</span>
-<span class="source-line-no">208</span><span id="line-208"> break;</span>
-<span class="source-line-no">209</span><span id="line-209"> default:</span>
-<span class="source-line-no">210</span><span id="line-210"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">211</span><span id="line-211"> }</span>
-<span class="source-line-no">212</span><span id="line-212"> }</span>
-<span class="source-line-no">213</span><span id="line-213"></span>
-<span class="source-line-no">214</span><span id="line-214"> public ByteArrayComparable build() {</span>
-<span class="source-line-no">215</span><span id="line-215"> ByteArrayComparable comparator;</span>
-<span class="source-line-no">216</span><span id="line-216"> switch (ComparatorType.valueOf(type)) {</span>
-<span class="source-line-no">217</span><span id="line-217"> case BinaryComparator:</span>
-<span class="source-line-no">218</span><span id="line-218"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">219</span><span id="line-219"> break;</span>
-<span class="source-line-no">220</span><span id="line-220"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">221</span><span id="line-221"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">222</span><span id="line-222"> break;</span>
-<span class="source-line-no">223</span><span id="line-223"> case BitComparator:</span>
-<span class="source-line-no">224</span><span id="line-224"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
-<span class="source-line-no">225</span><span id="line-225"> BitComparator.BitwiseOp.valueOf(op));</span>
-<span class="source-line-no">226</span><span id="line-226"> break;</span>
-<span class="source-line-no">227</span><span id="line-227"> case NullComparator:</span>
-<span class="source-line-no">228</span><span id="line-228"> comparator = new NullComparator();</span>
-<span class="source-line-no">229</span><span id="line-229"> break;</span>
-<span class="source-line-no">230</span><span id="line-230"> case RegexStringComparator:</span>
-<span class="source-line-no">231</span><span id="line-231"> comparator = new RegexStringComparator(value);</span>
-<span class="source-line-no">232</span><span id="line-232"> break;</span>
-<span class="source-line-no">233</span><span id="line-233"> case SubstringComparator:</span>
-<span class="source-line-no">234</span><span id="line-234"> comparator = new SubstringComparator(value);</span>
-<span class="source-line-no">235</span><span id="line-235"> break;</span>
-<span class="source-line-no">236</span><span id="line-236"> default:</span>
-<span class="source-line-no">237</span><span id="line-237"> throw new RuntimeException("unhandled comparator type: " + type);</span>
-<span class="source-line-no">238</span><span id="line-238"> }</span>
-<span class="source-line-no">239</span><span id="line-239"> return comparator;</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"></span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
-<span class="source-line-no">246</span><span id="line-246"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
-<span class="source-line-no">247</span><span id="line-247"> */</span>
-<span class="source-line-no">248</span><span id="line-248"> static class RowRangeModel {</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250"> protected byte[] startRow;</span>
-<span class="source-line-no">251</span><span id="line-251"></span>
-<span class="source-line-no">252</span><span id="line-252"> protected boolean startRowInclusive = true;</span>
-<span class="source-line-no">253</span><span id="line-253"></span>
-<span class="source-line-no">254</span><span id="line-254"> protected byte[] stopRow;</span>
-<span class="source-line-no">255</span><span id="line-255"></span>
-<span class="source-line-no">256</span><span id="line-256"> protected boolean stopRowInclusive = false;</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> public RowRangeModel() {</span>
-<span class="source-line-no">259</span><span id="line-259"> }</span>
-<span class="source-line-no">260</span><span id="line-260"></span>
-<span class="source-line-no">261</span><span id="line-261"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
-<span class="source-line-no">262</span><span id="line-262"> this.startRow = rr.getStartRow();</span>
-<span class="source-line-no">263</span><span id="line-263"> this.startRowInclusive = rr.isStartRowInclusive();</span>
-<span class="source-line-no">264</span><span id="line-264"> this.stopRow = rr.getStopRow();</span>
-<span class="source-line-no">265</span><span id="line-265"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
-<span class="source-line-no">266</span><span id="line-266"> }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268"> public MultiRowRangeFilter.RowRange build() {</span>
-<span class="source-line-no">269</span><span id="line-269"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
-<span class="source-line-no">270</span><span id="line-270"> stopRowInclusive);</span>
-<span class="source-line-no">271</span><span id="line-271"> }</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> public byte[] getStartRow() {</span>
-<span class="source-line-no">274</span><span id="line-274"> return startRow;</span>
-<span class="source-line-no">275</span><span id="line-275"> }</span>
-<span class="source-line-no">276</span><span id="line-276"></span>
-<span class="source-line-no">277</span><span id="line-277"> public byte[] getStopRow() {</span>
-<span class="source-line-no">278</span><span id="line-278"> return stopRow;</span>
-<span class="source-line-no">279</span><span id="line-279"> }</span>
-<span class="source-line-no">280</span><span id="line-280"></span>
-<span class="source-line-no">281</span><span id="line-281"> /** Returns if start row is inclusive. */</span>
-<span class="source-line-no">282</span><span id="line-282"> public boolean isStartRowInclusive() {</span>
-<span class="source-line-no">283</span><span id="line-283"> return startRowInclusive;</span>
-<span class="source-line-no">284</span><span id="line-284"> }</span>
-<span class="source-line-no">285</span><span id="line-285"></span>
-<span class="source-line-no">286</span><span id="line-286"> /** Returns if stop row is inclusive. */</span>
-<span class="source-line-no">287</span><span id="line-287"> public boolean isStopRowInclusive() {</span>
-<span class="source-line-no">288</span><span id="line-288"> return stopRowInclusive;</span>
-<span class="source-line-no">289</span><span id="line-289"> }</span>
-<span class="source-line-no">290</span><span id="line-290"></span>
-<span class="source-line-no">291</span><span id="line-291"> @Override</span>
-<span class="source-line-no">292</span><span id="line-292"> public int hashCode() {</span>
-<span class="source-line-no">293</span><span id="line-293"> final int prime = 31;</span>
-<span class="source-line-no">294</span><span id="line-294"> int result = 1;</span>
-<span class="source-line-no">295</span><span id="line-295"> result = prime * result + Arrays.hashCode(startRow);</span>
-<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(stopRow);</span>
-<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
-<span class="source-line-no">298</span><span id="line-298"> return result;</span>
-<span class="source-line-no">299</span><span id="line-299"> }</span>
-<span class="source-line-no">300</span><span id="line-300"></span>
-<span class="source-line-no">301</span><span id="line-301"> @Override</span>
-<span class="source-line-no">302</span><span id="line-302"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">303</span><span id="line-303"> if (this == obj) {</span>
-<span class="source-line-no">304</span><span id="line-304"> return true;</span>
-<span class="source-line-no">305</span><span id="line-305"> }</span>
-<span class="source-line-no">306</span><span id="line-306"> if (!(obj instanceof RowRangeModel)) {</span>
-<span class="source-line-no">307</span><span id="line-307"> return false;</span>
-<span class="source-line-no">308</span><span id="line-308"> }</span>
-<span class="source-line-no">309</span><span id="line-309"> RowRangeModel other = (RowRangeModel) obj;</span>
-<span class="source-line-no">310</span><span id="line-310"> return Arrays.equals(startRow, other.startRow)</span>
-<span class="source-line-no">311</span><span id="line-311"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312"> && stopRowInclusive == other.stopRowInclusive;</span>
-<span class="source-line-no">313</span><span id="line-313"> }</span>
-<span class="source-line-no">314</span><span id="line-314"></span>
-<span class="source-line-no">315</span><span id="line-315"> }</span>
-<span class="source-line-no">316</span><span id="line-316"></span>
-<span class="source-line-no">317</span><span id="line-317"> static class FuzzyKeyModel {</span>
-<span class="source-line-no">318</span><span id="line-318"></span>
-<span class="source-line-no">319</span><span id="line-319"> protected byte[] key;</span>
-<span class="source-line-no">320</span><span id="line-320"></span>
-<span class="source-line-no">321</span><span id="line-321"> protected byte[] mask;</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323"> public FuzzyKeyModel() {</span>
-<span class="source-line-no">324</span><span id="line-324"> }</span>
-<span class="source-line-no">325</span><span id="line-325"></span>
-<span class="source-line-no">326</span><span id="line-326"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
-<span class="source-line-no">327</span><span id="line-327"> this.key = keyWithMask.getFirst();</span>
-<span class="source-line-no">328</span><span id="line-328"> this.mask = keyWithMask.getSecond();</span>
-<span class="source-line-no">329</span><span id="line-329"> }</span>
-<span class="source-line-no">330</span><span id="line-330"></span>
-<span class="source-line-no">331</span><span id="line-331"> public Pair<byte[], byte[]> build() {</span>
-<span class="source-line-no">332</span><span id="line-332"> return new Pair<>(key, mask);</span>
-<span class="source-line-no">333</span><span id="line-333"> }</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335"> public byte[] getKey() {</span>
-<span class="source-line-no">336</span><span id="line-336"> return key;</span>
-<span class="source-line-no">337</span><span id="line-337"> }</span>
-<span class="source-line-no">338</span><span id="line-338"></span>
-<span class="source-line-no">339</span><span id="line-339"> public void setKey(byte[] key) {</span>
-<span class="source-line-no">340</span><span id="line-340"> this.key = key;</span>
-<span class="source-line-no">341</span><span id="line-341"> }</span>
-<span class="source-line-no">342</span><span id="line-342"></span>
-<span class="source-line-no">343</span><span id="line-343"> public byte[] getMask() {</span>
-<span class="source-line-no">344</span><span id="line-344"> return mask;</span>
-<span class="source-line-no">345</span><span id="line-345"> }</span>
-<span class="source-line-no">346</span><span id="line-346"></span>
-<span class="source-line-no">347</span><span id="line-347"> public void setMask(byte[] mask) {</span>
-<span class="source-line-no">348</span><span id="line-348"> this.mask = mask;</span>
-<span class="source-line-no">349</span><span id="line-349"> }</span>
-<span class="source-line-no">350</span><span id="line-350"></span>
-<span class="source-line-no">351</span><span id="line-351"> @Override</span>
-<span class="source-line-no">352</span><span id="line-352"> public int hashCode() {</span>
-<span class="source-line-no">353</span><span id="line-353"> final int prime = 31;</span>
-<span class="source-line-no">354</span><span id="line-354"> int result = 1;</span>
-<span class="source-line-no">355</span><span id="line-355"> result = prime * result + Arrays.hashCode(key);</span>
-<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(mask);</span>
-<span class="source-line-no">357</span><span id="line-357"> return result;</span>
-<span class="source-line-no">358</span><span id="line-358"> }</span>
-<span class="source-line-no">359</span><span id="line-359"></span>
-<span class="source-line-no">360</span><span id="line-360"> @Override</span>
-<span class="source-line-no">361</span><span id="line-361"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">362</span><span id="line-362"> if (this == obj) {</span>
-<span class="source-line-no">363</span><span id="line-363"> return true;</span>
-<span class="source-line-no">364</span><span id="line-364"> }</span>
-<span class="source-line-no">365</span><span id="line-365"> if (!(obj instanceof FuzzyKeyModel)) {</span>
-<span class="source-line-no">366</span><span id="line-366"> return false;</span>
-<span class="source-line-no">367</span><span id="line-367"> }</span>
-<span class="source-line-no">368</span><span id="line-368"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
-<span class="source-line-no">369</span><span id="line-369"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
-<span class="source-line-no">370</span><span id="line-370"> }</span>
-<span class="source-line-no">371</span><span id="line-371"></span>
-<span class="source-line-no">372</span><span id="line-372"> }</span>
-<span class="source-line-no">373</span><span id="line-373"></span>
-<span class="source-line-no">374</span><span id="line-374"> // A grab bag of fields, would have been a union if this were C.</span>
-<span class="source-line-no">375</span><span id="line-375"> // These are null by default and will only be serialized if set (non null).</span>
-<span class="source-line-no">376</span><span id="line-376"> @XmlAttribute</span>
-<span class="source-line-no">377</span><span id="line-377"> public String type;</span>
-<span class="source-line-no">378</span><span id="line-378"> @XmlAttribute</span>
-<span class="source-line-no">379</span><span id="line-379"> public String op;</span>
-<span class="source-line-no">380</span><span id="line-380"> @XmlElement</span>
-<span class="source-line-no">381</span><span id="line-381"> ByteArrayComparableModel comparator;</span>
-<span class="source-line-no">382</span><span id="line-382"> @XmlAttribute</span>
-<span class="source-line-no">383</span><span id="line-383"> public String value;</span>
-<span class="source-line-no">384</span><span id="line-384"> @XmlElement</span>
-<span class="source-line-no">385</span><span id="line-385"> public List<FilterModel> filters;</span>
-<span class="source-line-no">386</span><span id="line-386"> @XmlAttribute</span>
-<span class="source-line-no">387</span><span id="line-387"> public Integer limit;</span>
-<span class="source-line-no">388</span><span id="line-388"> @XmlAttribute</span>
-<span class="source-line-no">389</span><span id="line-389"> public Integer offset;</span>
-<span class="source-line-no">390</span><span id="line-390"> @XmlAttribute</span>
-<span class="source-line-no">391</span><span id="line-391"> public String family;</span>
-<span class="source-line-no">392</span><span id="line-392"> @XmlAttribute</span>
-<span class="source-line-no">393</span><span id="line-393"> public String qualifier;</span>
-<span class="source-line-no">394</span><span id="line-394"> @XmlAttribute</span>
-<span class="source-line-no">395</span><span id="line-395"> public Boolean ifMissing;</span>
-<span class="source-line-no">396</span><span id="line-396"> @XmlAttribute</span>
-<span class="source-line-no">397</span><span id="line-397"> public Boolean latestVersion;</span>
-<span class="source-line-no">398</span><span id="line-398"> @XmlAttribute</span>
-<span class="source-line-no">399</span><span id="line-399"> public String minColumn;</span>
-<span class="source-line-no">400</span><span id="line-400"> @XmlAttribute</span>
-<span class="source-line-no">401</span><span id="line-401"> public Boolean minColumnInclusive;</span>
-<span class="source-line-no">402</span><span id="line-402"> @XmlAttribute</span>
-<span class="source-line-no">403</span><span id="line-403"> public String maxColumn;</span>
-<span class="source-line-no">404</span><span id="line-404"> @XmlAttribute</span>
-<span class="source-line-no">405</span><span id="line-405"> public Boolean maxColumnInclusive;</span>
-<span class="source-line-no">406</span><span id="line-406"> @XmlAttribute</span>
-<span class="source-line-no">407</span><span id="line-407"> public Boolean dropDependentColumn;</span>
-<span class="source-line-no">408</span><span id="line-408"> @XmlAttribute</span>
-<span class="source-line-no">409</span><span id="line-409"> public Float chance;</span>
-<span class="source-line-no">410</span><span id="line-410"> @XmlElement</span>
-<span class="source-line-no">411</span><span id="line-411"> public List<String> prefixes;</span>
-<span class="source-line-no">412</span><span id="line-412"> @XmlElement</span>
-<span class="source-line-no">413</span><span id="line-413"> private List<RowRangeModel> ranges;</span>
-<span class="source-line-no">414</span><span id="line-414"> @XmlElement</span>
-<span class="source-line-no">415</span><span id="line-415"> public List<Long> timestamps;</span>
-<span class="source-line-no">416</span><span id="line-416"> @XmlElement</span>
-<span class="source-line-no">417</span><span id="line-417"> private List<FuzzyKeyModel> fuzzyKeys;</span>
-<span class="source-line-no">418</span><span id="line-418"></span>
-<span class="source-line-no">419</span><span id="line-419"> static enum FilterType {</span>
-<span class="source-line-no">420</span><span id="line-420"> ColumnCountGetFilter,</span>
-<span class="source-line-no">421</span><span id="line-421"> ColumnPaginationFilter,</span>
-<span class="source-line-no">422</span><span id="line-422"> ColumnPrefixFilter,</span>
-<span class="source-line-no">423</span><span id="line-423"> ColumnRangeFilter,</span>
-<span class="source-line-no">424</span><span id="line-424"> DependentColumnFilter,</span>
-<span class="source-line-no">425</span><span id="line-425"> FamilyFilter,</span>
-<span class="source-line-no">426</span><span id="line-426"> FilterList,</span>
-<span class="source-line-no">427</span><span id="line-427"> FirstKeyOnlyFilter,</span>
-<span class="source-line-no">428</span><span id="line-428"> InclusiveStopFilter,</span>
-<span class="source-line-no">429</span><span id="line-429"> KeyOnlyFilter,</span>
-<span class="source-line-no">430</span><span id="line-430"> MultipleColumnPrefixFilter,</span>
-<span class="source-line-no">431</span><span id="line-431"> MultiRowRangeFilter,</span>
-<span class="source-line-no">432</span><span id="line-432"> PageFilter,</span>
-<span class="source-line-no">433</span><span id="line-433"> PrefixFilter,</span>
-<span class="source-line-no">434</span><span id="line-434"> QualifierFilter,</span>
-<span class="source-line-no">435</span><span id="line-435"> RandomRowFilter,</span>
-<span class="source-line-no">436</span><span id="line-436"> RowFilter,</span>
-<span class="source-line-no">437</span><span id="line-437"> SingleColumnValueExcludeFilter,</span>
-<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueFilter,</span>
-<span class="source-line-no">439</span><span id="line-439"> SkipFilter,</span>
-<span class="source-line-no">440</span><span id="line-440"> TimestampsFilter,</span>
-<span class="source-line-no">441</span><span id="line-441"> ValueFilter,</span>
-<span class="source-line-no">442</span><span id="line-442"> WhileMatchFilter,</span>
-<span class="source-line-no">443</span><span id="line-443"> FuzzyRowFilter</span>
-<span class="source-line-no">444</span><span id="line-444"> }</span>
-<span class="source-line-no">445</span><span id="line-445"></span>
-<span class="source-line-no">446</span><span id="line-446"> public FilterModel() {</span>
-<span class="source-line-no">447</span><span id="line-447"> }</span>
-<span class="source-line-no">448</span><span id="line-448"></span>
-<span class="source-line-no">449</span><span id="line-449"> public FilterModel(Filter filter) {</span>
-<span class="source-line-no">450</span><span id="line-450"> String typeName = filter.getClass().getSimpleName();</span>
-<span class="source-line-no">451</span><span id="line-451"> FilterType type = FilterType.valueOf(typeName);</span>
-<span class="source-line-no">452</span><span id="line-452"> this.type = typeName;</span>
-<span class="source-line-no">453</span><span id="line-453"> switch (type) {</span>
-<span class="source-line-no">454</span><span id="line-454"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">455</span><span id="line-455"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
-<span class="source-line-no">456</span><span id="line-456"> break;</span>
-<span class="source-line-no">457</span><span id="line-457"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">458</span><span id="line-458"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
-<span class="source-line-no">459</span><span id="line-459"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
-<span class="source-line-no">460</span><span id="line-460"> break;</span>
-<span class="source-line-no">461</span><span id="line-461"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">462</span><span id="line-462"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
-<span class="source-line-no">463</span><span id="line-463"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
-<span class="source-line-no">464</span><span id="line-464"> break;</span>
-<span class="source-line-no">465</span><span id="line-465"> case ColumnRangeFilter:</span>
-<span class="source-line-no">466</span><span id="line-466"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
-<span class="source-line-no">467</span><span id="line-467"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
-<span class="source-line-no">468</span><span id="line-468"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
-<span class="source-line-no">469</span><span id="line-469"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
-<span class="source-line-no">470</span><span id="line-470"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
-<span class="source-line-no">471</span><span id="line-471"> break;</span>
-<span class="source-line-no">472</span><span id="line-472"> case DependentColumnFilter: {</span>
-<span class="source-line-no">473</span><span id="line-473"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
-<span class="source-line-no">474</span><span id="line-474"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
-<span class="source-line-no">475</span><span id="line-475"> byte[] qualifier = dcf.getQualifier();</span>
-<span class="source-line-no">476</span><span id="line-476"> if (qualifier != null) {</span>
-<span class="source-line-no">477</span><span id="line-477"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">478</span><span id="line-478"> }</span>
-<span class="source-line-no">479</span><span id="line-479"> this.op = dcf.getCompareOperator().toString();</span>
-<span class="source-line-no">480</span><span id="line-480"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
-<span class="source-line-no">481</span><span id="line-481"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
-<span class="source-line-no">482</span><span id="line-482"> }</span>
-<span class="source-line-no">483</span><span id="line-483"> break;</span>
-<span class="source-line-no">484</span><span id="line-484"> case FilterList:</span>
-<span class="source-line-no">485</span><span id="line-485"> this.op = ((FilterList) filter).getOperator().toString();</span>
-<span class="source-line-no">486</span><span id="line-486"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">487</span><span id="line-487"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
-<span class="source-line-no">488</span><span id="line-488"> this.filters.add(new FilterModel(child));</span>
-<span class="source-line-no">489</span><span id="line-489"> }</span>
-<span class="source-line-no">490</span><span id="line-490"> break;</span>
-<span class="source-line-no">491</span><span id="line-491"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">492</span><span id="line-492"> case KeyOnlyFilter:</span>
-<span class="source-line-no">493</span><span id="line-493"> break;</span>
-<span class="source-line-no">494</span><span id="line-494"> case InclusiveStopFilter:</span>
-<span class="source-line-no">495</span><span id="line-495"> this.value = Bytes</span>
-<span class="source-line-no">496</span><span id="line-496"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
-<span class="source-line-no">497</span><span id="line-497"> break;</span>
-<span class="source-line-no">498</span><span id="line-498"> case MultipleColumnPrefixFilter:</span>
-<span class="source-line-no">499</span><span id="line-499"> this.prefixes = new ArrayList<>();</span>
-<span class="source-line-no">500</span><span id="line-500"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
-<span class="source-line-no">501</span><span id="line-501"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
-<span class="source-line-no">502</span><span id="line-502"> }</span>
-<span class="source-line-no">503</span><span id="line-503"> break;</span>
-<span class="source-line-no">504</span><span id="line-504"> case MultiRowRangeFilter:</span>
-<span class="source-line-no">505</span><span id="line-505"> this.ranges = new ArrayList<>();</span>
-<span class="source-line-no">506</span><span id="line-506"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
-<span class="source-line-no">507</span><span id="line-507"> this.ranges.add(new RowRangeModel(range));</span>
-<span class="source-line-no">508</span><span id="line-508"> }</span>
-<span class="source-line-no">509</span><span id="line-509"> break;</span>
-<span class="source-line-no">510</span><span id="line-510"> case PageFilter:</span>
-<span class="source-line-no">511</span><span id="line-511"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
-<span class="source-line-no">512</span><span id="line-512"> break;</span>
-<span class="source-line-no">513</span><span id="line-513"> case PrefixFilter:</span>
-<span class="source-line-no">514</span><span id="line-514"> this.value =</span>
-<span class="source-line-no">515</span><span id="line-515"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
-<span class="source-line-no">516</span><span id="line-516"> break;</span>
-<span class="source-line-no">517</span><span id="line-517"> case FamilyFilter:</span>
-<span class="source-line-no">518</span><span id="line-518"> case QualifierFilter:</span>
-<span class="source-line-no">519</span><span id="line-519"> case RowFilter:</span>
-<span class="source-line-no">520</span><span id="line-520"> case ValueFilter:</span>
-<span class="source-line-no">521</span><span id="line-521"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
-<span class="source-line-no">522</span><span id="line-522"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
-<span class="source-line-no">523</span><span id="line-523"> break;</span>
-<span class="source-line-no">524</span><span id="line-524"> case RandomRowFilter:</span>
-<span class="source-line-no">525</span><span id="line-525"> this.chance = ((RandomRowFilter) filter).getChance();</span>
-<span class="source-line-no">526</span><span id="line-526"> break;</span>
-<span class="source-line-no">527</span><span id="line-527"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueFilter: {</span>
-<span class="source-line-no">529</span><span id="line-529"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
-<span class="source-line-no">530</span><span id="line-530"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
-<span class="source-line-no">531</span><span id="line-531"> byte[] qualifier = scvf.getQualifier();</span>
-<span class="source-line-no">532</span><span id="line-532"> if (qualifier != null) {</span>
-<span class="source-line-no">533</span><span id="line-533"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">534</span><span id="line-534"> }</span>
-<span class="source-line-no">535</span><span id="line-535"> this.op = scvf.getCompareOperator().toString();</span>
-<span class="source-line-no">536</span><span id="line-536"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
-<span class="source-line-no">537</span><span id="line-537"> if (scvf.getFilterIfMissing()) {</span>
-<span class="source-line-no">538</span><span id="line-538"> this.ifMissing = true;</span>
-<span class="source-line-no">539</span><span id="line-539"> }</span>
-<span class="source-line-no">540</span><span id="line-540"> if (scvf.getLatestVersionOnly()) {</span>
-<span class="source-line-no">541</span><span id="line-541"> this.latestVersion = true;</span>
-<span class="source-line-no">542</span><span id="line-542"> }</span>
-<span class="source-line-no">543</span><span id="line-543"> }</span>
-<span class="source-line-no">544</span><span id="line-544"> break;</span>
-<span class="source-line-no">545</span><span id="line-545"> case SkipFilter:</span>
-<span class="source-line-no">546</span><span id="line-546"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">547</span><span id="line-547"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
-<span class="source-line-no">548</span><span id="line-548"> break;</span>
-<span class="source-line-no">549</span><span id="line-549"> case TimestampsFilter:</span>
-<span class="source-line-no">550</span><span id="line-550"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
-<span class="source-line-no">551</span><span id="line-551"> break;</span>
-<span class="source-line-no">552</span><span id="line-552"> case WhileMatchFilter:</span>
-<span class="source-line-no">553</span><span id="line-553"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">554</span><span id="line-554"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
-<span class="source-line-no">555</span><span id="line-555"> break;</span>
-<span class="source-line-no">556</span><span id="line-556"> case FuzzyRowFilter:</span>
-<span class="source-line-no">557</span><span id="line-557"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
-<span class="source-line-no">559</span><span id="line-559"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
-<span class="source-line-no">560</span><span id="line-560"> }</span>
-<span class="source-line-no">561</span><span id="line-561"> break;</span>
-<span class="source-line-no">562</span><span id="line-562"> default:</span>
-<span class="source-line-no">563</span><span id="line-563"> throw new RuntimeException("unhandled filter type " + type);</span>
-<span class="source-line-no">564</span><span id="line-564"> }</span>
-<span class="source-line-no">565</span><span id="line-565"> }</span>
-<span class="source-line-no">566</span><span id="line-566"></span>
-<span class="source-line-no">567</span><span id="line-567"> public Filter build() {</span>
-<span class="source-line-no">568</span><span id="line-568"> Filter filter;</span>
-<span class="source-line-no">569</span><span id="line-569"> switch (FilterType.valueOf(type)) {</span>
-<span class="source-line-no">570</span><span id="line-570"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">571</span><span id="line-571"> filter = new ColumnCountGetFilter(limit);</span>
-<span class="source-line-no">572</span><span id="line-572"> break;</span>
-<span class="source-line-no">573</span><span id="line-573"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">574</span><span id="line-574"> filter = new ColumnPaginationFilter(limit, offset);</span>
-<span class="source-line-no">575</span><span id="line-575"> break;</span>
-<span class="source-line-no">576</span><span id="line-576"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">577</span><span id="line-577"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">578</span><span id="line-578"> break;</span>
-<span class="source-line-no">579</span><span id="line-579"> case ColumnRangeFilter:</span>
-<span class="source-line-no">580</span><span id="line-580"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
-<span class="source-line-no">581</span><span id="line-581"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
-<span class="source-line-no">582</span><span id="line-582"> break;</span>
-<span class="source-line-no">583</span><span id="line-583"> case DependentColumnFilter:</span>
-<span class="source-line-no">584</span><span id="line-584"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">585</span><span id="line-585"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
-<span class="source-line-no">586</span><span id="line-586"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">587</span><span id="line-587"> break;</span>
-<span class="source-line-no">588</span><span id="line-588"> case FamilyFilter:</span>
-<span class="source-line-no">589</span><span id="line-589"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">590</span><span id="line-590"> break;</span>
-<span class="source-line-no">591</span><span id="line-591"> case FilterList: {</span>
-<span class="source-line-no">592</span><span id="line-592"> List<Filter> list = new ArrayList<>(filters.size());</span>
-<span class="source-line-no">593</span><span id="line-593"> for (FilterModel model : filters) {</span>
-<span class="source-line-no">594</span><span id="line-594"> list.add(model.build());</span>
-<span class="source-line-no">595</span><span id="line-595"> }</span>
-<span class="source-line-no">596</span><span id="line-596"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
-<span class="source-line-no">597</span><span id="line-597"> }</span>
-<span class="source-line-no">598</span><span id="line-598"> break;</span>
-<span class="source-line-no">599</span><span id="line-599"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">600</span><span id="line-600"> filter = new FirstKeyOnlyFilter();</span>
-<span class="source-line-no">601</span><span id="line-601"> break;</span>
-<span class="source-line-no">602</span><span id="line-602"> case InclusiveStopFilter:</span>
-<span class="source-line-no">603</span><span id="line-603"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">604</span><span id="line-604"> break;</span>
-<span class="source-line-no">605</span><span id="line-605"> case KeyOnlyFilter:</span>
-<span class="source-line-no">606</span><span id="line-606"> filter = new KeyOnlyFilter();</span>
-<span class="source-line-no">607</span><span id="line-607"> break;</span>
-<span class="source-line-no">608</span><span id="line-608"> case MultipleColumnPrefixFilter: {</span>
-<span class="source-line-no">609</span><span id="line-609"> byte[][] values = new byte[prefixes.size()][];</span>
-<span class="source-line-no">610</span><span id="line-610"> for (int i = 0; i < prefixes.size(); i++) {</span>
-<span class="source-line-no">611</span><span id="line-611"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
-<span class="source-line-no">612</span><span id="line-612"> }</span>
-<span class="source-line-no">613</span><span id="line-613"> filter = new MultipleColumnPrefixFilter(values);</span>
-<span class="source-line-no">614</span><span id="line-614"> }</span>
-<span class="source-line-no">615</span><span id="line-615"> break;</span>
-<span class="source-line-no">616</span><span id="line-616"> case MultiRowRangeFilter: {</span>
-<span class="source-line-no">617</span><span id="line-617"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
-<span class="source-line-no">618</span><span id="line-618"> for (RowRangeModel rangeModel : ranges) {</span>
-<span class="source-line-no">619</span><span id="line-619"> rowRanges.add(rangeModel.build());</span>
-<span class="source-line-no">620</span><span id="line-620"> }</span>
-<span class="source-line-no">621</span><span id="line-621"> filter = new MultiRowRangeFilter(rowRanges);</span>
-<span class="source-line-no">622</span><span id="line-622"> }</span>
-<span class="source-line-no">623</span><span id="line-623"> break;</span>
-<span class="source-line-no">624</span><span id="line-624"> case PageFilter:</span>
-<span class="source-line-no">625</span><span id="line-625"> filter = new PageFilter(Long.parseLong(value));</span>
-<span class="source-line-no">626</span><span id="line-626"> break;</span>
-<span class="source-line-no">627</span><span id="line-627"> case PrefixFilter:</span>
-<span class="source-line-no">628</span><span id="line-628"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">629</span><span id="line-629"> break;</span>
-<span class="source-line-no">630</span><span id="line-630"> case QualifierFilter:</span>
-<span class="source-line-no">631</span><span id="line-631"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">632</span><span id="line-632"> break;</span>
-<span class="source-line-no">633</span><span id="line-633"> case RandomRowFilter:</span>
-<span class="source-line-no">634</span><span id="line-634"> filter = new RandomRowFilter(chance);</span>
-<span class="source-line-no">635</span><span id="line-635"> break;</span>
-<span class="source-line-no">636</span><span id="line-636"> case RowFilter:</span>
-<span class="source-line-no">637</span><span id="line-637"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">638</span><span id="line-638"> break;</span>
-<span class="source-line-no">639</span><span id="line-639"> case SingleColumnValueFilter:</span>
-<span class="source-line-no">640</span><span id="line-640"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">641</span><span id="line-641"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">642</span><span id="line-642"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">643</span><span id="line-643"> if (ifMissing != null) {</span>
-<span class="source-line-no">644</span><span id="line-644"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">645</span><span id="line-645"> }</span>
-<span class="source-line-no">646</span><span id="line-646"> if (latestVersion != null) {</span>
-<span class="source-line-no">647</span><span id="line-647"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">648</span><span id="line-648"> }</span>
-<span class="source-line-no">649</span><span id="line-649"> break;</span>
-<span class="source-line-no">650</span><span id="line-650"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">651</span><span id="line-651"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">652</span><span id="line-652"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">653</span><span id="line-653"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">654</span><span id="line-654"> if (ifMissing != null) {</span>
-<span class="source-line-no">655</span><span id="line-655"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">656</span><span id="line-656"> }</span>
-<span class="source-line-no">657</span><span id="line-657"> if (latestVersion != null) {</span>
-<span class="source-line-no">658</span><span id="line-658"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">659</span><span id="line-659"> }</span>
-<span class="source-line-no">660</span><span id="line-660"> break;</span>
-<span class="source-line-no">661</span><span id="line-661"> case SkipFilter:</span>
-<span class="source-line-no">662</span><span id="line-662"> filter = new SkipFilter(filters.get(0).build());</span>
-<span class="source-line-no">663</span><span id="line-663"> break;</span>
-<span class="source-line-no">664</span><span id="line-664"> case TimestampsFilter:</span>
-<span class="source-line-no">665</span><span id="line-665"> filter = new TimestampsFilter(timestamps);</span>
-<span class="source-line-no">666</span><span id="line-666"> break;</span>
-<span class="source-line-no">667</span><span id="line-667"> case ValueFilter:</span>
-<span class="source-line-no">668</span><span id="line-668"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">669</span><span id="line-669"> break;</span>
-<span class="source-line-no">670</span><span id="line-670"> case WhileMatchFilter:</span>
-<span class="source-line-no">671</span><span id="line-671"> filter = new WhileMatchFilter(filters.get(0).build());</span>
-<span class="source-line-no">672</span><span id="line-672"> break;</span>
-<span class="source-line-no">673</span><span id="line-673"> case FuzzyRowFilter: {</span>
-<span class="source-line-no">674</span><span id="line-674"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
-<span class="source-line-no">675</span><span id="line-675"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
-<span class="source-line-no">676</span><span id="line-676"> fuzzyKeyArgs.add(keyModel.build());</span>
-<span class="source-line-no">677</span><span id="line-677"> }</span>
-<span class="source-line-no">678</span><span id="line-678"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
-<span class="source-line-no">679</span><span id="line-679"> }</span>
-<span class="source-line-no">680</span><span id="line-680"> break;</span>
-<span class="source-line-no">681</span><span id="line-681"> default:</span>
-<span class="source-line-no">682</span><span id="line-682"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">683</span><span id="line-683"> }</span>
-<span class="source-line-no">684</span><span id="line-684"> return filter;</span>
-<span class="source-line-no">685</span><span id="line-685"> }</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687"> }</span>
-<span class="source-line-no">688</span><span id="line-688"></span>
-<span class="source-line-no">689</span><span id="line-689"> /**</span>
-<span class="source-line-no">690</span><span id="line-690"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
-<span class="source-line-no">691</span><span id="line-691"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
-<span class="source-line-no">692</span><span id="line-692"> */</span>
-<span class="source-line-no">693</span><span id="line-693"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
-<span class="source-line-no">694</span><span id="line-694"> return JaxbJsonProviderHolder.INSTANCE;</span>
-<span class="source-line-no">695</span><span id="line-695"> }</span>
-<span class="source-line-no">696</span><span id="line-696"></span>
-<span class="source-line-no">697</span><span id="line-697"> /**</span>
-<span class="source-line-no">698</span><span id="line-698"> * @param s the JSON representation of the filter</span>
-<span class="source-line-no">699</span><span id="line-699"> * @return the filter</span>
-<span class="source-line-no">700</span><span id="line-700"> */</span>
-<span class="source-line-no">701</span><span id="line-701"> public static Filter buildFilter(String s) throws Exception {</span>
-<span class="source-line-no">702</span><span id="line-702"> FilterModel model =</span>
-<span class="source-line-no">703</span><span id="line-703"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">704</span><span id="line-704"> .readValue(s, FilterModel.class);</span>
-<span class="source-line-no">705</span><span id="line-705"> return model.build();</span>
-<span class="source-line-no">706</span><span id="line-706"> }</span>
-<span class="source-line-no">707</span><span id="line-707"></span>
-<span class="source-line-no">708</span><span id="line-708"> /**</span>
-<span class="source-line-no">709</span><span id="line-709"> * @param filter the filter</span>
-<span class="source-line-no">710</span><span id="line-710"> * @return the JSON representation of the filter</span>
-<span class="source-line-no">711</span><span id="line-711"> */</span>
-<span class="source-line-no">712</span><span id="line-712"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
-<span class="source-line-no">713</span><span id="line-713"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">714</span><span id="line-714"> .writeValueAsString(new FilterModel(filter));</span>
-<span class="source-line-no">715</span><span id="line-715"> }</span>
-<span class="source-line-no">716</span><span id="line-716"></span>
-<span class="source-line-no">717</span><span id="line-717"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
-<span class="source-line-no">718</span><span id="line-718"></span>
-<span class="source-line-no">719</span><span id="line-719"> /**</span>
-<span class="source-line-no">720</span><span id="line-720"> * @param scan the scan specification</span>
-<span class="source-line-no">721</span><span id="line-721"> */</span>
-<span class="source-line-no">722</span><span id="line-722"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
-<span class="source-line-no">723</span><span id="line-723"> ScannerModel model = new ScannerModel();</span>
-<span class="source-line-no">724</span><span id="line-724"> model.setStartRow(scan.getStartRow());</span>
-<span class="source-line-no">725</span><span id="line-725"> model.setEndRow(scan.getStopRow());</span>
-<span class="source-line-no">726</span><span id="line-726"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
-<span class="source-line-no">727</span><span id="line-727"> if (families != null) {</span>
-<span class="source-line-no">728</span><span id="line-728"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
-<span class="source-line-no">729</span><span id="line-729"> if (entry.getValue() != null) {</span>
-<span class="source-line-no">730</span><span id="line-730"> for (byte[] qualifier : entry.getValue()) {</span>
-<span class="source-line-no">731</span><span id="line-731"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
-<span class="source-line-no">732</span><span id="line-732"> }</span>
-<span class="source-line-no">733</span><span id="line-733"> } else {</span>
-<span class="source-line-no">734</span><span id="line-734"> model.addColumn(entry.getKey());</span>
-<span class="source-line-no">735</span><span id="line-735"> }</span>
-<span class="source-line-no">736</span><span id="line-736"> }</span>
-<span class="source-line-no">737</span><span id="line-737"> }</span>
-<span class="source-line-no">738</span><span id="line-738"> model.setStartTime(scan.getTimeRange().getMin());</span>
-<span class="source-line-no">739</span><span id="line-739"> model.setEndTime(scan.getTimeRange().getMax());</span>
-<span class="source-line-no">740</span><span id="line-740"> int caching = scan.getCaching();</span>
-<span class="source-line-no">741</span><span id="line-741"> if (caching > 0) {</span>
-<span class="source-line-no">742</span><span id="line-742"> model.setCaching(caching);</span>
-<span class="source-line-no">743</span><span id="line-743"> }</span>
-<span class="source-line-no">744</span><span id="line-744"> int batch = scan.getBatch();</span>
-<span class="source-line-no">745</span><span id="line-745"> if (batch > 0) {</span>
-<span class="source-line-no">746</span><span id="line-746"> model.setBatch(batch);</span>
-<span class="source-line-no">747</span><span id="line-747"> }</span>
-<span class="source-line-no">748</span><span id="line-748"> int maxVersions = scan.getMaxVersions();</span>
-<span class="source-line-no">749</span><span id="line-749"> if (maxVersions > 0) {</span>
-<span class="source-line-no">750</span><span id="line-750"> model.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">751</span><span id="line-751"> }</span>
-<span class="source-line-no">752</span><span id="line-752"> if (scan.getLimit() > 0) {</span>
-<span class="source-line-no">753</span><span id="line-753"> model.setLimit(scan.getLimit());</span>
-<span class="source-line-no">754</span><span id="line-754"> }</span>
-<span class="source-line-no">755</span><span id="line-755"> Filter filter = scan.getFilter();</span>
-<span class="source-line-no">756</span><span id="line-756"> if (filter != null) {</span>
-<span class="source-line-no">757</span><span id="line-757"> model.setFilter(stringifyFilter(filter));</span>
-<span class="source-line-no">758</span><span id="line-758"> }</span>
-<span class="source-line-no">759</span><span id="line-759"> // Add the visbility labels if found in the attributes</span>
-<span class="source-line-no">760</span><span id="line-760"> Authorizations authorizations = scan.getAuthorizations();</span>
-<span class="source-line-no">761</span><span id="line-761"> if (authorizations != null) {</span>
-<span class="source-line-no">762</span><span id="line-762"> List<String> labels = authorizations.getLabels();</span>
-<span class="source-line-no">763</span><span id="line-763"> for (String label : labels) {</span>
-<span class="source-line-no">764</span><span id="line-764"> model.addLabel(label);</span>
-<span class="source-line-no">765</span><span id="line-765"> }</span>
-<span class="source-line-no">766</span><span id="line-766"> }</span>
-<span class="source-line-no">767</span><span id="line-767"> model.setIncludeStartRow(scan.includeStartRow());</span>
-<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStopRow(scan.includeStopRow());</span>
-<span class="source-line-no">769</span><span id="line-769"> return model;</span>
-<span class="source-line-no">770</span><span id="line-770"> }</span>
-<span class="source-line-no">771</span><span id="line-771"></span>
-<span class="source-line-no">772</span><span id="line-772"> /**</span>
-<span class="source-line-no">773</span><span id="line-773"> * Default constructor</span>
-<span class="source-line-no">774</span><span id="line-774"> */</span>
-<span class="source-line-no">775</span><span id="line-775"> public ScannerModel() {</span>
-<span class="source-line-no">776</span><span id="line-776"> }</span>
-<span class="source-line-no">777</span><span id="line-777"></span>
-<span class="source-line-no">778</span><span id="line-778"> /**</span>
-<span class="source-line-no">779</span><span id="line-779"> * Constructor</span>
-<span class="source-line-no">780</span><span id="line-780"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">781</span><span id="line-781"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">782</span><span id="line-782"> * @param columns the columns to scan</span>
-<span class="source-line-no">783</span><span id="line-783"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">784</span><span id="line-784"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">785</span><span id="line-785"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">786</span><span id="line-786"> * @param maxVersions the maximum number of versions to return</span>
-<span class="source-line-no">787</span><span id="line-787"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
-<span class="source-line-no">788</span><span id="line-788"> */</span>
-<span class="source-line-no">789</span><span id="line-789"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">790</span><span id="line-790"> long endTime, int maxVersions, String filter) {</span>
-<span class="source-line-no">791</span><span id="line-791"> super();</span>
-<span class="source-line-no">792</span><span id="line-792"> this.startRow = startRow;</span>
-<span class="source-line-no">793</span><span id="line-793"> this.endRow = endRow;</span>
-<span class="source-line-no">794</span><span id="line-794"> this.columns = columns;</span>
-<span class="source-line-no">795</span><span id="line-795"> this.batch = batch;</span>
-<span class="source-line-no">796</span><span id="line-796"> this.caching = caching;</span>
-<span class="source-line-no">797</span><span id="line-797"> this.endTime = endTime;</span>
-<span class="source-line-no">798</span><span id="line-798"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">799</span><span id="line-799"> this.filter = filter;</span>
-<span class="source-line-no">800</span><span id="line-800"> }</span>
-<span class="source-line-no">801</span><span id="line-801"></span>
-<span class="source-line-no">802</span><span id="line-802"> /**</span>
-<span class="source-line-no">803</span><span id="line-803"> * Constructor</span>
-<span class="source-line-no">804</span><span id="line-804"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">805</span><span id="line-805"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">806</span><span id="line-806"> * @param columns the columns to scan</span>
-<span class="source-line-no">807</span><span id="line-807"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">808</span><span id="line-808"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">809</span><span id="line-809"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">810</span><span id="line-810"> * earlier than this are excluded)</span>
-<span class="source-line-no">811</span><span id="line-811"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">812</span><span id="line-812"> * later than this are excluded)</span>
-<span class="source-line-no">813</span><span id="line-813"> * @param filter a filter specification</span>
-<span class="source-line-no">814</span><span id="line-814"> */</span>
-<span class="source-line-no">815</span><span id="line-815"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">816</span><span id="line-816"> long startTime, long endTime, String filter) {</span>
-<span class="source-line-no">817</span><span id="line-817"> super();</span>
-<span class="source-line-no">818</span><span id="line-818"> this.startRow = startRow;</span>
-<span class="source-line-no">819</span><span id="line-819"> this.endRow = endRow;</span>
-<span class="source-line-no">820</span><span id="line-820"> this.columns = columns;</span>
-<span class="source-line-no">821</span><span id="line-821"> this.batch = batch;</span>
-<span class="source-line-no">822</span><span id="line-822"> this.caching = caching;</span>
-<span class="source-line-no">823</span><span id="line-823"> this.startTime = startTime;</span>
-<span class="source-line-no">824</span><span id="line-824"> this.endTime = endTime;</span>
-<span class="source-line-no">825</span><span id="line-825"> this.filter = filter;</span>
-<span class="source-line-no">826</span><span id="line-826"> }</span>
-<span class="source-line-no">827</span><span id="line-827"></span>
-<span class="source-line-no">828</span><span id="line-828"> /**</span>
-<span class="source-line-no">829</span><span id="line-829"> * Add a column to the column set</span>
-<span class="source-line-no">830</span><span id="line-830"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
-<span class="source-line-no">831</span><span id="line-831"> */</span>
-<span class="source-line-no">832</span><span id="line-832"> public void addColumn(byte[] column) {</span>
-<span class="source-line-no">833</span><span id="line-833"> columns.add(column);</span>
-<span class="source-line-no">834</span><span id="line-834"> }</span>
-<span class="source-line-no">835</span><span id="line-835"></span>
-<span class="source-line-no">836</span><span id="line-836"> /**</span>
-<span class="source-line-no">837</span><span id="line-837"> * Add a visibility label to the scan</span>
-<span class="source-line-no">838</span><span id="line-838"> */</span>
-<span class="source-line-no">839</span><span id="line-839"> public void addLabel(String label) {</span>
-<span class="source-line-no">840</span><span id="line-840"> labels.add(label);</span>
-<span class="source-line-no">841</span><span id="line-841"> }</span>
-<span class="source-line-no">842</span><span id="line-842"></span>
-<span class="source-line-no">843</span><span id="line-843"> /** Returns true if a start row was specified */</span>
-<span class="source-line-no">844</span><span id="line-844"> public boolean hasStartRow() {</span>
-<span class="source-line-no">845</span><span id="line-845"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
-<span class="source-line-no">846</span><span id="line-846"> }</span>
-<span class="source-line-no">847</span><span id="line-847"></span>
-<span class="source-line-no">848</span><span id="line-848"> /** Returns start row */</span>
-<span class="source-line-no">849</span><span id="line-849"> @XmlAttribute</span>
-<span class="source-line-no">850</span><span id="line-850"> public byte[] getStartRow() {</span>
-<span class="source-line-no">851</span><span id="line-851"> return startRow;</span>
-<span class="source-line-no">852</span><span id="line-852"> }</span>
-<span class="source-line-no">853</span><span id="line-853"></span>
-<span class="source-line-no">854</span><span id="line-854"> /** Returns true if an end row was specified */</span>
-<span class="source-line-no">855</span><span id="line-855"> public boolean hasEndRow() {</span>
-<span class="source-line-no">856</span><span id="line-856"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
-<span class="source-line-no">857</span><span id="line-857"> }</span>
-<span class="source-line-no">858</span><span id="line-858"></span>
-<span class="source-line-no">859</span><span id="line-859"> /** Returns end row */</span>
-<span class="source-line-no">860</span><span id="line-860"> @XmlAttribute</span>
-<span class="source-line-no">861</span><span id="line-861"> public byte[] getEndRow() {</span>
-<span class="source-line-no">862</span><span id="line-862"> return endRow;</span>
-<span class="source-line-no">863</span><span id="line-863"> }</span>
-<span class="source-line-no">864</span><span id="line-864"></span>
-<span class="source-line-no">865</span><span id="line-865"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
-<span class="source-line-no">866</span><span id="line-866"> @XmlElement(name = "column")</span>
-<span class="source-line-no">867</span><span id="line-867"> public List<byte[]> getColumns() {</span>
-<span class="source-line-no">868</span><span id="line-868"> return columns;</span>
-<span class="source-line-no">869</span><span id="line-869"> }</span>
-<span class="source-line-no">870</span><span id="line-870"></span>
-<span class="source-line-no">871</span><span id="line-871"> @XmlElement(name = "labels")</span>
-<span class="source-line-no">872</span><span id="line-872"> public List<String> getLabels() {</span>
-<span class="source-line-no">873</span><span id="line-873"> return labels;</span>
-<span class="source-line-no">874</span><span id="line-874"> }</span>
-<span class="source-line-no">875</span><span id="line-875"></span>
-<span class="source-line-no">876</span><span id="line-876"> /** Returns the number of cells to return in batch */</span>
-<span class="source-line-no">877</span><span id="line-877"> @XmlAttribute</span>
-<span class="source-line-no">878</span><span id="line-878"> public int getBatch() {</span>
-<span class="source-line-no">879</span><span id="line-879"> return batch;</span>
-<span class="source-line-no">880</span><span id="line-880"> }</span>
-<span class="source-line-no">881</span><span id="line-881"></span>
-<span class="source-line-no">882</span><span id="line-882"> /** Returns the number of rows that the scanner to fetch at once */</span>
-<span class="source-line-no">883</span><span id="line-883"> @XmlAttribute</span>
-<span class="source-line-no">884</span><span id="line-884"> public int getCaching() {</span>
-<span class="source-line-no">885</span><span id="line-885"> return caching;</span>
-<span class="source-line-no">886</span><span id="line-886"> }</span>
-<span class="source-line-no">887</span><span id="line-887"></span>
-<span class="source-line-no">888</span><span id="line-888"> /** Returns the limit specification */</span>
-<span class="source-line-no">889</span><span id="line-889"> @XmlAttribute</span>
-<span class="source-line-no">890</span><span id="line-890"> public int getLimit() {</span>
-<span class="source-line-no">891</span><span id="line-891"> return limit;</span>
-<span class="source-line-no">892</span><span id="line-892"> }</span>
-<span class="source-line-no">893</span><span id="line-893"></span>
-<span class="source-line-no">894</span><span id="line-894"> /** Returns true if HFile blocks should be cached on the servers for this scan, false otherwise */</span>
-<span class="source-line-no">895</span><span id="line-895"> @XmlAttribute</span>
-<span class="source-line-no">896</span><span id="line-896"> public boolean getCacheBlocks() {</span>
-<span class="source-line-no">897</span><span id="line-897"> return cacheBlocks;</span>
-<span class="source-line-no">898</span><span id="line-898"> }</span>
-<span class="source-line-no">899</span><span id="line-899"></span>
-<span class="source-line-no">900</span><span id="line-900"> /** Returns the lower bound on timestamps of items of interest */</span>
-<span class="source-line-no">901</span><span id="line-901"> @XmlAttribute</span>
-<span class="source-line-no">902</span><span id="line-902"> public long getStartTime() {</span>
-<span class="source-line-no">903</span><span id="line-903"> return startTime;</span>
-<span class="source-line-no">904</span><span id="line-904"> }</span>
-<span class="source-line-no">905</span><span id="line-905"></span>
-<span class="source-line-no">906</span><span id="line-906"> /** Returns the upper bound on timestamps of items of interest */</span>
-<span class="source-line-no">907</span><span id="line-907"> @XmlAttribute</span>
-<span class="source-line-no">908</span><span id="line-908"> public long getEndTime() {</span>
-<span class="source-line-no">909</span><span id="line-909"> return endTime;</span>
-<span class="source-line-no">910</span><span id="line-910"> }</span>
-<span class="source-line-no">911</span><span id="line-911"></span>
-<span class="source-line-no">912</span><span id="line-912"> /** Returns maximum number of versions to return */</span>
-<span class="source-line-no">913</span><span id="line-913"> @XmlAttribute</span>
-<span class="source-line-no">914</span><span id="line-914"> public int getMaxVersions() {</span>
-<span class="source-line-no">915</span><span id="line-915"> return maxVersions;</span>
-<span class="source-line-no">916</span><span id="line-916"> }</span>
-<span class="source-line-no">917</span><span id="line-917"></span>
-<span class="source-line-no">918</span><span id="line-918"> /** Returns the filter specification */</span>
-<span class="source-line-no">919</span><span id="line-919"> @XmlElement</span>
-<span class="source-line-no">920</span><span id="line-920"> public String getFilter() {</span>
-<span class="source-line-no">921</span><span id="line-921"> return filter;</span>
-<span class="source-line-no">922</span><span id="line-922"> }</span>
-<span class="source-line-no">923</span><span id="line-923"></span>
-<span class="source-line-no">924</span><span id="line-924"> /**</span>
-<span class="source-line-no">925</span><span id="line-925"> * @param startRow start row</span>
-<span class="source-line-no">926</span><span id="line-926"> */</span>
-<span class="source-line-no">927</span><span id="line-927"> public void setStartRow(byte[] startRow) {</span>
-<span class="source-line-no">928</span><span id="line-928"> this.startRow = startRow;</span>
-<span class="source-line-no">929</span><span id="line-929"> }</span>
-<span class="source-line-no">930</span><span id="line-930"></span>
-<span class="source-line-no">931</span><span id="line-931"> /**</span>
-<span class="source-line-no">932</span><span id="line-932"> * @param endRow end row</span>
-<span class="source-line-no">933</span><span id="line-933"> */</span>
-<span class="source-line-no">934</span><span id="line-934"> public void setEndRow(byte[] endRow) {</span>
-<span class="source-line-no">935</span><span id="line-935"> this.endRow = endRow;</span>
-<span class="source-line-no">936</span><span id="line-936"> }</span>
-<span class="source-line-no">937</span><span id="line-937"></span>
-<span class="source-line-no">938</span><span id="line-938"> /**</span>
-<span class="source-line-no">939</span><span id="line-939"> * @param columns list of columns of interest in column:qualifier format, or empty for all</span>
-<span class="source-line-no">940</span><span id="line-940"> */</span>
-<span class="source-line-no">941</span><span id="line-941"> public void setColumns(List<byte[]> columns) {</span>
-<span class="source-line-no">942</span><span id="line-942"> this.columns = columns;</span>
-<span class="source-line-no">943</span><span id="line-943"> }</span>
-<span class="source-line-no">944</span><span id="line-944"></span>
-<span class="source-line-no">945</span><span id="line-945"> /**</span>
-<span class="source-line-no">946</span><span id="line-946"> * @param batch the number of cells to return in batch</span>
-<span class="source-line-no">947</span><span id="line-947"> */</span>
-<span class="source-line-no">948</span><span id="line-948"> public void setBatch(int batch) {</span>
-<span class="source-line-no">949</span><span id="line-949"> this.batch = batch;</span>
-<span class="source-line-no">950</span><span id="line-950"> }</span>
-<span class="source-line-no">951</span><span id="line-951"></span>
-<span class="source-line-no">952</span><span id="line-952"> /**</span>
-<span class="source-line-no">953</span><span id="line-953"> * @param caching the number of rows to fetch at once</span>
-<span class="source-line-no">954</span><span id="line-954"> */</span>
-<span class="source-line-no">955</span><span id="line-955"> public void setCaching(int caching) {</span>
-<span class="source-line-no">956</span><span id="line-956"> this.caching = caching;</span>
-<span class="source-line-no">957</span><span id="line-957"> }</span>
-<span class="source-line-no">958</span><span id="line-958"></span>
-<span class="source-line-no">959</span><span id="line-959"> /**</span>
-<span class="source-line-no">960</span><span id="line-960"> * @param value true if HFile blocks should be cached on the servers for this scan, false</span>
-<span class="source-line-no">961</span><span id="line-961"> * otherwise</span>
-<span class="source-line-no">962</span><span id="line-962"> */</span>
-<span class="source-line-no">963</span><span id="line-963"> public void setCacheBlocks(boolean value) {</span>
-<span class="source-line-no">964</span><span id="line-964"> this.cacheBlocks = value;</span>
-<span class="source-line-no">965</span><span id="line-965"> }</span>
-<span class="source-line-no">966</span><span id="line-966"></span>
-<span class="source-line-no">967</span><span id="line-967"> /**</span>
-<span class="source-line-no">968</span><span id="line-968"> * @param limit the number of rows can fetch of each scanner at lifetime</span>
-<span class="source-line-no">969</span><span id="line-969"> */</span>
-<span class="source-line-no">970</span><span id="line-970"> public void setLimit(int limit) {</span>
-<span class="source-line-no">971</span><span id="line-971"> this.limit = limit;</span>
-<span class="source-line-no">972</span><span id="line-972"> }</span>
-<span class="source-line-no">973</span><span id="line-973"></span>
-<span class="source-line-no">974</span><span id="line-974"> /**</span>
-<span class="source-line-no">975</span><span id="line-975"> * @param maxVersions maximum number of versions to return</span>
-<span class="source-line-no">976</span><span id="line-976"> */</span>
-<span class="source-line-no">977</span><span id="line-977"> public void setMaxVersions(int maxVersions) {</span>
-<span class="source-line-no">978</span><span id="line-978"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">979</span><span id="line-979"> }</span>
-<span class="source-line-no">980</span><span id="line-980"></span>
-<span class="source-line-no">981</span><span id="line-981"> /**</span>
-<span class="source-line-no">982</span><span id="line-982"> * @param startTime the lower bound on timestamps of values of interest</span>
-<span class="source-line-no">983</span><span id="line-983"> */</span>
-<span class="source-line-no">984</span><span id="line-984"> public void setStartTime(long startTime) {</span>
-<span class="source-line-no">985</span><span id="line-985"> this.startTime = startTime;</span>
-<span class="source-line-no">986</span><span id="line-986"> }</span>
-<span class="source-line-no">987</span><span id="line-987"></span>
-<span class="source-line-no">988</span><span id="line-988"> /**</span>
-<span class="source-line-no">989</span><span id="line-989"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">990</span><span id="line-990"> */</span>
-<span class="source-line-no">991</span><span id="line-991"> public void setEndTime(long endTime) {</span>
-<span class="source-line-no">992</span><span id="line-992"> this.endTime = endTime;</span>
-<span class="source-line-no">993</span><span id="line-993"> }</span>
-<span class="source-line-no">994</span><span id="line-994"></span>
-<span class="source-line-no">995</span><span id="line-995"> /**</span>
-<span class="source-line-no">996</span><span id="line-996"> * @param filter the filter specification</span>
-<span class="source-line-no">997</span><span id="line-997"> */</span>
-<span class="source-line-no">998</span><span id="line-998"> public void setFilter(String filter) {</span>
-<span class="source-line-no">999</span><span id="line-999"> this.filter = filter;</span>
-<span class="source-line-no">1000</span><span id="line-1000"> }</span>
-<span class="source-line-no">1001</span><span id="line-1001"></span>
-<span class="source-line-no">1002</span><span id="line-1002"> @Override</span>
-<span class="source-line-no">1003</span><span id="line-1003"> public Message messageFromObject() {</span>
-<span class="source-line-no">1004</span><span id="line-1004"> Scanner.Builder builder = Scanner.newBuilder();</span>
-<span class="source-line-no">1005</span><span id="line-1005"> if (!Bytes.equals(startRow, HConstants.EMPTY_START_ROW)) {</span>
-<span class="source-line-no">1006</span><span id="line-1006"> builder.setStartRow(UnsafeByteOperations.unsafeWrap(startRow));</span>
-<span class="source-line-no">1007</span><span id="line-1007"> }</span>
-<span class="source-line-no">1008</span><span id="line-1008"> if (!Bytes.equals(endRow, HConstants.EMPTY_START_ROW)) {</span>
-<span class="source-line-no">1009</span><span id="line-1009"> builder.setEndRow(UnsafeByteOperations.unsafeWrap(endRow));</span>
-<span class="source-line-no">1010</span><span id="line-1010"> }</span>
-<span class="source-line-no">1011</span><span id="line-1011"> for (byte[] column : columns) {</span>
-<span class="source-line-no">1012</span><span id="line-1012"> builder.addColumns(UnsafeByteOperations.unsafeWrap(column));</span>
-<span class="source-line-no">1013</span><span id="line-1013"> }</span>
-<span class="source-line-no">1014</span><span id="line-1014"> if (startTime != 0) {</span>
-<span class="source-line-no">1015</span><span id="line-1015"> builder.setStartTime(startTime);</span>
-<span class="source-line-no">1016</span><span id="line-1016"> }</span>
-<span class="source-line-no">1017</span><span id="line-1017"> if (endTime != 0) {</span>
-<span class="source-line-no">1018</span><span id="line-1018"> builder.setEndTime(endTime);</span>
-<span class="source-line-no">1019</span><span id="line-1019"> }</span>
-<span class="source-line-no">1020</span><span id="line-1020"> builder.setBatch(getBatch());</span>
-<span class="source-line-no">1021</span><span id="line-1021"> if (caching > 0) {</span>
-<span class="source-line-no">1022</span><span id="line-1022"> builder.setCaching(caching);</span>
-<span class="source-line-no">1023</span><span id="line-1023"> }</span>
-<span class="source-line-no">1024</span><span id="line-1024"> if (limit > 0) {</span>
-<span class="source-line-no">1025</span><span id="line-1025"> builder.setLimit(limit);</span>
-<span class="source-line-no">1026</span><span id="line-1026"> }</span>
-<span class="source-line-no">1027</span><span id="line-1027"> builder.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">1028</span><span id="line-1028"> if (filter != null) {</span>
-<span class="source-line-no">1029</span><span id="line-1029"> builder.setFilter(filter);</span>
-<span class="source-line-no">1030</span><span id="line-1030"> }</span>
-<span class="source-line-no">1031</span><span id="line-1031"> if (labels != null && labels.size() > 0) {</span>
-<span class="source-line-no">1032</span><span id="line-1032"> for (String label : labels)</span>
-<span class="source-line-no">1033</span><span id="line-1033"> builder.addLabels(label);</span>
-<span class="source-line-no">1034</span><span id="line-1034"> }</span>
-<span class="source-line-no">1035</span><span id="line-1035"> builder.setCacheBlocks(cacheBlocks);</span>
-<span class="source-line-no">1036</span><span id="line-1036"> builder.setIncludeStartRow(includeStartRow);</span>
-<span class="source-line-no">1037</span><span id="line-1037"> builder.setIncludeStopRow(includeStopRow);</span>
-<span class="source-line-no">1038</span><span id="line-1038"> return builder.build();</span>
-<span class="source-line-no">1039</span><span id="line-1039"> }</span>
-<span class="source-line-no">1040</span><span id="line-1040"></span>
-<span class="source-line-no">1041</span><span id="line-1041"> @Override</span>
-<span class="source-line-no">1042</span><span id="line-1042"> public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws IOException {</span>
-<span class="source-line-no">1043</span><span id="line-1043"> Scanner.Builder builder = Scanner.newBuilder();</span>
-<span class="source-line-no">1044</span><span id="line-1044"> RestUtil.mergeFrom(builder, cis);</span>
-<span class="source-line-no">1045</span><span id="line-1045"> if (builder.hasStartRow()) {</span>
-<span class="source-line-no">1046</span><span id="line-1046"> startRow = builder.getStartRow().toByteArray();</span>
-<span class="source-line-no">1047</span><span id="line-1047"> }</span>
-<span class="source-line-no">1048</span><span id="line-1048"> if (builder.hasEndRow()) {</span>
-<span class="source-line-no">1049</span><span id="line-1049"> endRow = builder.getEndRow().toByteArray();</span>
-<span class="source-line-no">1050</span><span id="line-1050"> }</span>
-<span class="source-line-no">1051</span><span id="line-1051"> for (ByteString column : builder.getColumnsList()) {</span>
-<span class="source-line-no">1052</span><span id="line-1052"> addColumn(column.toByteArray());</span>
-<span class="source-line-no">1053</span><span id="line-1053"> }</span>
-<span class="source-line-no">1054</span><span id="line-1054"> if (builder.hasBatch()) {</span>
-<span class="source-line-no">1055</span><span id="line-1055"> batch = builder.getBatch();</span>
-<span class="source-line-no">1056</span><span id="line-1056"> }</span>
-<span class="source-line-no">1057</span><span id="line-1057"> if (builder.hasCaching()) {</span>
-<span class="source-line-no">1058</span><span id="line-1058"> caching = builder.getCaching();</span>
-<span class="source-line-no">1059</span><span id="line-1059"> }</span>
-<span class="source-line-no">1060</span><span id="line-1060"> if (builder.hasLimit()) {</span>
-<span class="source-line-no">1061</span><span id="line-1061"> limit = builder.getLimit();</span>
-<span class="source-line-no">1062</span><span id="line-1062"> }</span>
-<span class="source-line-no">1063</span><span id="line-1063"> if (builder.hasStartTime()) {</span>
-<span class="source-line-no">1064</span><span id="line-1064"> startTime = builder.getStartTime();</span>
-<span class="source-line-no">1065</span><span id="line-1065"> }</span>
-<span class="source-line-no">1066</span><span id="line-1066"> if (builder.hasEndTime()) {</span>
-<span class="source-line-no">1067</span><span id="line-1067"> endTime = builder.getEndTime();</span>
-<span class="source-line-no">1068</span><span id="line-1068"> }</span>
-<span class="source-line-no">1069</span><span id="line-1069"> if (builder.hasMaxVersions()) {</span>
-<span class="source-line-no">1070</span><span id="line-1070"> maxVersions = builder.getMaxVersions();</span>
-<span class="source-line-no">1071</span><span id="line-1071"> }</span>
-<span class="source-line-no">1072</span><span id="line-1072"> if (builder.hasFilter()) {</span>
-<span class="source-line-no">1073</span><span id="line-1073"> filter = builder.getFilter();</span>
-<span class="source-line-no">1074</span><span id="line-1074"> }</span>
-<span class="source-line-no">1075</span><span id="line-1075"> if (builder.getLabelsList() != null) {</span>
-<span class="source-line-no">1076</span><span id="line-1076"> List<String> labels = builder.getLabelsList();</span>
-<span class="source-line-no">1077</span><span id="line-1077"> for (String label : labels) {</span>
-<span class="source-line-no">1078</span><span id="line-1078"> addLabel(label);</span>
-<span class="source-line-no">1079</span><span id="line-1079"> }</span>
-<span class="source-line-no">1080</span><span id="line-1080"> }</span>
-<span class="source-line-no">1081</span><span id="line-1081"> if (builder.hasCacheBlocks()) {</span>
-<span class="source-line-no">1082</span><span id="line-1082"> this.cacheBlocks = builder.getCacheBlocks();</span>
-<span class="source-line-no">1083</span><span id="line-1083"> }</span>
-<span class="source-line-no">1084</span><span id="line-1084"> if (builder.hasIncludeStartRow()) {</span>
-<span class="source-line-no">1085</span><span id="line-1085"> this.includeStartRow = builder.getIncludeStartRow();</span>
-<span class="source-line-no">1086</span><span id="line-1086"> }</span>
-<span class="source-line-no">1087</span><span id="line-1087"> if (builder.hasIncludeStopRow()) {</span>
-<span class="source-line-no">1088</span><span id="line-1088"> this.includeStopRow = builder.getIncludeStopRow();</span>
-<span class="source-line-no">1089</span><span id="line-1089"> }</span>
-<span class="source-line-no">1090</span><span id="line-1090"> return this;</span>
-<span class="source-line-no">1091</span><span id="line-1091"> }</span>
-<span class="source-line-no">1092</span><span id="line-1092"></span>
-<span class="source-line-no">1093</span><span id="line-1093">}</span>
+<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE",</span>
+<span class="source-line-no">150</span><span id="line-150"> "HE_EQUALS_USE_HASHCODE" },</span>
+<span class="source-line-no">151</span><span id="line-151"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
+<span class="source-line-no">152</span><span id="line-152"> private static class IncludeStartRowFilter {</span>
+<span class="source-line-no">153</span><span id="line-153"> @Override</span>
+<span class="source-line-no">154</span><span id="line-154"> public boolean equals(Object value) {</span>
+<span class="source-line-no">155</span><span id="line-155"> return Boolean.TRUE.equals(value);</span>
+<span class="source-line-no">156</span><span id="line-156"> }</span>
+<span class="source-line-no">157</span><span id="line-157"> }</span>
+<span class="source-line-no">158</span><span id="line-158"></span>
+<span class="source-line-no">159</span><span id="line-159"> /**</span>
+<span class="source-line-no">160</span><span id="line-160"> * Implement lazily-instantiated singleton as per recipe here:</span>
+<span class="source-line-no">161</span><span id="line-161"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
+<span class="source-line-no">162</span><span id="line-162"> */</span>
+<span class="source-line-no">163</span><span id="line-163"> private static class JaxbJsonProviderHolder {</span>
+<span class="source-line-no">164</span><span id="line-164"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
+<span class="source-line-no">165</span><span id="line-165"> }</span>
+<span class="source-line-no">166</span><span id="line-166"></span>
+<span class="source-line-no">167</span><span id="line-167"> @XmlRootElement</span>
+<span class="source-line-no">168</span><span id="line-168"> static class FilterModel {</span>
+<span class="source-line-no">169</span><span id="line-169"></span>
+<span class="source-line-no">170</span><span id="line-170"> @XmlRootElement</span>
+<span class="source-line-no">171</span><span id="line-171"> static class ByteArrayComparableModel {</span>
+<span class="source-line-no">172</span><span id="line-172"> @XmlAttribute</span>
+<span class="source-line-no">173</span><span id="line-173"> public String type;</span>
+<span class="source-line-no">174</span><span id="line-174"> @XmlAttribute</span>
+<span class="source-line-no">175</span><span id="line-175"> public String value;</span>
+<span class="source-line-no">176</span><span id="line-176"> @XmlAttribute</span>
+<span class="source-line-no">177</span><span id="line-177"> public String op;</span>
+<span class="source-line-no">178</span><span id="line-178"></span>
+<span class="source-line-no">179</span><span id="line-179"> static enum ComparatorType {</span>
+<span class="source-line-no">180</span><span id="line-180"> BinaryComparator,</span>
+<span class="source-line-no">181</span><span id="line-181"> BinaryPrefixComparator,</span>
+<span class="source-line-no">182</span><span id="line-182"> BitComparator,</span>
+<span class="source-line-no">183</span><span id="line-183"> NullComparator,</span>
+<span class="source-line-no">184</span><span id="line-184"> RegexStringComparator,</span>
+<span class="source-line-no">185</span><span id="line-185"> SubstringComparator</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> public ByteArrayComparableModel() {</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"></span>
+<span class="source-line-no">191</span><span id="line-191"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
+<span class="source-line-no">192</span><span id="line-192"> String typeName = comparator.getClass().getSimpleName();</span>
+<span class="source-line-no">193</span><span id="line-193"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
+<span class="source-line-no">194</span><span id="line-194"> this.type = typeName;</span>
+<span class="source-line-no">195</span><span id="line-195"> switch (type) {</span>
+<span class="source-line-no">196</span><span id="line-196"> case BinaryComparator:</span>
+<span class="source-line-no">197</span><span id="line-197"> case BinaryPrefixComparator:</span>
+<span class="source-line-no">198</span><span id="line-198"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
+<span class="source-line-no">199</span><span id="line-199"> break;</span>
+<span class="source-line-no">200</span><span id="line-200"> case BitComparator:</span>
+<span class="source-line-no">201</span><span id="line-201"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
+<span class="source-line-no">202</span><span id="line-202"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
+<span class="source-line-no">203</span><span id="line-203"> break;</span>
+<span class="source-line-no">204</span><span id="line-204"> case NullComparator:</span>
+<span class="source-line-no">205</span><span id="line-205"> break;</span>
+<span class="source-line-no">206</span><span id="line-206"> case RegexStringComparator:</span>
+<span class="source-line-no">207</span><span id="line-207"> case SubstringComparator:</span>
+<span class="source-line-no">208</span><span id="line-208"> this.value = Bytes.toString(comparator.getValue());</span>
+<span class="source-line-no">209</span><span id="line-209"> break;</span>
+<span class="source-line-no">210</span><span id="line-210"> default:</span>
+<span class="source-line-no">211</span><span id="line-211"> throw new RuntimeException("unhandled filter type: " + type);</span>
+<span class="source-line-no">212</span><span id="line-212"> }</span>
+<span class="source-line-no">213</span><span id="line-213"> }</span>
+<span class="source-line-no">214</span><span id="line-214"></span>
+<span class="source-line-no">215</span><span id="line-215"> public ByteArrayComparable build() {</span>
+<span class="source-line-no">216</span><span id="line-216"> ByteArrayComparable comparator;</span>
+<span class="source-line-no">217</span><span id="line-217"> switch (ComparatorType.valueOf(type)) {</span>
+<span class="source-line-no">218</span><span id="line-218"> case BinaryComparator:</span>
+<span class="source-line-no">219</span><span id="line-219"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">220</span><span id="line-220"> break;</span>
+<span class="source-line-no">221</span><span id="line-221"> case BinaryPrefixComparator:</span>
+<span class="source-line-no">222</span><span id="line-222"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">223</span><span id="line-223"> break;</span>
+<span class="source-line-no">224</span><span id="line-224"> case BitComparator:</span>
+<span class="source-line-no">225</span><span id="line-225"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
+<span class="source-line-no">226</span><span id="line-226"> BitComparator.BitwiseOp.valueOf(op));</span>
+<span class="source-line-no">227</span><span id="line-227"> break;</span>
+<span class="source-line-no">228</span><span id="line-228"> case NullComparator:</span>
+<span class="source-line-no">229</span><span id="line-229"> comparator = new NullComparator();</span>
+<span class="source-line-no">230</span><span id="line-230"> break;</span>
+<span class="source-line-no">231</span><span id="line-231"> case RegexStringComparator:</span>
+<span class="source-line-no">232</span><span id="line-232"> comparator = new RegexStringComparator(value);</span>
+<span class="source-line-no">233</span><span id="line-233"> break;</span>
+<span class="source-line-no">234</span><span id="line-234"> case SubstringComparator:</span>
+<span class="source-line-no">235</span><span id="line-235"> comparator = new SubstringComparator(value);</span>
+<span class="source-line-no">236</span><span id="line-236"> break;</span>
+<span class="source-line-no">237</span><span id="line-237"> default:</span>
+<span class="source-line-no">238</span><span id="line-238"> throw new RuntimeException("unhandled comparator type: " + type);</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"> return comparator;</span>
+<span class="source-line-no">241</span><span id="line-241"> }</span>
+<span class="source-line-no">242</span><span id="line-242"></span>
+<span class="source-line-no">243</span><span id="line-243"> }</span>
+<span class="source-line-no">244</span><span id="line-244"></span>
+<span class="source-line-no">245</span><span id="line-245"> /**</span>
+<span class="source-line-no">246</span><span id="line-246"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
+<span class="source-line-no">247</span><span id="line-247"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
+<span class="source-line-no">248</span><span id="line-248"> */</span>
+<span class="source-line-no">249</span><span id="line-249"> static class RowRangeModel {</span>
+<span class="source-line-no">250</span><span id="line-250"></span>
+<span class="source-line-no">251</span><span id="line-251"> protected byte[] startRow;</span>
+<span class="source-line-no">252</span><span id="line-252"></span>
+<span class="source-line-no">253</span><span id="line-253"> protected boolean startRowInclusive = true;</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> protected byte[] stopRow;</span>
+<span class="source-line-no">256</span><span id="line-256"></span>
+<span class="source-line-no">257</span><span id="line-257"> protected boolean stopRowInclusive = false;</span>
+<span class="source-line-no">258</span><span id="line-258"></span>
+<span class="source-line-no">259</span><span id="line-259"> public RowRangeModel() {</span>
+<span class="source-line-no">260</span><span id="line-260"> }</span>
+<span class="source-line-no">261</span><span id="line-261"></span>
+<span class="source-line-no">262</span><span id="line-262"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
+<span class="source-line-no">263</span><span id="line-263"> this.startRow = rr.getStartRow();</span>
+<span class="source-line-no">264</span><span id="line-264"> this.startRowInclusive = rr.isStartRowInclusive();</span>
+<span class="source-line-no">265</span><span id="line-265"> this.stopRow = rr.getStopRow();</span>
+<span class="source-line-no">266</span><span id="line-266"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
+<span class="source-line-no">267</span><span id="line-267"> }</span>
+<span class="source-line-no">268</span><span id="line-268"></span>
+<span class="source-line-no">269</span><span id="line-269"> public MultiRowRangeFilter.RowRange build() {</span>
+<span class="source-line-no">270</span><span id="line-270"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
+<span class="source-line-no">271</span><span id="line-271"> stopRowInclusive);</span>
+<span class="source-line-no">272</span><span id="line-272"> }</span>
+<span class="source-line-no">273</span><span id="line-273"></span>
+<span class="source-line-no">274</span><span id="line-274"> public byte[] getStartRow() {</span>
+<span class="source-line-no">275</span><span id="line-275"> return startRow;</span>
+<span class="source-line-no">276</span><span id="line-276"> }</span>
+<span class="source-line-no">277</span><span id="line-277"></span>
+<span class="source-line-no">278</span><span id="line-278"> public byte[] getStopRow() {</span>
+<span class="source-line-no">279</span><span id="line-279"> return stopRow;</span>
+<span class="source-line-no">280</span><span id="line-280"> }</span>
+<span class="source-line-no">281</span><span id="line-281"></span>
+<span class="source-line-no">282</span><span id="line-282"> /** Returns if start row is inclusive. */</span>
+<span class="source-line-no">283</span><span id="line-283"> public boolean isStartRowInclusive() {</span>
+<span class="source-line-no">284</span><span id="line-284"> return startRowInclusive;</span>
+<span class="source-line-no">285</span><span id="line-285"> }</span>
+<span class="source-line-no">286</span><span id="line-286"></span>
+<span class="source-line-no">287</span><span id="line-287"> /** Returns if stop row is inclusive. */</span>
+<span class="source-line-no">288</span><span id="line-288"> public boolean isStopRowInclusive() {</span>
+<span class="source-line-no">289</span><span id="line-289"> return stopRowInclusive;</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> @Override</span>
+<span class="source-line-no">293</span><span id="line-293"> public int hashCode() {</span>
+<span class="source-line-no">294</span><span id="line-294"> final int prime = 31;</span>
+<span class="source-line-no">295</span><span id="line-295"> int result = 1;</span>
+<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(startRow);</span>
+<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Arrays.hashCode(stopRow);</span>
+<span class="source-line-no">298</span><span id="line-298"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
+<span class="source-line-no">299</span><span id="line-299"> return result;</span>
+<span class="source-line-no">300</span><span id="line-300"> }</span>
+<span class="source-line-no">301</span><span id="line-301"></span>
+<span class="source-line-no">302</span><span id="line-302"> @Override</span>
+<span class="source-line-no">303</span><span id="line-303"> public boolean equals(Object obj) {</span>
+<span class="source-line-no">304</span><span id="line-304"> if (this == obj) {</span>
+<span class="source-line-no">305</span><span id="line-305"> return true;</span>
+<span class="source-line-no">306</span><span id="line-306"> }</span>
+<span class="source-line-no">307</span><span id="line-307"> if (!(obj instanceof RowRangeModel)) {</span>
+<span class="source-line-no">308</span><span id="line-308"> return false;</span>
+<span class="source-line-no">309</span><span id="line-309"> }</span>
+<span class="source-line-no">310</span><span id="line-310"> RowRangeModel other = (RowRangeModel) obj;</span>
+<span class="source-line-no">311</span><span id="line-311"> return Arrays.equals(startRow, other.startRow)</span>
+<span class="source-line-no">312</span><span id="line-312"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
+<span class="source-line-no">313</span><span id="line-313"> && stopRowInclusive == other.stopRowInclusive;</span>
+<span class="source-line-no">314</span><span id="line-314"> }</span>
+<span class="source-line-no">315</span><span id="line-315"></span>
+<span class="source-line-no">316</span><span id="line-316"> }</span>
+<span class="source-line-no">317</span><span id="line-317"></span>
+<span class="source-line-no">318</span><span id="line-318"> static class FuzzyKeyModel {</span>
+<span class="source-line-no">319</span><span id="line-319"></span>
+<span class="source-line-no">320</span><span id="line-320"> protected byte[] key;</span>
+<span class="source-line-no">321</span><span id="line-321"></span>
+<span class="source-line-no">322</span><span id="line-322"> protected byte[] mask;</span>
+<span class="source-line-no">323</span><span id="line-323"></span>
+<span class="source-line-no">324</span><span id="line-324"> public FuzzyKeyModel() {</span>
+<span class="source-line-no">325</span><span id="line-325"> }</span>
+<span class="source-line-no">326</span><span id="line-326"></span>
+<span class="source-line-no">327</span><span id="line-327"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
+<span class="source-line-no">328</span><span id="line-328"> this.key = keyWithMask.getFirst();</span>
+<span class="source-line-no">329</span><span id="line-329"> this.mask = keyWithMask.getSecond();</span>
+<span class="source-line-no">330</span><span id="line-330"> }</span>
+<span class="source-line-no">331</span><span id="line-331"></span>
+<span class="source-line-no">332</span><span id="line-332"> public Pair<byte[], byte[]> build() {</span>
+<span class="source-line-no">333</span><span id="line-333"> return new Pair<>(key, mask);</span>
+<span class="source-line-no">334</span><span id="line-334"> }</span>
+<span class="source-line-no">335</span><span id="line-335"></span>
+<span class="source-line-no">336</span><span id="line-336"> public byte[] getKey() {</span>
+<span class="source-line-no">337</span><span id="line-337"> return key;</span>
+<span class="source-line-no">338</span><span id="line-338"> }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340"> public void setKey(byte[] key) {</span>
+<span class="source-line-no">341</span><span id="line-341"> this.key = key;</span>
+<span class="source-line-no">342</span><span id="line-342"> }</span>
+<span class="source-line-no">343</span><span id="line-343"></span>
+<span class="source-line-no">344</span><span id="line-344"> public byte[] getMask() {</span>
+<span class="source-line-no">345</span><span id="line-345"> return mask;</span>
+<span class="source-line-no">346</span><span id="line-346"> }</span>
+<span class="source-line-no">347</span><span id="line-347"></span>
+<span class="source-line-no">348</span><span id="line-348"> public void setMask(byte[] mask) {</span>
+<span class="source-line-no">349</span><span id="line-349"> this.mask = mask;</span>
+<span class="source-line-no">350</span><span id="line-350"> }</span>
+<span class="source-line-no">351</span><span id="line-351"></span>
+<span class="source-line-no">352</span><span id="line-352"> @Override</span>
+<span class="source-line-no">353</span><span id="line-353"> public int hashCode() {</span>
+<span class="source-line-no">354</span><span id="line-354"> final int prime = 31;</span>
+<span class="source-line-no">355</span><span id="line-355"> int result = 1;</span>
+<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(key);</span>
+<span class="source-line-no">357</span><span id="line-357"> result = prime * result + Arrays.hashCode(mask);</span>
+<span class="source-line-no">358</span><span id="line-358"> return result;</span>
+<span class="source-line-no">359</span><span id="line-359"> }</span>
+<span class="source-line-no">360</span><span id="line-360"></span>
+<span class="source-line-no">361</span><span id="line-361"> @Override</span>
+<span class="source-line-no">362</span><span id="line-362"> public boolean equals(Object obj) {</span>
+<span class="source-line-no">363</span><span id="line-363"> if (this == obj) {</span>
+<span class="source-line-no">364</span><span id="line-364"> return true;</span>
+<span class="source-line-no">365</span><span id="line-365"> }</span>
+<span class="source-line-no">366</span><span id="line-366"> if (!(obj instanceof FuzzyKeyModel)) {</span>
+<span class="source-line-no">367</span><span id="line-367"> return false;</span>
+<span class="source-line-no">368</span><span id="line-368"> }</span>
+<span class="source-line-no">369</span><span id="line-369"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
+<span class="source-line-no">370</span><span id="line-370"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
+<span class="source-line-no">371</span><span id="line-371"> }</span>
+<span class="source-line-no">372</span><span id="line-372"></span>
+<span class="source-line-no">373</span><span id="line-373"> }</span>
+<span class="source-line-no">374</span><span id="line-374"></span>
+<span class="source-line-no">375</span><span id="line-375"> // A grab bag of fields, would have been a union if this were C.</span>
+<span class="source-line-no">376</span><span id="line-376"> // These are null by default and will only be serialized if set (non null).</span>
+<span class="source-line-no">377</span><span id="line-377"> @XmlAttribute</span>
+<span class="source-line-no">378</span><span id="line-378"> public String type;</span>
+<span class="source-line-no">379</span><span id="line-379"> @XmlAttribute</span>
+<span class="source-line-no">380</span><span id="line-380"> public String op;</span>
+<span class="source-line-no">381</span><span id="line-381"> @XmlElement</span>
+<span class="source-line-no">382</span><span id="line-382"> ByteArrayComparableModel comparator;</span>
+<span class="source-line-no">383</span><span id="line-383"> @XmlAttribute</span>
+<span class="source-line-no">384</span><span id="line-384"> public String value;</span>
+<span class="source-line-no">385</span><span id="line-385"> @XmlElement</span>
+<span class="source-line-no">386</span><span id="line-386"> public List<FilterModel> filters;</span>
+<span class="source-line-no">387</span><span id="line-387"> @XmlAttribute</span>
+<span class="source-line-no">388</span><span id="line-388"> public Integer limit;</span>
+<span class="source-line-no">389</span><span id="line-389"> @XmlAttribute</span>
+<span class="source-line-no">390</span><span id="line-390"> public Integer offset;</span>
+<span class="source-line-no">391</span><span id="line-391"> @XmlAttribute</span>
+<span class="source-line-no">392</span><span id="line-392"> public String family;</span>
+<span class="source-line-no">393</span><span id="line-393"> @XmlAttribute</span>
+<span class="source-line-no">394</span><span id="line-394"> public String qualifier;</span>
+<span class="source-line-no">395</span><span id="line-395"> @XmlAttribute</span>
+<span class="source-line-no">396</span><span id="line-396"> public Boolean ifMissing;</span>
+<span class="source-line-no">397</span><span id="line-397"> @XmlAttribute</span>
+<span class="source-line-no">398</span><span id="line-398"> public Boolean latestVersion;</span>
+<span class="source-line-no">399</span><span id="line-399"> @XmlAttribute</span>
+<span class="source-line-no">400</span><span id="line-400"> public String minColumn;</span>
+<span class="source-line-no">401</span><span id="line-401"> @XmlAttribute</span>
+<span class="source-line-no">402</span><span id="line-402"> public Boolean minColumnInclusive;</span>
+<span class="source-line-no">403</span><span id="line-403"> @XmlAttribute</span>
+<span class="source-line-no">404</span><span id="line-404"> public String maxColumn;</span>
+<span class="source-line-no">405</span><span id="line-405"> @XmlAttribute</span>
+<span class="source-line-no">406</span><span id="line-406"> public Boolean maxColumnInclusive;</span>
+<span class="source-line-no">407</span><span id="line-407"> @XmlAttribute</span>
+<span class="source-line-no">408</span><span id="line-408"> public Boolean dropDependentColumn;</span>
+<span class="source-line-no">409</span><span id="line-409"> @XmlAttribute</span>
+<span class="source-line-no">410</span><span id="line-410"> public Float chance;</span>
+<span class="source-line-no">411</span><span id="line-411"> @XmlElement</span>
+<span class="source-line-no">412</span><span id="line-412"> public List<String> prefixes;</span>
+<span class="source-line-no">413</span><span id="line-413"> @XmlElement</span>
+<span class="source-line-no">414</span><span id="line-414"> private List<RowRangeModel> ranges;</span>
+<span class="source-line-no">415</span><span id="line-415"> @XmlElement</span>
+<span class="source-line-no">416</span><span id="line-416"> public List<Long> timestamps;</span>
+<span class="source-line-no">417</span><span id="line-417"> @XmlElement</span>
+<span class="source-line-no">418</span><span id="line-418"> private List<FuzzyKeyModel> fuzzyKeys;</span>
+<span class="source-line-no">419</span><span id="line-419"></span>
+<span class="source-line-no">420</span><span id="line-420"> static enum FilterType {</span>
+<span class="source-line-no">421</span><span id="line-421"> ColumnCountGetFilter,</span>
+<span class="source-line-no">422</span><span id="line-422"> ColumnPaginationFilter,</span>
+<span class="source-line-no">423</span><span id="line-423"> ColumnPrefixFilter,</span>
+<span class="source-line-no">424</span><span id="line-424"> ColumnRangeFilter,</span>
+<span class="source-line-no">425</span><span id="line-425"> DependentColumnFilter,</span>
+<span class="source-line-no">426</span><span id="line-426"> FamilyFilter,</span>
+<span class="source-line-no">427</span><span id="line-427"> FilterList,</span>
+<span class="source-line-no">428</span><span id="line-428"> FirstKeyOnlyFilter,</span>
+<span class="source-line-no">429</span><span id="line-429"> InclusiveStopFilter,</span>
+<span class="source-line-no">430</span><span id="line-430"> KeyOnlyFilter,</span>
+<span class="source-line-no">431</span><span id="line-431"> MultipleColumnPrefixFilter,</span>
+<span class="source-line-no">432</span><span id="line-432"> MultiRowRangeFilter,</span>
+<span class="source-line-no">433</span><span id="line-433"> PageFilter,</span>
+<span class="source-line-no">434</span><span id="line-434"> PrefixFilter,</span>
+<span class="source-line-no">435</span><span id="line-435"> QualifierFilter,</span>
+<span class="source-line-no">436</span><span id="line-436"> RandomRowFilter,</span>
+<span class="source-line-no">437</span><span id="line-437"> RowFilter,</span>
+<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueExcludeFilter,</span>
+<span class="source-line-no">439</span><span id="line-439"> SingleColumnValueFilter,</span>
+<span class="source-line-no">440</span><span id="line-440"> SkipFilter,</span>
+<span class="source-line-no">441</span><span id="line-441"> TimestampsFilter,</span>
+<span class="source-line-no">442</span><span id="line-442"> ValueFilter,</span>
+<span class="source-line-no">443</span><span id="line-443"> WhileMatchFilter,</span>
+<span class="source-line-no">444</span><span id="line-444"> FuzzyRowFilter</span>
+<span class="source-line-no">445</span><span id="line-445"> }</span>
+<span class="source-line-no">446</span><span id="line-446"></span>
+<span class="source-line-no">447</span><span id="line-447"> public FilterModel() {</span>
+<span class="source-line-no">448</span><span id="line-448"> }</span>
+<span class="source-line-no">449</span><span id="line-449"></span>
+<span class="source-line-no">450</span><span id="line-450"> public FilterModel(Filter filter) {</span>
+<span class="source-line-no">451</span><span id="line-451"> String typeName = filter.getClass().getSimpleName();</span>
+<span class="source-line-no">452</span><span id="line-452"> FilterType type = FilterType.valueOf(typeName);</span>
+<span class="source-line-no">453</span><span id="line-453"> this.type = typeName;</span>
+<span class="source-line-no">454</span><span id="line-454"> switch (type) {</span>
+<span class="source-line-no">455</span><span id="line-455"> case ColumnCountGetFilter:</span>
+<span class="source-line-no">456</span><span id="line-456"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
+<span class="source-line-no">457</span><span id="line-457"> break;</span>
+<span class="source-line-no">458</span><span id="line-458"> case ColumnPaginationFilter:</span>
+<span class="source-line-no">459</span><span id="line-459"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
+<span class="source-line-no">460</span><span id="line-460"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
+<span class="source-line-no">461</span><span id="line-461"> break;</span>
+<span class="source-line-no">462</span><span id="line-462"> case ColumnPrefixFilter:</span>
+<span class="source-line-no">463</span><span id="line-463"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
+<span class="source-line-no">464</span><span id="line-464"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
+<span class="source-line-no">465</span><span id="line-465"> break;</span>
+<span class="source-line-no">466</span><span id="line-466"> case ColumnRangeFilter:</span>
+<span class="source-line-no">467</span><span id="line-467"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
+<span class="source-line-no">468</span><span id="line-468"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
+<span class="source-line-no">469</span><span id="line-469"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
+<span class="source-line-no">470</span><span id="line-470"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
+<span class="source-line-no">471</span><span id="line-471"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
+<span class="source-line-no">472</span><span id="line-472"> break;</span>
+<span class="source-line-no">473</span><span id="line-473"> case DependentColumnFilter: {</span>
+<span class="source-line-no">474</span><span id="line-474"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
+<span class="source-line-no">475</span><span id="line-475"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
+<span class="source-line-no">476</span><span id="line-476"> byte[] qualifier = dcf.getQualifier();</span>
+<span class="source-line-no">477</span><span id="line-477"> if (qualifier != null) {</span>
+<span class="source-line-no">478</span><span id="line-478"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
+<span class="source-line-no">479</span><span id="line-479"> }</span>
+<span class="source-line-no">480</span><span id="line-480"> this.op = dcf.getCompareOperator().toString();</span>
+<span class="source-line-no">481</span><span id="line-481"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
+<span class="source-line-no">482</span><span id="line-482"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
+<span class="source-line-no">483</span><span id="line-483"> }</span>
+<span class="source-line-no">484</span><span id="line-484"> break;</span>
+<span class="source-line-no">485</span><span id="line-485"> case FilterList:</span>
+<span class="source-line-no">486</span><span id="line-486"> this.op = ((FilterList) filter).getOperator().toString();</span>
+<span class="source-line-no">487</span><span id="line-487"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">488</span><span id="line-488"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
+<span class="source-line-no">489</span><span id="line-489"> this.filters.add(new FilterModel(child));</span>
+<span class="source-line-no">490</span><span id="line-490"> }</span>
+<span class="source-line-no">491</span><span id="line-491"> break;</span>
+<span class="source-line-no">492</span><span id="line-492"> case FirstKeyOnlyFilter:</span>
+<span class="source-line-no">493</span><span id="line-493"> case KeyOnlyFilter:</span>
+<span class="source-line-no">494</span><span id="line-494"> break;</span>
+<span class="source-line-no">495</span><span id="line-495"> case InclusiveStopFilter:</span>
+<span class="source-line-no">496</span><span id="line-496"> this.value = Bytes</span>
+<span class="source-line-no">497</span><span id="line-497"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
+<span class="source-line-no">498</span><span id="line-498"> break;</span>
+<span class="source-line-no">499</span><span id="line-499"> case MultipleColumnPrefixFilter:</span>
+<span class="source-line-no">500</span><span id="line-500"> this.prefixes = new ArrayList<>();</span>
+<span class="source-line-no">501</span><span id="line-501"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
+<span class="source-line-no">502</span><span id="line-502"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
+<span class="source-line-no">503</span><span id="line-503"> }</span>
+<span class="source-line-no">504</span><span id="line-504"> break;</span>
+<span class="source-line-no">505</span><span id="line-505"> case MultiRowRangeFilter:</span>
+<span class="source-line-no">506</span><span id="line-506"> this.ranges = new ArrayList<>();</span>
+<span class="source-line-no">507</span><span id="line-507"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
+<span class="source-line-no">508</span><span id="line-508"> this.ranges.add(new RowRangeModel(range));</span>
+<span class="source-line-no">509</span><span id="line-509"> }</span>
+<span class="source-line-no">510</span><span id="line-510"> break;</span>
+<span class="source-line-no">511</span><span id="line-511"> case PageFilter:</span>
+<span class="source-line-no">512</span><span id="line-512"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
+<span class="source-line-no">513</span><span id="line-513"> break;</span>
+<span class="source-line-no">514</span><span id="line-514"> case PrefixFilter:</span>
+<span class="source-line-no">515</span><span id="line-515"> this.value =</span>
+<span class="source-line-no">516</span><span id="line-516"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
+<span class="source-line-no">517</span><span id="line-517"> break;</span>
+<span class="source-line-no">518</span><span id="line-518"> case FamilyFilter:</span>
+<span class="source-line-no">519</span><span id="line-519"> case QualifierFilter:</span>
+<span class="source-line-no">520</span><span id="line-520"> case RowFilter:</span>
+<span class="source-line-no">521</span><span id="line-521"> case ValueFilter:</span>
+<span class="source-line-no">522</span><span id="line-522"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
+<span class="source-line-no">523</span><span id="line-523"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
+<span class="source-line-no">524</span><span id="line-524"> break;</span>
+<span class="source-line-no">525</span><span id="line-525"> case RandomRowFilter:</span>
+<span class="source-line-no">526</span><span id="line-526"> this.chance = ((RandomRowFilter) filter).getChance();</span>
+<span class="source-line-no">527</span><span id="line-527"> break;</span>
+<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueExcludeFilter:</span>
+<span class="source-line-no">529</span><span id="line-529"> case SingleColumnValueFilter: {</span>
+<span class="source-line-no">530</span><span id="line-530"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
+<span class="source-line-no">531</span><span id="line-531"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
+<span class="source-line-no">532</span><span id="line-532"> byte[] qualifier = scvf.getQualifier();</span>
+<span class="source-line-no">533</span><span id="line-533"> if (qualifier != null) {</span>
+<span class="source-line-no">534</span><span id="line-534"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
+<span class="source-line-no">535</span><span id="line-535"> }</span>
+<span class="source-line-no">536</span><span id="line-536"> this.op = scvf.getCompareOperator().toString();</span>
+<span class="source-line-no">537</span><span id="line-537"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
+<span class="source-line-no">538</span><span id="line-538"> if (scvf.getFilterIfMissing()) {</span>
+<span class="source-line-no">539</span><span id="line-539"> this.ifMissing = true;</span>
+<span class="source-line-no">540</span><span id="line-540"> }</span>
+<span class="source-line-no">541</span><span id="line-541"> if (scvf.getLatestVersionOnly()) {</span>
+<span class="source-line-no">542</span><span id="line-542"> this.latestVersion = true;</span>
+<span class="source-line-no">543</span><span id="line-543"> }</span>
+<span class="source-line-no">544</span><span id="line-544"> }</span>
+<span class="source-line-no">545</span><span id="line-545"> break;</span>
+<span class="source-line-no">546</span><span id="line-546"> case SkipFilter:</span>
+<span class="source-line-no">547</span><span id="line-547"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">548</span><span id="line-548"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
+<span class="source-line-no">549</span><span id="line-549"> break;</span>
+<span class="source-line-no">550</span><span id="line-550"> case TimestampsFilter:</span>
+<span class="source-line-no">551</span><span id="line-551"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
+<span class="source-line-no">552</span><span id="line-552"> break;</span>
+<span class="source-line-no">553</span><span id="line-553"> case WhileMatchFilter:</span>
+<span class="source-line-no">554</span><span id="line-554"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">555</span><span id="line-555"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
+<span class="source-line-no">556</span><span id="line-556"> break;</span>
+<span class="source-line-no">557</span><span id="line-557"> case FuzzyRowFilter:</span>
+<span class="source-line-no">558</span><span id="line-558"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
+<span class="source-line-no">559</span><span id="line-559"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
+<span class="source-line-no">560</span><span id="line-560"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
+<span class="source-line-no">561</span><span id="line-561"> }</span>
+<span class="source-line-no">562</span><span id="line-562"> break;</span>
+<span class="source-line-no">563</span><span id="line-563"> default:</span>
+<span class="source-line-no">564</span><span id="line-564"> throw new RuntimeException("unhandled filter type " + type);</span>
+<span class="source-line-no">565</span><span id="line-565"> }</span>
+<span class="source-line-no">566</span><span id="line-566"> }</span>
+<span class="source-line-no">567</span><span id="line-567"></span>
+<span class="source-line-no">568</span><span id="line-568"> public Filter build() {</span>
+<span class="source-line-no">569</span><span id="line-569"> Filter filter;</span>
+<span class="source-line-no">570</span><span id="line-570"> switch (FilterType.valueOf(type)) {</span>
+<span class="source-line-no">571</span><span id="line-571"> case ColumnCountGetFilter:</span>
+<span class="source-line-no">572</span><span id="line-572"> filter = new ColumnCountGetFilter(limit);</span>
+<span class="source-line-no">573</span><span id="line-573"> break;</span>
+<span class="source-line-no">574</span><span id="line-574"> case ColumnPaginationFilter:</span>
+<span class="source-line-no">575</span><span id="line-575"> filter = new ColumnPaginationFilter(limit, offset);</span>
+<span class="source-line-no">576</span><span id="line-576"> break;</span>
+<span class="source-line-no">577</span><span id="line-577"> case ColumnPrefixFilter:</span>
+<span class="source-line-no">578</span><span id="line-578"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">579</span><span id="line-579"> break;</span>
+<span class="source-line-no">580</span><span id="line-580"> case ColumnRangeFilter:</span>
+<span class="source-line-no">581</span><span id="line-581"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
+<span class="source-line-no">582</span><span id="line-582"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
+<span class="source-line-no">583</span><span id="line-583"> break;</span>
+<span class="source-line-no">584</span><span id="line-584"> case DependentColumnFilter:</span>
+<span class="source-line-no">585</span><span id="line-585"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">586</span><span id="line-586"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
+<span class="source-line-no">587</span><span id="line-587"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">588</span><span id="line-588"> break;</span>
+<span class="source-line-no">589</span><span id="line-589"> case FamilyFilter:</span>
+<span class="source-line-no">590</span><span id="line-590"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">591</span><span id="line-591"> break;</span>
+<span class="source-line-no">592</span><span id="line-592"> case FilterList: {</span>
+<span class="source-line-no">593</span><span id="line-593"> List<Filter> list = new ArrayList<>(filters.size());</span>
+<span class="source-line-no">594</span><span id="line-594"> for (FilterModel model : filters) {</span>
+<span class="source-line-no">595</span><span id="line-595"> list.add(model.build());</span>
+<span class="source-line-no">596</span><span id="line-596"> }</span>
+<span class="source-line-no">597</span><span id="line-597"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
+<span class="source-line-no">598</span><span id="line-598"> }</span>
+<span class="source-line-no">599</span><span id="line-599"> break;</span>
+<span class="source-line-no">600</span><span id="line-600"> case FirstKeyOnlyFilter:</span>
+<span class="source-line-no">601</span><span id="line-601"> filter = new FirstKeyOnlyFilter();</span>
+<span class="source-line-no">602</span><span id="line-602"> break;</span>
+<span class="source-line-no">603</span><span id="line-603"> case InclusiveStopFilter:</span>
+<span class="source-line-no">604</span><span id="line-604"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">605</span><span id="line-605"> break;</span>
+<span class="source-line-no">606</span><span id="line-606"> case KeyOnlyFilter:</span>
+<span class="source-line-no">607</span><span id="line-607"> filter = new KeyOnlyFilter();</span>
+<span class="source-line-no">608</span><span id="line-608"> break;</span>
+<span class="source-line-no">609</span><span id="line-609"> case MultipleColumnPrefixFilter: {</span>
+<span class="source-line-no">610</span><span id="line-610"> byte[][] values = new byte[prefixes.size()][];</span>
+<span class="source-line-no">611</span><span id="line-611"> for (int i = 0; i < prefixes.size(); i++) {</span>
+<span class="source-line-no">612</span><span id="line-612"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
+<span class="source-line-no">613</span><span id="line-613"> }</span>
+<span class="source-line-no">614</span><span id="line-614"> filter = new MultipleColumnPrefixFilter(values);</span>
+<span class="source-line-no">615</span><span id="line-615"> }</span>
+<span class="source-line-no">616</span><span id="line-616"> break;</span>
+<span class="source-line-no">617</span><span id="line-617"> case MultiRowRangeFilter: {</span>
+<span class="source-line-no">618</span><span id="line-618"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
+<span class="source-line-no">619</span><span id="line-619"> for (RowRangeModel rangeModel : ranges) {</span>
+<span class="source-line-no">620</span><span id="line-620"> rowRanges.add(rangeModel.build());</span>
+<span class="source-line-no">621</span><span id="line-621"> }</span>
+<span class="source-line-no">622</span><span id="line-622"> filter = new MultiRowRangeFilter(rowRanges);</span>
+<span class="source-line-no">623</span><span id="line-623"> }</span>
+<span class="source-line-no">624</span><span id="line-624"> break;</span>
+<span class="source-line-no">625</span><span id="line-625"> case PageFilter:</span>
+<span class="source-line-no">626</span><span id="line-626"> filter = new PageFilter(Long.parseLong(value));</span>
+<span class="source-line-no">627</span><span id="line-627"> break;</span>
+<span class="source-line-no">628</span><span id="line-628"> case PrefixFilter:</span>
+<span class="source-line-no">629</span><span id="line-629"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">630</span><span id="line-630"> break;</span>
+<span class="source-line-no">631</span><span id="line-631"> case QualifierFilter:</span>
+<span class="source-line-no">632</span><span id="line-632"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">633</span><span id="line-633"> break;</span>
+<span class="source-line-no">634</span><span id="line-634"> case RandomRowFilter:</span>
+<span class="source-line-no">635</span><span id="line-635"> filter = new RandomRowFilter(chance);</span>
+<span class="source-line-no">636</span><span id="line-636"> break;</span>
+<span class="source-line-no">637</span><span id="line-637"> case RowFilter:</span>
+<span class="source-line-no">638</span><span id="line-638"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">639</span><span id="line-639"> break;</span>
+<span class="source-line-no">640</span><span id="line-640"> case SingleColumnValueFilter:</span>
+<span class="source-line-no">641</span><span id="line-641"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">642</span><span id="line-642"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
+<span class="source-line-no">643</span><span id="line-643"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">644</span><span id="line-644"> if (ifMissing != null) {</span>
+<span class="source-line-no">645</span><span id="line-645"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
+<span class="source-line-no">646</span><span id="line-646"> }</span>
+<span class="source-line-no">647</span><span id="line-647"> if (latestVersion != null) {</span>
+<span class="source-line-no">648</span><span id="line-648"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
+<span class="source-line-no">649</span><span id="line-649"> }</span>
+<span class="source-line-no">650</span><span id="line-650"> break;</span>
+<span class="source-line-no">651</span><span id="line-651"> case SingleColumnValueExcludeFilter:</span>
+<span class="source-line-no">652</span><span id="line-652"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">653</span><span id="line-653"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
+<span class="source-line-no">654</span><span id="line-654"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">655</span><span id="line-655"> if (ifMissing != null) {</span>
+<span class="source-line-no">656</span><span id="line-656"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
+<span class="source-line-no">657</span><span id="line-657"> }</span>
+<span class="source-line-no">658</span><span id="line-658"> if (latestVersion != null) {</span>
+<span class="source-line-no">659</span><span id="line-659"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
+<span class="source-line-no">660</span><span id="line-660"> }</span>
+<span class="source-line-no">661</span><span id="line-661"> break;</span>
+<span class="source-line-no">662</span><span id="line-662"> case SkipFilter:</span>
+<span class="source-line-no">663</span><span id="line-663"> filter = new SkipFilter(filters.get(0).build());</span>
+<span class="source-line-no">664</span><span id="line-664"> break;</span>
+<span class="source-line-no">665</span><span id="line-665"> case TimestampsFilter:</span>
+<span class="source-line-no">666</span><span id="line-666"> filter = new TimestampsFilter(timestamps);</span>
+<span class="source-line-no">667</span><span id="line-667"> break;</span>
+<span class="source-line-no">668</span><span id="line-668"> case ValueFilter:</span>
+<span class="source-line-no">669</span><span id="line-669"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">670</span><span id="line-670"> break;</span>
+<span class="source-line-no">671</span><span id="line-671"> case WhileMatchFilter:</span>
+<span class="source-line-no">672</span><span id="line-672"> filter = new WhileMatchFilter(filters.get(0).build());</span>
+<span class="source-line-no">673</span><span id="line-673"> break;</span>
+<span class="source-line-no">674</span><span id="line-674"> case FuzzyRowFilter: {</span>
+<span class="source-line-no">675</span><span id="line-675"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
+<span class="source-line-no">676</span><span id="line-676"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
+<span class="source-line-no">677</span><span id="line-677"> fuzzyKeyArgs.add(keyModel.build());</span>
+<span class="source-line-no">678</span><span id="line-678"> }</span>
+<span class="source-line-no">679</span><span id="line-679"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
+<span class="source-line-no">680</span><span id="line-680"> }</span>
+<span class="source-line-no">681</span><span id="line-681"> break;</span>
+<span class="source-line-no">682</span><span id="line-682"> default:</span>
+<span class="source-line-no">683</span><span id="line-683"> throw new RuntimeException("unhandled filter type: " + type);</span>
+<span class="source-line-no">684</span><span id="line-684"> }</span>
+<span class="source-line-no">685</span><span id="line-685"> return filter;</span>
+<span class="source-line-no">686</span><span id="line-686"> }</span>
+<span class="source-line-no">687</span><span id="line-687"></span>
+<span class="source-line-no">688</span><span id="line-688"> }</span>
+<span class="source-line-no">689</span><span id="line-689"></span>
+<span class="source-line-no">690</span><span id="line-690"> /**</span>
+<span class="source-line-no">691</span><span id="line-691"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
+<span class="source-line-no">692</span><span id="line-692"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
+<span class="source-line-no">693</span><span id="line-693"> */</span>
+<span class="source-line-no">694</span><span id="line-694"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
+<span class="source-line-no">695</span><span id="line-695"> return JaxbJsonProviderHolder.INSTANCE;</span>
+<span class="source-line-no">696</span><span id="line-696"> }</span>
+<span class="source-line-no">697</span><span id="line-697"></span>
+<span class="source-line-no">698</span><span id="line-698"> /**</span>
+<span class="source-line-no">699</span><span id="line-699"> * @param s the JSON representation of the filter</span>
+<span class="source-line-no">700</span><span id="line-700"> * @return the filter</span>
+<span class="source-line-no">701</span><span id="line-701"> */</span>
+<span class="source-line-no">702</span><span id="line-702"> public static Filter buildFilter(String s) throws Exception {</span>
+<span class="source-line-no">703</span><span id="line-703"> FilterModel model =</span>
+<span class="source-line-no">704</span><span id="line-704"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
+<span class="source-line-no">705</span><span id="line-705"> .readValue(s, FilterModel.class);</span>
+<span class="source-line-no">706</span><span id="line-706"> return model.build();</span>
+<span class="source-line-no">707</span><span id="line-707"> }</span>
+<span class="source-line-no">708</span><span id="line-708"></span>
+<span class="source-line-no">709</span><span id="line-709"> /**</span>
+<span class="source-line-no">710</span><span id="line-710"> * @param filter the filter</span>
+<span class="source-line-no">711</span><span id="line-711"> * @return the JSON representation of the filter</span>
+<span class="source-line-no">712</span><span id="line-712"> */</span>
+<span class="source-line-no">713</span><span id="line-713"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
+<span class="source-line-no">714</span><span id="line-714"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
+<span class="source-line-no">715</span><span id="line-715"> .writeValueAsString(new FilterModel(filter));</span>
+<span class="source-line-no">716</span><span id="line-716"> }</span>
+<span class="source-line-no">717</span><span id="line-717"></span>
+<span class="source-line-no">718</span><span id="line-718"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
+<span class="source-line-no">719</span><span id="line-719"></span>
+<span class="source-line-no">720</span><span id="line-720"> /**</span>
+<span class="source-line-no">721</span><span id="line-721"> * @param scan the scan specification</span>
+<span class="source-line-no">722</span><span id="line-722"> */</span>
+<span class="source-line-no">723</span><span id="line-723"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
+<span class="source-line-no">724</span><span id="line-724"> ScannerModel model = new ScannerModel();</span>
+<span class="source-line-no">725</span><span id="line-725"> model.setStartRow(scan.getStartRow());</span>
+<span class="source-line-no">726</span><span id="line-726"> model.setEndRow(scan.getStopRow());</span>
+<span class="source-line-no">727</span><span id="line-727"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
+<span class="source-line-no">728</span><span id="line-728"> if (families != null) {</span>
+<span class="source-line-no">729</span><span id="line-729"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
+<span class="source-line-no">730</span><span id="line-730"> if (entry.getValue() != null) {</span>
+<span class="source-line-no">731</span><span id="line-731"> for (byte[] qualifier : entry.getValue()) {</span>
+<span class="source-line-no">732</span><span id="line-732"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
+<span class="source-line-no">733</span><span id="line-733"> }</span>
+<span class="source-line-no">734</span><span id="line-734"> } else {</span>
+<span class="source-line-no">735</span><span id="line-735"> model.addColumn(entry.getKey());</span>
+<span class="source-line-no">736</span><span id="line-736"> }</span>
+<span class="source-line-no">737</span><span id="line-737"> }</span>
+<span class="source-line-no">738</span><span id="line-738"> }</span>
+<span class="source-line-no">739</span><span id="line-739"> model.setStartTime(scan.getTimeRange().getMin());</span>
+<span class="source-line-no">740</span><span id="line-740"> model.setEndTime(scan.getTimeRange().getMax());</span>
+<span class="source-line-no">741</span><span id="line-741"> int caching = scan.getCaching();</span>
+<span class="source-line-no">742</span><span id="line-742"> if (caching > 0) {</span>
+<span class="source-line-no">743</span><span id="line-743"> model.setCaching(caching);</span>
+<span class="source-line-no">744</span><span id="line-744"> }</span>
+<span class="source-line-no">745</span><span id="line-745"> int batch = scan.getBatch();</span>
+<span class="source-line-no">746</span><span id="line-746"> if (batch > 0) {</span>
+<span class="source-line-no">747</span><span id="line-747"> model.setBatch(batch);</span>
+<span class="source-line-no">748</span><span id="line-748"> }</span>
+<span class="source-line-no">749</span><span id="line-749"> int maxVersions = scan.getMaxVersions();</span>
+<span class="source-line-no">750</span><span id="line-750"> if (maxVersions > 0) {</span>
+<span class="source-line-no">751</span><span id="line-751"> model.setMaxVersions(maxVersions);</span>
+<span class="source-line-no">752</span><span id="line-752"> }</span>
+<span class="source-line-no">753</span><span id="line-753"> if (scan.getLimit() > 0) {</span>
+<span class="source-line-no">754</span><span id="line-754"> model.setLimit(scan.getLimit());</span>
+<span class="source-line-no">755</span><span id="line-755"> }</span>
+<span class="source-line-no">756</span><span id="line-756"> Filter filter = scan.getFilter();</span>
+<span class="source-line-no">757</span><span id="line-757"> if (filter != null) {</span>
+<span class="source-line-no">758</span><span id="line-758"> model.setFilter(stringifyFilter(filter));</span>
+<span class="source-line-no">759</span><span id="line-759"> }</span>
+<span class="source-line-no">760</span><span id="line-760"> // Add the visbility labels if found in the attributes</span>
+<span class="source-line-no">761</span><span id="line-761"> Authorizations authorizations = scan.getAuthorizations();</span>
+<span class="source-line-no">762</span><span id="line-762"> if (authorizations != null) {</span>
+<span class="source-line-no">763</span><span id="line-763"> List<String> labels = authorizations.getLabels();</span>
+<span class="source-line-no">764</span><span id="line-764"> for (String label : labels) {</span>
+<span class="source-line-no">765</span><span id="line-765"> model.addLabel(label);</span>
+<span class="source-line-no">766</span><span id="line-766"> }</span>
+<span class="source-line-no">767</span><span id="line-767"> }</span>
+<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStartRow(scan.includeStartRow());</span>
+<span class="source-line-no">769</span><span id="line-769"> model.setIncludeStopRow(scan.includeStopRow());</span>
+<span class="source-line-no">770</span><span id="line-770"> return model;</span>
+<span class="source-line-no">771</span><span id="line-771"> }</span>
+<span class="source-line-no">772</span><span id="line-772"></span>
+<span class="source-line-no">773</span><span id="line-773"> /**</span>
+<span class="source-line-no">774</span><span id="line-774"> * Default constructor</span>
+<span class="source-line-no">775</span><span id="line-775"> */</span>
+<span class="source-line-no">776</span><span id="line-776"> public ScannerModel() {</span>
+<span class="source-line-no">777</span><span id="line-777"> }</span>
+<span class="source-line-no">778</span><span id="line-778"></span>
+<span class="source-line-no">779</span><span id="line-779"> /**</span>
+<span class="source-line-no">780</span><span id="line-780"> * Constructor</span>
+<span class="source-line-no">781</span><span id="line-781"> * @param startRow the start key of the row-range</span>
+<span class="source-line-no">782</span><span id="line-782"> * @param endRow the end key of the row-range</span>
+<span class="source-line-no">783</span><span id="line-783"> * @param columns the columns to scan</span>
+<span class="source-line-no">784</span><span id="line-784"> * @param batch the number of values to return in batch</span>
+<span class="source-line-no">785</span><span id="line-785"> * @param caching the number of rows that the scanner will fetch at once</span>
+<span class="source-line-no">786</span><span id="line-786"> * @param endTime the upper bound on timestamps of values of interest</span>
+<span class="source-line-no">787</span><span id="line-787"> * @param maxVersions the maximum number of versions to return</span>
+<span class="source-line-no">788</span><span id="line-788"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
+<span class="source-line-no">789</span><span id="line-789"> */</span>
+<span class="source-line-no">790</span><span id="line-790"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
+<span class="source-line-no">791</span><span id="line-791"> long endTime, int maxVersions, String filter) {</span>
+<span class="source-line-no">792</span><span id="line-792"> super();</span>
+<span class="source-line-no">793</span><span id="line-793"> this.startRow = startRow;</span>
+<span class="source-line-no">794</span><span id="line-794"> this.endRow = endRow;</span>
+<span class="source-line-no">795</span><span id="line-795"> this.columns = columns;</span>
+<span class="source-line-no">796</span><span id="line-796"> this.batch = batch;</span>
+<span class="source-line-no">797</span><span id="line-797"> this.caching = caching;</span>
+<span class="source-line-no">798</span><span id="line-798"> this.endTime = endTime;</span>
+<span class="source-line-no">799</span><span id="line-799"> this.maxVersions = maxVersions;</span>
+<span class="source-line-no">800</span><span id="line-800"> this.filter = filter;</span>
+<span class="source-line-no">801</span><span id="line-801"> }</span>
+<span class="source-line-no">802</span><span id="line-802"></span>
+<span class="source-line-no">803</span><span id="line-803"> /**</span>
+<span class="source-line-no">804</span><span id="line-804"> * Constructor</span>
+<span class="source-line-no">805</span><span id="line-805"> * @param startRow the start key of the row-range</span>
+<span class="source-line-no">806</span><span id="line-806"> * @param endRow the end key of the row-range</span>
+<span class="source-line-no">807</span><span id="line-807"> * @param columns the columns to scan</span>
+<span class="source-line-no">808</span><span id="line-808"> * @param batch the number of values to return in batch</span>
+<span class="source-line-no">809</span><span id="line-809"> * @param caching the number of rows that the scanner will fetch at once</span>
+<span class="source-line-no">810</span><span id="line-810"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
+<span class="source-line-no">811</span><span id="line-811"> * earlier than this are excluded)</span>
+<span class="source-line-no">812</span><span id="line-812"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
+<span class="source-line-no">813</span><span id="line-813"> * later than this are excluded)</span>
+<span class="source-line-no">814</span><span id="line-814"> * @param filter a filter specification</span>
+<span class="source-line-no">815</span><span id="line-815"> */</span>
+<span class="source-line-no">816</span><span id="line-816"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
+<span class="source-line-no">817</span><span id="line-817"> long startTime, long endTime, String filter) {</span>
+<span class="source-line-no">818</span><span id="line-818"> super();</span>
+<span class="source-line-no">819</span><span id="line-819"> this.startRow = startRow;</span>
+<span class="source-line-no">820</span><span id="line-820"> this.endRow = endRow;</span>
+<span class="source-line-no">821</span><span id="line-821"> this.columns = columns;</span>
+<span class="source-line-no">822</span><span id="line-822"> this.batch = batch;</span>
+<span class="source-line-no">823</span><span id="line-823"> this.caching = caching;</span>
+<span class="source-line-no">824</span><span id="line-824"> this.startTime = startTime;</span>
+<span class="source-line-no">825</span><span id="line-825"> this.endTime = endTime;</span>
+<span class="source-line-no">826</span><span id="line-826"> this.filter = filter;</span>
+<span class="source-line-no">827</span><span id="line-827"> }</span>
+<span class="source-line-no">828</span><span id="line-828"></span>
+<span class="source-line-no">829</span><span id="line-829"> /**</span>
+<span class="source-line-no">830</span><span id="line-830"> * Add a column to the column set</span>
+<span class="source-line-no">831</span><span id="line-831"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
+<span class="source-line-no">832</span><span id="line-832"> */</span>
+<span class="source-line-no">833</span><span id="line-833"> public void addColumn(byte[] column) {</span>
+<span class="source-line-no">834</span><span id="line-834"> columns.add(column);</span>
+<span class="source-line-no">835</span><span id="line-835"> }</span>
+<span class="source-line-no">836</span><span id="line-836"></span>
+<span class="source-line-no">837</span><span id="line-837"> /**</span>
+<span class="source-line-no">838</span><span id="line-838"> * Add a visibility label to the scan</span>
+<span class="source-line-no">839</span><span id="line-839"> */</span>
+<span class="source-line-no">840</span><span id="line-840"> public void addLabel(String label) {</span>
+<span class="source-line-no">841</span><span id="line-841"> labels.add(label);</span>
+<span class="source-line-no">842</span><span id="line-842"> }</span>
+<span class="source-line-no">843</span><span id="line-843"></span>
+<span class="source-line-no">844</span><span id="line-844"> /** Returns true if a start row was specified */</span>
+<span class="source-line-no">845</span><span id="line-845"> public boolean hasStartRow() {</span>
+<span class="source-line-no">846</span><span id="line-846"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
+<span class="source-line-no">847</span><span id="line-847"> }</span>
+<span class="source-line-no">848</span><span id="line-848"></span>
+<span class="source-line-no">849</span><span id="line-849"> /** Returns start row */</span>
+<span class="source-line-no">850</span><span id="line-850"> @XmlAttribute</span>
+<span class="source-line-no">851</span><span id="line-851"> public byte[] getStartRow() {</span>
+<span class="source-line-no">852</span><span id="line-852"> return startRow;</span>
+<span class="source-line-no">853</span><span id="line-853"> }</span>
+<span class="source-line-no">854</span><span id="line-854"></span>
+<span class="source-line-no">855</span><span id="line-855"> /** Returns true if an end row was specified */</span>
+<span class="source-line-no">856</span><span id="line-856"> public boolean hasEndRow() {</span>
+<span class="source-line-no">857</span><span id="line-857"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
+<span class="source-line-no">858</span><span id="line-858"> }</span>
+<span class="source-line-no">859</span><span id="line-859"></span>
+<span class="source-line-no">860</span><span id="line-860"> /** Returns end row */</span>
+<span class="source-line-no">861</span><span id="line-861"> @XmlAttribute</span>
+<span class="source-line-no">862</span><span id="line-862"> public byte[] getEndRow() {</span>
+<span class="source-line-no">863</span><span id="line-863"> return endRow;</span>
+<span class="source-line-no">864</span><span id="line-864"> }</span>
+<span class="source-line-no">865</span><span id="line-865"></span>
+<span class="source-line-no">866</span><span id="line-866"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
+<span class="source-line-no">867</span><span id="line-867"> @XmlElement(name = "column")</span>
+<span class="source-line-no">868</span><span id="line-868"> public List<byte[]> getColumns() {</span>
+<span class="source-line-no">869</span><span id="line-869"> return columns;</span>
+<span class="source-line-no">870</span><span id="line-870"> }</span>
+<span class="source-line-no">871</span><span id="line-871"></span>
+<span class="source-line-no">872</span><span id="line-872"> @XmlElement(name = "labels")</span>
+<span class="source-line-no">873</span><span id="line-873"> public List<String> getLabels() {</span>
+<span class="source-line-no">874</span><span id="line-874"> return labels;</span>
+<span class="source-line-no">875</span><span id="line-875"> }</span>
+<span class="source-line-no">876</span><span id="line-876"></span>
+<span class="source-line-no">877</span><span id="line-877"> /** Returns the number of cells to return in batch */</span>
+<span class="source-line-no">878</span><span id="line-878"> @XmlAttribute</span>
+<span class="source-line-no">879</span><span id="line-879"> public int getBatch() {</span>
+<span class="source-line-no">880</span><span id="line-880"> return batch;</span>
+<span class="source-line-no">881</span><span id="line-881"> }</span>
+<span class="source-line-no">882</span><span id="line-882"></span>
+<span class="source-line-no">883</span><span id="line-883"> /** Returns the number of rows that the scanner to fetch at once */</span>
+<span class="source-line-no">884</span><span id="line-884"> @XmlAttribute</span>
+<span class="source-line-no">885</span><span id="line-885"> public int getCaching() {</span>
+<span class="source-line-no">886</span><span id="line-886"> return caching;</span>
+<span class="source-line-no">887</span><span id="line-887"> }</span>
+<span class="source-line-no">888</span><span id="line-888"></span>
+<span class="source-line-no">889</span><span id="line-889"> /** Returns the limit specification */</span>
+<span class="source-line-no">890</span><span id="line-890"> @XmlAttribute</span>
+<span class="source-line-no">891</span><span id="line-891"> public int getLimit() {</span>
+<span class="source-line-no">892</span><span id="line-892"> return limit;</span>
+<span class="source-line-no">893</span><span id="line-893"> }</span>
+<span class="source-line-no">894</span><span id="line-894"></span>
+<span class="source-line-no">895</span><span id="line-895"> /** Returns true if HFile blocks should be cached on the servers for this scan, false otherwise */</span>
+<span class="source-line-no">896</span><span id="line-896"> @XmlAttribute</span>
+<span class="source-line-no">897</span><span id="line-897"> public boolean getCacheBlocks() {</span>
+<span class="source-line-no">898</span><span id="line-898"> return cacheBlocks;</span>
+<span class="source-line-no">899</span><span id="line-899"> }</span>
+<span class="source-line-no">900</span><span id="line-900"></span>
+<span class="source-line-no">901</span><span id="line-901"> /** Returns the lower bound on timestamps of items of interest */</span>
+<span class="source-line-no">902</span><span id="line-902"> @XmlAttribute</span>
+<span class="source-line-no">903</span><span id="line-903"> public long getStartTime() {</span>
+<span class="source-line-no">904</span><span id="line-904"> return startTime;</span>
+<span class="source-line-no">905</span><span id="line-905"> }</span>
+<span class="source-line-no">906</span><span id="line-906"></span>
+<span class="source-line-no">907</span><span id="line-907"> /** Returns the upper bound on timestamps of items of interest */</span>
+<span class="source-line-no">908</span><span id="line-908"> @XmlAttribute</span>
+<span class="source-line-no">909</span><span id="line-909"> public long getEndTime() {</span>
+<span class="source-line-no">910</span><span id="line-910"> return endTime;</span>
+<span class="source-line-no">911</span><span id="line-911"> }</span>
+<span class="source-line-no">912</span><span id="line-912"></span>
+<span class="source-line-no">913</span><span id="line-913"> /** Returns maximum number of versions to return */</span>
+<span class="source-line-no">914</span><span id="line-914"> @XmlAttribute</span>
+<span class="source-line-no">915</span><span id="line-915"> public int getMaxVersions() {</span>
+<span class="source-line-no">916</span><span id="line-916"> return maxVersions;</span>
+<span class="source-line-no">917</span><span id="line-917"> }</span>
+<span class="source-line-no">918</span><span id="line-918"></span>
+<span class="source-line-no">919</span><span id="line-919"> /** Returns the filter specification */</span>
+<span class="source-line-no">920</span><span id="line-920"> @XmlElement</span>
+<span class="source-line-no">921</span><span id="line-921"> public String getFilter() {</span>
+<span class="source-line-no">922</span><span id="line-922"> return filter;</span>
+<span class="source-line-no">923</span><span id="line-923"> }</span>
+<span class="source-line-no">924</span><span id="line-924"></span>
+<span class="source-line-no">925</span><span id="line-925"> /**</span>
+<span class="source-line-no">926</span><span id="line-926"> * @param startRow start row</span>
+<span class="source-line-no">927</span><span id="line-927"> */</span>
+<span class="source-line-no">928</span><span id="line-928"> public void setStartRow(byte[] startRow) {</span>
+<span class="source-line-no">929</span><span id="line-929"> this.startRow = startRow;</span>
+<span class="source-line-no">930</span><span id="line-930"> }</span>
+<span class="source-line-no">931</span><span id="line-931"></span>
+<span class="source-line-no">932</span><span id="line-932"> /**</span>
+<span class="source-line-no">933</span><span id="line-933"> * @param endRow end row</span>
+<span class="source-line-no">934</span><span id="line-934"> */</span>
+<span class="source-line-no">935</span><span id="line-935"> public void setEndRow(byte[] endRow) {</span>
+<span class="source-line-no">936</span><span id="line-936"> this.endRow = endRow;</span>
+<span class="source-line-no">937</span><span id="line-937"> }</span>
+<span class="source-line-no">938</span><span id="line-938"></span>
+<span class="source-line-no">939</span><span id="line-939"> /**</span>
+<span class="source-line-no">940</span><span id="line-940"> * @param columns list of columns of interest in column:qualifier format, or empty for all</span>
+<span class="source-line-no">941</span><span id="line-941"> */</span>
+<span class="source-line-no">942</span><span id="line-942"> public void setColumns(List<byte[]> columns) {</span>
+<span class="source-line-no">943</span><span id="line-943"> this.columns = columns;</span>
+<span class="source-line-no">944</span><span id="line-944"> }</span>
+<span class="source-line-no">945</span><span id="line-945"></span>
+<span class="source-line-no">946</span><span id="line-946"> /**</span>
+<span class="source-line-no">947</span><span id="line-947"> * @param batch the number of cells to return in batch</span>
+<span class="source-line-no">948</span><span id="line-948"> */</span>
+<span class="source-line-no">949</span><span id="line-949"> public void setBatch(int batch) {</span>
+<span class="source-line-no">950</span><span id="line-950"> this.batch = batch;</span>
+<span class="source-line-no">951</span><span id="line-951"> }</span>
+<span class="source-line-no">952</span><span id="line-952"></span>
+<span class="source-line-no">953</span><span id="line-953"> /**</span>
+<span class="source-line-no">954</span><span id="line-954"> * @param caching the number of rows to fetch at once</span>
+<span class="source-line-no">955</span><span id="line-955"> */</span>
+<span class="source-line-no">956</span><span id="line-956"> public void setCaching(int caching) {</span>
+<span class="source-line-no">957</span><span id="line-957"> this.caching = caching;</span>
+<span class="source-line-no">958</span><span id="line-958"> }</span>
+<span class="source-line-no">959</span><span id="line-959"></span>
+<span class="source-line-no">960</span><span id="line-960"> /**</span>
+<span class="source-line-no">961</span><span id="line-961"> * @param value true if HFile blocks should be cached on the servers for this scan, false</span>
+<span class="source-line-no">962</span><span id="line-962"> * otherwise</span>
+<span class="source-line-no">963</span><span id="line-963"> */</span>
+<span class="source-line-no">964</span><span id="line-964"> public void setCacheBlocks(boolean value) {</span>
+<span class="source-line-no">965</span><span id="line-965"> this.cacheBlocks = value;</span>
+<span class="source-line-no">966</span><span id="line-966"> }</span>
+<span class="source-line-no">967</span><span id="line-967"></span>
+<span class="source-line-no">968</span><span id="line-968"> /**</span>
+<span class="source-line-no">969</span><span id="line-969"> * @param limit the number of rows can fetch of each scanner at lifetime</span>
+<span class="source-line-no">970</span><span id="line-970"> */</span>
+<span class="source-line-no">971</span><span id="line-971"> public void setLimit(int limit) {</span>
+<span class="source-line-no">972</span><span id="line-972"> this.limit = limit;</span>
+<span class="source-line-no">973</span><span id="line-973"> }</span>
+<span class="source-line-no">974</span><span id="line-974"></span>
+<span class="source-line-no">975</span><span id="line-975"> /**</span>
+<span class="source-line-no">976</span><span id="line-976"> * @param maxVersions maximum number of versions to return</span>
+<span class="source-line-no">977</span><span id="line-977"> */</span>
+<span class="source-line-no">978</span><span id="line-978"> public void setMaxVersions(int maxVersions) {</span>
+<span class="source-line-no">979</span><span id="line-979"> this.maxVersions = maxVersions;</span>
+<span class="source-line-no">980</span><span id="line-980"> }</span>
+<span class="source-line-no">981</span><span id="line-981"></span>
+<span class="source-line-no">982</span><span id="line-982"> /**</span>
+<span class="source-line-no">983</span><span id="line-983"> * @param startTime the lower bound on timestamps of values of interest</span>
+<span class="source-line-no">984</span><span id="line-984"> */</span>
+<span class="source-line-no">985</span><span id="line-985"> public void setStartTime(long startTime) {</span>
+<span class="source-line-no">986</span><span id="line-986"> this.startTime = startTime;</span>
+<span class="source-line-no">987</span><span id="line-987"> }</span>
+<span class="source-line-no">988</span><span id="line-988"></span>
+<span class="source-line-no">989</span><span id="line-989"> /**</span>
+<span class="source-line-no">990</span><span id="line-990"> * @param endTime the upper bound on timestamps of values of interest</span>
+<span class="source-line-no">991</span><span id="line-991"> */</span>
+<span class="source-line-no">992</span><span id="line-992"> public void setEndTime(long endTime) {</span>
+<span class="source-line-no">993</span><span id="line-993"> this.endTime = endTime;</span>
+<span class="source-line-no">994</span><span id="line-994"> }</span>
+<span class="source-line-no">995</span><span id="line-995"></span>
+<span class="source-line-no">996</span><span id="line-996"> /**</span>
+<span class="source-line-no">997</span><span id="line-997"> * @param filter the filter specification</span>
+<span class="source-line-no">998</span><span id="line-998"> */</span>
+<span class="source-line-no">999</span><span id="line-999"> public void setFilter(String filter) {</span>
+<span class="source-line-no">1000</span><span id="line-1000"> this.filter = filter;</span>
+<span class="source-line-no">1001</span><span id="line-1001"> }</span>
+<span class="source-line-no">1002</span><span id="line-1002"></span>
+<span class="source-line-no">1003</span><span id="line-1003"> @Override</span>
+<span class="source-line-no">1004</span><span id="line-1004"> public Message messageFromObject() {</span>
+<span class="source-line-no">1005</span><span id="line-1005"> Scanner.Builder builder = Scanner.newBuilder();</span>
+<span class="source-line-no">1006</span><span id="line-1006"> if (!Bytes.equals(startRow, HConstants.EMPTY_START_ROW)) {</span>
+<span class="source-line-no">1007</span><span id="line-1007"> builder.setStartRow(UnsafeByteOperations.unsafeWrap(startRow));</span>
+<span class="source-line-no">1008</span><span id="line-1008"> }</span>
+<span class="source-line-no">1009</span><span id="line-1009"> if (!Bytes.equals(endRow, HConstants.EMPTY_START_ROW)) {</span>
+<span class="source-line-no">1010</span><span id="line-1010"> builder.setEndRow(UnsafeByteOperations.unsafeWrap(endRow));</span>
+<span class="source-line-no">1011</span><span id="line-1011"> }</span>
+<span class="source-line-no">1012</span><span id="line-1012"> for (byte[] column : columns) {</span>
+<span class="source-line-no">1013</span><span id="line-1013"> builder.addColumns(UnsafeByteOperations.unsafeWrap(column));</span>
+<span class="source-line-no">1014</span><span id="line-1014"> }</span>
+<span class="source-line-no">1015</span><span id="line-1015"> if (startTime != 0) {</span>
+<span class="source-line-no">1016</span><span id="line-1016"> builder.setStartTime(startTime);</span>
+<span class="source-line-no">1017</span><span id="line-1017"> }</span>
+<span class="source-line-no">1018</span><span id="line-1018"> if (endTime != 0) {</span>
+<span class="source-line-no">1019</span><span id="line-1019"> builder.setEndTime(endTime);</span>
+<span class="source-line-no">1020</span><span id="line-1020"> }</span>
+<span class="source-line-no">1021</span><span id="line-1021"> builder.setBatch(getBatch());</span>
+<span class="source-line-no">1022</span><span id="line-1022"> if (caching > 0) {</span>
+<span class="source-line-no">1023</span><span id="line-1023"> builder.setCaching(caching);</span>
+<span class="source-line-no">1024</span><span id="line-1024"> }</span>
+<span class="source-line-no">1025</span><span id="line-1025"> if (limit > 0) {</span>
+<span class="source-line-no">1026</span><span id="line-1026"> builder.setLimit(limit);</span>
+<span class="source-line-no">1027</span><span id="line-1027"> }</span>
+<span class="source-line-no">1028</span><span id="line-1028"> builder.setMaxVersions(maxVersions);</span>
+<span class="source-line-no">1029</span><span id="line-1029"> if (filter != null) {</span>
+<span class="source-line-no">1030</span><span id="line-1030"> builder.setFilter(filter);</span>
+<span class="source-line-no">1031</span><span id="line-1031"> }</span>
+<span class="source-line-no">1032</span><span id="line-1032"> if (labels != null && labels.size() > 0) {</span>
+<span class="source-line-no">1033</span><span id="line-1033"> for (String label : labels)</span>
+<span class="source-line-no">1034</span><span id="line-1034"> builder.addLabels(label);</span>
+<span class="source-line-no">1035</span><span id="line-1035"> }</span>
+<span class="source-line-no">1036</span><span id="line-1036"> builder.setCacheBlocks(cacheBlocks);</span>
+<span class="source-line-no">1037</span><span id="line-1037"> builder.setIncludeStartRow(includeStartRow);</span>
+<span class="source-line-no">1038</span><span id="line-1038"> builder.setIncludeStopRow(includeStopRow);</span>
+<span class="source-line-no">1039</span><span id="line-1039"> return builder.build();</span>
+<span class="source-line-no">1040</span><span id="line-1040"> }</span>
+<span class="source-line-no">1041</span><span id="line-1041"></span>
+<span class="source-line-no">1042</span><span id="line-1042"> @Override</span>
+<span class="source-line-no">1043</span><span id="line-1043"> public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws IOException {</span>
+<span class="source-line-no">1044</span><span id="line-1044"> Scanner.Builder builder = Scanner.newBuilder();</span>
+<span class="source-line-no">1045</span><span id="line-1045"> RestUtil.mergeFrom(builder, cis);</span>
+<span class="source-line-no">1046</span><span id="line-1046"> if (builder.hasStartRow()) {</span>
+<span class="source-line-no">1047</span><span id="line-1047"> startRow = builder.getStartRow().toByteArray();</span>
+<span class="source-line-no">1048</span><span id="line-1048"> }</span>
+<span class="source-line-no">1049</span><span id="line-1049"> if (builder.hasEndRow()) {</span>
+<span class="source-line-no">1050</span><span id="line-1050"> endRow = builder.getEndRow().toByteArray();</span>
+<span class="source-line-no">1051</span><span id="line-1051"> }</span>
+<span class="source-line-no">1052</span><span id="line-1052"> for (ByteString column : builder.getColumnsList()) {</span>
+<span class="source-line-no">1053</span><span id="line-1053"> addColumn(column.toByteArray());</span>
+<span class="source-line-no">1054</span><span id="line-1054"> }</span>
+<span class="source-line-no">1055</span><span id="line-1055"> if (builder.hasBatch()) {</span>
+<span class="source-line-no">1056</span><span id="line-1056"> batch = builder.getBatch();</span>
+<span class="source-line-no">1057</span><span id="line-1057"> }</span>
+<span class="source-line-no">1058</span><span id="line-1058"> if (builder.hasCaching()) {</span>
+<span class="source-line-no">1059</span><span id="line-1059"> caching = builder.getCaching();</span>
+<span class="source-line-no">1060</span><span id="line-1060"> }</span>
+<span class="source-line-no">1061</span><span id="line-1061"> if (builder.hasLimit()) {</span>
+<span class="source-line-no">1062</span><span id="line-1062"> limit = builder.getLimit();</span>
+<span class="source-line-no">1063</span><span id="line-1063"> }</span>
+<span class="source-line-no">1064</span><span id="line-1064"> if (builder.hasStartTime()) {</span>
+<span class="source-line-no">1065</span><span id="line-1065"> startTime = builder.getStartTime();</span>
+<span class="source-line-no">1066</span><span id="line-1066"> }</span>
+<span class="source-line-no">1067</span><span id="line-1067"> if (builder.hasEndTime()) {</span>
+<span class="source-line-no">1068</span><span id="line-1068"> endTime = builder.getEndTime();</span>
+<span class="source-line-no">1069</span><span id="line-1069"> }</span>
+<span class="source-line-no">1070</span><span id="line-1070"> if (builder.hasMaxVersions()) {</span>
+<span class="source-line-no">1071</span><span id="line-1071"> maxVersions = builder.getMaxVersions();</span>
+<span class="source-line-no">1072</span><span id="line-1072"> }</span>
+<span class="source-line-no">1073</span><span id="line-1073"> if (builder.hasFilter()) {</span>
+<span class="source-line-no">1074</span><span id="line-1074"> filter = builder.getFilter();</span>
+<span class="source-line-no">1075</span><span id="line-1075"> }</span>
+<span class="source-line-no">1076</span><span id="line-1076"> if (builder.getLabelsList() != null) {</span>
+<span class="source-line-no">1077</span><span id="line-1077"> List<String> labels = builder.getLabelsList();</span>
+<span class="source-line-no">1078</span><span id="line-1078"> for (String label : labels) {</span>
+<span class="source-line-no">1079</span><span id="line-1079"> addLabel(label);</span>
+<span class="source-line-no">1080</span><span id="line-1080"> }</span>
+<span class="source-line-no">1081</span><span id="line-1081"> }</span>
+<span class="source-line-no">1082</span><span id="line-1082"> if (builder.hasCacheBlocks()) {</span>
+<span class="source-line-no">1083</span><span id="line-1083"> this.cacheBlocks = builder.getCacheBlocks();</span>
+<span class="source-line-no">1084</span><span id="line-1084"> }</span>
+<span class="source-line-no">1085</span><span id="line-1085"> if (builder.hasIncludeStartRow()) {</span>
+<span class="source-line-no">1086</span><span id="line-1086"> this.includeStartRow = builder.getIncludeStartRow();</span>
+<span class="source-line-no">1087</span><span id="line-1087"> }</span>
+<span class="source-line-no">1088</span><span id="line-1088"> if (builder.hasIncludeStopRow()) {</span>
+<span class="source-line-no">1089</span><span id="line-1089"> this.includeStopRow = builder.getIncludeStopRow();</span>
+<span class="source-line-no">1090</span><span id="line-1090"> }</span>
+<span class="source-line-no">1091</span><span id="line-1091"> return this;</span>
+<span class="source-line-no">1092</span><span id="line-1092"> }</span>
+<span class="source-line-no">1093</span><span id="line-1093"></span>
+<span class="source-line-no">1094</span><span id="line-1094">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html
index c50390d7d7b..51944616e8a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.html
@@ -159,951 +159,952 @@
<span class="source-line-no">146</span><span id="line-146"> }</span>
<span class="source-line-no">147</span><span id="line-147"></span>
<span class="source-line-no">148</span><span id="line-148"> @edu.umd.cs.findbugs.annotations.SuppressWarnings(</span>
-<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE" },</span>
-<span class="source-line-no">150</span><span id="line-150"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
-<span class="source-line-no">151</span><span id="line-151"> private static class IncludeStartRowFilter {</span>
-<span class="source-line-no">152</span><span id="line-152"> @Override</span>
-<span class="source-line-no">153</span><span id="line-153"> public boolean equals(Object value) {</span>
-<span class="source-line-no">154</span><span id="line-154"> return Boolean.TRUE.equals(value);</span>
-<span class="source-line-no">155</span><span id="line-155"> }</span>
-<span class="source-line-no">156</span><span id="line-156"> }</span>
-<span class="source-line-no">157</span><span id="line-157"></span>
-<span class="source-line-no">158</span><span id="line-158"> /**</span>
-<span class="source-line-no">159</span><span id="line-159"> * Implement lazily-instantiated singleton as per recipe here:</span>
-<span class="source-line-no">160</span><span id="line-160"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
-<span class="source-line-no">161</span><span id="line-161"> */</span>
-<span class="source-line-no">162</span><span id="line-162"> private static class JaxbJsonProviderHolder {</span>
-<span class="source-line-no">163</span><span id="line-163"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
-<span class="source-line-no">164</span><span id="line-164"> }</span>
-<span class="source-line-no">165</span><span id="line-165"></span>
-<span class="source-line-no">166</span><span id="line-166"> @XmlRootElement</span>
-<span class="source-line-no">167</span><span id="line-167"> static class FilterModel {</span>
-<span class="source-line-no">168</span><span id="line-168"></span>
-<span class="source-line-no">169</span><span id="line-169"> @XmlRootElement</span>
-<span class="source-line-no">170</span><span id="line-170"> static class ByteArrayComparableModel {</span>
-<span class="source-line-no">171</span><span id="line-171"> @XmlAttribute</span>
-<span class="source-line-no">172</span><span id="line-172"> public String type;</span>
-<span class="source-line-no">173</span><span id="line-173"> @XmlAttribute</span>
-<span class="source-line-no">174</span><span id="line-174"> public String value;</span>
-<span class="source-line-no">175</span><span id="line-175"> @XmlAttribute</span>
-<span class="source-line-no">176</span><span id="line-176"> public String op;</span>
-<span class="source-line-no">177</span><span id="line-177"></span>
-<span class="source-line-no">178</span><span id="line-178"> static enum ComparatorType {</span>
-<span class="source-line-no">179</span><span id="line-179"> BinaryComparator,</span>
-<span class="source-line-no">180</span><span id="line-180"> BinaryPrefixComparator,</span>
-<span class="source-line-no">181</span><span id="line-181"> BitComparator,</span>
-<span class="source-line-no">182</span><span id="line-182"> NullComparator,</span>
-<span class="source-line-no">183</span><span id="line-183"> RegexStringComparator,</span>
-<span class="source-line-no">184</span><span id="line-184"> SubstringComparator</span>
-<span class="source-line-no">185</span><span id="line-185"> }</span>
-<span class="source-line-no">186</span><span id="line-186"></span>
-<span class="source-line-no">187</span><span id="line-187"> public ByteArrayComparableModel() {</span>
-<span class="source-line-no">188</span><span id="line-188"> }</span>
-<span class="source-line-no">189</span><span id="line-189"></span>
-<span class="source-line-no">190</span><span id="line-190"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
-<span class="source-line-no">191</span><span id="line-191"> String typeName = comparator.getClass().getSimpleName();</span>
-<span class="source-line-no">192</span><span id="line-192"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
-<span class="source-line-no">193</span><span id="line-193"> this.type = typeName;</span>
-<span class="source-line-no">194</span><span id="line-194"> switch (type) {</span>
-<span class="source-line-no">195</span><span id="line-195"> case BinaryComparator:</span>
-<span class="source-line-no">196</span><span id="line-196"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">197</span><span id="line-197"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">198</span><span id="line-198"> break;</span>
-<span class="source-line-no">199</span><span id="line-199"> case BitComparator:</span>
-<span class="source-line-no">200</span><span id="line-200"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">201</span><span id="line-201"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
-<span class="source-line-no">202</span><span id="line-202"> break;</span>
-<span class="source-line-no">203</span><span id="line-203"> case NullComparator:</span>
-<span class="source-line-no">204</span><span id="line-204"> break;</span>
-<span class="source-line-no">205</span><span id="line-205"> case RegexStringComparator:</span>
-<span class="source-line-no">206</span><span id="line-206"> case SubstringComparator:</span>
-<span class="source-line-no">207</span><span id="line-207"> this.value = Bytes.toString(comparator.getValue());</span>
-<span class="source-line-no">208</span><span id="line-208"> break;</span>
-<span class="source-line-no">209</span><span id="line-209"> default:</span>
-<span class="source-line-no">210</span><span id="line-210"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">211</span><span id="line-211"> }</span>
-<span class="source-line-no">212</span><span id="line-212"> }</span>
-<span class="source-line-no">213</span><span id="line-213"></span>
-<span class="source-line-no">214</span><span id="line-214"> public ByteArrayComparable build() {</span>
-<span class="source-line-no">215</span><span id="line-215"> ByteArrayComparable comparator;</span>
-<span class="source-line-no">216</span><span id="line-216"> switch (ComparatorType.valueOf(type)) {</span>
-<span class="source-line-no">217</span><span id="line-217"> case BinaryComparator:</span>
-<span class="source-line-no">218</span><span id="line-218"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">219</span><span id="line-219"> break;</span>
-<span class="source-line-no">220</span><span id="line-220"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">221</span><span id="line-221"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">222</span><span id="line-222"> break;</span>
-<span class="source-line-no">223</span><span id="line-223"> case BitComparator:</span>
-<span class="source-line-no">224</span><span id="line-224"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
-<span class="source-line-no">225</span><span id="line-225"> BitComparator.BitwiseOp.valueOf(op));</span>
-<span class="source-line-no">226</span><span id="line-226"> break;</span>
-<span class="source-line-no">227</span><span id="line-227"> case NullComparator:</span>
-<span class="source-line-no">228</span><span id="line-228"> comparator = new NullComparator();</span>
-<span class="source-line-no">229</span><span id="line-229"> break;</span>
-<span class="source-line-no">230</span><span id="line-230"> case RegexStringComparator:</span>
-<span class="source-line-no">231</span><span id="line-231"> comparator = new RegexStringComparator(value);</span>
-<span class="source-line-no">232</span><span id="line-232"> break;</span>
-<span class="source-line-no">233</span><span id="line-233"> case SubstringComparator:</span>
-<span class="source-line-no">234</span><span id="line-234"> comparator = new SubstringComparator(value);</span>
-<span class="source-line-no">235</span><span id="line-235"> break;</span>
-<span class="source-line-no">236</span><span id="line-236"> default:</span>
-<span class="source-line-no">237</span><span id="line-237"> throw new RuntimeException("unhandled comparator type: " + type);</span>
-<span class="source-line-no">238</span><span id="line-238"> }</span>
-<span class="source-line-no">239</span><span id="line-239"> return comparator;</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"></span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
-<span class="source-line-no">246</span><span id="line-246"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
-<span class="source-line-no">247</span><span id="line-247"> */</span>
-<span class="source-line-no">248</span><span id="line-248"> static class RowRangeModel {</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250"> protected byte[] startRow;</span>
-<span class="source-line-no">251</span><span id="line-251"></span>
-<span class="source-line-no">252</span><span id="line-252"> protected boolean startRowInclusive = true;</span>
-<span class="source-line-no">253</span><span id="line-253"></span>
-<span class="source-line-no">254</span><span id="line-254"> protected byte[] stopRow;</span>
-<span class="source-line-no">255</span><span id="line-255"></span>
-<span class="source-line-no">256</span><span id="line-256"> protected boolean stopRowInclusive = false;</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> public RowRangeModel() {</span>
-<span class="source-line-no">259</span><span id="line-259"> }</span>
-<span class="source-line-no">260</span><span id="line-260"></span>
-<span class="source-line-no">261</span><span id="line-261"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
-<span class="source-line-no">262</span><span id="line-262"> this.startRow = rr.getStartRow();</span>
-<span class="source-line-no">263</span><span id="line-263"> this.startRowInclusive = rr.isStartRowInclusive();</span>
-<span class="source-line-no">264</span><span id="line-264"> this.stopRow = rr.getStopRow();</span>
-<span class="source-line-no">265</span><span id="line-265"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
-<span class="source-line-no">266</span><span id="line-266"> }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268"> public MultiRowRangeFilter.RowRange build() {</span>
-<span class="source-line-no">269</span><span id="line-269"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
-<span class="source-line-no">270</span><span id="line-270"> stopRowInclusive);</span>
-<span class="source-line-no">271</span><span id="line-271"> }</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> public byte[] getStartRow() {</span>
-<span class="source-line-no">274</span><span id="line-274"> return startRow;</span>
-<span class="source-line-no">275</span><span id="line-275"> }</span>
-<span class="source-line-no">276</span><span id="line-276"></span>
-<span class="source-line-no">277</span><span id="line-277"> public byte[] getStopRow() {</span>
-<span class="source-line-no">278</span><span id="line-278"> return stopRow;</span>
-<span class="source-line-no">279</span><span id="line-279"> }</span>
-<span class="source-line-no">280</span><span id="line-280"></span>
-<span class="source-line-no">281</span><span id="line-281"> /** Returns if start row is inclusive. */</span>
-<span class="source-line-no">282</span><span id="line-282"> public boolean isStartRowInclusive() {</span>
-<span class="source-line-no">283</span><span id="line-283"> return startRowInclusive;</span>
-<span class="source-line-no">284</span><span id="line-284"> }</span>
-<span class="source-line-no">285</span><span id="line-285"></span>
-<span class="source-line-no">286</span><span id="line-286"> /** Returns if stop row is inclusive. */</span>
-<span class="source-line-no">287</span><span id="line-287"> public boolean isStopRowInclusive() {</span>
-<span class="source-line-no">288</span><span id="line-288"> return stopRowInclusive;</span>
-<span class="source-line-no">289</span><span id="line-289"> }</span>
-<span class="source-line-no">290</span><span id="line-290"></span>
-<span class="source-line-no">291</span><span id="line-291"> @Override</span>
-<span class="source-line-no">292</span><span id="line-292"> public int hashCode() {</span>
-<span class="source-line-no">293</span><span id="line-293"> final int prime = 31;</span>
-<span class="source-line-no">294</span><span id="line-294"> int result = 1;</span>
-<span class="source-line-no">295</span><span id="line-295"> result = prime * result + Arrays.hashCode(startRow);</span>
-<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(stopRow);</span>
-<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
-<span class="source-line-no">298</span><span id="line-298"> return result;</span>
-<span class="source-line-no">299</span><span id="line-299"> }</span>
-<span class="source-line-no">300</span><span id="line-300"></span>
-<span class="source-line-no">301</span><span id="line-301"> @Override</span>
-<span class="source-line-no">302</span><span id="line-302"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">303</span><span id="line-303"> if (this == obj) {</span>
-<span class="source-line-no">304</span><span id="line-304"> return true;</span>
-<span class="source-line-no">305</span><span id="line-305"> }</span>
-<span class="source-line-no">306</span><span id="line-306"> if (!(obj instanceof RowRangeModel)) {</span>
-<span class="source-line-no">307</span><span id="line-307"> return false;</span>
-<span class="source-line-no">308</span><span id="line-308"> }</span>
-<span class="source-line-no">309</span><span id="line-309"> RowRangeModel other = (RowRangeModel) obj;</span>
-<span class="source-line-no">310</span><span id="line-310"> return Arrays.equals(startRow, other.startRow)</span>
-<span class="source-line-no">311</span><span id="line-311"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312"> && stopRowInclusive == other.stopRowInclusive;</span>
-<span class="source-line-no">313</span><span id="line-313"> }</span>
-<span class="source-line-no">314</span><span id="line-314"></span>
-<span class="source-line-no">315</span><span id="line-315"> }</span>
-<span class="source-line-no">316</span><span id="line-316"></span>
-<span class="source-line-no">317</span><span id="line-317"> static class FuzzyKeyModel {</span>
-<span class="source-line-no">318</span><span id="line-318"></span>
-<span class="source-line-no">319</span><span id="line-319"> protected byte[] key;</span>
-<span class="source-line-no">320</span><span id="line-320"></span>
-<span class="source-line-no">321</span><span id="line-321"> protected byte[] mask;</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323"> public FuzzyKeyModel() {</span>
-<span class="source-line-no">324</span><span id="line-324"> }</span>
-<span class="source-line-no">325</span><span id="line-325"></span>
-<span class="source-line-no">326</span><span id="line-326"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
-<span class="source-line-no">327</span><span id="line-327"> this.key = keyWithMask.getFirst();</span>
-<span class="source-line-no">328</span><span id="line-328"> this.mask = keyWithMask.getSecond();</span>
-<span class="source-line-no">329</span><span id="line-329"> }</span>
-<span class="source-line-no">330</span><span id="line-330"></span>
-<span class="source-line-no">331</span><span id="line-331"> public Pair<byte[], byte[]> build() {</span>
-<span class="source-line-no">332</span><span id="line-332"> return new Pair<>(key, mask);</span>
-<span class="source-line-no">333</span><span id="line-333"> }</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335"> public byte[] getKey() {</span>
-<span class="source-line-no">336</span><span id="line-336"> return key;</span>
-<span class="source-line-no">337</span><span id="line-337"> }</span>
-<span class="source-line-no">338</span><span id="line-338"></span>
-<span class="source-line-no">339</span><span id="line-339"> public void setKey(byte[] key) {</span>
-<span class="source-line-no">340</span><span id="line-340"> this.key = key;</span>
-<span class="source-line-no">341</span><span id="line-341"> }</span>
-<span class="source-line-no">342</span><span id="line-342"></span>
-<span class="source-line-no">343</span><span id="line-343"> public byte[] getMask() {</span>
-<span class="source-line-no">344</span><span id="line-344"> return mask;</span>
-<span class="source-line-no">345</span><span id="line-345"> }</span>
-<span class="source-line-no">346</span><span id="line-346"></span>
-<span class="source-line-no">347</span><span id="line-347"> public void setMask(byte[] mask) {</span>
-<span class="source-line-no">348</span><span id="line-348"> this.mask = mask;</span>
-<span class="source-line-no">349</span><span id="line-349"> }</span>
-<span class="source-line-no">350</span><span id="line-350"></span>
-<span class="source-line-no">351</span><span id="line-351"> @Override</span>
-<span class="source-line-no">352</span><span id="line-352"> public int hashCode() {</span>
-<span class="source-line-no">353</span><span id="line-353"> final int prime = 31;</span>
-<span class="source-line-no">354</span><span id="line-354"> int result = 1;</span>
-<span class="source-line-no">355</span><span id="line-355"> result = prime * result + Arrays.hashCode(key);</span>
-<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(mask);</span>
-<span class="source-line-no">357</span><span id="line-357"> return result;</span>
-<span class="source-line-no">358</span><span id="line-358"> }</span>
-<span class="source-line-no">359</span><span id="line-359"></span>
-<span class="source-line-no">360</span><span id="line-360"> @Override</span>
-<span class="source-line-no">361</span><span id="line-361"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">362</span><span id="line-362"> if (this == obj) {</span>
-<span class="source-line-no">363</span><span id="line-363"> return true;</span>
-<span class="source-line-no">364</span><span id="line-364"> }</span>
-<span class="source-line-no">365</span><span id="line-365"> if (!(obj instanceof FuzzyKeyModel)) {</span>
-<span class="source-line-no">366</span><span id="line-366"> return false;</span>
-<span class="source-line-no">367</span><span id="line-367"> }</span>
-<span class="source-line-no">368</span><span id="line-368"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
-<span class="source-line-no">369</span><span id="line-369"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
-<span class="source-line-no">370</span><span id="line-370"> }</span>
-<span class="source-line-no">371</span><span id="line-371"></span>
-<span class="source-line-no">372</span><span id="line-372"> }</span>
-<span class="source-line-no">373</span><span id="line-373"></span>
-<span class="source-line-no">374</span><span id="line-374"> // A grab bag of fields, would have been a union if this were C.</span>
-<span class="source-line-no">375</span><span id="line-375"> // These are null by default and will only be serialized if set (non null).</span>
-<span class="source-line-no">376</span><span id="line-376"> @XmlAttribute</span>
-<span class="source-line-no">377</span><span id="line-377"> public String type;</span>
-<span class="source-line-no">378</span><span id="line-378"> @XmlAttribute</span>
-<span class="source-line-no">379</span><span id="line-379"> public String op;</span>
-<span class="source-line-no">380</span><span id="line-380"> @XmlElement</span>
-<span class="source-line-no">381</span><span id="line-381"> ByteArrayComparableModel comparator;</span>
-<span class="source-line-no">382</span><span id="line-382"> @XmlAttribute</span>
-<span class="source-line-no">383</span><span id="line-383"> public String value;</span>
-<span class="source-line-no">384</span><span id="line-384"> @XmlElement</span>
-<span class="source-line-no">385</span><span id="line-385"> public List<FilterModel> filters;</span>
-<span class="source-line-no">386</span><span id="line-386"> @XmlAttribute</span>
-<span class="source-line-no">387</span><span id="line-387"> public Integer limit;</span>
-<span class="source-line-no">388</span><span id="line-388"> @XmlAttribute</span>
-<span class="source-line-no">389</span><span id="line-389"> public Integer offset;</span>
-<span class="source-line-no">390</span><span id="line-390"> @XmlAttribute</span>
-<span class="source-line-no">391</span><span id="line-391"> public String family;</span>
-<span class="source-line-no">392</span><span id="line-392"> @XmlAttribute</span>
-<span class="source-line-no">393</span><span id="line-393"> public String qualifier;</span>
-<span class="source-line-no">394</span><span id="line-394"> @XmlAttribute</span>
-<span class="source-line-no">395</span><span id="line-395"> public Boolean ifMissing;</span>
-<span class="source-line-no">396</span><span id="line-396"> @XmlAttribute</span>
-<span class="source-line-no">397</span><span id="line-397"> public Boolean latestVersion;</span>
-<span class="source-line-no">398</span><span id="line-398"> @XmlAttribute</span>
-<span class="source-line-no">399</span><span id="line-399"> public String minColumn;</span>
-<span class="source-line-no">400</span><span id="line-400"> @XmlAttribute</span>
-<span class="source-line-no">401</span><span id="line-401"> public Boolean minColumnInclusive;</span>
-<span class="source-line-no">402</span><span id="line-402"> @XmlAttribute</span>
-<span class="source-line-no">403</span><span id="line-403"> public String maxColumn;</span>
-<span class="source-line-no">404</span><span id="line-404"> @XmlAttribute</span>
-<span class="source-line-no">405</span><span id="line-405"> public Boolean maxColumnInclusive;</span>
-<span class="source-line-no">406</span><span id="line-406"> @XmlAttribute</span>
-<span class="source-line-no">407</span><span id="line-407"> public Boolean dropDependentColumn;</span>
-<span class="source-line-no">408</span><span id="line-408"> @XmlAttribute</span>
-<span class="source-line-no">409</span><span id="line-409"> public Float chance;</span>
-<span class="source-line-no">410</span><span id="line-410"> @XmlElement</span>
-<span class="source-line-no">411</span><span id="line-411"> public List<String> prefixes;</span>
-<span class="source-line-no">412</span><span id="line-412"> @XmlElement</span>
-<span class="source-line-no">413</span><span id="line-413"> private List<RowRangeModel> ranges;</span>
-<span class="source-line-no">414</span><span id="line-414"> @XmlElement</span>
-<span class="source-line-no">415</span><span id="line-415"> public List<Long> timestamps;</span>
-<span class="source-line-no">416</span><span id="line-416"> @XmlElement</span>
-<span class="source-line-no">417</span><span id="line-417"> private List<FuzzyKeyModel> fuzzyKeys;</span>
-<span class="source-line-no">418</span><span id="line-418"></span>
-<span class="source-line-no">419</span><span id="line-419"> static enum FilterType {</span>
-<span class="source-line-no">420</span><span id="line-420"> ColumnCountGetFilter,</span>
-<span class="source-line-no">421</span><span id="line-421"> ColumnPaginationFilter,</span>
-<span class="source-line-no">422</span><span id="line-422"> ColumnPrefixFilter,</span>
-<span class="source-line-no">423</span><span id="line-423"> ColumnRangeFilter,</span>
-<span class="source-line-no">424</span><span id="line-424"> DependentColumnFilter,</span>
-<span class="source-line-no">425</span><span id="line-425"> FamilyFilter,</span>
-<span class="source-line-no">426</span><span id="line-426"> FilterList,</span>
-<span class="source-line-no">427</span><span id="line-427"> FirstKeyOnlyFilter,</span>
-<span class="source-line-no">428</span><span id="line-428"> InclusiveStopFilter,</span>
-<span class="source-line-no">429</span><span id="line-429"> KeyOnlyFilter,</span>
-<span class="source-line-no">430</span><span id="line-430"> MultipleColumnPrefixFilter,</span>
-<span class="source-line-no">431</span><span id="line-431"> MultiRowRangeFilter,</span>
-<span class="source-line-no">432</span><span id="line-432"> PageFilter,</span>
-<span class="source-line-no">433</span><span id="line-433"> PrefixFilter,</span>
-<span class="source-line-no">434</span><span id="line-434"> QualifierFilter,</span>
-<span class="source-line-no">435</span><span id="line-435"> RandomRowFilter,</span>
-<span class="source-line-no">436</span><span id="line-436"> RowFilter,</span>
-<span class="source-line-no">437</span><span id="line-437"> SingleColumnValueExcludeFilter,</span>
-<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueFilter,</span>
-<span class="source-line-no">439</span><span id="line-439"> SkipFilter,</span>
-<span class="source-line-no">440</span><span id="line-440"> TimestampsFilter,</span>
-<span class="source-line-no">441</span><span id="line-441"> ValueFilter,</span>
-<span class="source-line-no">442</span><span id="line-442"> WhileMatchFilter,</span>
-<span class="source-line-no">443</span><span id="line-443"> FuzzyRowFilter</span>
-<span class="source-line-no">444</span><span id="line-444"> }</span>
-<span class="source-line-no">445</span><span id="line-445"></span>
-<span class="source-line-no">446</span><span id="line-446"> public FilterModel() {</span>
-<span class="source-line-no">447</span><span id="line-447"> }</span>
-<span class="source-line-no">448</span><span id="line-448"></span>
-<span class="source-line-no">449</span><span id="line-449"> public FilterModel(Filter filter) {</span>
-<span class="source-line-no">450</span><span id="line-450"> String typeName = filter.getClass().getSimpleName();</span>
-<span class="source-line-no">451</span><span id="line-451"> FilterType type = FilterType.valueOf(typeName);</span>
-<span class="source-line-no">452</span><span id="line-452"> this.type = typeName;</span>
-<span class="source-line-no">453</span><span id="line-453"> switch (type) {</span>
-<span class="source-line-no">454</span><span id="line-454"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">455</span><span id="line-455"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
-<span class="source-line-no">456</span><span id="line-456"> break;</span>
-<span class="source-line-no">457</span><span id="line-457"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">458</span><span id="line-458"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
-<span class="source-line-no">459</span><span id="line-459"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
-<span class="source-line-no">460</span><span id="line-460"> break;</span>
-<span class="source-line-no">461</span><span id="line-461"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">462</span><span id="line-462"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
-<span class="source-line-no">463</span><span id="line-463"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
-<span class="source-line-no">464</span><span id="line-464"> break;</span>
-<span class="source-line-no">465</span><span id="line-465"> case ColumnRangeFilter:</span>
-<span class="source-line-no">466</span><span id="line-466"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
-<span class="source-line-no">467</span><span id="line-467"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
-<span class="source-line-no">468</span><span id="line-468"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
-<span class="source-line-no">469</span><span id="line-469"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
-<span class="source-line-no">470</span><span id="line-470"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
-<span class="source-line-no">471</span><span id="line-471"> break;</span>
-<span class="source-line-no">472</span><span id="line-472"> case DependentColumnFilter: {</span>
-<span class="source-line-no">473</span><span id="line-473"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
-<span class="source-line-no">474</span><span id="line-474"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
-<span class="source-line-no">475</span><span id="line-475"> byte[] qualifier = dcf.getQualifier();</span>
-<span class="source-line-no">476</span><span id="line-476"> if (qualifier != null) {</span>
-<span class="source-line-no">477</span><span id="line-477"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">478</span><span id="line-478"> }</span>
-<span class="source-line-no">479</span><span id="line-479"> this.op = dcf.getCompareOperator().toString();</span>
-<span class="source-line-no">480</span><span id="line-480"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
-<span class="source-line-no">481</span><span id="line-481"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
-<span class="source-line-no">482</span><span id="line-482"> }</span>
-<span class="source-line-no">483</span><span id="line-483"> break;</span>
-<span class="source-line-no">484</span><span id="line-484"> case FilterList:</span>
-<span class="source-line-no">485</span><span id="line-485"> this.op = ((FilterList) filter).getOperator().toString();</span>
-<span class="source-line-no">486</span><span id="line-486"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">487</span><span id="line-487"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
-<span class="source-line-no">488</span><span id="line-488"> this.filters.add(new FilterModel(child));</span>
-<span class="source-line-no">489</span><span id="line-489"> }</span>
-<span class="source-line-no">490</span><span id="line-490"> break;</span>
-<span class="source-line-no">491</span><span id="line-491"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">492</span><span id="line-492"> case KeyOnlyFilter:</span>
-<span class="source-line-no">493</span><span id="line-493"> break;</span>
-<span class="source-line-no">494</span><span id="line-494"> case InclusiveStopFilter:</span>
-<span class="source-line-no">495</span><span id="line-495"> this.value = Bytes</span>
-<span class="source-line-no">496</span><span id="line-496"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
-<span class="source-line-no">497</span><span id="line-497"> break;</span>
-<span class="source-line-no">498</span><span id="line-498"> case MultipleColumnPrefixFilter:</span>
-<span class="source-line-no">499</span><span id="line-499"> this.prefixes = new ArrayList<>();</span>
-<span class="source-line-no">500</span><span id="line-500"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
-<span class="source-line-no">501</span><span id="line-501"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
-<span class="source-line-no">502</span><span id="line-502"> }</span>
-<span class="source-line-no">503</span><span id="line-503"> break;</span>
-<span class="source-line-no">504</span><span id="line-504"> case MultiRowRangeFilter:</span>
-<span class="source-line-no">505</span><span id="line-505"> this.ranges = new ArrayList<>();</span>
-<span class="source-line-no">506</span><span id="line-506"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
-<span class="source-line-no">507</span><span id="line-507"> this.ranges.add(new RowRangeModel(range));</span>
-<span class="source-line-no">508</span><span id="line-508"> }</span>
-<span class="source-line-no">509</span><span id="line-509"> break;</span>
-<span class="source-line-no">510</span><span id="line-510"> case PageFilter:</span>
-<span class="source-line-no">511</span><span id="line-511"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
-<span class="source-line-no">512</span><span id="line-512"> break;</span>
-<span class="source-line-no">513</span><span id="line-513"> case PrefixFilter:</span>
-<span class="source-line-no">514</span><span id="line-514"> this.value =</span>
-<span class="source-line-no">515</span><span id="line-515"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
-<span class="source-line-no">516</span><span id="line-516"> break;</span>
-<span class="source-line-no">517</span><span id="line-517"> case FamilyFilter:</span>
-<span class="source-line-no">518</span><span id="line-518"> case QualifierFilter:</span>
-<span class="source-line-no">519</span><span id="line-519"> case RowFilter:</span>
-<span class="source-line-no">520</span><span id="line-520"> case ValueFilter:</span>
-<span class="source-line-no">521</span><span id="line-521"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
-<span class="source-line-no">522</span><span id="line-522"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
-<span class="source-line-no">523</span><span id="line-523"> break;</span>
-<span class="source-line-no">524</span><span id="line-524"> case RandomRowFilter:</span>
-<span class="source-line-no">525</span><span id="line-525"> this.chance = ((RandomRowFilter) filter).getChance();</span>
-<span class="source-line-no">526</span><span id="line-526"> break;</span>
-<span class="source-line-no">527</span><span id="line-527"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueFilter: {</span>
-<span class="source-line-no">529</span><span id="line-529"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
-<span class="source-line-no">530</span><span id="line-530"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
-<span class="source-line-no">531</span><span id="line-531"> byte[] qualifier = scvf.getQualifier();</span>
-<span class="source-line-no">532</span><span id="line-532"> if (qualifier != null) {</span>
-<span class="source-line-no">533</span><span id="line-533"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">534</span><span id="line-534"> }</span>
-<span class="source-line-no">535</span><span id="line-535"> this.op = scvf.getCompareOperator().toString();</span>
-<span class="source-line-no">536</span><span id="line-536"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
-<span class="source-line-no">537</span><span id="line-537"> if (scvf.getFilterIfMissing()) {</span>
-<span class="source-line-no">538</span><span id="line-538"> this.ifMissing = true;</span>
-<span class="source-line-no">539</span><span id="line-539"> }</span>
-<span class="source-line-no">540</span><span id="line-540"> if (scvf.getLatestVersionOnly()) {</span>
-<span class="source-line-no">541</span><span id="line-541"> this.latestVersion = true;</span>
-<span class="source-line-no">542</span><span id="line-542"> }</span>
-<span class="source-line-no">543</span><span id="line-543"> }</span>
-<span class="source-line-no">544</span><span id="line-544"> break;</span>
-<span class="source-line-no">545</span><span id="line-545"> case SkipFilter:</span>
-<span class="source-line-no">546</span><span id="line-546"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">547</span><span id="line-547"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
-<span class="source-line-no">548</span><span id="line-548"> break;</span>
-<span class="source-line-no">549</span><span id="line-549"> case TimestampsFilter:</span>
-<span class="source-line-no">550</span><span id="line-550"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
-<span class="source-line-no">551</span><span id="line-551"> break;</span>
-<span class="source-line-no">552</span><span id="line-552"> case WhileMatchFilter:</span>
-<span class="source-line-no">553</span><span id="line-553"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">554</span><span id="line-554"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
-<span class="source-line-no">555</span><span id="line-555"> break;</span>
-<span class="source-line-no">556</span><span id="line-556"> case FuzzyRowFilter:</span>
-<span class="source-line-no">557</span><span id="line-557"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
-<span class="source-line-no">559</span><span id="line-559"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
-<span class="source-line-no">560</span><span id="line-560"> }</span>
-<span class="source-line-no">561</span><span id="line-561"> break;</span>
-<span class="source-line-no">562</span><span id="line-562"> default:</span>
-<span class="source-line-no">563</span><span id="line-563"> throw new RuntimeException("unhandled filter type " + type);</span>
-<span class="source-line-no">564</span><span id="line-564"> }</span>
-<span class="source-line-no">565</span><span id="line-565"> }</span>
-<span class="source-line-no">566</span><span id="line-566"></span>
-<span class="source-line-no">567</span><span id="line-567"> public Filter build() {</span>
-<span class="source-line-no">568</span><span id="line-568"> Filter filter;</span>
-<span class="source-line-no">569</span><span id="line-569"> switch (FilterType.valueOf(type)) {</span>
-<span class="source-line-no">570</span><span id="line-570"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">571</span><span id="line-571"> filter = new ColumnCountGetFilter(limit);</span>
-<span class="source-line-no">572</span><span id="line-572"> break;</span>
-<span class="source-line-no">573</span><span id="line-573"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">574</span><span id="line-574"> filter = new ColumnPaginationFilter(limit, offset);</span>
-<span class="source-line-no">575</span><span id="line-575"> break;</span>
-<span class="source-line-no">576</span><span id="line-576"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">577</span><span id="line-577"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">578</span><span id="line-578"> break;</span>
-<span class="source-line-no">579</span><span id="line-579"> case ColumnRangeFilter:</span>
-<span class="source-line-no">580</span><span id="line-580"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
-<span class="source-line-no">581</span><span id="line-581"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
-<span class="source-line-no">582</span><span id="line-582"> break;</span>
-<span class="source-line-no">583</span><span id="line-583"> case DependentColumnFilter:</span>
-<span class="source-line-no">584</span><span id="line-584"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">585</span><span id="line-585"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
-<span class="source-line-no">586</span><span id="line-586"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">587</span><span id="line-587"> break;</span>
-<span class="source-line-no">588</span><span id="line-588"> case FamilyFilter:</span>
-<span class="source-line-no">589</span><span id="line-589"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">590</span><span id="line-590"> break;</span>
-<span class="source-line-no">591</span><span id="line-591"> case FilterList: {</span>
-<span class="source-line-no">592</span><span id="line-592"> List<Filter> list = new ArrayList<>(filters.size());</span>
-<span class="source-line-no">593</span><span id="line-593"> for (FilterModel model : filters) {</span>
-<span class="source-line-no">594</span><span id="line-594"> list.add(model.build());</span>
-<span class="source-line-no">595</span><span id="line-595"> }</span>
-<span class="source-line-no">596</span><span id="line-596"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
-<span class="source-line-no">597</span><span id="line-597"> }</span>
-<span class="source-line-no">598</span><span id="line-598"> break;</span>
-<span class="source-line-no">599</span><span id="line-599"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">600</span><span id="line-600"> filter = new FirstKeyOnlyFilter();</span>
-<span class="source-line-no">601</span><span id="line-601"> break;</span>
-<span class="source-line-no">602</span><span id="line-602"> case InclusiveStopFilter:</span>
-<span class="source-line-no">603</span><span id="line-603"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">604</span><span id="line-604"> break;</span>
-<span class="source-line-no">605</span><span id="line-605"> case KeyOnlyFilter:</span>
-<span class="source-line-no">606</span><span id="line-606"> filter = new KeyOnlyFilter();</span>
-<span class="source-line-no">607</span><span id="line-607"> break;</span>
-<span class="source-line-no">608</span><span id="line-608"> case MultipleColumnPrefixFilter: {</span>
-<span class="source-line-no">609</span><span id="line-609"> byte[][] values = new byte[prefixes.size()][];</span>
-<span class="source-line-no">610</span><span id="line-610"> for (int i = 0; i < prefixes.size(); i++) {</span>
-<span class="source-line-no">611</span><span id="line-611"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
-<span class="source-line-no">612</span><span id="line-612"> }</span>
-<span class="source-line-no">613</span><span id="line-613"> filter = new MultipleColumnPrefixFilter(values);</span>
-<span class="source-line-no">614</span><span id="line-614"> }</span>
-<span class="source-line-no">615</span><span id="line-615"> break;</span>
-<span class="source-line-no">616</span><span id="line-616"> case MultiRowRangeFilter: {</span>
-<span class="source-line-no">617</span><span id="line-617"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
-<span class="source-line-no">618</span><span id="line-618"> for (RowRangeModel rangeModel : ranges) {</span>
-<span class="source-line-no">619</span><span id="line-619"> rowRanges.add(rangeModel.build());</span>
-<span class="source-line-no">620</span><span id="line-620"> }</span>
-<span class="source-line-no">621</span><span id="line-621"> filter = new MultiRowRangeFilter(rowRanges);</span>
-<span class="source-line-no">622</span><span id="line-622"> }</span>
-<span class="source-line-no">623</span><span id="line-623"> break;</span>
-<span class="source-line-no">624</span><span id="line-624"> case PageFilter:</span>
-<span class="source-line-no">625</span><span id="line-625"> filter = new PageFilter(Long.parseLong(value));</span>
-<span class="source-line-no">626</span><span id="line-626"> break;</span>
-<span class="source-line-no">627</span><span id="line-627"> case PrefixFilter:</span>
-<span class="source-line-no">628</span><span id="line-628"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">629</span><span id="line-629"> break;</span>
-<span class="source-line-no">630</span><span id="line-630"> case QualifierFilter:</span>
-<span class="source-line-no">631</span><span id="line-631"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">632</span><span id="line-632"> break;</span>
-<span class="source-line-no">633</span><span id="line-633"> case RandomRowFilter:</span>
-<span class="source-line-no">634</span><span id="line-634"> filter = new RandomRowFilter(chance);</span>
-<span class="source-line-no">635</span><span id="line-635"> break;</span>
-<span class="source-line-no">636</span><span id="line-636"> case RowFilter:</span>
-<span class="source-line-no">637</span><span id="line-637"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">638</span><span id="line-638"> break;</span>
-<span class="source-line-no">639</span><span id="line-639"> case SingleColumnValueFilter:</span>
-<span class="source-line-no">640</span><span id="line-640"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">641</span><span id="line-641"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">642</span><span id="line-642"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">643</span><span id="line-643"> if (ifMissing != null) {</span>
-<span class="source-line-no">644</span><span id="line-644"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">645</span><span id="line-645"> }</span>
-<span class="source-line-no">646</span><span id="line-646"> if (latestVersion != null) {</span>
-<span class="source-line-no">647</span><span id="line-647"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">648</span><span id="line-648"> }</span>
-<span class="source-line-no">649</span><span id="line-649"> break;</span>
-<span class="source-line-no">650</span><span id="line-650"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">651</span><span id="line-651"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">652</span><span id="line-652"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">653</span><span id="line-653"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">654</span><span id="line-654"> if (ifMissing != null) {</span>
-<span class="source-line-no">655</span><span id="line-655"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">656</span><span id="line-656"> }</span>
-<span class="source-line-no">657</span><span id="line-657"> if (latestVersion != null) {</span>
-<span class="source-line-no">658</span><span id="line-658"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">659</span><span id="line-659"> }</span>
-<span class="source-line-no">660</span><span id="line-660"> break;</span>
-<span class="source-line-no">661</span><span id="line-661"> case SkipFilter:</span>
-<span class="source-line-no">662</span><span id="line-662"> filter = new SkipFilter(filters.get(0).build());</span>
-<span class="source-line-no">663</span><span id="line-663"> break;</span>
-<span class="source-line-no">664</span><span id="line-664"> case TimestampsFilter:</span>
-<span class="source-line-no">665</span><span id="line-665"> filter = new TimestampsFilter(timestamps);</span>
-<span class="source-line-no">666</span><span id="line-666"> break;</span>
-<span class="source-line-no">667</span><span id="line-667"> case ValueFilter:</span>
-<span class="source-line-no">668</span><span id="line-668"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">669</span><span id="line-669"> break;</span>
-<span class="source-line-no">670</span><span id="line-670"> case WhileMatchFilter:</span>
-<span class="source-line-no">671</span><span id="line-671"> filter = new WhileMatchFilter(filters.get(0).build());</span>
-<span class="source-line-no">672</span><span id="line-672"> break;</span>
-<span class="source-line-no">673</span><span id="line-673"> case FuzzyRowFilter: {</span>
-<span class="source-line-no">674</span><span id="line-674"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
-<span class="source-line-no">675</span><span id="line-675"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
-<span class="source-line-no">676</span><span id="line-676"> fuzzyKeyArgs.add(keyModel.build());</span>
-<span class="source-line-no">677</span><span id="line-677"> }</span>
-<span class="source-line-no">678</span><span id="line-678"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
-<span class="source-line-no">679</span><span id="line-679"> }</span>
-<span class="source-line-no">680</span><span id="line-680"> break;</span>
-<span class="source-line-no">681</span><span id="line-681"> default:</span>
-<span class="source-line-no">682</span><span id="line-682"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">683</span><span id="line-683"> }</span>
-<span class="source-line-no">684</span><span id="line-684"> return filter;</span>
-<span class="source-line-no">685</span><span id="line-685"> }</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687"> }</span>
-<span class="source-line-no">688</span><span id="line-688"></span>
-<span class="source-line-no">689</span><span id="line-689"> /**</span>
-<span class="source-line-no">690</span><span id="line-690"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
-<span class="source-line-no">691</span><span id="line-691"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
-<span class="source-line-no">692</span><span id="line-692"> */</span>
-<span class="source-line-no">693</span><span id="line-693"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
-<span class="source-line-no">694</span><span id="line-694"> return JaxbJsonProviderHolder.INSTANCE;</span>
-<span class="source-line-no">695</span><span id="line-695"> }</span>
-<span class="source-line-no">696</span><span id="line-696"></span>
-<span class="source-line-no">697</span><span id="line-697"> /**</span>
-<span class="source-line-no">698</span><span id="line-698"> * @param s the JSON representation of the filter</span>
-<span class="source-line-no">699</span><span id="line-699"> * @return the filter</span>
-<span class="source-line-no">700</span><span id="line-700"> */</span>
-<span class="source-line-no">701</span><span id="line-701"> public static Filter buildFilter(String s) throws Exception {</span>
-<span class="source-line-no">702</span><span id="line-702"> FilterModel model =</span>
-<span class="source-line-no">703</span><span id="line-703"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">704</span><span id="line-704"> .readValue(s, FilterModel.class);</span>
-<span class="source-line-no">705</span><span id="line-705"> return model.build();</span>
-<span class="source-line-no">706</span><span id="line-706"> }</span>
-<span class="source-line-no">707</span><span id="line-707"></span>
-<span class="source-line-no">708</span><span id="line-708"> /**</span>
-<span class="source-line-no">709</span><span id="line-709"> * @param filter the filter</span>
-<span class="source-line-no">710</span><span id="line-710"> * @return the JSON representation of the filter</span>
-<span class="source-line-no">711</span><span id="line-711"> */</span>
-<span class="source-line-no">712</span><span id="line-712"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
-<span class="source-line-no">713</span><span id="line-713"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">714</span><span id="line-714"> .writeValueAsString(new FilterModel(filter));</span>
-<span class="source-line-no">715</span><span id="line-715"> }</span>
-<span class="source-line-no">716</span><span id="line-716"></span>
-<span class="source-line-no">717</span><span id="line-717"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
-<span class="source-line-no">718</span><span id="line-718"></span>
-<span class="source-line-no">719</span><span id="line-719"> /**</span>
-<span class="source-line-no">720</span><span id="line-720"> * @param scan the scan specification</span>
-<span class="source-line-no">721</span><span id="line-721"> */</span>
-<span class="source-line-no">722</span><span id="line-722"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
-<span class="source-line-no">723</span><span id="line-723"> ScannerModel model = new ScannerModel();</span>
-<span class="source-line-no">724</span><span id="line-724"> model.setStartRow(scan.getStartRow());</span>
-<span class="source-line-no">725</span><span id="line-725"> model.setEndRow(scan.getStopRow());</span>
-<span class="source-line-no">726</span><span id="line-726"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
-<span class="source-line-no">727</span><span id="line-727"> if (families != null) {</span>
-<span class="source-line-no">728</span><span id="line-728"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
-<span class="source-line-no">729</span><span id="line-729"> if (entry.getValue() != null) {</span>
-<span class="source-line-no">730</span><span id="line-730"> for (byte[] qualifier : entry.getValue()) {</span>
-<span class="source-line-no">731</span><span id="line-731"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
-<span class="source-line-no">732</span><span id="line-732"> }</span>
-<span class="source-line-no">733</span><span id="line-733"> } else {</span>
-<span class="source-line-no">734</span><span id="line-734"> model.addColumn(entry.getKey());</span>
-<span class="source-line-no">735</span><span id="line-735"> }</span>
-<span class="source-line-no">736</span><span id="line-736"> }</span>
-<span class="source-line-no">737</span><span id="line-737"> }</span>
-<span class="source-line-no">738</span><span id="line-738"> model.setStartTime(scan.getTimeRange().getMin());</span>
-<span class="source-line-no">739</span><span id="line-739"> model.setEndTime(scan.getTimeRange().getMax());</span>
-<span class="source-line-no">740</span><span id="line-740"> int caching = scan.getCaching();</span>
-<span class="source-line-no">741</span><span id="line-741"> if (caching > 0) {</span>
-<span class="source-line-no">742</span><span id="line-742"> model.setCaching(caching);</span>
-<span class="source-line-no">743</span><span id="line-743"> }</span>
-<span class="source-line-no">744</span><span id="line-744"> int batch = scan.getBatch();</span>
-<span class="source-line-no">745</span><span id="line-745"> if (batch > 0) {</span>
-<span class="source-line-no">746</span><span id="line-746"> model.setBatch(batch);</span>
-<span class="source-line-no">747</span><span id="line-747"> }</span>
-<span class="source-line-no">748</span><span id="line-748"> int maxVersions = scan.getMaxVersions();</span>
-<span class="source-line-no">749</span><span id="line-749"> if (maxVersions > 0) {</span>
-<span class="source-line-no">750</span><span id="line-750"> model.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">751</span><span id="line-751"> }</span>
-<span class="source-line-no">752</span><span id="line-752"> if (scan.getLimit() > 0) {</span>
-<span class="source-line-no">753</span><span id="line-753"> model.setLimit(scan.getLimit());</span>
-<span class="source-line-no">754</span><span id="line-754"> }</span>
-<span class="source-line-no">755</span><span id="line-755"> Filter filter = scan.getFilter();</span>
-<span class="source-line-no">756</span><span id="line-756"> if (filter != null) {</span>
-<span class="source-line-no">757</span><span id="line-757"> model.setFilter(stringifyFilter(filter));</span>
-<span class="source-line-no">758</span><span id="line-758"> }</span>
-<span class="source-line-no">759</span><span id="line-759"> // Add the visbility labels if found in the attributes</span>
-<span class="source-line-no">760</span><span id="line-760"> Authorizations authorizations = scan.getAuthorizations();</span>
-<span class="source-line-no">761</span><span id="line-761"> if (authorizations != null) {</span>
-<span class="source-line-no">762</span><span id="line-762"> List<String> labels = authorizations.getLabels();</span>
-<span class="source-line-no">763</span><span id="line-763"> for (String label : labels) {</span>
-<span class="source-line-no">764</span><span id="line-764"> model.addLabel(label);</span>
-<span class="source-line-no">765</span><span id="line-765"> }</span>
-<span class="source-line-no">766</span><span id="line-766"> }</span>
-<span class="source-line-no">767</span><span id="line-767"> model.setIncludeStartRow(scan.includeStartRow());</span>
-<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStopRow(scan.includeStopRow());</span>
-<span class="source-line-no">769</span><span id="line-769"> return model;</span>
-<span class="source-line-no">770</span><span id="line-770"> }</span>
-<span class="source-line-no">771</span><span id="line-771"></span>
-<span class="source-line-no">772</span><span id="line-772"> /**</span>
-<span class="source-line-no">773</span><span id="line-773"> * Default constructor</span>
-<span class="source-line-no">774</span><span id="line-774"> */</span>
-<span class="source-line-no">775</span><span id="line-775"> public ScannerModel() {</span>
-<span class="source-line-no">776</span><span id="line-776"> }</span>
-<span class="source-line-no">777</span><span id="line-777"></span>
-<span class="source-line-no">778</span><span id="line-778"> /**</span>
-<span class="source-line-no">779</span><span id="line-779"> * Constructor</span>
-<span class="source-line-no">780</span><span id="line-780"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">781</span><span id="line-781"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">782</span><span id="line-782"> * @param columns the columns to scan</span>
-<span class="source-line-no">783</span><span id="line-783"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">784</span><span id="line-784"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">785</span><span id="line-785"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">786</span><span id="line-786"> * @param maxVersions the maximum number of versions to return</span>
-<span class="source-line-no">787</span><span id="line-787"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
-<span class="source-line-no">788</span><span id="line-788"> */</span>
-<span class="source-line-no">789</span><span id="line-789"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">790</span><span id="line-790"> long endTime, int maxVersions, String filter) {</span>
-<span class="source-line-no">791</span><span id="line-791"> super();</span>
-<span class="source-line-no">792</span><span id="line-792"> this.startRow = startRow;</span>
-<span class="source-line-no">793</span><span id="line-793"> this.endRow = endRow;</span>
-<span class="source-line-no">794</span><span id="line-794"> this.columns = columns;</span>
-<span class="source-line-no">795</span><span id="line-795"> this.batch = batch;</span>
-<span class="source-line-no">796</span><span id="line-796"> this.caching = caching;</span>
-<span class="source-line-no">797</span><span id="line-797"> this.endTime = endTime;</span>
-<span class="source-line-no">798</span><span id="line-798"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">799</span><span id="line-799"> this.filter = filter;</span>
-<span class="source-line-no">800</span><span id="line-800"> }</span>
-<span class="source-line-no">801</span><span id="line-801"></span>
-<span class="source-line-no">802</span><span id="line-802"> /**</span>
-<span class="source-line-no">803</span><span id="line-803"> * Constructor</span>
-<span class="source-line-no">804</span><span id="line-804"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">805</span><span id="line-805"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">806</span><span id="line-806"> * @param columns the columns to scan</span>
-<span class="source-line-no">807</span><span id="line-807"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">808</span><span id="line-808"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">809</span><span id="line-809"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">810</span><span id="line-810"> * earlier than this are excluded)</span>
-<span class="source-line-no">811</span><span id="line-811"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">812</span><span id="line-812"> * later than this are excluded)</span>
-<span class="source-line-no">813</span><span id="line-813"> * @param filter a filter specification</span>
-<span class="source-line-no">814</span><span id="line-814"> */</span>
-<span class="source-line-no">815</span><span id="line-815"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">816</span><span id="line-816"> long startTime, long endTime, String filter) {</span>
-<span class="source-line-no">817</span><span id="line-817"> super();</span>
-<span class="source-line-no">818</span><span id="line-818"> this.startRow = startRow;</span>
-<span class="source-line-no">819</span><span id="line-819"> this.endRow = endRow;</span>
-<span class="source-line-no">820</span><span id="line-820"> this.columns = columns;</span>
-<span class="source-line-no">821</span><span id="line-821"> this.batch = batch;</span>
-<span class="source-line-no">822</span><span id="line-822"> this.caching = caching;</span>
-<span class="source-line-no">823</span><span id="line-823"> this.startTime = startTime;</span>
-<span class="source-line-no">824</span><span id="line-824"> this.endTime = endTime;</span>
-<span class="source-line-no">825</span><span id="line-825"> this.filter = filter;</span>
-<span class="source-line-no">826</span><span id="line-826"> }</span>
-<span class="source-line-no">827</span><span id="line-827"></span>
-<span class="source-line-no">828</span><span id="line-828"> /**</span>
-<span class="source-line-no">829</span><span id="line-829"> * Add a column to the column set</span>
-<span class="source-line-no">830</span><span id="line-830"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
-<span class="source-line-no">831</span><span id="line-831"> */</span>
-<span class="source-line-no">832</span><span id="line-832"> public void addColumn(byte[] column) {</span>
-<span class="source-line-no">833</span><span id="line-833"> columns.add(column);</span>
-<span class="source-line-no">834</span><span id="line-834"> }</span>
-<span class="source-line-no">835</span><span id="line-835"></span>
-<span class="source-line-no">836</span><span id="line-836"> /**</span>
-<span class="source-line-no">837</span><span id="line-837"> * Add a visibility label to the scan</span>
-<span class="source-line-no">838</span><span id="line-838"> */</span>
-<span class="source-line-no">839</span><span id="line-839"> public void addLabel(String label) {</span>
-<span class="source-line-no">840</span><span id="line-840"> labels.add(label);</span>
-<span class="source-line-no">841</span><span id="line-841"> }</span>
-<span class="source-line-no">842</span><span id="line-842"></span>
-<span class="source-line-no">843</span><span id="line-843"> /** Returns true if a start row was specified */</span>
-<span class="source-line-no">844</span><span id="line-844"> public boolean hasStartRow() {</span>
-<span class="source-line-no">845</span><span id="line-845"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
-<span class="source-line-no">846</span><span id="line-846"> }</span>
-<span class="source-line-no">847</span><span id="line-847"></span>
-<span class="source-line-no">848</span><span id="line-848"> /** Returns start row */</span>
-<span class="source-line-no">849</span><span id="line-849"> @XmlAttribute</span>
-<span class="source-line-no">850</span><span id="line-850"> public byte[] getStartRow() {</span>
-<span class="source-line-no">851</span><span id="line-851"> return startRow;</span>
-<span class="source-line-no">852</span><span id="line-852"> }</span>
-<span class="source-line-no">853</span><span id="line-853"></span>
-<span class="source-line-no">854</span><span id="line-854"> /** Returns true if an end row was specified */</span>
-<span class="source-line-no">855</span><span id="line-855"> public boolean hasEndRow() {</span>
-<span class="source-line-no">856</span><span id="line-856"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
-<span class="source-line-no">857</span><span id="line-857"> }</span>
-<span class="source-line-no">858</span><span id="line-858"></span>
-<span class="source-line-no">859</span><span id="line-859"> /** Returns end row */</span>
-<span class="source-line-no">860</span><span id="line-860"> @XmlAttribute</span>
-<span class="source-line-no">861</span><span id="line-861"> public byte[] getEndRow() {</span>
-<span class="source-line-no">862</span><span id="line-862"> return endRow;</span>
-<span class="source-line-no">863</span><span id="line-863"> }</span>
-<span class="source-line-no">864</span><span id="line-864"></span>
-<span class="source-line-no">865</span><span id="line-865"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
-<span class="source-line-no">866</span><span id="line-866"> @XmlElement(name = "column")</span>
-<span class="source-line-no">867</span><span id="line-867"> public List<byte[]> getColumns() {</span>
-<span class="source-line-no">868</span><span id="line-868"> return columns;</span>
-<span class="source-line-no">869</span><span id="line-869"> }</span>
-<span class="source-line-no">870</span><span id="line-870"></span>
-<span class="source-line-no">871</span><span id="line-871"> @XmlElement(name = "labels")</span>
-<span class="source-line-no">872</span><span id="line-872"> public List<String> getLabels() {</span>
-<span class="source-line-no">873</span><span id="line-873"> return labels;</span>
-<span class="source-line-no">874</span><span id="line-874"> }</span>
-<span class="source-line-no">875</span><span id="line-875"></span>
-<span class="source-line-no">876</span><span id="line-876"> /** Returns the number of cells to return in batch */</span>
-<span class="source-line-no">877</span><span id="line-877"> @XmlAttribute</span>
-<span class="source-line-no">878</span><span id="line-878"> public int getBatch() {</span>
-<span class="source-line-no">879</span><span id="line-879"> return batch;</span>
-<span class="source-line-no">880</span><span id="line-880"> }</span>
-<span class="source-line-no">881</span><span id="line-881"></span>
-<span class="source-line-no">882</span><span id="line-882"> /** Returns the number of rows that the scanner to fetch at once */</span>
-<span class="source-line-no">883</span><span id="line-883"> @XmlAttribute</span>
-<span class="source-line-no">884</span><span id="line-884"> public int getCaching() {</span>
-<span class="source-line-no">885</span><span id="line-885"> return caching;</span>
-<span class="source-line-no">886</span><span id="line-886"> }</span>
-<span class="source-line-no">887</span><span id="line-887"></span>
-<span class="source-line-no">888</span><span id="line-888"> /** Returns the limit specification */</span>
-<span class="source-line-no">889</span><span id="line-889"> @XmlAttribute</span>
-<span class="source-line-no">890</span><span id="line-890"> public int getLimit() {</span>
-<span class="source-line-no">891</span><span id="line-891"> return limit;</span>
-<span class="source-line-no">892</span><span id="line-892"> }</span>
-<span class="source-line-no">893</span><span id="line-893"></span>
-<span class="source-line-no">894</span><span id="line-894"> /** Returns true if HFile blocks should be cached on the servers for this scan, false otherwise */</span>
-<span class="source-line-no">895</span><span id="line-895"> @XmlAttribute</span>
-<span class="source-line-no">896</span><span id="line-896"> public boolean getCacheBlocks() {</span>
-<span class="source-line-no">897</span><span id="line-897"> return cacheBlocks;</span>
-<span class="source-line-no">898</span><span id="line-898"> }</span>
-<span class="source-line-no">899</span><span id="line-899"></span>
-<span class="source-line-no">900</span><span id="line-900"> /** Returns the lower bound on timestamps of items of interest */</span>
-<span class="source-line-no">901</span><span id="line-901"> @XmlAttribute</span>
-<span class="source-line-no">902</span><span id="line-902"> public long getStartTime() {</span>
-<span class="source-line-no">903</span><span id="line-903"> return startTime;</span>
-<span class="source-line-no">904</span><span id="line-904"> }</span>
-<span class="source-line-no">905</span><span id="line-905"></span>
-<span class="source-line-no">906</span><span id="line-906"> /** Returns the upper bound on timestamps of items of interest */</span>
-<span class="source-line-no">907</span><span id="line-907"> @XmlAttribute</span>
-<span class="source-line-no">908</span><span id="line-908"> public long getEndTime() {</span>
-<span class="source-line-no">909</span><span id="line-909"> return endTime;</span>
-<span class="source-line-no">910</span><span id="line-910"> }</span>
-<span class="source-line-no">911</span><span id="line-911"></span>
-<span class="source-line-no">912</span><span id="line-912"> /** Returns maximum number of versions to return */</span>
-<span class="source-line-no">913</span><span id="line-913"> @XmlAttribute</span>
-<span class="source-line-no">914</span><span id="line-914"> public int getMaxVersions() {</span>
-<span class="source-line-no">915</span><span id="line-915"> return maxVersions;</span>
-<span class="source-line-no">916</span><span id="line-916"> }</span>
-<span class="source-line-no">917</span><span id="line-917"></span>
-<span class="source-line-no">918</span><span id="line-918"> /** Returns the filter specification */</span>
-<span class="source-line-no">919</span><span id="line-919"> @XmlElement</span>
-<span class="source-line-no">920</span><span id="line-920"> public String getFilter() {</span>
-<span class="source-line-no">921</span><span id="line-921"> return filter;</span>
-<span class="source-line-no">922</span><span id="line-922"> }</span>
-<span class="source-line-no">923</span><span id="line-923"></span>
-<span class="source-line-no">924</span><span id="line-924"> /**</span>
-<span class="source-line-no">925</span><span id="line-925"> * @param startRow start row</span>
-<span class="source-line-no">926</span><span id="line-926"> */</span>
-<span class="source-line-no">927</span><span id="line-927"> public void setStartRow(byte[] startRow) {</span>
-<span class="source-line-no">928</span><span id="line-928"> this.startRow = startRow;</span>
-<span class="source-line-no">929</span><span id="line-929"> }</span>
-<span class="source-line-no">930</span><span id="line-930"></span>
-<span class="source-line-no">931</span><span id="line-931"> /**</span>
-<span class="source-line-no">932</span><span id="line-932"> * @param endRow end row</span>
-<span class="source-line-no">933</span><span id="line-933"> */</span>
-<span class="source-line-no">934</span><span id="line-934"> public void setEndRow(byte[] endRow) {</span>
-<span class="source-line-no">935</span><span id="line-935"> this.endRow = endRow;</span>
-<span class="source-line-no">936</span><span id="line-936"> }</span>
-<span class="source-line-no">937</span><span id="line-937"></span>
-<span class="source-line-no">938</span><span id="line-938"> /**</span>
-<span class="source-line-no">939</span><span id="line-939"> * @param columns list of columns of interest in column:qualifier format, or empty for all</span>
-<span class="source-line-no">940</span><span id="line-940"> */</span>
-<span class="source-line-no">941</span><span id="line-941"> public void setColumns(List<byte[]> columns) {</span>
-<span class="source-line-no">942</span><span id="line-942"> this.columns = columns;</span>
-<span class="source-line-no">943</span><span id="line-943"> }</span>
-<span class="source-line-no">944</span><span id="line-944"></span>
-<span class="source-line-no">945</span><span id="line-945"> /**</span>
-<span class="source-line-no">946</span><span id="line-946"> * @param batch the number of cells to return in batch</span>
-<span class="source-line-no">947</span><span id="line-947"> */</span>
-<span class="source-line-no">948</span><span id="line-948"> public void setBatch(int batch) {</span>
-<span class="source-line-no">949</span><span id="line-949"> this.batch = batch;</span>
-<span class="source-line-no">950</span><span id="line-950"> }</span>
-<span class="source-line-no">951</span><span id="line-951"></span>
-<span class="source-line-no">952</span><span id="line-952"> /**</span>
-<span class="source-line-no">953</span><span id="line-953"> * @param caching the number of rows to fetch at once</span>
-<span class="source-line-no">954</span><span id="line-954"> */</span>
-<span class="source-line-no">955</span><span id="line-955"> public void setCaching(int caching) {</span>
-<span class="source-line-no">956</span><span id="line-956"> this.caching = caching;</span>
-<span class="source-line-no">957</span><span id="line-957"> }</span>
-<span class="source-line-no">958</span><span id="line-958"></span>
-<span class="source-line-no">959</span><span id="line-959"> /**</span>
-<span class="source-line-no">960</span><span id="line-960"> * @param value true if HFile blocks should be cached on the servers for this scan, false</span>
-<span class="source-line-no">961</span><span id="line-961"> * otherwise</span>
-<span class="source-line-no">962</span><span id="line-962"> */</span>
-<span class="source-line-no">963</span><span id="line-963"> public void setCacheBlocks(boolean value) {</span>
-<span class="source-line-no">964</span><span id="line-964"> this.cacheBlocks = value;</span>
-<span class="source-line-no">965</span><span id="line-965"> }</span>
-<span class="source-line-no">966</span><span id="line-966"></span>
-<span class="source-line-no">967</span><span id="line-967"> /**</span>
-<span class="source-line-no">968</span><span id="line-968"> * @param limit the number of rows can fetch of each scanner at lifetime</span>
-<span class="source-line-no">969</span><span id="line-969"> */</span>
-<span class="source-line-no">970</span><span id="line-970"> public void setLimit(int limit) {</span>
-<span class="source-line-no">971</span><span id="line-971"> this.limit = limit;</span>
-<span class="source-line-no">972</span><span id="line-972"> }</span>
-<span class="source-line-no">973</span><span id="line-973"></span>
-<span class="source-line-no">974</span><span id="line-974"> /**</span>
-<span class="source-line-no">975</span><span id="line-975"> * @param maxVersions maximum number of versions to return</span>
-<span class="source-line-no">976</span><span id="line-976"> */</span>
-<span class="source-line-no">977</span><span id="line-977"> public void setMaxVersions(int maxVersions) {</span>
-<span class="source-line-no">978</span><span id="line-978"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">979</span><span id="line-979"> }</span>
-<span class="source-line-no">980</span><span id="line-980"></span>
-<span class="source-line-no">981</span><span id="line-981"> /**</span>
-<span class="source-line-no">982</span><span id="line-982"> * @param startTime the lower bound on timestamps of values of interest</span>
-<span class="source-line-no">983</span><span id="line-983"> */</span>
-<span class="source-line-no">984</span><span id="line-984"> public void setStartTime(long startTime) {</span>
-<span class="source-line-no">985</span><span id="line-985"> this.startTime = startTime;</span>
-<span class="source-line-no">986</span><span id="line-986"> }</span>
-<span class="source-line-no">987</span><span id="line-987"></span>
-<span class="source-line-no">988</span><span id="line-988"> /**</span>
-<span class="source-line-no">989</span><span id="line-989"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">990</span><span id="line-990"> */</span>
-<span class="source-line-no">991</span><span id="line-991"> public void setEndTime(long endTime) {</span>
-<span class="source-line-no">992</span><span id="line-992"> this.endTime = endTime;</span>
-<span class="source-line-no">993</span><span id="line-993"> }</span>
-<span class="source-line-no">994</span><span id="line-994"></span>
-<span class="source-line-no">995</span><span id="line-995"> /**</span>
-<span class="source-line-no">996</span><span id="line-996"> * @param filter the filter specification</span>
-<span class="source-line-no">997</span><span id="line-997"> */</span>
-<span class="source-line-no">998</span><span id="line-998"> public void setFilter(String filter) {</span>
-<span class="source-line-no">999</span><span id="line-999"> this.filter = filter;</span>
-<span class="source-line-no">1000</span><span id="line-1000"> }</span>
-<span class="source-line-no">1001</span><span id="line-1001"></span>
-<span class="source-line-no">1002</span><span id="line-1002"> @Override</span>
-<span class="source-line-no">1003</span><span id="line-1003"> public Message messageFromObject() {</span>
-<span class="source-line-no">1004</span><span id="line-1004"> Scanner.Builder builder = Scanner.newBuilder();</span>
-<span class="source-line-no">1005</span><span id="line-1005"> if (!Bytes.equals(startRow, HConstants.EMPTY_START_ROW)) {</span>
-<span class="source-line-no">1006</span><span id="line-1006"> builder.setStartRow(UnsafeByteOperations.unsafeWrap(startRow));</span>
-<span class="source-line-no">1007</span><span id="line-1007"> }</span>
-<span class="source-line-no">1008</span><span id="line-1008"> if (!Bytes.equals(endRow, HConstants.EMPTY_START_ROW)) {</span>
-<span class="source-line-no">1009</span><span id="line-1009"> builder.setEndRow(UnsafeByteOperations.unsafeWrap(endRow));</span>
-<span class="source-line-no">1010</span><span id="line-1010"> }</span>
-<span class="source-line-no">1011</span><span id="line-1011"> for (byte[] column : columns) {</span>
-<span class="source-line-no">1012</span><span id="line-1012"> builder.addColumns(UnsafeByteOperations.unsafeWrap(column));</span>
-<span class="source-line-no">1013</span><span id="line-1013"> }</span>
-<span class="source-line-no">1014</span><span id="line-1014"> if (startTime != 0) {</span>
-<span class="source-line-no">1015</span><span id="line-1015"> builder.setStartTime(startTime);</span>
-<span class="source-line-no">1016</span><span id="line-1016"> }</span>
-<span class="source-line-no">1017</span><span id="line-1017"> if (endTime != 0) {</span>
-<span class="source-line-no">1018</span><span id="line-1018"> builder.setEndTime(endTime);</span>
-<span class="source-line-no">1019</span><span id="line-1019"> }</span>
-<span class="source-line-no">1020</span><span id="line-1020"> builder.setBatch(getBatch());</span>
-<span class="source-line-no">1021</span><span id="line-1021"> if (caching > 0) {</span>
-<span class="source-line-no">1022</span><span id="line-1022"> builder.setCaching(caching);</span>
-<span class="source-line-no">1023</span><span id="line-1023"> }</span>
-<span class="source-line-no">1024</span><span id="line-1024"> if (limit > 0) {</span>
-<span class="source-line-no">1025</span><span id="line-1025"> builder.setLimit(limit);</span>
-<span class="source-line-no">1026</span><span id="line-1026"> }</span>
-<span class="source-line-no">1027</span><span id="line-1027"> builder.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">1028</span><span id="line-1028"> if (filter != null) {</span>
-<span class="source-line-no">1029</span><span id="line-1029"> builder.setFilter(filter);</span>
-<span class="source-line-no">1030</span><span id="line-1030"> }</span>
-<span class="source-line-no">1031</span><span id="line-1031"> if (labels != null && labels.size() > 0) {</span>
-<span class="source-line-no">1032</span><span id="line-1032"> for (String label : labels)</span>
-<span class="source-line-no">1033</span><span id="line-1033"> builder.addLabels(label);</span>
-<span class="source-line-no">1034</span><span id="line-1034"> }</span>
-<span class="source-line-no">1035</span><span id="line-1035"> builder.setCacheBlocks(cacheBlocks);</span>
-<span class="source-line-no">1036</span><span id="line-1036"> builder.setIncludeStartRow(includeStartRow);</span>
-<span class="source-line-no">1037</span><span id="line-1037"> builder.setIncludeStopRow(includeStopRow);</span>
-<span class="source-line-no">1038</span><span id="line-1038"> return builder.build();</span>
-<span class="source-line-no">1039</span><span id="line-1039"> }</span>
-<span class="source-line-no">1040</span><span id="line-1040"></span>
-<span class="source-line-no">1041</span><span id="line-1041"> @Override</span>
-<span class="source-line-no">1042</span><span id="line-1042"> public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws IOException {</span>
-<span class="source-line-no">1043</span><span id="line-1043"> Scanner.Builder builder = Scanner.newBuilder();</span>
-<span class="source-line-no">1044</span><span id="line-1044"> RestUtil.mergeFrom(builder, cis);</span>
-<span class="source-line-no">1045</span><span id="line-1045"> if (builder.hasStartRow()) {</span>
-<span class="source-line-no">1046</span><span id="line-1046"> startRow = builder.getStartRow().toByteArray();</span>
-<span class="source-line-no">1047</span><span id="line-1047"> }</span>
-<span class="source-line-no">1048</span><span id="line-1048"> if (builder.hasEndRow()) {</span>
-<span class="source-line-no">1049</span><span id="line-1049"> endRow = builder.getEndRow().toByteArray();</span>
-<span class="source-line-no">1050</span><span id="line-1050"> }</span>
-<span class="source-line-no">1051</span><span id="line-1051"> for (ByteString column : builder.getColumnsList()) {</span>
-<span class="source-line-no">1052</span><span id="line-1052"> addColumn(column.toByteArray());</span>
-<span class="source-line-no">1053</span><span id="line-1053"> }</span>
-<span class="source-line-no">1054</span><span id="line-1054"> if (builder.hasBatch()) {</span>
-<span class="source-line-no">1055</span><span id="line-1055"> batch = builder.getBatch();</span>
-<span class="source-line-no">1056</span><span id="line-1056"> }</span>
-<span class="source-line-no">1057</span><span id="line-1057"> if (builder.hasCaching()) {</span>
-<span class="source-line-no">1058</span><span id="line-1058"> caching = builder.getCaching();</span>
-<span class="source-line-no">1059</span><span id="line-1059"> }</span>
-<span class="source-line-no">1060</span><span id="line-1060"> if (builder.hasLimit()) {</span>
-<span class="source-line-no">1061</span><span id="line-1061"> limit = builder.getLimit();</span>
-<span class="source-line-no">1062</span><span id="line-1062"> }</span>
-<span class="source-line-no">1063</span><span id="line-1063"> if (builder.hasStartTime()) {</span>
-<span class="source-line-no">1064</span><span id="line-1064"> startTime = builder.getStartTime();</span>
-<span class="source-line-no">1065</span><span id="line-1065"> }</span>
-<span class="source-line-no">1066</span><span id="line-1066"> if (builder.hasEndTime()) {</span>
-<span class="source-line-no">1067</span><span id="line-1067"> endTime = builder.getEndTime();</span>
-<span class="source-line-no">1068</span><span id="line-1068"> }</span>
-<span class="source-line-no">1069</span><span id="line-1069"> if (builder.hasMaxVersions()) {</span>
-<span class="source-line-no">1070</span><span id="line-1070"> maxVersions = builder.getMaxVersions();</span>
-<span class="source-line-no">1071</span><span id="line-1071"> }</span>
-<span class="source-line-no">1072</span><span id="line-1072"> if (builder.hasFilter()) {</span>
-<span class="source-line-no">1073</span><span id="line-1073"> filter = builder.getFilter();</span>
-<span class="source-line-no">1074</span><span id="line-1074"> }</span>
-<span class="source-line-no">1075</span><span id="line-1075"> if (builder.getLabelsList() != null) {</span>
-<span class="source-line-no">1076</span><span id="line-1076"> List<String> labels = builder.getLabelsList();</span>
-<span class="source-line-no">1077</span><span id="line-1077"> for (String label : labels) {</span>
-<span class="source-line-no">1078</span><span id="line-1078"> addLabel(label);</span>
-<span class="source-line-no">1079</span><span id="line-1079"> }</span>
-<span class="source-line-no">1080</span><span id="line-1080"> }</span>
-<span class="source-line-no">1081</span><span id="line-1081"> if (builder.hasCacheBlocks()) {</span>
-<span class="source-line-no">1082</span><span id="line-1082"> this.cacheBlocks = builder.getCacheBlocks();</span>
-<span class="source-line-no">1083</span><span id="line-1083"> }</span>
-<span class="source-line-no">1084</span><span id="line-1084"> if (builder.hasIncludeStartRow()) {</span>
-<span class="source-line-no">1085</span><span id="line-1085"> this.includeStartRow = builder.getIncludeStartRow();</span>
-<span class="source-line-no">1086</span><span id="line-1086"> }</span>
-<span class="source-line-no">1087</span><span id="line-1087"> if (builder.hasIncludeStopRow()) {</span>
-<span class="source-line-no">1088</span><span id="line-1088"> this.includeStopRow = builder.getIncludeStopRow();</span>
-<span class="source-line-no">1089</span><span id="line-1089"> }</span>
-<span class="source-line-no">1090</span><span id="line-1090"> return this;</span>
-<span class="source-line-no">1091</span><span id="line-1091"> }</span>
-<span class="source-line-no">1092</span><span id="line-1092"></span>
-<span class="source-line-no">1093</span><span id="line-1093">}</span>
+<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE",</span>
+<span class="source-line-no">150</span><span id="line-150"> "HE_EQUALS_USE_HASHCODE" },</span>
+<span class="source-line-no">151</span><span id="line-151"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
+<span class="source-line-no">152</span><span id="line-152"> private static class IncludeStartRowFilter {</span>
+<span class="source-line-no">153</span><span id="line-153"> @Override</span>
+<span class="source-line-no">154</span><span id="line-154"> public boolean equals(Object value) {</span>
+<span class="source-line-no">155</span><span id="line-155"> return Boolean.TRUE.equals(value);</span>
+<span class="source-line-no">156</span><span id="line-156"> }</span>
+<span class="source-line-no">157</span><span id="line-157"> }</span>
+<span class="source-line-no">158</span><span id="line-158"></span>
+<span class="source-line-no">159</span><span id="line-159"> /**</span>
+<span class="source-line-no">160</span><span id="line-160"> * Implement lazily-instantiated singleton as per recipe here:</span>
+<span class="source-line-no">161</span><span id="line-161"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
+<span class="source-line-no">162</span><span id="line-162"> */</span>
+<span class="source-line-no">163</span><span id="line-163"> private static class JaxbJsonProviderHolder {</span>
+<span class="source-line-no">164</span><span id="line-164"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
+<span class="source-line-no">165</span><span id="line-165"> }</span>
+<span class="source-line-no">166</span><span id="line-166"></span>
+<span class="source-line-no">167</span><span id="line-167"> @XmlRootElement</span>
+<span class="source-line-no">168</span><span id="line-168"> static class FilterModel {</span>
+<span class="source-line-no">169</span><span id="line-169"></span>
+<span class="source-line-no">170</span><span id="line-170"> @XmlRootElement</span>
+<span class="source-line-no">171</span><span id="line-171"> static class ByteArrayComparableModel {</span>
+<span class="source-line-no">172</span><span id="line-172"> @XmlAttribute</span>
+<span class="source-line-no">173</span><span id="line-173"> public String type;</span>
+<span class="source-line-no">174</span><span id="line-174"> @XmlAttribute</span>
+<span class="source-line-no">175</span><span id="line-175"> public String value;</span>
+<span class="source-line-no">176</span><span id="line-176"> @XmlAttribute</span>
+<span class="source-line-no">177</span><span id="line-177"> public String op;</span>
+<span class="source-line-no">178</span><span id="line-178"></span>
+<span class="source-line-no">179</span><span id="line-179"> static enum ComparatorType {</span>
+<span class="source-line-no">180</span><span id="line-180"> BinaryComparator,</span>
+<span class="source-line-no">181</span><span id="line-181"> BinaryPrefixComparator,</span>
+<span class="source-line-no">182</span><span id="line-182"> BitComparator,</span>
+<span class="source-line-no">183</span><span id="line-183"> NullComparator,</span>
+<span class="source-line-no">184</span><span id="line-184"> RegexStringComparator,</span>
+<span class="source-line-no">185</span><span id="line-185"> SubstringComparator</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> public ByteArrayComparableModel() {</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"></span>
+<span class="source-line-no">191</span><span id="line-191"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
+<span class="source-line-no">192</span><span id="line-192"> String typeName = comparator.getClass().getSimpleName();</span>
+<span class="source-line-no">193</span><span id="line-193"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
+<span class="source-line-no">194</span><span id="line-194"> this.type = typeName;</span>
+<span class="source-line-no">195</span><span id="line-195"> switch (type) {</span>
+<span class="source-line-no">196</span><span id="line-196"> case BinaryComparator:</span>
+<span class="source-line-no">197</span><span id="line-197"> case BinaryPrefixComparator:</span>
+<span class="source-line-no">198</span><span id="line-198"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
+<span class="source-line-no">199</span><span id="line-199"> break;</span>
+<span class="source-line-no">200</span><span id="line-200"> case BitComparator:</span>
+<span class="source-line-no">201</span><span id="line-201"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
+<span class="source-line-no">202</span><span id="line-202"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
+<span class="source-line-no">203</span><span id="line-203"> break;</span>
+<span class="source-line-no">204</span><span id="line-204"> case NullComparator:</span>
+<span class="source-line-no">205</span><span id="line-205"> break;</span>
+<span class="source-line-no">206</span><span id="line-206"> case RegexStringComparator:</span>
+<span class="source-line-no">207</span><span id="line-207"> case SubstringComparator:</span>
+<span class="source-line-no">208</span><span id="line-208"> this.value = Bytes.toString(comparator.getValue());</span>
+<span class="source-line-no">209</span><span id="line-209"> break;</span>
+<span class="source-line-no">210</span><span id="line-210"> default:</span>
+<span class="source-line-no">211</span><span id="line-211"> throw new RuntimeException("unhandled filter type: " + type);</span>
+<span class="source-line-no">212</span><span id="line-212"> }</span>
+<span class="source-line-no">213</span><span id="line-213"> }</span>
+<span class="source-line-no">214</span><span id="line-214"></span>
+<span class="source-line-no">215</span><span id="line-215"> public ByteArrayComparable build() {</span>
+<span class="source-line-no">216</span><span id="line-216"> ByteArrayComparable comparator;</span>
+<span class="source-line-no">217</span><span id="line-217"> switch (ComparatorType.valueOf(type)) {</span>
+<span class="source-line-no">218</span><span id="line-218"> case BinaryComparator:</span>
+<span class="source-line-no">219</span><span id="line-219"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">220</span><span id="line-220"> break;</span>
+<span class="source-line-no">221</span><span id="line-221"> case BinaryPrefixComparator:</span>
+<span class="source-line-no">222</span><span id="line-222"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">223</span><span id="line-223"> break;</span>
+<span class="source-line-no">224</span><span id="line-224"> case BitComparator:</span>
+<span class="source-line-no">225</span><span id="line-225"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
+<span class="source-line-no">226</span><span id="line-226"> BitComparator.BitwiseOp.valueOf(op));</span>
+<span class="source-line-no">227</span><span id="line-227"> break;</span>
+<span class="source-line-no">228</span><span id="line-228"> case NullComparator:</span>
+<span class="source-line-no">229</span><span id="line-229"> comparator = new NullComparator();</span>
+<span class="source-line-no">230</span><span id="line-230"> break;</span>
+<span class="source-line-no">231</span><span id="line-231"> case RegexStringComparator:</span>
+<span class="source-line-no">232</span><span id="line-232"> comparator = new RegexStringComparator(value);</span>
+<span class="source-line-no">233</span><span id="line-233"> break;</span>
+<span class="source-line-no">234</span><span id="line-234"> case SubstringComparator:</span>
+<span class="source-line-no">235</span><span id="line-235"> comparator = new SubstringComparator(value);</span>
+<span class="source-line-no">236</span><span id="line-236"> break;</span>
+<span class="source-line-no">237</span><span id="line-237"> default:</span>
+<span class="source-line-no">238</span><span id="line-238"> throw new RuntimeException("unhandled comparator type: " + type);</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"> return comparator;</span>
+<span class="source-line-no">241</span><span id="line-241"> }</span>
+<span class="source-line-no">242</span><span id="line-242"></span>
+<span class="source-line-no">243</span><span id="line-243"> }</span>
+<span class="source-line-no">244</span><span id="line-244"></span>
+<span class="source-line-no">245</span><span id="line-245"> /**</span>
+<span class="source-line-no">246</span><span id="line-246"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
+<span class="source-line-no">247</span><span id="line-247"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
+<span class="source-line-no">248</span><span id="line-248"> */</span>
+<span class="source-line-no">249</span><span id="line-249"> static class RowRangeModel {</span>
+<span class="source-line-no">250</span><span id="line-250"></span>
+<span class="source-line-no">251</span><span id="line-251"> protected byte[] startRow;</span>
+<span class="source-line-no">252</span><span id="line-252"></span>
+<span class="source-line-no">253</span><span id="line-253"> protected boolean startRowInclusive = true;</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> protected byte[] stopRow;</span>
+<span class="source-line-no">256</span><span id="line-256"></span>
+<span class="source-line-no">257</span><span id="line-257"> protected boolean stopRowInclusive = false;</span>
+<span class="source-line-no">258</span><span id="line-258"></span>
+<span class="source-line-no">259</span><span id="line-259"> public RowRangeModel() {</span>
+<span class="source-line-no">260</span><span id="line-260"> }</span>
+<span class="source-line-no">261</span><span id="line-261"></span>
+<span class="source-line-no">262</span><span id="line-262"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
+<span class="source-line-no">263</span><span id="line-263"> this.startRow = rr.getStartRow();</span>
+<span class="source-line-no">264</span><span id="line-264"> this.startRowInclusive = rr.isStartRowInclusive();</span>
+<span class="source-line-no">265</span><span id="line-265"> this.stopRow = rr.getStopRow();</span>
+<span class="source-line-no">266</span><span id="line-266"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
+<span class="source-line-no">267</span><span id="line-267"> }</span>
+<span class="source-line-no">268</span><span id="line-268"></span>
+<span class="source-line-no">269</span><span id="line-269"> public MultiRowRangeFilter.RowRange build() {</span>
+<span class="source-line-no">270</span><span id="line-270"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
+<span class="source-line-no">271</span><span id="line-271"> stopRowInclusive);</span>
+<span class="source-line-no">272</span><span id="line-272"> }</span>
+<span class="source-line-no">273</span><span id="line-273"></span>
+<span class="source-line-no">274</span><span id="line-274"> public byte[] getStartRow() {</span>
+<span class="source-line-no">275</span><span id="line-275"> return startRow;</span>
+<span class="source-line-no">276</span><span id="line-276"> }</span>
+<span class="source-line-no">277</span><span id="line-277"></span>
+<span class="source-line-no">278</span><span id="line-278"> public byte[] getStopRow() {</span>
+<span class="source-line-no">279</span><span id="line-279"> return stopRow;</span>
+<span class="source-line-no">280</span><span id="line-280"> }</span>
+<span class="source-line-no">281</span><span id="line-281"></span>
+<span class="source-line-no">282</span><span id="line-282"> /** Returns if start row is inclusive. */</span>
+<span class="source-line-no">283</span><span id="line-283"> public boolean isStartRowInclusive() {</span>
+<span class="source-line-no">284</span><span id="line-284"> return startRowInclusive;</span>
+<span class="source-line-no">285</span><span id="line-285"> }</span>
+<span class="source-line-no">286</span><span id="line-286"></span>
+<span class="source-line-no">287</span><span id="line-287"> /** Returns if stop row is inclusive. */</span>
+<span class="source-line-no">288</span><span id="line-288"> public boolean isStopRowInclusive() {</span>
+<span class="source-line-no">289</span><span id="line-289"> return stopRowInclusive;</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> @Override</span>
+<span class="source-line-no">293</span><span id="line-293"> public int hashCode() {</span>
+<span class="source-line-no">294</span><span id="line-294"> final int prime = 31;</span>
+<span class="source-line-no">295</span><span id="line-295"> int result = 1;</span>
+<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(startRow);</span>
+<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Arrays.hashCode(stopRow);</span>
+<span class="source-line-no">298</span><span id="line-298"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
+<span class="source-line-no">299</span><span id="line-299"> return result;</span>
+<span class="source-line-no">300</span><span id="line-300"> }</span>
+<span class="source-line-no">301</span><span id="line-301"></span>
+<span class="source-line-no">302</span><span id="line-302"> @Override</span>
+<span class="source-line-no">303</span><span id="line-303"> public boolean equals(Object obj) {</span>
+<span class="source-line-no">304</span><span id="line-304"> if (this == obj) {</span>
+<span class="source-line-no">305</span><span id="line-305"> return true;</span>
+<span class="source-line-no">306</span><span id="line-306"> }</span>
+<span class="source-line-no">307</span><span id="line-307"> if (!(obj instanceof RowRangeModel)) {</span>
+<span class="source-line-no">308</span><span id="line-308"> return false;</span>
+<span class="source-line-no">309</span><span id="line-309"> }</span>
+<span class="source-line-no">310</span><span id="line-310"> RowRangeModel other = (RowRangeModel) obj;</span>
+<span class="source-line-no">311</span><span id="line-311"> return Arrays.equals(startRow, other.startRow)</span>
+<span class="source-line-no">312</span><span id="line-312"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
+<span class="source-line-no">313</span><span id="line-313"> && stopRowInclusive == other.stopRowInclusive;</span>
+<span class="source-line-no">314</span><span id="line-314"> }</span>
+<span class="source-line-no">315</span><span id="line-315"></span>
+<span class="source-line-no">316</span><span id="line-316"> }</span>
+<span class="source-line-no">317</span><span id="line-317"></span>
+<span class="source-line-no">318</span><span id="line-318"> static class FuzzyKeyModel {</span>
+<span class="source-line-no">319</span><span id="line-319"></span>
+<span class="source-line-no">320</span><span id="line-320"> protected byte[] key;</span>
+<span class="source-line-no">321</span><span id="line-321"></span>
+<span class="source-line-no">322</span><span id="line-322"> protected byte[] mask;</span>
+<span class="source-line-no">323</span><span id="line-323"></span>
+<span class="source-line-no">324</span><span id="line-324"> public FuzzyKeyModel() {</span>
+<span class="source-line-no">325</span><span id="line-325"> }</span>
+<span class="source-line-no">326</span><span id="line-326"></span>
+<span class="source-line-no">327</span><span id="line-327"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
+<span class="source-line-no">328</span><span id="line-328"> this.key = keyWithMask.getFirst();</span>
+<span class="source-line-no">329</span><span id="line-329"> this.mask = keyWithMask.getSecond();</span>
+<span class="source-line-no">330</span><span id="line-330"> }</span>
+<span class="source-line-no">331</span><span id="line-331"></span>
+<span class="source-line-no">332</span><span id="line-332"> public Pair<byte[], byte[]> build() {</span>
+<span class="source-line-no">333</span><span id="line-333"> return new Pair<>(key, mask);</span>
+<span class="source-line-no">334</span><span id="line-334"> }</span>
+<span class="source-line-no">335</span><span id="line-335"></span>
+<span class="source-line-no">336</span><span id="line-336"> public byte[] getKey() {</span>
+<span class="source-line-no">337</span><span id="line-337"> return key;</span>
+<span class="source-line-no">338</span><span id="line-338"> }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340"> public void setKey(byte[] key) {</span>
+<span class="source-line-no">341</span><span id="line-341"> this.key = key;</span>
+<span class="source-line-no">342</span><span id="line-342"> }</span>
+<span class="source-line-no">343</span><span id="line-343"></span>
+<span class="source-line-no">344</span><span id="line-344"> public byte[] getMask() {</span>
+<span class="source-line-no">345</span><span id="line-345"> return mask;</span>
+<span class="source-line-no">346</span><span id="line-346"> }</span>
+<span class="source-line-no">347</span><span id="line-347"></span>
+<span class="source-line-no">348</span><span id="line-348"> public void setMask(byte[] mask) {</span>
+<span class="source-line-no">349</span><span id="line-349"> this.mask = mask;</span>
+<span class="source-line-no">350</span><span id="line-350"> }</span>
+<span class="source-line-no">351</span><span id="line-351"></span>
+<span class="source-line-no">352</span><span id="line-352"> @Override</span>
+<span class="source-line-no">353</span><span id="line-353"> public int hashCode() {</span>
+<span class="source-line-no">354</span><span id="line-354"> final int prime = 31;</span>
+<span class="source-line-no">355</span><span id="line-355"> int result = 1;</span>
+<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(key);</span>
+<span class="source-line-no">357</span><span id="line-357"> result = prime * result + Arrays.hashCode(mask);</span>
+<span class="source-line-no">358</span><span id="line-358"> return result;</span>
+<span class="source-line-no">359</span><span id="line-359"> }</span>
+<span class="source-line-no">360</span><span id="line-360"></span>
+<span class="source-line-no">361</span><span id="line-361"> @Override</span>
+<span class="source-line-no">362</span><span id="line-362"> public boolean equals(Object obj) {</span>
+<span class="source-line-no">363</span><span id="line-363"> if (this == obj) {</span>
+<span class="source-line-no">364</span><span id="line-364"> return true;</span>
+<span class="source-line-no">365</span><span id="line-365"> }</span>
+<span class="source-line-no">366</span><span id="line-366"> if (!(obj instanceof FuzzyKeyModel)) {</span>
+<span class="source-line-no">367</span><span id="line-367"> return false;</span>
+<span class="source-line-no">368</span><span id="line-368"> }</span>
+<span class="source-line-no">369</span><span id="line-369"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
+<span class="source-line-no">370</span><span id="line-370"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
+<span class="source-line-no">371</span><span id="line-371"> }</span>
+<span class="source-line-no">372</span><span id="line-372"></span>
+<span class="source-line-no">373</span><span id="line-373"> }</span>
+<span class="source-line-no">374</span><span id="line-374"></span>
+<span class="source-line-no">375</span><span id="line-375"> // A grab bag of fields, would have been a union if this were C.</span>
+<span class="source-line-no">376</span><span id="line-376"> // These are null by default and will only be serialized if set (non null).</span>
+<span class="source-line-no">377</span><span id="line-377"> @XmlAttribute</span>
+<span class="source-line-no">378</span><span id="line-378"> public String type;</span>
+<span class="source-line-no">379</span><span id="line-379"> @XmlAttribute</span>
+<span class="source-line-no">380</span><span id="line-380"> public String op;</span>
+<span class="source-line-no">381</span><span id="line-381"> @XmlElement</span>
+<span class="source-line-no">382</span><span id="line-382"> ByteArrayComparableModel comparator;</span>
+<span class="source-line-no">383</span><span id="line-383"> @XmlAttribute</span>
+<span class="source-line-no">384</span><span id="line-384"> public String value;</span>
+<span class="source-line-no">385</span><span id="line-385"> @XmlElement</span>
+<span class="source-line-no">386</span><span id="line-386"> public List<FilterModel> filters;</span>
+<span class="source-line-no">387</span><span id="line-387"> @XmlAttribute</span>
+<span class="source-line-no">388</span><span id="line-388"> public Integer limit;</span>
+<span class="source-line-no">389</span><span id="line-389"> @XmlAttribute</span>
+<span class="source-line-no">390</span><span id="line-390"> public Integer offset;</span>
+<span class="source-line-no">391</span><span id="line-391"> @XmlAttribute</span>
+<span class="source-line-no">392</span><span id="line-392"> public String family;</span>
+<span class="source-line-no">393</span><span id="line-393"> @XmlAttribute</span>
+<span class="source-line-no">394</span><span id="line-394"> public String qualifier;</span>
+<span class="source-line-no">395</span><span id="line-395"> @XmlAttribute</span>
+<span class="source-line-no">396</span><span id="line-396"> public Boolean ifMissing;</span>
+<span class="source-line-no">397</span><span id="line-397"> @XmlAttribute</span>
+<span class="source-line-no">398</span><span id="line-398"> public Boolean latestVersion;</span>
+<span class="source-line-no">399</span><span id="line-399"> @XmlAttribute</span>
+<span class="source-line-no">400</span><span id="line-400"> public String minColumn;</span>
+<span class="source-line-no">401</span><span id="line-401"> @XmlAttribute</span>
+<span class="source-line-no">402</span><span id="line-402"> public Boolean minColumnInclusive;</span>
+<span class="source-line-no">403</span><span id="line-403"> @XmlAttribute</span>
+<span class="source-line-no">404</span><span id="line-404"> public String maxColumn;</span>
+<span class="source-line-no">405</span><span id="line-405"> @XmlAttribute</span>
+<span class="source-line-no">406</span><span id="line-406"> public Boolean maxColumnInclusive;</span>
+<span class="source-line-no">407</span><span id="line-407"> @XmlAttribute</span>
+<span class="source-line-no">408</span><span id="line-408"> public Boolean dropDependentColumn;</span>
+<span class="source-line-no">409</span><span id="line-409"> @XmlAttribute</span>
+<span class="source-line-no">410</span><span id="line-410"> public Float chance;</span>
+<span class="source-line-no">411</span><span id="line-411"> @XmlElement</span>
+<span class="source-line-no">412</span><span id="line-412"> public List<String> prefixes;</span>
+<span class="source-line-no">413</span><span id="line-413"> @XmlElement</span>
+<span class="source-line-no">414</span><span id="line-414"> private List<RowRangeModel> ranges;</span>
+<span class="source-line-no">415</span><span id="line-415"> @XmlElement</span>
+<span class="source-line-no">416</span><span id="line-416"> public List<Long> timestamps;</span>
+<span class="source-line-no">417</span><span id="line-417"> @XmlElement</span>
+<span class="source-line-no">418</span><span id="line-418"> private List<FuzzyKeyModel> fuzzyKeys;</span>
+<span class="source-line-no">419</span><span id="line-419"></span>
+<span class="source-line-no">420</span><span id="line-420"> static enum FilterType {</span>
+<span class="source-line-no">421</span><span id="line-421"> ColumnCountGetFilter,</span>
+<span class="source-line-no">422</span><span id="line-422"> ColumnPaginationFilter,</span>
+<span class="source-line-no">423</span><span id="line-423"> ColumnPrefixFilter,</span>
+<span class="source-line-no">424</span><span id="line-424"> ColumnRangeFilter,</span>
+<span class="source-line-no">425</span><span id="line-425"> DependentColumnFilter,</span>
+<span class="source-line-no">426</span><span id="line-426"> FamilyFilter,</span>
+<span class="source-line-no">427</span><span id="line-427"> FilterList,</span>
+<span class="source-line-no">428</span><span id="line-428"> FirstKeyOnlyFilter,</span>
+<span class="source-line-no">429</span><span id="line-429"> InclusiveStopFilter,</span>
+<span class="source-line-no">430</span><span id="line-430"> KeyOnlyFilter,</span>
+<span class="source-line-no">431</span><span id="line-431"> MultipleColumnPrefixFilter,</span>
+<span class="source-line-no">432</span><span id="line-432"> MultiRowRangeFilter,</span>
+<span class="source-line-no">433</span><span id="line-433"> PageFilter,</span>
+<span class="source-line-no">434</span><span id="line-434"> PrefixFilter,</span>
+<span class="source-line-no">435</span><span id="line-435"> QualifierFilter,</span>
+<span class="source-line-no">436</span><span id="line-436"> RandomRowFilter,</span>
+<span class="source-line-no">437</span><span id="line-437"> RowFilter,</span>
+<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueExcludeFilter,</span>
+<span class="source-line-no">439</span><span id="line-439"> SingleColumnValueFilter,</span>
+<span class="source-line-no">440</span><span id="line-440"> SkipFilter,</span>
+<span class="source-line-no">441</span><span id="line-441"> TimestampsFilter,</span>
+<span class="source-line-no">442</span><span id="line-442"> ValueFilter,</span>
+<span class="source-line-no">443</span><span id="line-443"> WhileMatchFilter,</span>
+<span class="source-line-no">444</span><span id="line-444"> FuzzyRowFilter</span>
+<span class="source-line-no">445</span><span id="line-445"> }</span>
+<span class="source-line-no">446</span><span id="line-446"></span>
+<span class="source-line-no">447</span><span id="line-447"> public FilterModel() {</span>
+<span class="source-line-no">448</span><span id="line-448"> }</span>
+<span class="source-line-no">449</span><span id="line-449"></span>
+<span class="source-line-no">450</span><span id="line-450"> public FilterModel(Filter filter) {</span>
+<span class="source-line-no">451</span><span id="line-451"> String typeName = filter.getClass().getSimpleName();</span>
+<span class="source-line-no">452</span><span id="line-452"> FilterType type = FilterType.valueOf(typeName);</span>
+<span class="source-line-no">453</span><span id="line-453"> this.type = typeName;</span>
+<span class="source-line-no">454</span><span id="line-454"> switch (type) {</span>
+<span class="source-line-no">455</span><span id="line-455"> case ColumnCountGetFilter:</span>
+<span class="source-line-no">456</span><span id="line-456"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
+<span class="source-line-no">457</span><span id="line-457"> break;</span>
+<span class="source-line-no">458</span><span id="line-458"> case ColumnPaginationFilter:</span>
+<span class="source-line-no">459</span><span id="line-459"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
+<span class="source-line-no">460</span><span id="line-460"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
+<span class="source-line-no">461</span><span id="line-461"> break;</span>
+<span class="source-line-no">462</span><span id="line-462"> case ColumnPrefixFilter:</span>
+<span class="source-line-no">463</span><span id="line-463"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
+<span class="source-line-no">464</span><span id="line-464"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
+<span class="source-line-no">465</span><span id="line-465"> break;</span>
+<span class="source-line-no">466</span><span id="line-466"> case ColumnRangeFilter:</span>
+<span class="source-line-no">467</span><span id="line-467"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
+<span class="source-line-no">468</span><span id="line-468"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
+<span class="source-line-no">469</span><span id="line-469"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
+<span class="source-line-no">470</span><span id="line-470"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
+<span class="source-line-no">471</span><span id="line-471"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
+<span class="source-line-no">472</span><span id="line-472"> break;</span>
+<span class="source-line-no">473</span><span id="line-473"> case DependentColumnFilter: {</span>
+<span class="source-line-no">474</span><span id="line-474"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
+<span class="source-line-no">475</span><span id="line-475"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
+<span class="source-line-no">476</span><span id="line-476"> byte[] qualifier = dcf.getQualifier();</span>
+<span class="source-line-no">477</span><span id="line-477"> if (qualifier != null) {</span>
+<span class="source-line-no">478</span><span id="line-478"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
+<span class="source-line-no">479</span><span id="line-479"> }</span>
+<span class="source-line-no">480</span><span id="line-480"> this.op = dcf.getCompareOperator().toString();</span>
+<span class="source-line-no">481</span><span id="line-481"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
+<span class="source-line-no">482</span><span id="line-482"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
+<span class="source-line-no">483</span><span id="line-483"> }</span>
+<span class="source-line-no">484</span><span id="line-484"> break;</span>
+<span class="source-line-no">485</span><span id="line-485"> case FilterList:</span>
+<span class="source-line-no">486</span><span id="line-486"> this.op = ((FilterList) filter).getOperator().toString();</span>
+<span class="source-line-no">487</span><span id="line-487"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">488</span><span id="line-488"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
+<span class="source-line-no">489</span><span id="line-489"> this.filters.add(new FilterModel(child));</span>
+<span class="source-line-no">490</span><span id="line-490"> }</span>
+<span class="source-line-no">491</span><span id="line-491"> break;</span>
+<span class="source-line-no">492</span><span id="line-492"> case FirstKeyOnlyFilter:</span>
+<span class="source-line-no">493</span><span id="line-493"> case KeyOnlyFilter:</span>
+<span class="source-line-no">494</span><span id="line-494"> break;</span>
+<span class="source-line-no">495</span><span id="line-495"> case InclusiveStopFilter:</span>
+<span class="source-line-no">496</span><span id="line-496"> this.value = Bytes</span>
+<span class="source-line-no">497</span><span id="line-497"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
+<span class="source-line-no">498</span><span id="line-498"> break;</span>
+<span class="source-line-no">499</span><span id="line-499"> case MultipleColumnPrefixFilter:</span>
+<span class="source-line-no">500</span><span id="line-500"> this.prefixes = new ArrayList<>();</span>
+<span class="source-line-no">501</span><span id="line-501"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
+<span class="source-line-no">502</span><span id="line-502"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
+<span class="source-line-no">503</span><span id="line-503"> }</span>
+<span class="source-line-no">504</span><span id="line-504"> break;</span>
+<span class="source-line-no">505</span><span id="line-505"> case MultiRowRangeFilter:</span>
+<span class="source-line-no">506</span><span id="line-506"> this.ranges = new ArrayList<>();</span>
+<span class="source-line-no">507</span><span id="line-507"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
+<span class="source-line-no">508</span><span id="line-508"> this.ranges.add(new RowRangeModel(range));</span>
+<span class="source-line-no">509</span><span id="line-509"> }</span>
+<span class="source-line-no">510</span><span id="line-510"> break;</span>
+<span class="source-line-no">511</span><span id="line-511"> case PageFilter:</span>
+<span class="source-line-no">512</span><span id="line-512"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
+<span class="source-line-no">513</span><span id="line-513"> break;</span>
+<span class="source-line-no">514</span><span id="line-514"> case PrefixFilter:</span>
+<span class="source-line-no">515</span><span id="line-515"> this.value =</span>
+<span class="source-line-no">516</span><span id="line-516"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
+<span class="source-line-no">517</span><span id="line-517"> break;</span>
+<span class="source-line-no">518</span><span id="line-518"> case FamilyFilter:</span>
+<span class="source-line-no">519</span><span id="line-519"> case QualifierFilter:</span>
+<span class="source-line-no">520</span><span id="line-520"> case RowFilter:</span>
+<span class="source-line-no">521</span><span id="line-521"> case ValueFilter:</span>
+<span class="source-line-no">522</span><span id="line-522"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
+<span class="source-line-no">523</span><span id="line-523"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
+<span class="source-line-no">524</span><span id="line-524"> break;</span>
+<span class="source-line-no">525</span><span id="line-525"> case RandomRowFilter:</span>
+<span class="source-line-no">526</span><span id="line-526"> this.chance = ((RandomRowFilter) filter).getChance();</span>
+<span class="source-line-no">527</span><span id="line-527"> break;</span>
+<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueExcludeFilter:</span>
+<span class="source-line-no">529</span><span id="line-529"> case SingleColumnValueFilter: {</span>
+<span class="source-line-no">530</span><span id="line-530"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
+<span class="source-line-no">531</span><span id="line-531"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
+<span class="source-line-no">532</span><span id="line-532"> byte[] qualifier = scvf.getQualifier();</span>
+<span class="source-line-no">533</span><span id="line-533"> if (qualifier != null) {</span>
+<span class="source-line-no">534</span><span id="line-534"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
+<span class="source-line-no">535</span><span id="line-535"> }</span>
+<span class="source-line-no">536</span><span id="line-536"> this.op = scvf.getCompareOperator().toString();</span>
+<span class="source-line-no">537</span><span id="line-537"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
+<span class="source-line-no">538</span><span id="line-538"> if (scvf.getFilterIfMissing()) {</span>
+<span class="source-line-no">539</span><span id="line-539"> this.ifMissing = true;</span>
+<span class="source-line-no">540</span><span id="line-540"> }</span>
+<span class="source-line-no">541</span><span id="line-541"> if (scvf.getLatestVersionOnly()) {</span>
+<span class="source-line-no">542</span><span id="line-542"> this.latestVersion = true;</span>
+<span class="source-line-no">543</span><span id="line-543"> }</span>
+<span class="source-line-no">544</span><span id="line-544"> }</span>
+<span class="source-line-no">545</span><span id="line-545"> break;</span>
+<span class="source-line-no">546</span><span id="line-546"> case SkipFilter:</span>
+<span class="source-line-no">547</span><span id="line-547"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">548</span><span id="line-548"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
+<span class="source-line-no">549</span><span id="line-549"> break;</span>
+<span class="source-line-no">550</span><span id="line-550"> case TimestampsFilter:</span>
+<span class="source-line-no">551</span><span id="line-551"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
+<span class="source-line-no">552</span><span id="line-552"> break;</span>
+<span class="source-line-no">553</span><span id="line-553"> case WhileMatchFilter:</span>
+<span class="source-line-no">554</span><span id="line-554"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">555</span><span id="line-555"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
+<span class="source-line-no">556</span><span id="line-556"> break;</span>
+<span class="source-line-no">557</span><span id="line-557"> case FuzzyRowFilter:</span>
+<span class="source-line-no">558</span><span id="line-558"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
+<span class="source-line-no">559</span><span id="line-559"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
+<span class="source-line-no">560</span><span id="line-560"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
+<span class="source-line-no">561</span><span id="line-561"> }</span>
+<span class="source-line-no">562</span><span id="line-562"> break;</span>
+<span class="source-line-no">563</span><span id="line-563"> default:</span>
+<span class="source-line-no">564</span><span id="line-564"> throw new RuntimeException("unhandled filter type " + type);</span>
+<span class="source-line-no">565</span><span id="line-565"> }</span>
+<span class="source-line-no">566</span><span id="line-566"> }</span>
+<span class="source-line-no">567</span><span id="line-567"></span>
+<span class="source-line-no">568</span><span id="line-568"> public Filter build() {</span>
+<span class="source-line-no">569</span><span id="line-569"> Filter filter;</span>
+<span class="source-line-no">570</span><span id="line-570"> switch (FilterType.valueOf(type)) {</span>
+<span class="source-line-no">571</span><span id="line-571"> case ColumnCountGetFilter:</span>
+<span class="source-line-no">572</span><span id="line-572"> filter = new ColumnCountGetFilter(limit);</span>
+<span class="source-line-no">573</span><span id="line-573"> break;</span>
+<span class="source-line-no">574</span><span id="line-574"> case ColumnPaginationFilter:</span>
+<span class="source-line-no">575</span><span id="line-575"> filter = new ColumnPaginationFilter(limit, offset);</span>
+<span class="source-line-no">576</span><span id="line-576"> break;</span>
+<span class="source-line-no">577</span><span id="line-577"> case ColumnPrefixFilter:</span>
+<span class="source-line-no">578</span><span id="line-578"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">579</span><span id="line-579"> break;</span>
+<span class="source-line-no">580</span><span id="line-580"> case ColumnRangeFilter:</span>
+<span class="source-line-no">581</span><span id="line-581"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
+<span class="source-line-no">582</span><span id="line-582"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
+<span class="source-line-no">583</span><span id="line-583"> break;</span>
+<span class="source-line-no">584</span><span id="line-584"> case DependentColumnFilter:</span>
+<span class="source-line-no">585</span><span id="line-585"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">586</span><span id="line-586"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
+<span class="source-line-no">587</span><span id="line-587"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">588</span><span id="line-588"> break;</span>
+<span class="source-line-no">589</span><span id="line-589"> case FamilyFilter:</span>
+<span class="source-line-no">590</span><span id="line-590"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">591</span><span id="line-591"> break;</span>
+<span class="source-line-no">592</span><span id="line-592"> case FilterList: {</span>
+<span class="source-line-no">593</span><span id="line-593"> List<Filter> list = new ArrayList<>(filters.size());</span>
+<span class="source-line-no">594</span><span id="line-594"> for (FilterModel model : filters) {</span>
+<span class="source-line-no">595</span><span id="line-595"> list.add(model.build());</span>
+<span class="source-line-no">596</span><span id="line-596"> }</span>
+<span class="source-line-no">597</span><span id="line-597"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
+<span class="source-line-no">598</span><span id="line-598"> }</span>
+<span class="source-line-no">599</span><span id="line-599"> break;</span>
+<span class="source-line-no">600</span><span id="line-600"> case FirstKeyOnlyFilter:</span>
+<span class="source-line-no">601</span><span id="line-601"> filter = new FirstKeyOnlyFilter();</span>
+<span class="source-line-no">602</span><span id="line-602"> break;</span>
+<span class="source-line-no">603</span><span id="line-603"> case InclusiveStopFilter:</span>
+<span class="source-line-no">604</span><span id="line-604"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">605</span><span id="line-605"> break;</span>
+<span class="source-line-no">606</span><span id="line-606"> case KeyOnlyFilter:</span>
+<span class="source-line-no">607</span><span id="line-607"> filter = new KeyOnlyFilter();</span>
+<span class="source-line-no">608</span><span id="line-608"> break;</span>
+<span class="source-line-no">609</span><span id="line-609"> case MultipleColumnPrefixFilter: {</span>
+<span class="source-line-no">610</span><span id="line-610"> byte[][] values = new byte[prefixes.size()][];</span>
+<span class="source-line-no">611</span><span id="line-611"> for (int i = 0; i < prefixes.size(); i++) {</span>
+<span class="source-line-no">612</span><span id="line-612"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
+<span class="source-line-no">613</span><span id="line-613"> }</span>
+<span class="source-line-no">614</span><span id="line-614"> filter = new MultipleColumnPrefixFilter(values);</span>
+<span class="source-line-no">615</span><span id="line-615"> }</span>
+<span class="source-line-no">616</span><span id="line-616"> break;</span>
+<span class="source-line-no">617</span><span id="line-617"> case MultiRowRangeFilter: {</span>
+<span class="source-line-no">618</span><span id="line-618"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
+<span class="source-line-no">619</span><span id="line-619"> for (RowRangeModel rangeModel : ranges) {</span>
+<span class="source-line-no">620</span><span id="line-620"> rowRanges.add(rangeModel.build());</span>
+<span class="source-line-no">621</span><span id="line-621"> }</span>
+<span class="source-line-no">622</span><span id="line-622"> filter = new MultiRowRangeFilter(rowRanges);</span>
+<span class="source-line-no">623</span><span id="line-623"> }</span>
+<span class="source-line-no">624</span><span id="line-624"> break;</span>
+<span class="source-line-no">625</span><span id="line-625"> case PageFilter:</span>
+<span class="source-line-no">626</span><span id="line-626"> filter = new PageFilter(Long.parseLong(value));</span>
+<span class="source-line-no">627</span><span id="line-627"> break;</span>
+<span class="source-line-no">628</span><span id="line-628"> case PrefixFilter:</span>
+<span class="source-line-no">629</span><span id="line-629"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">630</span><span id="line-630"> break;</span>
+<span class="source-line-no">631</span><span id="line-631"> case QualifierFilter:</span>
+<span class="source-line-no">632</span><span id="line-632"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">633</span><span id="line-633"> break;</span>
+<span class="source-line-no">634</span><span id="line-634"> case RandomRowFilter:</span>
+<span class="source-line-no">635</span><span id="line-635"> filter = new RandomRowFilter(chance);</span>
+<span class="source-line-no">636</span><span id="line-636"> break;</span>
+<span class="source-line-no">637</span><span id="line-637"> case RowFilter:</span>
+<span class="source-line-no">638</span><span id="line-638"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">639</span><span id="line-639"> break;</span>
+<span class="source-line-no">640</span><span id="line-640"> case SingleColumnValueFilter:</span>
+<span class="source-line-no">641</span><span id="line-641"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">642</span><span id="line-642"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
+<span class="source-line-no">643</span><span id="line-643"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">644</span><span id="line-644"> if (ifMissing != null) {</span>
+<span class="source-line-no">645</span><span id="line-645"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
+<span class="source-line-no">646</span><span id="line-646"> }</span>
+<span class="source-line-no">647</span><span id="line-647"> if (latestVersion != null) {</span>
+<span class="source-line-no">648</span><span id="line-648"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
+<span class="source-line-no">649</span><span id="line-649"> }</span>
+<span class="source-line-no">650</span><span id="line-650"> break;</span>
+<span class="source-line-no">651</span><span id="line-651"> case SingleColumnValueExcludeFilter:</span>
+<span class="source-line-no">652</span><span id="line-652"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">653</span><span id="line-653"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
+<span class="source-line-no">654</span><span id="line-654"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">655</span><span id="line-655"> if (ifMissing != null) {</span>
+<span class="source-line-no">656</span><span id="line-656"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
+<span class="source-line-no">657</span><span id="line-657"> }</span>
+<span class="source-line-no">658</span><span id="line-658"> if (latestVersion != null) {</span>
+<span class="source-line-no">659</span><span id="line-659"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
+<span class="source-line-no">660</span><span id="line-660"> }</span>
+<span class="source-line-no">661</span><span id="line-661"> break;</span>
+<span class="source-line-no">662</span><span id="line-662"> case SkipFilter:</span>
+<span class="source-line-no">663</span><span id="line-663"> filter = new SkipFilter(filters.get(0).build());</span>
+<span class="source-line-no">664</span><span id="line-664"> break;</span>
+<span class="source-line-no">665</span><span id="line-665"> case TimestampsFilter:</span>
+<span class="source-line-no">666</span><span id="line-666"> filter = new TimestampsFilter(timestamps);</span>
+<span class="source-line-no">667</span><span id="line-667"> break;</span>
+<span class="source-line-no">668</span><span id="line-668"> case ValueFilter:</span>
+<span class="source-line-no">669</span><span id="line-669"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">670</span><span id="line-670"> break;</span>
+<span class="source-line-no">671</span><span id="line-671"> case WhileMatchFilter:</span>
+<span class="source-line-no">672</span><span id="line-672"> filter = new WhileMatchFilter(filters.get(0).build());</span>
+<span class="source-line-no">673</span><span id="line-673"> break;</span>
+<span class="source-line-no">674</span><span id="line-674"> case FuzzyRowFilter: {</span>
+<span class="source-line-no">675</span><span id="line-675"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
+<span class="source-line-no">676</span><span id="line-676"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
+<span class="source-line-no">677</span><span id="line-677"> fuzzyKeyArgs.add(keyModel.build());</span>
+<span class="source-line-no">678</span><span id="line-678"> }</span>
+<span class="source-line-no">679</span><span id="line-679"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
+<span class="source-line-no">680</span><span id="line-680"> }</span>
+<span class="source-line-no">681</span><span id="line-681"> break;</span>
+<span class="source-line-no">682</span><span id="line-682"> default:</span>
+<span class="source-line-no">683</span><span id="line-683"> throw new RuntimeException("unhandled filter type: " + type);</span>
+<span class="source-line-no">684</span><span id="line-684"> }</span>
+<span class="source-line-no">685</span><span id="line-685"> return filter;</span>
+<span class="source-line-no">686</span><span id="line-686"> }</span>
+<span class="source-line-no">687</span><span id="line-687"></span>
+<span class="source-line-no">688</span><span id="line-688"> }</span>
+<span class="source-line-no">689</span><span id="line-689"></span>
+<span class="source-line-no">690</span><span id="line-690"> /**</span>
+<span class="source-line-no">691</span><span id="line-691"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
+<span class="source-line-no">692</span><span id="line-692"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
+<span class="source-line-no">693</span><span id="line-693"> */</span>
+<span class="source-line-no">694</span><span id="line-694"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
+<span class="source-line-no">695</span><span id="line-695"> return JaxbJsonProviderHolder.INSTANCE;</span>
+<span class="source-line-no">696</span><span id="line-696"> }</span>
+<span class="source-line-no">697</span><span id="line-697"></span>
+<span class="source-line-no">698</span><span id="line-698"> /**</span>
+<span class="source-line-no">699</span><span id="line-699"> * @param s the JSON representation of the filter</span>
+<span class="source-line-no">700</span><span id="line-700"> * @return the filter</span>
+<span class="source-line-no">701</span><span id="line-701"> */</span>
+<span class="source-line-no">702</span><span id="line-702"> public static Filter buildFilter(String s) throws Exception {</span>
+<span class="source-line-no">703</span><span id="line-703"> FilterModel model =</span>
+<span class="source-line-no">704</span><span id="line-704"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
+<span class="source-line-no">705</span><span id="line-705"> .readValue(s, FilterModel.class);</span>
+<span class="source-line-no">706</span><span id="line-706"> return model.build();</span>
+<span class="source-line-no">707</span><span id="line-707"> }</span>
+<span class="source-line-no">708</span><span id="line-708"></span>
+<span class="source-line-no">709</span><span id="line-709"> /**</span>
+<span class="source-line-no">710</span><span id="line-710"> * @param filter the filter</span>
+<span class="source-line-no">711</span><span id="line-711"> * @return the JSON representation of the filter</span>
+<span class="source-line-no">712</span><span id="line-712"> */</span>
+<span class="source-line-no">713</span><span id="line-713"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
+<span class="source-line-no">714</span><span id="line-714"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
+<span class="source-line-no">715</span><span id="line-715"> .writeValueAsString(new FilterModel(filter));</span>
+<span class="source-line-no">716</span><span id="line-716"> }</span>
+<span class="source-line-no">717</span><span id="line-717"></span>
+<span class="source-line-no">718</span><span id="line-718"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
+<span class="source-line-no">719</span><span id="line-719"></span>
+<span class="source-line-no">720</span><span id="line-720"> /**</span>
+<span class="source-line-no">721</span><span id="line-721"> * @param scan the scan specification</span>
+<span class="source-line-no">722</span><span id="line-722"> */</span>
+<span class="source-line-no">723</span><span id="line-723"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
+<span class="source-line-no">724</span><span id="line-724"> ScannerModel model = new ScannerModel();</span>
+<span class="source-line-no">725</span><span id="line-725"> model.setStartRow(scan.getStartRow());</span>
+<span class="source-line-no">726</span><span id="line-726"> model.setEndRow(scan.getStopRow());</span>
+<span class="source-line-no">727</span><span id="line-727"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
+<span class="source-line-no">728</span><span id="line-728"> if (families != null) {</span>
+<span class="source-line-no">729</span><span id="line-729"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
+<span class="source-line-no">730</span><span id="line-730"> if (entry.getValue() != null) {</span>
+<span class="source-line-no">731</span><span id="line-731"> for (byte[] qualifier : entry.getValue()) {</span>
+<span class="source-line-no">732</span><span id="line-732"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
+<span class="source-line-no">733</span><span id="line-733"> }</span>
+<span class="source-line-no">734</span><span id="line-734"> } else {</span>
+<span class="source-line-no">735</span><span id="line-735"> model.addColumn(entry.getKey());</span>
+<span class="source-line-no">736</span><span id="line-736"> }</span>
+<span class="source-line-no">737</span><span id="line-737"> }</span>
+<span class="source-line-no">738</span><span id="line-738"> }</span>
+<span class="source-line-no">739</span><span id="line-739"> model.setStartTime(scan.getTimeRange().getMin());</span>
+<span class="source-line-no">740</span><span id="line-740"> model.setEndTime(scan.getTimeRange().getMax());</span>
+<span class="source-line-no">741</span><span id="line-741"> int caching = scan.getCaching();</span>
+<span class="source-line-no">742</span><span id="line-742"> if (caching > 0) {</span>
+<span class="source-line-no">743</span><span id="line-743"> model.setCaching(caching);</span>
+<span class="source-line-no">744</span><span id="line-744"> }</span>
+<span class="source-line-no">745</span><span id="line-745"> int batch = scan.getBatch();</span>
+<span class="source-line-no">746</span><span id="line-746"> if (batch > 0) {</span>
+<span class="source-line-no">747</span><span id="line-747"> model.setBatch(batch);</span>
+<span class="source-line-no">748</span><span id="line-748"> }</span>
+<span class="source-line-no">749</span><span id="line-749"> int maxVersions = scan.getMaxVersions();</span>
+<span class="source-line-no">750</span><span id="line-750"> if (maxVersions > 0) {</span>
+<span class="source-line-no">751</span><span id="line-751"> model.setMaxVersions(maxVersions);</span>
+<span class="source-line-no">752</span><span id="line-752"> }</span>
+<span class="source-line-no">753</span><span id="line-753"> if (scan.getLimit() > 0) {</span>
+<span class="source-line-no">754</span><span id="line-754"> model.setLimit(scan.getLimit());</span>
+<span class="source-line-no">755</span><span id="line-755"> }</span>
+<span class="source-line-no">756</span><span id="line-756"> Filter filter = scan.getFilter();</span>
+<span class="source-line-no">757</span><span id="line-757"> if (filter != null) {</span>
+<span class="source-line-no">758</span><span id="line-758"> model.setFilter(stringifyFilter(filter));</span>
+<span class="source-line-no">759</span><span id="line-759"> }</span>
+<span class="source-line-no">760</span><span id="line-760"> // Add the visbility labels if found in the attributes</span>
+<span class="source-line-no">761</span><span id="line-761"> Authorizations authorizations = scan.getAuthorizations();</span>
+<span class="source-line-no">762</span><span id="line-762"> if (authorizations != null) {</span>
+<span class="source-line-no">763</span><span id="line-763"> List<String> labels = authorizations.getLabels();</span>
+<span class="source-line-no">764</span><span id="line-764"> for (String label : labels) {</span>
+<span class="source-line-no">765</span><span id="line-765"> model.addLabel(label);</span>
+<span class="source-line-no">766</span><span id="line-766"> }</span>
+<span class="source-line-no">767</span><span id="line-767"> }</span>
+<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStartRow(scan.includeStartRow());</span>
+<span class="source-line-no">769</span><span id="line-769"> model.setIncludeStopRow(scan.includeStopRow());</span>
+<span class="source-line-no">770</span><span id="line-770"> return model;</span>
+<span class="source-line-no">771</span><span id="line-771"> }</span>
+<span class="source-line-no">772</span><span id="line-772"></span>
+<span class="source-line-no">773</span><span id="line-773"> /**</span>
+<span class="source-line-no">774</span><span id="line-774"> * Default constructor</span>
+<span class="source-line-no">775</span><span id="line-775"> */</span>
+<span class="source-line-no">776</span><span id="line-776"> public ScannerModel() {</span>
+<span class="source-line-no">777</span><span id="line-777"> }</span>
+<span class="source-line-no">778</span><span id="line-778"></span>
+<span class="source-line-no">779</span><span id="line-779"> /**</span>
+<span class="source-line-no">780</span><span id="line-780"> * Constructor</span>
+<span class="source-line-no">781</span><span id="line-781"> * @param startRow the start key of the row-range</span>
+<span class="source-line-no">782</span><span id="line-782"> * @param endRow the end key of the row-range</span>
+<span class="source-line-no">783</span><span id="line-783"> * @param columns the columns to scan</span>
+<span class="source-line-no">784</span><span id="line-784"> * @param batch the number of values to return in batch</span>
+<span class="source-line-no">785</span><span id="line-785"> * @param caching the number of rows that the scanner will fetch at once</span>
+<span class="source-line-no">786</span><span id="line-786"> * @param endTime the upper bound on timestamps of values of interest</span>
+<span class="source-line-no">787</span><span id="line-787"> * @param maxVersions the maximum number of versions to return</span>
+<span class="source-line-no">788</span><span id="line-788"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
+<span class="source-line-no">789</span><span id="line-789"> */</span>
+<span class="source-line-no">790</span><span id="line-790"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
+<span class="source-line-no">791</span><span id="line-791"> long endTime, int maxVersions, String filter) {</span>
+<span class="source-line-no">792</span><span id="line-792"> super();</span>
+<span class="source-line-no">793</span><span id="line-793"> this.startRow = startRow;</span>
+<span class="source-line-no">794</span><span id="line-794"> this.endRow = endRow;</span>
+<span class="source-line-no">795</span><span id="line-795"> this.columns = columns;</span>
+<span class="source-line-no">796</span><span id="line-796"> this.batch = batch;</span>
+<span class="source-line-no">797</span><span id="line-797"> this.caching = caching;</span>
+<span class="source-line-no">798</span><span id="line-798"> this.endTime = endTime;</span>
+<span class="source-line-no">799</span><span id="line-799"> this.maxVersions = maxVersions;</span>
+<span class="source-line-no">800</span><span id="line-800"> this.filter = filter;</span>
+<span class="source-line-no">801</span><span id="line-801"> }</span>
+<span class="source-line-no">802</span><span id="line-802"></span>
+<span class="source-line-no">803</span><span id="line-803"> /**</span>
+<span class="source-line-no">804</span><span id="line-804"> * Constructor</span>
+<span class="source-line-no">805</span><span id="line-805"> * @param startRow the start key of the row-range</span>
+<span class="source-line-no">806</span><span id="line-806"> * @param endRow the end key of the row-range</span>
+<span class="source-line-no">807</span><span id="line-807"> * @param columns the columns to scan</span>
+<span class="source-line-no">808</span><span id="line-808"> * @param batch the number of values to return in batch</span>
+<span class="source-line-no">809</span><span id="line-809"> * @param caching the number of rows that the scanner will fetch at once</span>
+<span class="source-line-no">810</span><span id="line-810"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
+<span class="source-line-no">811</span><span id="line-811"> * earlier than this are excluded)</span>
+<span class="source-line-no">812</span><span id="line-812"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
+<span class="source-line-no">813</span><span id="line-813"> * later than this are excluded)</span>
+<span class="source-line-no">814</span><span id="line-814"> * @param filter a filter specification</span>
+<span class="source-line-no">815</span><span id="line-815"> */</span>
+<span class="source-line-no">816</span><span id="line-816"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
+<span class="source-line-no">817</span><span id="line-817"> long startTime, long endTime, String filter) {</span>
+<span class="source-line-no">818</span><span id="line-818"> super();</span>
+<span class="source-line-no">819</span><span id="line-819"> this.startRow = startRow;</span>
+<span class="source-line-no">820</span><span id="line-820"> this.endRow = endRow;</span>
+<span class="source-line-no">821</span><span id="line-821"> this.columns = columns;</span>
+<span class="source-line-no">822</span><span id="line-822"> this.batch = batch;</span>
+<span class="source-line-no">823</span><span id="line-823"> this.caching = caching;</span>
+<span class="source-line-no">824</span><span id="line-824"> this.startTime = startTime;</span>
+<span class="source-line-no">825</span><span id="line-825"> this.endTime = endTime;</span>
+<span class="source-line-no">826</span><span id="line-826"> this.filter = filter;</span>
+<span class="source-line-no">827</span><span id="line-827"> }</span>
+<span class="source-line-no">828</span><span id="line-828"></span>
+<span class="source-line-no">829</span><span id="line-829"> /**</span>
+<span class="source-line-no">830</span><span id="line-830"> * Add a column to the column set</span>
+<span class="source-line-no">831</span><span id="line-831"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
+<span class="source-line-no">832</span><span id="line-832"> */</span>
+<span class="source-line-no">833</span><span id="line-833"> public void addColumn(byte[] column) {</span>
+<span class="source-line-no">834</span><span id="line-834"> columns.add(column);</span>
+<span class="source-line-no">835</span><span id="line-835"> }</span>
+<span class="source-line-no">836</span><span id="line-836"></span>
+<span class="source-line-no">837</span><span id="line-837"> /**</span>
+<span class="source-line-no">838</span><span id="line-838"> * Add a visibility label to the scan</span>
+<span class="source-line-no">839</span><span id="line-839"> */</span>
+<span class="source-line-no">840</span><span id="line-840"> public void addLabel(String label) {</span>
+<span class="source-line-no">841</span><span id="line-841"> labels.add(label);</span>
+<span class="source-line-no">842</span><span id="line-842"> }</span>
+<span class="source-line-no">843</span><span id="line-843"></span>
+<span class="source-line-no">844</span><span id="line-844"> /** Returns true if a start row was specified */</span>
+<span class="source-line-no">845</span><span id="line-845"> public boolean hasStartRow() {</span>
+<span class="source-line-no">846</span><span id="line-846"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
+<span class="source-line-no">847</span><span id="line-847"> }</span>
+<span class="source-line-no">848</span><span id="line-848"></span>
+<span class="source-line-no">849</span><span id="line-849"> /** Returns start row */</span>
+<span class="source-line-no">850</span><span id="line-850"> @XmlAttribute</span>
+<span class="source-line-no">851</span><span id="line-851"> public byte[] getStartRow() {</span>
+<span class="source-line-no">852</span><span id="line-852"> return startRow;</span>
+<span class="source-line-no">853</span><span id="line-853"> }</span>
+<span class="source-line-no">854</span><span id="line-854"></span>
+<span class="source-line-no">855</span><span id="line-855"> /** Returns true if an end row was specified */</span>
+<span class="source-line-no">856</span><span id="line-856"> public boolean hasEndRow() {</span>
+<span class="source-line-no">857</span><span id="line-857"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
+<span class="source-line-no">858</span><span id="line-858"> }</span>
+<span class="source-line-no">859</span><span id="line-859"></span>
+<span class="source-line-no">860</span><span id="line-860"> /** Returns end row */</span>
+<span class="source-line-no">861</span><span id="line-861"> @XmlAttribute</span>
+<span class="source-line-no">862</span><span id="line-862"> public byte[] getEndRow() {</span>
+<span class="source-line-no">863</span><span id="line-863"> return endRow;</span>
+<span class="source-line-no">864</span><span id="line-864"> }</span>
+<span class="source-line-no">865</span><span id="line-865"></span>
+<span class="source-line-no">866</span><span id="line-866"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
+<span class="source-line-no">867</span><span id="line-867"> @XmlElement(name = "column")</span>
+<span class="source-line-no">868</span><span id="line-868"> public List<byte[]> getColumns() {</span>
+<span class="source-line-no">869</span><span id="line-869"> return columns;</span>
+<span class="source-line-no">870</span><span id="line-870"> }</span>
+<span class="source-line-no">871</span><span id="line-871"></span>
+<span class="source-line-no">872</span><span id="line-872"> @XmlElement(name = "labels")</span>
+<span class="source-line-no">873</span><span id="line-873"> public List<String> getLabels() {</span>
+<span class="source-line-no">874</span><span id="line-874"> return labels;</span>
+<span class="source-line-no">875</span><span id="line-875"> }</span>
+<span class="source-line-no">876</span><span id="line-876"></span>
+<span class="source-line-no">877</span><span id="line-877"> /** Returns the number of cells to return in batch */</span>
+<span class="source-line-no">878</span><span id="line-878"> @XmlAttribute</span>
+<span class="source-line-no">879</span><span id="line-879"> public int getBatch() {</span>
+<span class="source-line-no">880</span><span id="line-880"> return batch;</span>
+<span class="source-line-no">881</span><span id="line-881"> }</span>
+<span class="source-line-no">882</span><span id="line-882"></span>
+<span class="source-line-no">883</span><span id="line-883"> /** Returns the number of rows that the scanner to fetch at once */</span>
+<span class="source-line-no">884</span><span id="line-884"> @XmlAttribute</span>
+<span class="source-line-no">885</span><span id="line-885"> public int getCaching() {</span>
+<span class="source-line-no">886</span><span id="line-886"> return caching;</span>
+<span class="source-line-no">887</span><span id="line-887"> }</span>
+<span class="source-line-no">888</span><span id="line-888"></span>
+<span class="source-line-no">889</span><span id="line-889"> /** Returns the limit specification */</span>
+<span class="source-line-no">890</span><span id="line-890"> @XmlAttribute</span>
+<span class="source-line-no">891</span><span id="line-891"> public int getLimit() {</span>
+<span class="source-line-no">892</span><span id="line-892"> return limit;</span>
+<span class="source-line-no">893</span><span id="line-893"> }</span>
+<span class="source-line-no">894</span><span id="line-894"></span>
+<span class="source-line-no">895</span><span id="line-895"> /** Returns true if HFile blocks should be cached on the servers for this scan, false otherwise */</span>
+<span class="source-line-no">896</span><span id="line-896"> @XmlAttribute</span>
+<span class="source-line-no">897</span><span id="line-897"> public boolean getCacheBlocks() {</span>
+<span class="source-line-no">898</span><span id="line-898"> return cacheBlocks;</span>
+<span class="source-line-no">899</span><span id="line-899"> }</span>
+<span class="source-line-no">900</span><span id="line-900"></span>
+<span class="source-line-no">901</span><span id="line-901"> /** Returns the lower bound on timestamps of items of interest */</span>
+<span class="source-line-no">902</span><span id="line-902"> @XmlAttribute</span>
+<span class="source-line-no">903</span><span id="line-903"> public long getStartTime() {</span>
+<span class="source-line-no">904</span><span id="line-904"> return startTime;</span>
+<span class="source-line-no">905</span><span id="line-905"> }</span>
+<span class="source-line-no">906</span><span id="line-906"></span>
+<span class="source-line-no">907</span><span id="line-907"> /** Returns the upper bound on timestamps of items of interest */</span>
+<span class="source-line-no">908</span><span id="line-908"> @XmlAttribute</span>
+<span class="source-line-no">909</span><span id="line-909"> public long getEndTime() {</span>
+<span class="source-line-no">910</span><span id="line-910"> return endTime;</span>
+<span class="source-line-no">911</span><span id="line-911"> }</span>
+<span class="source-line-no">912</span><span id="line-912"></span>
+<span class="source-line-no">913</span><span id="line-913"> /** Returns maximum number of versions to return */</span>
+<span class="source-line-no">914</span><span id="line-914"> @XmlAttribute</span>
+<span class="source-line-no">915</span><span id="line-915"> public int getMaxVersions() {</span>
+<span class="source-line-no">916</span><span id="line-916"> return maxVersions;</span>
+<span class="source-line-no">917</span><span id="line-917"> }</span>
+<span class="source-line-no">918</span><span id="line-918"></span>
+<span class="source-line-no">919</span><span id="line-919"> /** Returns the filter specification */</span>
+<span class="source-line-no">920</span><span id="line-920"> @XmlElement</span>
+<span class="source-line-no">921</span><span id="line-921"> public String getFilter() {</span>
+<span class="source-line-no">922</span><span id="line-922"> return filter;</span>
+<span class="source-line-no">923</span><span id="line-923"> }</span>
+<span class="source-line-no">924</span><span id="line-924"></span>
+<span class="source-line-no">925</span><span id="line-925"> /**</span>
+<span class="source-line-no">926</span><span id="line-926"> * @param startRow start row</span>
+<span class="source-line-no">927</span><span id="line-927"> */</span>
+<span class="source-line-no">928</span><span id="line-928"> public void setStartRow(byte[] startRow) {</span>
+<span class="source-line-no">929</span><span id="line-929"> this.startRow = startRow;</span>
+<span class="source-line-no">930</span><span id="line-930"> }</span>
+<span class="source-line-no">931</span><span id="line-931"></span>
+<span class="source-line-no">932</span><span id="line-932"> /**</span>
+<span class="source-line-no">933</span><span id="line-933"> * @param endRow end row</span>
+<span class="source-line-no">934</span><span id="line-934"> */</span>
+<span class="source-line-no">935</span><span id="line-935"> public void setEndRow(byte[] endRow) {</span>
+<span class="source-line-no">936</span><span id="line-936"> this.endRow = endRow;</span>
+<span class="source-line-no">937</span><span id="line-937"> }</span>
+<span class="source-line-no">938</span><span id="line-938"></span>
+<span class="source-line-no">939</span><span id="line-939"> /**</span>
+<span class="source-line-no">940</span><span id="line-940"> * @param columns list of columns of interest in column:qualifier format, or empty for all</span>
+<span class="source-line-no">941</span><span id="line-941"> */</span>
+<span class="source-line-no">942</span><span id="line-942"> public void setColumns(List<byte[]> columns) {</span>
+<span class="source-line-no">943</span><span id="line-943"> this.columns = columns;</span>
+<span class="source-line-no">944</span><span id="line-944"> }</span>
+<span class="source-line-no">945</span><span id="line-945"></span>
+<span class="source-line-no">946</span><span id="line-946"> /**</span>
+<span class="source-line-no">947</span><span id="line-947"> * @param batch the number of cells to return in batch</span>
+<span class="source-line-no">948</span><span id="line-948"> */</span>
+<span class="source-line-no">949</span><span id="line-949"> public void setBatch(int batch) {</span>
+<span class="source-line-no">950</span><span id="line-950"> this.batch = batch;</span>
+<span class="source-line-no">951</span><span id="line-951"> }</span>
+<span class="source-line-no">952</span><span id="line-952"></span>
+<span class="source-line-no">953</span><span id="line-953"> /**</span>
+<span class="source-line-no">954</span><span id="line-954"> * @param caching the number of rows to fetch at once</span>
+<span class="source-line-no">955</span><span id="line-955"> */</span>
+<span class="source-line-no">956</span><span id="line-956"> public void setCaching(int caching) {</span>
+<span class="source-line-no">957</span><span id="line-957"> this.caching = caching;</span>
+<span class="source-line-no">958</span><span id="line-958"> }</span>
+<span class="source-line-no">959</span><span id="line-959"></span>
+<span class="source-line-no">960</span><span id="line-960"> /**</span>
+<span class="source-line-no">961</span><span id="line-961"> * @param value true if HFile blocks should be cached on the servers for this scan, false</span>
+<span class="source-line-no">962</span><span id="line-962"> * otherwise</span>
+<span class="source-line-no">963</span><span id="line-963"> */</span>
+<span class="source-line-no">964</span><span id="line-964"> public void setCacheBlocks(boolean value) {</span>
+<span class="source-line-no">965</span><span id="line-965"> this.cacheBlocks = value;</span>
+<span class="source-line-no">966</span><span id="line-966"> }</span>
+<span class="source-line-no">967</span><span id="line-967"></span>
+<span class="source-line-no">968</span><span id="line-968"> /**</span>
+<span class="source-line-no">969</span><span id="line-969"> * @param limit the number of rows can fetch of each scanner at lifetime</span>
+<span class="source-line-no">970</span><span id="line-970"> */</span>
+<span class="source-line-no">971</span><span id="line-971"> public void setLimit(int limit) {</span>
+<span class="source-line-no">972</span><span id="line-972"> this.limit = limit;</span>
+<span class="source-line-no">973</span><span id="line-973"> }</span>
+<span class="source-line-no">974</span><span id="line-974"></span>
+<span class="source-line-no">975</span><span id="line-975"> /**</span>
+<span class="source-line-no">976</span><span id="line-976"> * @param maxVersions maximum number of versions to return</span>
+<span class="source-line-no">977</span><span id="line-977"> */</span>
+<span class="source-line-no">978</span><span id="line-978"> public void setMaxVersions(int maxVersions) {</span>
+<span class="source-line-no">979</span><span id="line-979"> this.maxVersions = maxVersions;</span>
+<span class="source-line-no">980</span><span id="line-980"> }</span>
+<span class="source-line-no">981</span><span id="line-981"></span>
+<span class="source-line-no">982</span><span id="line-982"> /**</span>
+<span class="source-line-no">983</span><span id="line-983"> * @param startTime the lower bound on timestamps of values of interest</span>
+<span class="source-line-no">984</span><span id="line-984"> */</span>
+<span class="source-line-no">985</span><span id="line-985"> public void setStartTime(long startTime) {</span>
+<span class="source-line-no">986</span><span id="line-986"> this.startTime = startTime;</span>
+<span class="source-line-no">987</span><span id="line-987"> }</span>
+<span class="source-line-no">988</span><span id="line-988"></span>
+<span class="source-line-no">989</span><span id="line-989"> /**</span>
+<span class="source-line-no">990</span><span id="line-990"> * @param endTime the upper bound on timestamps of values of interest</span>
+<span class="source-line-no">991</span><span id="line-991"> */</span>
+<span class="source-line-no">992</span><span id="line-992"> public void setEndTime(long endTime) {</span>
+<span class="source-line-no">993</span><span id="line-993"> this.endTime = endTime;</span>
+<span class="source-line-no">994</span><span id="line-994"> }</span>
+<span class="source-line-no">995</span><span id="line-995"></span>
+<span class="source-line-no">996</span><span id="line-996"> /**</span>
+<span class="source-line-no">997</span><span id="line-997"> * @param filter the filter specification</span>
+<span class="source-line-no">998</span><span id="line-998"> */</span>
+<span class="source-line-no">999</span><span id="line-999"> public void setFilter(String filter) {</span>
+<span class="source-line-no">1000</span><span id="line-1000"> this.filter = filter;</span>
+<span class="source-line-no">1001</span><span id="line-1001"> }</span>
+<span class="source-line-no">1002</span><span id="line-1002"></span>
+<span class="source-line-no">1003</span><span id="line-1003"> @Override</span>
+<span class="source-line-no">1004</span><span id="line-1004"> public Message messageFromObject() {</span>
+<span class="source-line-no">1005</span><span id="line-1005"> Scanner.Builder builder = Scanner.newBuilder();</span>
+<span class="source-line-no">1006</span><span id="line-1006"> if (!Bytes.equals(startRow, HConstants.EMPTY_START_ROW)) {</span>
+<span class="source-line-no">1007</span><span id="line-1007"> builder.setStartRow(UnsafeByteOperations.unsafeWrap(startRow));</span>
+<span class="source-line-no">1008</span><span id="line-1008"> }</span>
+<span class="source-line-no">1009</span><span id="line-1009"> if (!Bytes.equals(endRow, HConstants.EMPTY_START_ROW)) {</span>
+<span class="source-line-no">1010</span><span id="line-1010"> builder.setEndRow(UnsafeByteOperations.unsafeWrap(endRow));</span>
+<span class="source-line-no">1011</span><span id="line-1011"> }</span>
+<span class="source-line-no">1012</span><span id="line-1012"> for (byte[] column : columns) {</span>
+<span class="source-line-no">1013</span><span id="line-1013"> builder.addColumns(UnsafeByteOperations.unsafeWrap(column));</span>
+<span class="source-line-no">1014</span><span id="line-1014"> }</span>
+<span class="source-line-no">1015</span><span id="line-1015"> if (startTime != 0) {</span>
+<span class="source-line-no">1016</span><span id="line-1016"> builder.setStartTime(startTime);</span>
+<span class="source-line-no">1017</span><span id="line-1017"> }</span>
+<span class="source-line-no">1018</span><span id="line-1018"> if (endTime != 0) {</span>
+<span class="source-line-no">1019</span><span id="line-1019"> builder.setEndTime(endTime);</span>
+<span class="source-line-no">1020</span><span id="line-1020"> }</span>
+<span class="source-line-no">1021</span><span id="line-1021"> builder.setBatch(getBatch());</span>
+<span class="source-line-no">1022</span><span id="line-1022"> if (caching > 0) {</span>
+<span class="source-line-no">1023</span><span id="line-1023"> builder.setCaching(caching);</span>
+<span class="source-line-no">1024</span><span id="line-1024"> }</span>
+<span class="source-line-no">1025</span><span id="line-1025"> if (limit > 0) {</span>
+<span class="source-line-no">1026</span><span id="line-1026"> builder.setLimit(limit);</span>
+<span class="source-line-no">1027</span><span id="line-1027"> }</span>
+<span class="source-line-no">1028</span><span id="line-1028"> builder.setMaxVersions(maxVersions);</span>
+<span class="source-line-no">1029</span><span id="line-1029"> if (filter != null) {</span>
+<span class="source-line-no">1030</span><span id="line-1030"> builder.setFilter(filter);</span>
+<span class="source-line-no">1031</span><span id="line-1031"> }</span>
+<span class="source-line-no">1032</span><span id="line-1032"> if (labels != null && labels.size() > 0) {</span>
+<span class="source-line-no">1033</span><span id="line-1033"> for (String label : labels)</span>
+<span class="source-line-no">1034</span><span id="line-1034"> builder.addLabels(label);</span>
+<span class="source-line-no">1035</span><span id="line-1035"> }</span>
+<span class="source-line-no">1036</span><span id="line-1036"> builder.setCacheBlocks(cacheBlocks);</span>
+<span class="source-line-no">1037</span><span id="line-1037"> builder.setIncludeStartRow(includeStartRow);</span>
+<span class="source-line-no">1038</span><span id="line-1038"> builder.setIncludeStopRow(includeStopRow);</span>
+<span class="source-line-no">1039</span><span id="line-1039"> return builder.build();</span>
+<span class="source-line-no">1040</span><span id="line-1040"> }</span>
+<span class="source-line-no">1041</span><span id="line-1041"></span>
+<span class="source-line-no">1042</span><span id="line-1042"> @Override</span>
+<span class="source-line-no">1043</span><span id="line-1043"> public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws IOException {</span>
+<span class="source-line-no">1044</span><span id="line-1044"> Scanner.Builder builder = Scanner.newBuilder();</span>
+<span class="source-line-no">1045</span><span id="line-1045"> RestUtil.mergeFrom(builder, cis);</span>
+<span class="source-line-no">1046</span><span id="line-1046"> if (builder.hasStartRow()) {</span>
+<span class="source-line-no">1047</span><span id="line-1047"> startRow = builder.getStartRow().toByteArray();</span>
+<span class="source-line-no">1048</span><span id="line-1048"> }</span>
+<span class="source-line-no">1049</span><span id="line-1049"> if (builder.hasEndRow()) {</span>
+<span class="source-line-no">1050</span><span id="line-1050"> endRow = builder.getEndRow().toByteArray();</span>
+<span class="source-line-no">1051</span><span id="line-1051"> }</span>
+<span class="source-line-no">1052</span><span id="line-1052"> for (ByteString column : builder.getColumnsList()) {</span>
+<span class="source-line-no">1053</span><span id="line-1053"> addColumn(column.toByteArray());</span>
+<span class="source-line-no">1054</span><span id="line-1054"> }</span>
+<span class="source-line-no">1055</span><span id="line-1055"> if (builder.hasBatch()) {</span>
+<span class="source-line-no">1056</span><span id="line-1056"> batch = builder.getBatch();</span>
+<span class="source-line-no">1057</span><span id="line-1057"> }</span>
+<span class="source-line-no">1058</span><span id="line-1058"> if (builder.hasCaching()) {</span>
+<span class="source-line-no">1059</span><span id="line-1059"> caching = builder.getCaching();</span>
+<span class="source-line-no">1060</span><span id="line-1060"> }</span>
+<span class="source-line-no">1061</span><span id="line-1061"> if (builder.hasLimit()) {</span>
+<span class="source-line-no">1062</span><span id="line-1062"> limit = builder.getLimit();</span>
+<span class="source-line-no">1063</span><span id="line-1063"> }</span>
+<span class="source-line-no">1064</span><span id="line-1064"> if (builder.hasStartTime()) {</span>
+<span class="source-line-no">1065</span><span id="line-1065"> startTime = builder.getStartTime();</span>
+<span class="source-line-no">1066</span><span id="line-1066"> }</span>
+<span class="source-line-no">1067</span><span id="line-1067"> if (builder.hasEndTime()) {</span>
+<span class="source-line-no">1068</span><span id="line-1068"> endTime = builder.getEndTime();</span>
+<span class="source-line-no">1069</span><span id="line-1069"> }</span>
+<span class="source-line-no">1070</span><span id="line-1070"> if (builder.hasMaxVersions()) {</span>
+<span class="source-line-no">1071</span><span id="line-1071"> maxVersions = builder.getMaxVersions();</span>
+<span class="source-line-no">1072</span><span id="line-1072"> }</span>
+<span class="source-line-no">1073</span><span id="line-1073"> if (builder.hasFilter()) {</span>
+<span class="source-line-no">1074</span><span id="line-1074"> filter = builder.getFilter();</span>
+<span class="source-line-no">1075</span><span id="line-1075"> }</span>
+<span class="source-line-no">1076</span><span id="line-1076"> if (builder.getLabelsList() != null) {</span>
+<span class="source-line-no">1077</span><span id="line-1077"> List<String> labels = builder.getLabelsList();</span>
+<span class="source-line-no">1078</span><span id="line-1078"> for (String label : labels) {</span>
+<span class="source-line-no">1079</span><span id="line-1079"> addLabel(label);</span>
+<span class="source-line-no">1080</span><span id="line-1080"> }</span>
+<span class="source-line-no">1081</span><span id="line-1081"> }</span>
+<span class="source-line-no">1082</span><span id="line-1082"> if (builder.hasCacheBlocks()) {</span>
+<span class="source-line-no">1083</span><span id="line-1083"> this.cacheBlocks = builder.getCacheBlocks();</span>
+<span class="source-line-no">1084</span><span id="line-1084"> }</span>
+<span class="source-line-no">1085</span><span id="line-1085"> if (builder.hasIncludeStartRow()) {</span>
+<span class="source-line-no">1086</span><span id="line-1086"> this.includeStartRow = builder.getIncludeStartRow();</span>
+<span class="source-line-no">1087</span><span id="line-1087"> }</span>
+<span class="source-line-no">1088</span><span id="line-1088"> if (builder.hasIncludeStopRow()) {</span>
+<span class="source-line-no">1089</span><span id="line-1089"> this.includeStopRow = builder.getIncludeStopRow();</span>
+<span class="source-line-no">1090</span><span id="line-1090"> }</span>
+<span class="source-line-no">1091</span><span id="line-1091"> return this;</span>
+<span class="source-line-no">1092</span><span id="line-1092"> }</span>
+<span class="source-line-no">1093</span><span id="line-1093"></span>
+<span class="source-line-no">1094</span><span id="line-1094">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html
index 4f348f2cbd6..1560b4baff0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html
@@ -159,951 +159,952 @@
<span class="source-line-no">146</span><span id="line-146"> }</span>
<span class="source-line-no">147</span><span id="line-147"></span>
<span class="source-line-no">148</span><span id="line-148"> @edu.umd.cs.findbugs.annotations.SuppressWarnings(</span>
-<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE" },</span>
-<span class="source-line-no">150</span><span id="line-150"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
-<span class="source-line-no">151</span><span id="line-151"> private static class IncludeStartRowFilter {</span>
-<span class="source-line-no">152</span><span id="line-152"> @Override</span>
-<span class="source-line-no">153</span><span id="line-153"> public boolean equals(Object value) {</span>
-<span class="source-line-no">154</span><span id="line-154"> return Boolean.TRUE.equals(value);</span>
-<span class="source-line-no">155</span><span id="line-155"> }</span>
-<span class="source-line-no">156</span><span id="line-156"> }</span>
-<span class="source-line-no">157</span><span id="line-157"></span>
-<span class="source-line-no">158</span><span id="line-158"> /**</span>
-<span class="source-line-no">159</span><span id="line-159"> * Implement lazily-instantiated singleton as per recipe here:</span>
-<span class="source-line-no">160</span><span id="line-160"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
-<span class="source-line-no">161</span><span id="line-161"> */</span>
-<span class="source-line-no">162</span><span id="line-162"> private static class JaxbJsonProviderHolder {</span>
-<span class="source-line-no">163</span><span id="line-163"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
-<span class="source-line-no">164</span><span id="line-164"> }</span>
-<span class="source-line-no">165</span><span id="line-165"></span>
-<span class="source-line-no">166</span><span id="line-166"> @XmlRootElement</span>
-<span class="source-line-no">167</span><span id="line-167"> static class FilterModel {</span>
-<span class="source-line-no">168</span><span id="line-168"></span>
-<span class="source-line-no">169</span><span id="line-169"> @XmlRootElement</span>
-<span class="source-line-no">170</span><span id="line-170"> static class ByteArrayComparableModel {</span>
-<span class="source-line-no">171</span><span id="line-171"> @XmlAttribute</span>
-<span class="source-line-no">172</span><span id="line-172"> public String type;</span>
-<span class="source-line-no">173</span><span id="line-173"> @XmlAttribute</span>
-<span class="source-line-no">174</span><span id="line-174"> public String value;</span>
-<span class="source-line-no">175</span><span id="line-175"> @XmlAttribute</span>
-<span class="source-line-no">176</span><span id="line-176"> public String op;</span>
-<span class="source-line-no">177</span><span id="line-177"></span>
-<span class="source-line-no">178</span><span id="line-178"> static enum ComparatorType {</span>
-<span class="source-line-no">179</span><span id="line-179"> BinaryComparator,</span>
-<span class="source-line-no">180</span><span id="line-180"> BinaryPrefixComparator,</span>
-<span class="source-line-no">181</span><span id="line-181"> BitComparator,</span>
-<span class="source-line-no">182</span><span id="line-182"> NullComparator,</span>
-<span class="source-line-no">183</span><span id="line-183"> RegexStringComparator,</span>
-<span class="source-line-no">184</span><span id="line-184"> SubstringComparator</span>
-<span class="source-line-no">185</span><span id="line-185"> }</span>
-<span class="source-line-no">186</span><span id="line-186"></span>
-<span class="source-line-no">187</span><span id="line-187"> public ByteArrayComparableModel() {</span>
-<span class="source-line-no">188</span><span id="line-188"> }</span>
-<span class="source-line-no">189</span><span id="line-189"></span>
-<span class="source-line-no">190</span><span id="line-190"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
-<span class="source-line-no">191</span><span id="line-191"> String typeName = comparator.getClass().getSimpleName();</span>
-<span class="source-line-no">192</span><span id="line-192"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
-<span class="source-line-no">193</span><span id="line-193"> this.type = typeName;</span>
-<span class="source-line-no">194</span><span id="line-194"> switch (type) {</span>
-<span class="source-line-no">195</span><span id="line-195"> case BinaryComparator:</span>
-<span class="source-line-no">196</span><span id="line-196"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">197</span><span id="line-197"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">198</span><span id="line-198"> break;</span>
-<span class="source-line-no">199</span><span id="line-199"> case BitComparator:</span>
-<span class="source-line-no">200</span><span id="line-200"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">201</span><span id="line-201"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
-<span class="source-line-no">202</span><span id="line-202"> break;</span>
-<span class="source-line-no">203</span><span id="line-203"> case NullComparator:</span>
-<span class="source-line-no">204</span><span id="line-204"> break;</span>
-<span class="source-line-no">205</span><span id="line-205"> case RegexStringComparator:</span>
-<span class="source-line-no">206</span><span id="line-206"> case SubstringComparator:</span>
-<span class="source-line-no">207</span><span id="line-207"> this.value = Bytes.toString(comparator.getValue());</span>
-<span class="source-line-no">208</span><span id="line-208"> break;</span>
-<span class="source-line-no">209</span><span id="line-209"> default:</span>
-<span class="source-line-no">210</span><span id="line-210"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">211</span><span id="line-211"> }</span>
-<span class="source-line-no">212</span><span id="line-212"> }</span>
-<span class="source-line-no">213</span><span id="line-213"></span>
-<span class="source-line-no">214</span><span id="line-214"> public ByteArrayComparable build() {</span>
-<span class="source-line-no">215</span><span id="line-215"> ByteArrayComparable comparator;</span>
-<span class="source-line-no">216</span><span id="line-216"> switch (ComparatorType.valueOf(type)) {</span>
-<span class="source-line-no">217</span><span id="line-217"> case BinaryComparator:</span>
-<span class="source-line-no">218</span><span id="line-218"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">219</span><span id="line-219"> break;</span>
-<span class="source-line-no">220</span><span id="line-220"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">221</span><span id="line-221"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">222</span><span id="line-222"> break;</span>
-<span class="source-line-no">223</span><span id="line-223"> case BitComparator:</span>
-<span class="source-line-no">224</span><span id="line-224"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
-<span class="source-line-no">225</span><span id="line-225"> BitComparator.BitwiseOp.valueOf(op));</span>
-<span class="source-line-no">226</span><span id="line-226"> break;</span>
-<span class="source-line-no">227</span><span id="line-227"> case NullComparator:</span>
-<span class="source-line-no">228</span><span id="line-228"> comparator = new NullComparator();</span>
-<span class="source-line-no">229</span><span id="line-229"> break;</span>
-<span class="source-line-no">230</span><span id="line-230"> case RegexStringComparator:</span>
-<span class="source-line-no">231</span><span id="line-231"> comparator = new RegexStringComparator(value);</span>
-<span class="source-line-no">232</span><span id="line-232"> break;</span>
-<span class="source-line-no">233</span><span id="line-233"> case SubstringComparator:</span>
-<span class="source-line-no">234</span><span id="line-234"> comparator = new SubstringComparator(value);</span>
-<span class="source-line-no">235</span><span id="line-235"> break;</span>
-<span class="source-line-no">236</span><span id="line-236"> default:</span>
-<span class="source-line-no">237</span><span id="line-237"> throw new RuntimeException("unhandled comparator type: " + type);</span>
-<span class="source-line-no">238</span><span id="line-238"> }</span>
-<span class="source-line-no">239</span><span id="line-239"> return comparator;</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"></span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
-<span class="source-line-no">246</span><span id="line-246"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
-<span class="source-line-no">247</span><span id="line-247"> */</span>
-<span class="source-line-no">248</span><span id="line-248"> static class RowRangeModel {</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250"> protected byte[] startRow;</span>
-<span class="source-line-no">251</span><span id="line-251"></span>
-<span class="source-line-no">252</span><span id="line-252"> protected boolean startRowInclusive = true;</span>
-<span class="source-line-no">253</span><span id="line-253"></span>
-<span class="source-line-no">254</span><span id="line-254"> protected byte[] stopRow;</span>
-<span class="source-line-no">255</span><span id="line-255"></span>
-<span class="source-line-no">256</span><span id="line-256"> protected boolean stopRowInclusive = false;</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> public RowRangeModel() {</span>
-<span class="source-line-no">259</span><span id="line-259"> }</span>
-<span class="source-line-no">260</span><span id="line-260"></span>
-<span class="source-line-no">261</span><span id="line-261"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
-<span class="source-line-no">262</span><span id="line-262"> this.startRow = rr.getStartRow();</span>
-<span class="source-line-no">263</span><span id="line-263"> this.startRowInclusive = rr.isStartRowInclusive();</span>
-<span class="source-line-no">264</span><span id="line-264"> this.stopRow = rr.getStopRow();</span>
-<span class="source-line-no">265</span><span id="line-265"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
-<span class="source-line-no">266</span><span id="line-266"> }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268"> public MultiRowRangeFilter.RowRange build() {</span>
-<span class="source-line-no">269</span><span id="line-269"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
-<span class="source-line-no">270</span><span id="line-270"> stopRowInclusive);</span>
-<span class="source-line-no">271</span><span id="line-271"> }</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> public byte[] getStartRow() {</span>
-<span class="source-line-no">274</span><span id="line-274"> return startRow;</span>
-<span class="source-line-no">275</span><span id="line-275"> }</span>
-<span class="source-line-no">276</span><span id="line-276"></span>
-<span class="source-line-no">277</span><span id="line-277"> public byte[] getStopRow() {</span>
-<span class="source-line-no">278</span><span id="line-278"> return stopRow;</span>
-<span class="source-line-no">279</span><span id="line-279"> }</span>
-<span class="source-line-no">280</span><span id="line-280"></span>
-<span class="source-line-no">281</span><span id="line-281"> /** Returns if start row is inclusive. */</span>
-<span class="source-line-no">282</span><span id="line-282"> public boolean isStartRowInclusive() {</span>
-<span class="source-line-no">283</span><span id="line-283"> return startRowInclusive;</span>
-<span class="source-line-no">284</span><span id="line-284"> }</span>
-<span class="source-line-no">285</span><span id="line-285"></span>
-<span class="source-line-no">286</span><span id="line-286"> /** Returns if stop row is inclusive. */</span>
-<span class="source-line-no">287</span><span id="line-287"> public boolean isStopRowInclusive() {</span>
-<span class="source-line-no">288</span><span id="line-288"> return stopRowInclusive;</span>
-<span class="source-line-no">289</span><span id="line-289"> }</span>
-<span class="source-line-no">290</span><span id="line-290"></span>
-<span class="source-line-no">291</span><span id="line-291"> @Override</span>
-<span class="source-line-no">292</span><span id="line-292"> public int hashCode() {</span>
-<span class="source-line-no">293</span><span id="line-293"> final int prime = 31;</span>
-<span class="source-line-no">294</span><span id="line-294"> int result = 1;</span>
-<span class="source-line-no">295</span><span id="line-295"> result = prime * result + Arrays.hashCode(startRow);</span>
-<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(stopRow);</span>
-<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
-<span class="source-line-no">298</span><span id="line-298"> return result;</span>
-<span class="source-line-no">299</span><span id="line-299"> }</span>
-<span class="source-line-no">300</span><span id="line-300"></span>
-<span class="source-line-no">301</span><span id="line-301"> @Override</span>
-<span class="source-line-no">302</span><span id="line-302"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">303</span><span id="line-303"> if (this == obj) {</span>
-<span class="source-line-no">304</span><span id="line-304"> return true;</span>
-<span class="source-line-no">305</span><span id="line-305"> }</span>
-<span class="source-line-no">306</span><span id="line-306"> if (!(obj instanceof RowRangeModel)) {</span>
-<span class="source-line-no">307</span><span id="line-307"> return false;</span>
-<span class="source-line-no">308</span><span id="line-308"> }</span>
-<span class="source-line-no">309</span><span id="line-309"> RowRangeModel other = (RowRangeModel) obj;</span>
-<span class="source-line-no">310</span><span id="line-310"> return Arrays.equals(startRow, other.startRow)</span>
-<span class="source-line-no">311</span><span id="line-311"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312"> && stopRowInclusive == other.stopRowInclusive;</span>
-<span class="source-line-no">313</span><span id="line-313"> }</span>
-<span class="source-line-no">314</span><span id="line-314"></span>
-<span class="source-line-no">315</span><span id="line-315"> }</span>
-<span class="source-line-no">316</span><span id="line-316"></span>
-<span class="source-line-no">317</span><span id="line-317"> static class FuzzyKeyModel {</span>
-<span class="source-line-no">318</span><span id="line-318"></span>
-<span class="source-line-no">319</span><span id="line-319"> protected byte[] key;</span>
-<span class="source-line-no">320</span><span id="line-320"></span>
-<span class="source-line-no">321</span><span id="line-321"> protected byte[] mask;</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323"> public FuzzyKeyModel() {</span>
-<span class="source-line-no">324</span><span id="line-324"> }</span>
-<span class="source-line-no">325</span><span id="line-325"></span>
-<span class="source-line-no">326</span><span id="line-326"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
-<span class="source-line-no">327</span><span id="line-327"> this.key = keyWithMask.getFirst();</span>
-<span class="source-line-no">328</span><span id="line-328"> this.mask = keyWithMask.getSecond();</span>
-<span class="source-line-no">329</span><span id="line-329"> }</span>
-<span class="source-line-no">330</span><span id="line-330"></span>
-<span class="source-line-no">331</span><span id="line-331"> public Pair<byte[], byte[]> build() {</span>
-<span class="source-line-no">332</span><span id="line-332"> return new Pair<>(key, mask);</span>
-<span class="source-line-no">333</span><span id="line-333"> }</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335"> public byte[] getKey() {</span>
-<span class="source-line-no">336</span><span id="line-336"> return key;</span>
-<span class="source-line-no">337</span><span id="line-337"> }</span>
-<span class="source-line-no">338</span><span id="line-338"></span>
-<span class="source-line-no">339</span><span id="line-339"> public void setKey(byte[] key) {</span>
-<span class="source-line-no">340</span><span id="line-340"> this.key = key;</span>
-<span class="source-line-no">341</span><span id="line-341"> }</span>
-<span class="source-line-no">342</span><span id="line-342"></span>
-<span class="source-line-no">343</span><span id="line-343"> public byte[] getMask() {</span>
-<span class="source-line-no">344</span><span id="line-344"> return mask;</span>
-<span class="source-line-no">345</span><span id="line-345"> }</span>
-<span class="source-line-no">346</span><span id="line-346"></span>
-<span class="source-line-no">347</span><span id="line-347"> public void setMask(byte[] mask) {</span>
-<span class="source-line-no">348</span><span id="line-348"> this.mask = mask;</span>
-<span class="source-line-no">349</span><span id="line-349"> }</span>
-<span class="source-line-no">350</span><span id="line-350"></span>
-<span class="source-line-no">351</span><span id="line-351"> @Override</span>
-<span class="source-line-no">352</span><span id="line-352"> public int hashCode() {</span>
-<span class="source-line-no">353</span><span id="line-353"> final int prime = 31;</span>
-<span class="source-line-no">354</span><span id="line-354"> int result = 1;</span>
-<span class="source-line-no">355</span><span id="line-355"> result = prime * result + Arrays.hashCode(key);</span>
-<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(mask);</span>
-<span class="source-line-no">357</span><span id="line-357"> return result;</span>
-<span class="source-line-no">358</span><span id="line-358"> }</span>
-<span class="source-line-no">359</span><span id="line-359"></span>
-<span class="source-line-no">360</span><span id="line-360"> @Override</span>
-<span class="source-line-no">361</span><span id="line-361"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">362</span><span id="line-362"> if (this == obj) {</span>
-<span class="source-line-no">363</span><span id="line-363"> return true;</span>
-<span class="source-line-no">364</span><span id="line-364"> }</span>
-<span class="source-line-no">365</span><span id="line-365"> if (!(obj instanceof FuzzyKeyModel)) {</span>
-<span class="source-line-no">366</span><span id="line-366"> return false;</span>
-<span class="source-line-no">367</span><span id="line-367"> }</span>
-<span class="source-line-no">368</span><span id="line-368"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
-<span class="source-line-no">369</span><span id="line-369"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
-<span class="source-line-no">370</span><span id="line-370"> }</span>
-<span class="source-line-no">371</span><span id="line-371"></span>
-<span class="source-line-no">372</span><span id="line-372"> }</span>
-<span class="source-line-no">373</span><span id="line-373"></span>
-<span class="source-line-no">374</span><span id="line-374"> // A grab bag of fields, would have been a union if this were C.</span>
-<span class="source-line-no">375</span><span id="line-375"> // These are null by default and will only be serialized if set (non null).</span>
-<span class="source-line-no">376</span><span id="line-376"> @XmlAttribute</span>
-<span class="source-line-no">377</span><span id="line-377"> public String type;</span>
-<span class="source-line-no">378</span><span id="line-378"> @XmlAttribute</span>
-<span class="source-line-no">379</span><span id="line-379"> public String op;</span>
-<span class="source-line-no">380</span><span id="line-380"> @XmlElement</span>
-<span class="source-line-no">381</span><span id="line-381"> ByteArrayComparableModel comparator;</span>
-<span class="source-line-no">382</span><span id="line-382"> @XmlAttribute</span>
-<span class="source-line-no">383</span><span id="line-383"> public String value;</span>
-<span class="source-line-no">384</span><span id="line-384"> @XmlElement</span>
-<span class="source-line-no">385</span><span id="line-385"> public List<FilterModel> filters;</span>
-<span class="source-line-no">386</span><span id="line-386"> @XmlAttribute</span>
-<span class="source-line-no">387</span><span id="line-387"> public Integer limit;</span>
-<span class="source-line-no">388</span><span id="line-388"> @XmlAttribute</span>
-<span class="source-line-no">389</span><span id="line-389"> public Integer offset;</span>
-<span class="source-line-no">390</span><span id="line-390"> @XmlAttribute</span>
-<span class="source-line-no">391</span><span id="line-391"> public String family;</span>
-<span class="source-line-no">392</span><span id="line-392"> @XmlAttribute</span>
-<span class="source-line-no">393</span><span id="line-393"> public String qualifier;</span>
-<span class="source-line-no">394</span><span id="line-394"> @XmlAttribute</span>
-<span class="source-line-no">395</span><span id="line-395"> public Boolean ifMissing;</span>
-<span class="source-line-no">396</span><span id="line-396"> @XmlAttribute</span>
-<span class="source-line-no">397</span><span id="line-397"> public Boolean latestVersion;</span>
-<span class="source-line-no">398</span><span id="line-398"> @XmlAttribute</span>
-<span class="source-line-no">399</span><span id="line-399"> public String minColumn;</span>
-<span class="source-line-no">400</span><span id="line-400"> @XmlAttribute</span>
-<span class="source-line-no">401</span><span id="line-401"> public Boolean minColumnInclusive;</span>
-<span class="source-line-no">402</span><span id="line-402"> @XmlAttribute</span>
-<span class="source-line-no">403</span><span id="line-403"> public String maxColumn;</span>
-<span class="source-line-no">404</span><span id="line-404"> @XmlAttribute</span>
-<span class="source-line-no">405</span><span id="line-405"> public Boolean maxColumnInclusive;</span>
-<span class="source-line-no">406</span><span id="line-406"> @XmlAttribute</span>
-<span class="source-line-no">407</span><span id="line-407"> public Boolean dropDependentColumn;</span>
-<span class="source-line-no">408</span><span id="line-408"> @XmlAttribute</span>
-<span class="source-line-no">409</span><span id="line-409"> public Float chance;</span>
-<span class="source-line-no">410</span><span id="line-410"> @XmlElement</span>
-<span class="source-line-no">411</span><span id="line-411"> public List<String> prefixes;</span>
-<span class="source-line-no">412</span><span id="line-412"> @XmlElement</span>
-<span class="source-line-no">413</span><span id="line-413"> private List<RowRangeModel> ranges;</span>
-<span class="source-line-no">414</span><span id="line-414"> @XmlElement</span>
-<span class="source-line-no">415</span><span id="line-415"> public List<Long> timestamps;</span>
-<span class="source-line-no">416</span><span id="line-416"> @XmlElement</span>
-<span class="source-line-no">417</span><span id="line-417"> private List<FuzzyKeyModel> fuzzyKeys;</span>
-<span class="source-line-no">418</span><span id="line-418"></span>
-<span class="source-line-no">419</span><span id="line-419"> static enum FilterType {</span>
-<span class="source-line-no">420</span><span id="line-420"> ColumnCountGetFilter,</span>
-<span class="source-line-no">421</span><span id="line-421"> ColumnPaginationFilter,</span>
-<span class="source-line-no">422</span><span id="line-422"> ColumnPrefixFilter,</span>
-<span class="source-line-no">423</span><span id="line-423"> ColumnRangeFilter,</span>
-<span class="source-line-no">424</span><span id="line-424"> DependentColumnFilter,</span>
-<span class="source-line-no">425</span><span id="line-425"> FamilyFilter,</span>
-<span class="source-line-no">426</span><span id="line-426"> FilterList,</span>
-<span class="source-line-no">427</span><span id="line-427"> FirstKeyOnlyFilter,</span>
-<span class="source-line-no">428</span><span id="line-428"> InclusiveStopFilter,</span>
-<span class="source-line-no">429</span><span id="line-429"> KeyOnlyFilter,</span>
-<span class="source-line-no">430</span><span id="line-430"> MultipleColumnPrefixFilter,</span>
-<span class="source-line-no">431</span><span id="line-431"> MultiRowRangeFilter,</span>
-<span class="source-line-no">432</span><span id="line-432"> PageFilter,</span>
-<span class="source-line-no">433</span><span id="line-433"> PrefixFilter,</span>
-<span class="source-line-no">434</span><span id="line-434"> QualifierFilter,</span>
-<span class="source-line-no">435</span><span id="line-435"> RandomRowFilter,</span>
-<span class="source-line-no">436</span><span id="line-436"> RowFilter,</span>
-<span class="source-line-no">437</span><span id="line-437"> SingleColumnValueExcludeFilter,</span>
-<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueFilter,</span>
-<span class="source-line-no">439</span><span id="line-439"> SkipFilter,</span>
-<span class="source-line-no">440</span><span id="line-440"> TimestampsFilter,</span>
-<span class="source-line-no">441</span><span id="line-441"> ValueFilter,</span>
-<span class="source-line-no">442</span><span id="line-442"> WhileMatchFilter,</span>
-<span class="source-line-no">443</span><span id="line-443"> FuzzyRowFilter</span>
-<span class="source-line-no">444</span><span id="line-444"> }</span>
-<span class="source-line-no">445</span><span id="line-445"></span>
-<span class="source-line-no">446</span><span id="line-446"> public FilterModel() {</span>
-<span class="source-line-no">447</span><span id="line-447"> }</span>
-<span class="source-line-no">448</span><span id="line-448"></span>
-<span class="source-line-no">449</span><span id="line-449"> public FilterModel(Filter filter) {</span>
-<span class="source-line-no">450</span><span id="line-450"> String typeName = filter.getClass().getSimpleName();</span>
-<span class="source-line-no">451</span><span id="line-451"> FilterType type = FilterType.valueOf(typeName);</span>
-<span class="source-line-no">452</span><span id="line-452"> this.type = typeName;</span>
-<span class="source-line-no">453</span><span id="line-453"> switch (type) {</span>
-<span class="source-line-no">454</span><span id="line-454"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">455</span><span id="line-455"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
-<span class="source-line-no">456</span><span id="line-456"> break;</span>
-<span class="source-line-no">457</span><span id="line-457"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">458</span><span id="line-458"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
-<span class="source-line-no">459</span><span id="line-459"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
-<span class="source-line-no">460</span><span id="line-460"> break;</span>
-<span class="source-line-no">461</span><span id="line-461"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">462</span><span id="line-462"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
-<span class="source-line-no">463</span><span id="line-463"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
-<span class="source-line-no">464</span><span id="line-464"> break;</span>
-<span class="source-line-no">465</span><span id="line-465"> case ColumnRangeFilter:</span>
-<span class="source-line-no">466</span><span id="line-466"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
-<span class="source-line-no">467</span><span id="line-467"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
-<span class="source-line-no">468</span><span id="line-468"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
-<span class="source-line-no">469</span><span id="line-469"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
-<span class="source-line-no">470</span><span id="line-470"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
-<span class="source-line-no">471</span><span id="line-471"> break;</span>
-<span class="source-line-no">472</span><span id="line-472"> case DependentColumnFilter: {</span>
-<span class="source-line-no">473</span><span id="line-473"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
-<span class="source-line-no">474</span><span id="line-474"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
-<span class="source-line-no">475</span><span id="line-475"> byte[] qualifier = dcf.getQualifier();</span>
-<span class="source-line-no">476</span><span id="line-476"> if (qualifier != null) {</span>
-<span class="source-line-no">477</span><span id="line-477"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">478</span><span id="line-478"> }</span>
-<span class="source-line-no">479</span><span id="line-479"> this.op = dcf.getCompareOperator().toString();</span>
-<span class="source-line-no">480</span><span id="line-480"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
-<span class="source-line-no">481</span><span id="line-481"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
-<span class="source-line-no">482</span><span id="line-482"> }</span>
-<span class="source-line-no">483</span><span id="line-483"> break;</span>
-<span class="source-line-no">484</span><span id="line-484"> case FilterList:</span>
-<span class="source-line-no">485</span><span id="line-485"> this.op = ((FilterList) filter).getOperator().toString();</span>
-<span class="source-line-no">486</span><span id="line-486"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">487</span><span id="line-487"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
-<span class="source-line-no">488</span><span id="line-488"> this.filters.add(new FilterModel(child));</span>
-<span class="source-line-no">489</span><span id="line-489"> }</span>
-<span class="source-line-no">490</span><span id="line-490"> break;</span>
-<span class="source-line-no">491</span><span id="line-491"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">492</span><span id="line-492"> case KeyOnlyFilter:</span>
-<span class="source-line-no">493</span><span id="line-493"> break;</span>
-<span class="source-line-no">494</span><span id="line-494"> case InclusiveStopFilter:</span>
-<span class="source-line-no">495</span><span id="line-495"> this.value = Bytes</span>
-<span class="source-line-no">496</span><span id="line-496"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
-<span class="source-line-no">497</span><span id="line-497"> break;</span>
-<span class="source-line-no">498</span><span id="line-498"> case MultipleColumnPrefixFilter:</span>
-<span class="source-line-no">499</span><span id="line-499"> this.prefixes = new ArrayList<>();</span>
-<span class="source-line-no">500</span><span id="line-500"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
-<span class="source-line-no">501</span><span id="line-501"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
-<span class="source-line-no">502</span><span id="line-502"> }</span>
-<span class="source-line-no">503</span><span id="line-503"> break;</span>
-<span class="source-line-no">504</span><span id="line-504"> case MultiRowRangeFilter:</span>
-<span class="source-line-no">505</span><span id="line-505"> this.ranges = new ArrayList<>();</span>
-<span class="source-line-no">506</span><span id="line-506"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
-<span class="source-line-no">507</span><span id="line-507"> this.ranges.add(new RowRangeModel(range));</span>
-<span class="source-line-no">508</span><span id="line-508"> }</span>
-<span class="source-line-no">509</span><span id="line-509"> break;</span>
-<span class="source-line-no">510</span><span id="line-510"> case PageFilter:</span>
-<span class="source-line-no">511</span><span id="line-511"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
-<span class="source-line-no">512</span><span id="line-512"> break;</span>
-<span class="source-line-no">513</span><span id="line-513"> case PrefixFilter:</span>
-<span class="source-line-no">514</span><span id="line-514"> this.value =</span>
-<span class="source-line-no">515</span><span id="line-515"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
-<span class="source-line-no">516</span><span id="line-516"> break;</span>
-<span class="source-line-no">517</span><span id="line-517"> case FamilyFilter:</span>
-<span class="source-line-no">518</span><span id="line-518"> case QualifierFilter:</span>
-<span class="source-line-no">519</span><span id="line-519"> case RowFilter:</span>
-<span class="source-line-no">520</span><span id="line-520"> case ValueFilter:</span>
-<span class="source-line-no">521</span><span id="line-521"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
-<span class="source-line-no">522</span><span id="line-522"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
-<span class="source-line-no">523</span><span id="line-523"> break;</span>
-<span class="source-line-no">524</span><span id="line-524"> case RandomRowFilter:</span>
-<span class="source-line-no">525</span><span id="line-525"> this.chance = ((RandomRowFilter) filter).getChance();</span>
-<span class="source-line-no">526</span><span id="line-526"> break;</span>
-<span class="source-line-no">527</span><span id="line-527"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueFilter: {</span>
-<span class="source-line-no">529</span><span id="line-529"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
-<span class="source-line-no">530</span><span id="line-530"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
-<span class="source-line-no">531</span><span id="line-531"> byte[] qualifier = scvf.getQualifier();</span>
-<span class="source-line-no">532</span><span id="line-532"> if (qualifier != null) {</span>
-<span class="source-line-no">533</span><span id="line-533"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">534</span><span id="line-534"> }</span>
-<span class="source-line-no">535</span><span id="line-535"> this.op = scvf.getCompareOperator().toString();</span>
-<span class="source-line-no">536</span><span id="line-536"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
-<span class="source-line-no">537</span><span id="line-537"> if (scvf.getFilterIfMissing()) {</span>
-<span class="source-line-no">538</span><span id="line-538"> this.ifMissing = true;</span>
-<span class="source-line-no">539</span><span id="line-539"> }</span>
-<span class="source-line-no">540</span><span id="line-540"> if (scvf.getLatestVersionOnly()) {</span>
-<span class="source-line-no">541</span><span id="line-541"> this.latestVersion = true;</span>
-<span class="source-line-no">542</span><span id="line-542"> }</span>
-<span class="source-line-no">543</span><span id="line-543"> }</span>
-<span class="source-line-no">544</span><span id="line-544"> break;</span>
-<span class="source-line-no">545</span><span id="line-545"> case SkipFilter:</span>
-<span class="source-line-no">546</span><span id="line-546"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">547</span><span id="line-547"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
-<span class="source-line-no">548</span><span id="line-548"> break;</span>
-<span class="source-line-no">549</span><span id="line-549"> case TimestampsFilter:</span>
-<span class="source-line-no">550</span><span id="line-550"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
-<span class="source-line-no">551</span><span id="line-551"> break;</span>
-<span class="source-line-no">552</span><span id="line-552"> case WhileMatchFilter:</span>
-<span class="source-line-no">553</span><span id="line-553"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">554</span><span id="line-554"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
-<span class="source-line-no">555</span><span id="line-555"> break;</span>
-<span class="source-line-no">556</span><span id="line-556"> case FuzzyRowFilter:</span>
-<span class="source-line-no">557</span><span id="line-557"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
-<span class="source-line-no">559</span><span id="line-559"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
-<span class="source-line-no">560</span><span id="line-560"> }</span>
-<span class="source-line-no">561</span><span id="line-561"> break;</span>
-<span class="source-line-no">562</span><span id="line-562"> default:</span>
-<span class="source-line-no">563</span><span id="line-563"> throw new RuntimeException("unhandled filter type " + type);</span>
-<span class="source-line-no">564</span><span id="line-564"> }</span>
-<span class="source-line-no">565</span><span id="line-565"> }</span>
-<span class="source-line-no">566</span><span id="line-566"></span>
-<span class="source-line-no">567</span><span id="line-567"> public Filter build() {</span>
-<span class="source-line-no">568</span><span id="line-568"> Filter filter;</span>
-<span class="source-line-no">569</span><span id="line-569"> switch (FilterType.valueOf(type)) {</span>
-<span class="source-line-no">570</span><span id="line-570"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">571</span><span id="line-571"> filter = new ColumnCountGetFilter(limit);</span>
-<span class="source-line-no">572</span><span id="line-572"> break;</span>
-<span class="source-line-no">573</span><span id="line-573"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">574</span><span id="line-574"> filter = new ColumnPaginationFilter(limit, offset);</span>
-<span class="source-line-no">575</span><span id="line-575"> break;</span>
-<span class="source-line-no">576</span><span id="line-576"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">577</span><span id="line-577"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">578</span><span id="line-578"> break;</span>
-<span class="source-line-no">579</span><span id="line-579"> case ColumnRangeFilter:</span>
-<span class="source-line-no">580</span><span id="line-580"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
-<span class="source-line-no">581</span><span id="line-581"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
-<span class="source-line-no">582</span><span id="line-582"> break;</span>
-<span class="source-line-no">583</span><span id="line-583"> case DependentColumnFilter:</span>
-<span class="source-line-no">584</span><span id="line-584"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">585</span><span id="line-585"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
-<span class="source-line-no">586</span><span id="line-586"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">587</span><span id="line-587"> break;</span>
-<span class="source-line-no">588</span><span id="line-588"> case FamilyFilter:</span>
-<span class="source-line-no">589</span><span id="line-589"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">590</span><span id="line-590"> break;</span>
-<span class="source-line-no">591</span><span id="line-591"> case FilterList: {</span>
-<span class="source-line-no">592</span><span id="line-592"> List<Filter> list = new ArrayList<>(filters.size());</span>
-<span class="source-line-no">593</span><span id="line-593"> for (FilterModel model : filters) {</span>
-<span class="source-line-no">594</span><span id="line-594"> list.add(model.build());</span>
-<span class="source-line-no">595</span><span id="line-595"> }</span>
-<span class="source-line-no">596</span><span id="line-596"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
-<span class="source-line-no">597</span><span id="line-597"> }</span>
-<span class="source-line-no">598</span><span id="line-598"> break;</span>
-<span class="source-line-no">599</span><span id="line-599"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">600</span><span id="line-600"> filter = new FirstKeyOnlyFilter();</span>
-<span class="source-line-no">601</span><span id="line-601"> break;</span>
-<span class="source-line-no">602</span><span id="line-602"> case InclusiveStopFilter:</span>
-<span class="source-line-no">603</span><span id="line-603"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">604</span><span id="line-604"> break;</span>
-<span class="source-line-no">605</span><span id="line-605"> case KeyOnlyFilter:</span>
-<span class="source-line-no">606</span><span id="line-606"> filter = new KeyOnlyFilter();</span>
-<span class="source-line-no">607</span><span id="line-607"> break;</span>
-<span class="source-line-no">608</span><span id="line-608"> case MultipleColumnPrefixFilter: {</span>
-<span class="source-line-no">609</span><span id="line-609"> byte[][] values = new byte[prefixes.size()][];</span>
-<span class="source-line-no">610</span><span id="line-610"> for (int i = 0; i < prefixes.size(); i++) {</span>
-<span class="source-line-no">611</span><span id="line-611"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
-<span class="source-line-no">612</span><span id="line-612"> }</span>
-<span class="source-line-no">613</span><span id="line-613"> filter = new MultipleColumnPrefixFilter(values);</span>
-<span class="source-line-no">614</span><span id="line-614"> }</span>
-<span class="source-line-no">615</span><span id="line-615"> break;</span>
-<span class="source-line-no">616</span><span id="line-616"> case MultiRowRangeFilter: {</span>
-<span class="source-line-no">617</span><span id="line-617"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
-<span class="source-line-no">618</span><span id="line-618"> for (RowRangeModel rangeModel : ranges) {</span>
-<span class="source-line-no">619</span><span id="line-619"> rowRanges.add(rangeModel.build());</span>
-<span class="source-line-no">620</span><span id="line-620"> }</span>
-<span class="source-line-no">621</span><span id="line-621"> filter = new MultiRowRangeFilter(rowRanges);</span>
-<span class="source-line-no">622</span><span id="line-622"> }</span>
-<span class="source-line-no">623</span><span id="line-623"> break;</span>
-<span class="source-line-no">624</span><span id="line-624"> case PageFilter:</span>
-<span class="source-line-no">625</span><span id="line-625"> filter = new PageFilter(Long.parseLong(value));</span>
-<span class="source-line-no">626</span><span id="line-626"> break;</span>
-<span class="source-line-no">627</span><span id="line-627"> case PrefixFilter:</span>
-<span class="source-line-no">628</span><span id="line-628"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">629</span><span id="line-629"> break;</span>
-<span class="source-line-no">630</span><span id="line-630"> case QualifierFilter:</span>
-<span class="source-line-no">631</span><span id="line-631"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">632</span><span id="line-632"> break;</span>
-<span class="source-line-no">633</span><span id="line-633"> case RandomRowFilter:</span>
-<span class="source-line-no">634</span><span id="line-634"> filter = new RandomRowFilter(chance);</span>
-<span class="source-line-no">635</span><span id="line-635"> break;</span>
-<span class="source-line-no">636</span><span id="line-636"> case RowFilter:</span>
-<span class="source-line-no">637</span><span id="line-637"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">638</span><span id="line-638"> break;</span>
-<span class="source-line-no">639</span><span id="line-639"> case SingleColumnValueFilter:</span>
-<span class="source-line-no">640</span><span id="line-640"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">641</span><span id="line-641"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">642</span><span id="line-642"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">643</span><span id="line-643"> if (ifMissing != null) {</span>
-<span class="source-line-no">644</span><span id="line-644"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">645</span><span id="line-645"> }</span>
-<span class="source-line-no">646</span><span id="line-646"> if (latestVersion != null) {</span>
-<span class="source-line-no">647</span><span id="line-647"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">648</span><span id="line-648"> }</span>
-<span class="source-line-no">649</span><span id="line-649"> break;</span>
-<span class="source-line-no">650</span><span id="line-650"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">651</span><span id="line-651"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">652</span><span id="line-652"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">653</span><span id="line-653"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">654</span><span id="line-654"> if (ifMissing != null) {</span>
-<span class="source-line-no">655</span><span id="line-655"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">656</span><span id="line-656"> }</span>
-<span class="source-line-no">657</span><span id="line-657"> if (latestVersion != null) {</span>
-<span class="source-line-no">658</span><span id="line-658"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">659</span><span id="line-659"> }</span>
-<span class="source-line-no">660</span><span id="line-660"> break;</span>
-<span class="source-line-no">661</span><span id="line-661"> case SkipFilter:</span>
-<span class="source-line-no">662</span><span id="line-662"> filter = new SkipFilter(filters.get(0).build());</span>
-<span class="source-line-no">663</span><span id="line-663"> break;</span>
-<span class="source-line-no">664</span><span id="line-664"> case TimestampsFilter:</span>
-<span class="source-line-no">665</span><span id="line-665"> filter = new TimestampsFilter(timestamps);</span>
-<span class="source-line-no">666</span><span id="line-666"> break;</span>
-<span class="source-line-no">667</span><span id="line-667"> case ValueFilter:</span>
-<span class="source-line-no">668</span><span id="line-668"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">669</span><span id="line-669"> break;</span>
-<span class="source-line-no">670</span><span id="line-670"> case WhileMatchFilter:</span>
-<span class="source-line-no">671</span><span id="line-671"> filter = new WhileMatchFilter(filters.get(0).build());</span>
-<span class="source-line-no">672</span><span id="line-672"> break;</span>
-<span class="source-line-no">673</span><span id="line-673"> case FuzzyRowFilter: {</span>
-<span class="source-line-no">674</span><span id="line-674"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
-<span class="source-line-no">675</span><span id="line-675"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
-<span class="source-line-no">676</span><span id="line-676"> fuzzyKeyArgs.add(keyModel.build());</span>
-<span class="source-line-no">677</span><span id="line-677"> }</span>
-<span class="source-line-no">678</span><span id="line-678"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
-<span class="source-line-no">679</span><span id="line-679"> }</span>
-<span class="source-line-no">680</span><span id="line-680"> break;</span>
-<span class="source-line-no">681</span><span id="line-681"> default:</span>
-<span class="source-line-no">682</span><span id="line-682"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">683</span><span id="line-683"> }</span>
-<span class="source-line-no">684</span><span id="line-684"> return filter;</span>
-<span class="source-line-no">685</span><span id="line-685"> }</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687"> }</span>
-<span class="source-line-no">688</span><span id="line-688"></span>
-<span class="source-line-no">689</span><span id="line-689"> /**</span>
-<span class="source-line-no">690</span><span id="line-690"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
-<span class="source-line-no">691</span><span id="line-691"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
-<span class="source-line-no">692</span><span id="line-692"> */</span>
-<span class="source-line-no">693</span><span id="line-693"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
-<span class="source-line-no">694</span><span id="line-694"> return JaxbJsonProviderHolder.INSTANCE;</span>
-<span class="source-line-no">695</span><span id="line-695"> }</span>
-<span class="source-line-no">696</span><span id="line-696"></span>
-<span class="source-line-no">697</span><span id="line-697"> /**</span>
-<span class="source-line-no">698</span><span id="line-698"> * @param s the JSON representation of the filter</span>
-<span class="source-line-no">699</span><span id="line-699"> * @return the filter</span>
-<span class="source-line-no">700</span><span id="line-700"> */</span>
-<span class="source-line-no">701</span><span id="line-701"> public static Filter buildFilter(String s) throws Exception {</span>
-<span class="source-line-no">702</span><span id="line-702"> FilterModel model =</span>
-<span class="source-line-no">703</span><span id="line-703"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">704</span><span id="line-704"> .readValue(s, FilterModel.class);</span>
-<span class="source-line-no">705</span><span id="line-705"> return model.build();</span>
-<span class="source-line-no">706</span><span id="line-706"> }</span>
-<span class="source-line-no">707</span><span id="line-707"></span>
-<span class="source-line-no">708</span><span id="line-708"> /**</span>
-<span class="source-line-no">709</span><span id="line-709"> * @param filter the filter</span>
-<span class="source-line-no">710</span><span id="line-710"> * @return the JSON representation of the filter</span>
-<span class="source-line-no">711</span><span id="line-711"> */</span>
-<span class="source-line-no">712</span><span id="line-712"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
-<span class="source-line-no">713</span><span id="line-713"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">714</span><span id="line-714"> .writeValueAsString(new FilterModel(filter));</span>
-<span class="source-line-no">715</span><span id="line-715"> }</span>
-<span class="source-line-no">716</span><span id="line-716"></span>
-<span class="source-line-no">717</span><span id="line-717"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
-<span class="source-line-no">718</span><span id="line-718"></span>
-<span class="source-line-no">719</span><span id="line-719"> /**</span>
-<span class="source-line-no">720</span><span id="line-720"> * @param scan the scan specification</span>
-<span class="source-line-no">721</span><span id="line-721"> */</span>
-<span class="source-line-no">722</span><span id="line-722"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
-<span class="source-line-no">723</span><span id="line-723"> ScannerModel model = new ScannerModel();</span>
-<span class="source-line-no">724</span><span id="line-724"> model.setStartRow(scan.getStartRow());</span>
-<span class="source-line-no">725</span><span id="line-725"> model.setEndRow(scan.getStopRow());</span>
-<span class="source-line-no">726</span><span id="line-726"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
-<span class="source-line-no">727</span><span id="line-727"> if (families != null) {</span>
-<span class="source-line-no">728</span><span id="line-728"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
-<span class="source-line-no">729</span><span id="line-729"> if (entry.getValue() != null) {</span>
-<span class="source-line-no">730</span><span id="line-730"> for (byte[] qualifier : entry.getValue()) {</span>
-<span class="source-line-no">731</span><span id="line-731"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
-<span class="source-line-no">732</span><span id="line-732"> }</span>
-<span class="source-line-no">733</span><span id="line-733"> } else {</span>
-<span class="source-line-no">734</span><span id="line-734"> model.addColumn(entry.getKey());</span>
-<span class="source-line-no">735</span><span id="line-735"> }</span>
-<span class="source-line-no">736</span><span id="line-736"> }</span>
-<span class="source-line-no">737</span><span id="line-737"> }</span>
-<span class="source-line-no">738</span><span id="line-738"> model.setStartTime(scan.getTimeRange().getMin());</span>
-<span class="source-line-no">739</span><span id="line-739"> model.setEndTime(scan.getTimeRange().getMax());</span>
-<span class="source-line-no">740</span><span id="line-740"> int caching = scan.getCaching();</span>
-<span class="source-line-no">741</span><span id="line-741"> if (caching > 0) {</span>
-<span class="source-line-no">742</span><span id="line-742"> model.setCaching(caching);</span>
-<span class="source-line-no">743</span><span id="line-743"> }</span>
-<span class="source-line-no">744</span><span id="line-744"> int batch = scan.getBatch();</span>
-<span class="source-line-no">745</span><span id="line-745"> if (batch > 0) {</span>
-<span class="source-line-no">746</span><span id="line-746"> model.setBatch(batch);</span>
-<span class="source-line-no">747</span><span id="line-747"> }</span>
-<span class="source-line-no">748</span><span id="line-748"> int maxVersions = scan.getMaxVersions();</span>
-<span class="source-line-no">749</span><span id="line-749"> if (maxVersions > 0) {</span>
-<span class="source-line-no">750</span><span id="line-750"> model.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">751</span><span id="line-751"> }</span>
-<span class="source-line-no">752</span><span id="line-752"> if (scan.getLimit() > 0) {</span>
-<span class="source-line-no">753</span><span id="line-753"> model.setLimit(scan.getLimit());</span>
-<span class="source-line-no">754</span><span id="line-754"> }</span>
-<span class="source-line-no">755</span><span id="line-755"> Filter filter = scan.getFilter();</span>
-<span class="source-line-no">756</span><span id="line-756"> if (filter != null) {</span>
-<span class="source-line-no">757</span><span id="line-757"> model.setFilter(stringifyFilter(filter));</span>
-<span class="source-line-no">758</span><span id="line-758"> }</span>
-<span class="source-line-no">759</span><span id="line-759"> // Add the visbility labels if found in the attributes</span>
-<span class="source-line-no">760</span><span id="line-760"> Authorizations authorizations = scan.getAuthorizations();</span>
-<span class="source-line-no">761</span><span id="line-761"> if (authorizations != null) {</span>
-<span class="source-line-no">762</span><span id="line-762"> List<String> labels = authorizations.getLabels();</span>
-<span class="source-line-no">763</span><span id="line-763"> for (String label : labels) {</span>
-<span class="source-line-no">764</span><span id="line-764"> model.addLabel(label);</span>
-<span class="source-line-no">765</span><span id="line-765"> }</span>
-<span class="source-line-no">766</span><span id="line-766"> }</span>
-<span class="source-line-no">767</span><span id="line-767"> model.setIncludeStartRow(scan.includeStartRow());</span>
-<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStopRow(scan.includeStopRow());</span>
-<span class="source-line-no">769</span><span id="line-769"> return model;</span>
-<span class="source-line-no">770</span><span id="line-770"> }</span>
-<span class="source-line-no">771</span><span id="line-771"></span>
-<span class="source-line-no">772</span><span id="line-772"> /**</span>
-<span class="source-line-no">773</span><span id="line-773"> * Default constructor</span>
-<span class="source-line-no">774</span><span id="line-774"> */</span>
-<span class="source-line-no">775</span><span id="line-775"> public ScannerModel() {</span>
-<span class="source-line-no">776</span><span id="line-776"> }</span>
-<span class="source-line-no">777</span><span id="line-777"></span>
-<span class="source-line-no">778</span><span id="line-778"> /**</span>
-<span class="source-line-no">779</span><span id="line-779"> * Constructor</span>
-<span class="source-line-no">780</span><span id="line-780"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">781</span><span id="line-781"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">782</span><span id="line-782"> * @param columns the columns to scan</span>
-<span class="source-line-no">783</span><span id="line-783"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">784</span><span id="line-784"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">785</span><span id="line-785"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">786</span><span id="line-786"> * @param maxVersions the maximum number of versions to return</span>
-<span class="source-line-no">787</span><span id="line-787"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
-<span class="source-line-no">788</span><span id="line-788"> */</span>
-<span class="source-line-no">789</span><span id="line-789"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">790</span><span id="line-790"> long endTime, int maxVersions, String filter) {</span>
-<span class="source-line-no">791</span><span id="line-791"> super();</span>
-<span class="source-line-no">792</span><span id="line-792"> this.startRow = startRow;</span>
-<span class="source-line-no">793</span><span id="line-793"> this.endRow = endRow;</span>
-<span class="source-line-no">794</span><span id="line-794"> this.columns = columns;</span>
-<span class="source-line-no">795</span><span id="line-795"> this.batch = batch;</span>
-<span class="source-line-no">796</span><span id="line-796"> this.caching = caching;</span>
-<span class="source-line-no">797</span><span id="line-797"> this.endTime = endTime;</span>
-<span class="source-line-no">798</span><span id="line-798"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">799</span><span id="line-799"> this.filter = filter;</span>
-<span class="source-line-no">800</span><span id="line-800"> }</span>
-<span class="source-line-no">801</span><span id="line-801"></span>
-<span class="source-line-no">802</span><span id="line-802"> /**</span>
-<span class="source-line-no">803</span><span id="line-803"> * Constructor</span>
-<span class="source-line-no">804</span><span id="line-804"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">805</span><span id="line-805"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">806</span><span id="line-806"> * @param columns the columns to scan</span>
-<span class="source-line-no">807</span><span id="line-807"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">808</span><span id="line-808"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">809</span><span id="line-809"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">810</span><span id="line-810"> * earlier than this are excluded)</span>
-<span class="source-line-no">811</span><span id="line-811"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">812</span><span id="line-812"> * later than this are excluded)</span>
-<span class="source-line-no">813</span><span id="line-813"> * @param filter a filter specification</span>
-<span class="source-line-no">814</span><span id="line-814"> */</span>
-<span class="source-line-no">815</span><span id="line-815"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">816</span><span id="line-816"> long startTime, long endTime, String filter) {</span>
-<span class="source-line-no">817</span><span id="line-817"> super();</span>
-<span class="source-line-no">818</span><span id="line-818"> this.startRow = startRow;</span>
-<span class="source-line-no">819</span><span id="line-819"> this.endRow = endRow;</span>
-<span class="source-line-no">820</span><span id="line-820"> this.columns = columns;</span>
-<span class="source-line-no">821</span><span id="line-821"> this.batch = batch;</span>
-<span class="source-line-no">822</span><span id="line-822"> this.caching = caching;</span>
-<span class="source-line-no">823</span><span id="line-823"> this.startTime = startTime;</span>
-<span class="source-line-no">824</span><span id="line-824"> this.endTime = endTime;</span>
-<span class="source-line-no">825</span><span id="line-825"> this.filter = filter;</span>
-<span class="source-line-no">826</span><span id="line-826"> }</span>
-<span class="source-line-no">827</span><span id="line-827"></span>
-<span class="source-line-no">828</span><span id="line-828"> /**</span>
-<span class="source-line-no">829</span><span id="line-829"> * Add a column to the column set</span>
-<span class="source-line-no">830</span><span id="line-830"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
-<span class="source-line-no">831</span><span id="line-831"> */</span>
-<span class="source-line-no">832</span><span id="line-832"> public void addColumn(byte[] column) {</span>
-<span class="source-line-no">833</span><span id="line-833"> columns.add(column);</span>
-<span class="source-line-no">834</span><span id="line-834"> }</span>
-<span class="source-line-no">835</span><span id="line-835"></span>
-<span class="source-line-no">836</span><span id="line-836"> /**</span>
-<span class="source-line-no">837</span><span id="line-837"> * Add a visibility label to the scan</span>
-<span class="source-line-no">838</span><span id="line-838"> */</span>
-<span class="source-line-no">839</span><span id="line-839"> public void addLabel(String label) {</span>
-<span class="source-line-no">840</span><span id="line-840"> labels.add(label);</span>
-<span class="source-line-no">841</span><span id="line-841"> }</span>
-<span class="source-line-no">842</span><span id="line-842"></span>
-<span class="source-line-no">843</span><span id="line-843"> /** Returns true if a start row was specified */</span>
-<span class="source-line-no">844</span><span id="line-844"> public boolean hasStartRow() {</span>
-<span class="source-line-no">845</span><span id="line-845"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
-<span class="source-line-no">846</span><span id="line-846"> }</span>
-<span class="source-line-no">847</span><span id="line-847"></span>
-<span class="source-line-no">848</span><span id="line-848"> /** Returns start row */</span>
-<span class="source-line-no">849</span><span id="line-849"> @XmlAttribute</span>
-<span class="source-line-no">850</span><span id="line-850"> public byte[] getStartRow() {</span>
-<span class="source-line-no">851</span><span id="line-851"> return startRow;</span>
-<span class="source-line-no">852</span><span id="line-852"> }</span>
-<span class="source-line-no">853</span><span id="line-853"></span>
-<span class="source-line-no">854</span><span id="line-854"> /** Returns true if an end row was specified */</span>
-<span class="source-line-no">855</span><span id="line-855"> public boolean hasEndRow() {</span>
-<span class="source-line-no">856</span><span id="line-856"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
-<span class="source-line-no">857</span><span id="line-857"> }</span>
-<span class="source-line-no">858</span><span id="line-858"></span>
-<span class="source-line-no">859</span><span id="line-859"> /** Returns end row */</span>
-<span class="source-line-no">860</span><span id="line-860"> @XmlAttribute</span>
-<span class="source-line-no">861</span><span id="line-861"> public byte[] getEndRow() {</span>
-<span class="source-line-no">862</span><span id="line-862"> return endRow;</span>
-<span class="source-line-no">863</span><span id="line-863"> }</span>
-<span class="source-line-no">864</span><span id="line-864"></span>
-<span class="source-line-no">865</span><span id="line-865"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
-<span class="source-line-no">866</span><span id="line-866"> @XmlElement(name = "column")</span>
-<span class="source-line-no">867</span><span id="line-867"> public List<byte[]> getColumns() {</span>
-<span class="source-line-no">868</span><span id="line-868"> return columns;</span>
-<span class="source-line-no">869</span><span id="line-869"> }</span>
-<span class="source-line-no">870</span><span id="line-870"></span>
-<span class="source-line-no">871</span><span id="line-871"> @XmlElement(name = "labels")</span>
-<span class="source-line-no">872</span><span id="line-872"> public List<String> getLabels() {</span>
-<span class="source-line-no">873</span><span id="line-873"> return labels;</span>
-<span class="source-line-no">874</span><span id="line-874"> }</span>
-<span class="source-line-no">875</span><span id="line-875"></span>
-<span class="source-line-no">876</span><span id="line-876"> /** Returns the number of cells to return in batch */</span>
-<span class="source-line-no">877</span><span id="line-877"> @XmlAttribute</span>
-<span class="source-line-no">878</span><span id="line-878"> public int getBatch() {</span>
-<span class="source-line-no">879</span><span id="line-879"> return batch;</span>
-<span class="source-line-no">880</span><span id="line-880"> }</span>
-<span class="source-line-no">881</span><span id="line-881"></span>
-<span class="source-line-no">882</span><span id="line-882"> /** Returns the number of rows that the scanner to fetch at once */</span>
-<span class="source-line-no">883</span><span id="line-883"> @XmlAttribute</span>
-<span class="source-line-no">884</span><span id="line-884"> public int getCaching() {</span>
-<span class="source-line-no">885</span><span id="line-885"> return caching;</span>
-<span class="source-line-no">886</span><span id="line-886"> }</span>
-<span class="source-line-no">887</span><span id="line-887"></span>
-<span class="source-line-no">888</span><span id="line-888"> /** Returns the limit specification */</span>
-<span class="source-line-no">889</span><span id="line-889"> @XmlAttribute</span>
-<span class="source-line-no">890</span><span id="line-890"> public int getLimit() {</span>
-<span class="source-line-no">891</span><span id="line-891"> return limit;</span>
-<span class="source-line-no">892</span><span id="line-892"> }</span>
-<span class="source-line-no">893</span><span id="line-893"></span>
-<span class="source-line-no">894</span><span id="line-894"> /** Returns true if HFile blocks should be cached on the servers for this scan, false otherwise */</span>
-<span class="source-line-no">895</span><span id="line-895"> @XmlAttribute</span>
-<span class="source-line-no">896</span><span id="line-896"> public boolean getCacheBlocks() {</span>
-<span class="source-line-no">897</span><span id="line-897"> return cacheBlocks;</span>
-<span class="source-line-no">898</span><span id="line-898"> }</span>
-<span class="source-line-no">899</span><span id="line-899"></span>
-<span class="source-line-no">900</span><span id="line-900"> /** Returns the lower bound on timestamps of items of interest */</span>
-<span class="source-line-no">901</span><span id="line-901"> @XmlAttribute</span>
-<span class="source-line-no">902</span><span id="line-902"> public long getStartTime() {</span>
-<span class="source-line-no">903</span><span id="line-903"> return startTime;</span>
-<span class="source-line-no">904</span><span id="line-904"> }</span>
-<span class="source-line-no">905</span><span id="line-905"></span>
-<span class="source-line-no">906</span><span id="line-906"> /** Returns the upper bound on timestamps of items of interest */</span>
-<span class="source-line-no">907</span><span id="line-907"> @XmlAttribute</span>
-<span class="source-line-no">908</span><span id="line-908"> public long getEndTime() {</span>
-<span class="source-line-no">909</span><span id="line-909"> return endTime;</span>
-<span class="source-line-no">910</span><span id="line-910"> }</span>
-<span class="source-line-no">911</span><span id="line-911"></span>
-<span class="source-line-no">912</span><span id="line-912"> /** Returns maximum number of versions to return */</span>
-<span class="source-line-no">913</span><span id="line-913"> @XmlAttribute</span>
-<span class="source-line-no">914</span><span id="line-914"> public int getMaxVersions() {</span>
-<span class="source-line-no">915</span><span id="line-915"> return maxVersions;</span>
-<span class="source-line-no">916</span><span id="line-916"> }</span>
-<span class="source-line-no">917</span><span id="line-917"></span>
-<span class="source-line-no">918</span><span id="line-918"> /** Returns the filter specification */</span>
-<span class="source-line-no">919</span><span id="line-919"> @XmlElement</span>
-<span class="source-line-no">920</span><span id="line-920"> public String getFilter() {</span>
-<span class="source-line-no">921</span><span id="line-921"> return filter;</span>
-<span class="source-line-no">922</span><span id="line-922"> }</span>
-<span class="source-line-no">923</span><span id="line-923"></span>
-<span class="source-line-no">924</span><span id="line-924"> /**</span>
-<span class="source-line-no">925</span><span id="line-925"> * @param startRow start row</span>
-<span class="source-line-no">926</span><span id="line-926"> */</span>
-<span class="source-line-no">927</span><span id="line-927"> public void setStartRow(byte[] startRow) {</span>
-<span class="source-line-no">928</span><span id="line-928"> this.startRow = startRow;</span>
-<span class="source-line-no">929</span><span id="line-929"> }</span>
-<span class="source-line-no">930</span><span id="line-930"></span>
-<span class="source-line-no">931</span><span id="line-931"> /**</span>
-<span class="source-line-no">932</span><span id="line-932"> * @param endRow end row</span>
-<span class="source-line-no">933</span><span id="line-933"> */</span>
-<span class="source-line-no">934</span><span id="line-934"> public void setEndRow(byte[] endRow) {</span>
-<span class="source-line-no">935</span><span id="line-935"> this.endRow = endRow;</span>
-<span class="source-line-no">936</span><span id="line-936"> }</span>
-<span class="source-line-no">937</span><span id="line-937"></span>
-<span class="source-line-no">938</span><span id="line-938"> /**</span>
-<span class="source-line-no">939</span><span id="line-939"> * @param columns list of columns of interest in column:qualifier format, or empty for all</span>
-<span class="source-line-no">940</span><span id="line-940"> */</span>
-<span class="source-line-no">941</span><span id="line-941"> public void setColumns(List<byte[]> columns) {</span>
-<span class="source-line-no">942</span><span id="line-942"> this.columns = columns;</span>
-<span class="source-line-no">943</span><span id="line-943"> }</span>
-<span class="source-line-no">944</span><span id="line-944"></span>
-<span class="source-line-no">945</span><span id="line-945"> /**</span>
-<span class="source-line-no">946</span><span id="line-946"> * @param batch the number of cells to return in batch</span>
-<span class="source-line-no">947</span><span id="line-947"> */</span>
-<span class="source-line-no">948</span><span id="line-948"> public void setBatch(int batch) {</span>
-<span class="source-line-no">949</span><span id="line-949"> this.batch = batch;</span>
-<span class="source-line-no">950</span><span id="line-950"> }</span>
-<span class="source-line-no">951</span><span id="line-951"></span>
-<span class="source-line-no">952</span><span id="line-952"> /**</span>
-<span class="source-line-no">953</span><span id="line-953"> * @param caching the number of rows to fetch at once</span>
-<span class="source-line-no">954</span><span id="line-954"> */</span>
-<span class="source-line-no">955</span><span id="line-955"> public void setCaching(int caching) {</span>
-<span class="source-line-no">956</span><span id="line-956"> this.caching = caching;</span>
-<span class="source-line-no">957</span><span id="line-957"> }</span>
-<span class="source-line-no">958</span><span id="line-958"></span>
-<span class="source-line-no">959</span><span id="line-959"> /**</span>
-<span class="source-line-no">960</span><span id="line-960"> * @param value true if HFile blocks should be cached on the servers for this scan, false</span>
-<span class="source-line-no">961</span><span id="line-961"> * otherwise</span>
-<span class="source-line-no">962</span><span id="line-962"> */</span>
-<span class="source-line-no">963</span><span id="line-963"> public void setCacheBlocks(boolean value) {</span>
-<span class="source-line-no">964</span><span id="line-964"> this.cacheBlocks = value;</span>
-<span class="source-line-no">965</span><span id="line-965"> }</span>
-<span class="source-line-no">966</span><span id="line-966"></span>
-<span class="source-line-no">967</span><span id="line-967"> /**</span>
-<span class="source-line-no">968</span><span id="line-968"> * @param limit the number of rows can fetch of each scanner at lifetime</span>
-<span class="source-line-no">969</span><span id="line-969"> */</span>
-<span class="source-line-no">970</span><span id="line-970"> public void setLimit(int limit) {</span>
-<span class="source-line-no">971</span><span id="line-971"> this.limit = limit;</span>
-<span class="source-line-no">972</span><span id="line-972"> }</span>
-<span class="source-line-no">973</span><span id="line-973"></span>
-<span class="source-line-no">974</span><span id="line-974"> /**</span>
-<span class="source-line-no">975</span><span id="line-975"> * @param maxVersions maximum number of versions to return</span>
-<span class="source-line-no">976</span><span id="line-976"> */</span>
-<span class="source-line-no">977</span><span id="line-977"> public void setMaxVersions(int maxVersions) {</span>
-<span class="source-line-no">978</span><span id="line-978"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">979</span><span id="line-979"> }</span>
-<span class="source-line-no">980</span><span id="line-980"></span>
-<span class="source-line-no">981</span><span id="line-981"> /**</span>
-<span class="source-line-no">982</span><span id="line-982"> * @param startTime the lower bound on timestamps of values of interest</span>
-<span class="source-line-no">983</span><span id="line-983"> */</span>
-<span class="source-line-no">984</span><span id="line-984"> public void setStartTime(long startTime) {</span>
-<span class="source-line-no">985</span><span id="line-985"> this.startTime = startTime;</span>
-<span class="source-line-no">986</span><span id="line-986"> }</span>
-<span class="source-line-no">987</span><span id="line-987"></span>
-<span class="source-line-no">988</span><span id="line-988"> /**</span>
-<span class="source-line-no">989</span><span id="line-989"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">990</span><span id="line-990"> */</span>
-<span class="source-line-no">991</span><span id="line-991"> public void setEndTime(long endTime) {</span>
-<span class="source-line-no">992</span><span id="line-992"> this.endTime = endTime;</span>
-<span class="source-line-no">993</span><span id="line-993"> }</span>
-<span class="source-line-no">994</span><span id="line-994"></span>
-<span class="source-line-no">995</span><span id="line-995"> /**</span>
-<span class="source-line-no">996</span><span id="line-996"> * @param filter the filter specification</span>
-<span class="source-line-no">997</span><span id="line-997"> */</span>
-<span class="source-line-no">998</span><span id="line-998"> public void setFilter(String filter) {</span>
-<span class="source-line-no">999</span><span id="line-999"> this.filter = filter;</span>
-<span class="source-line-no">1000</span><span id="line-1000"> }</span>
-<span class="source-line-no">1001</span><span id="line-1001"></span>
-<span class="source-line-no">1002</span><span id="line-1002"> @Override</span>
-<span class="source-line-no">1003</span><span id="line-1003"> public Message messageFromObject() {</span>
-<span class="source-line-no">1004</span><span id="line-1004"> Scanner.Builder builder = Scanner.newBuilder();</span>
-<span class="source-line-no">1005</span><span id="line-1005"> if (!Bytes.equals(startRow, HConstants.EMPTY_START_ROW)) {</span>
-<span class="source-line-no">1006</span><span id="line-1006"> builder.setStartRow(UnsafeByteOperations.unsafeWrap(startRow));</span>
-<span class="source-line-no">1007</span><span id="line-1007"> }</span>
-<span class="source-line-no">1008</span><span id="line-1008"> if (!Bytes.equals(endRow, HConstants.EMPTY_START_ROW)) {</span>
-<span class="source-line-no">1009</span><span id="line-1009"> builder.setEndRow(UnsafeByteOperations.unsafeWrap(endRow));</span>
-<span class="source-line-no">1010</span><span id="line-1010"> }</span>
-<span class="source-line-no">1011</span><span id="line-1011"> for (byte[] column : columns) {</span>
-<span class="source-line-no">1012</span><span id="line-1012"> builder.addColumns(UnsafeByteOperations.unsafeWrap(column));</span>
-<span class="source-line-no">1013</span><span id="line-1013"> }</span>
-<span class="source-line-no">1014</span><span id="line-1014"> if (startTime != 0) {</span>
-<span class="source-line-no">1015</span><span id="line-1015"> builder.setStartTime(startTime);</span>
-<span class="source-line-no">1016</span><span id="line-1016"> }</span>
-<span class="source-line-no">1017</span><span id="line-1017"> if (endTime != 0) {</span>
-<span class="source-line-no">1018</span><span id="line-1018"> builder.setEndTime(endTime);</span>
-<span class="source-line-no">1019</span><span id="line-1019"> }</span>
-<span class="source-line-no">1020</span><span id="line-1020"> builder.setBatch(getBatch());</span>
-<span class="source-line-no">1021</span><span id="line-1021"> if (caching > 0) {</span>
-<span class="source-line-no">1022</span><span id="line-1022"> builder.setCaching(caching);</span>
-<span class="source-line-no">1023</span><span id="line-1023"> }</span>
-<span class="source-line-no">1024</span><span id="line-1024"> if (limit > 0) {</span>
-<span class="source-line-no">1025</span><span id="line-1025"> builder.setLimit(limit);</span>
-<span class="source-line-no">1026</span><span id="line-1026"> }</span>
-<span class="source-line-no">1027</span><span id="line-1027"> builder.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">1028</span><span id="line-1028"> if (filter != null) {</span>
-<span class="source-line-no">1029</span><span id="line-1029"> builder.setFilter(filter);</span>
-<span class="source-line-no">1030</span><span id="line-1030"> }</span>
-<span class="source-line-no">1031</span><span id="line-1031"> if (labels != null && labels.size() > 0) {</span>
-<span class="source-line-no">1032</span><span id="line-1032"> for (String label : labels)</span>
-<span class="source-line-no">1033</span><span id="line-1033"> builder.addLabels(label);</span>
-<span class="source-line-no">1034</span><span id="line-1034"> }</span>
-<span class="source-line-no">1035</span><span id="line-1035"> builder.setCacheBlocks(cacheBlocks);</span>
-<span class="source-line-no">1036</span><span id="line-1036"> builder.setIncludeStartRow(includeStartRow);</span>
-<span class="source-line-no">1037</span><span id="line-1037"> builder.setIncludeStopRow(includeStopRow);</span>
-<span class="source-line-no">1038</span><span id="line-1038"> return builder.build();</span>
-<span class="source-line-no">1039</span><span id="line-1039"> }</span>
-<span class="source-line-no">1040</span><span id="line-1040"></span>
-<span class="source-line-no">1041</span><span id="line-1041"> @Override</span>
-<span class="source-line-no">1042</span><span id="line-1042"> public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws IOException {</span>
-<span class="source-line-no">1043</span><span id="line-1043"> Scanner.Builder builder = Scanner.newBuilder();</span>
-<span class="source-line-no">1044</span><span id="line-1044"> RestUtil.mergeFrom(builder, cis);</span>
-<span class="source-line-no">1045</span><span id="line-1045"> if (builder.hasStartRow()) {</span>
-<span class="source-line-no">1046</span><span id="line-1046"> startRow = builder.getStartRow().toByteArray();</span>
-<span class="source-line-no">1047</span><span id="line-1047"> }</span>
-<span class="source-line-no">1048</span><span id="line-1048"> if (builder.hasEndRow()) {</span>
-<span class="source-line-no">1049</span><span id="line-1049"> endRow = builder.getEndRow().toByteArray();</span>
-<span class="source-line-no">1050</span><span id="line-1050"> }</span>
-<span class="source-line-no">1051</span><span id="line-1051"> for (ByteString column : builder.getColumnsList()) {</span>
-<span class="source-line-no">1052</span><span id="line-1052"> addColumn(column.toByteArray());</span>
-<span class="source-line-no">1053</span><span id="line-1053"> }</span>
-<span class="source-line-no">1054</span><span id="line-1054"> if (builder.hasBatch()) {</span>
-<span class="source-line-no">1055</span><span id="line-1055"> batch = builder.getBatch();</span>
-<span class="source-line-no">1056</span><span id="line-1056"> }</span>
-<span class="source-line-no">1057</span><span id="line-1057"> if (builder.hasCaching()) {</span>
-<span class="source-line-no">1058</span><span id="line-1058"> caching = builder.getCaching();</span>
-<span class="source-line-no">1059</span><span id="line-1059"> }</span>
-<span class="source-line-no">1060</span><span id="line-1060"> if (builder.hasLimit()) {</span>
-<span class="source-line-no">1061</span><span id="line-1061"> limit = builder.getLimit();</span>
-<span class="source-line-no">1062</span><span id="line-1062"> }</span>
-<span class="source-line-no">1063</span><span id="line-1063"> if (builder.hasStartTime()) {</span>
-<span class="source-line-no">1064</span><span id="line-1064"> startTime = builder.getStartTime();</span>
-<span class="source-line-no">1065</span><span id="line-1065"> }</span>
-<span class="source-line-no">1066</span><span id="line-1066"> if (builder.hasEndTime()) {</span>
-<span class="source-line-no">1067</span><span id="line-1067"> endTime = builder.getEndTime();</span>
-<span class="source-line-no">1068</span><span id="line-1068"> }</span>
-<span class="source-line-no">1069</span><span id="line-1069"> if (builder.hasMaxVersions()) {</span>
-<span class="source-line-no">1070</span><span id="line-1070"> maxVersions = builder.getMaxVersions();</span>
-<span class="source-line-no">1071</span><span id="line-1071"> }</span>
-<span class="source-line-no">1072</span><span id="line-1072"> if (builder.hasFilter()) {</span>
-<span class="source-line-no">1073</span><span id="line-1073"> filter = builder.getFilter();</span>
-<span class="source-line-no">1074</span><span id="line-1074"> }</span>
-<span class="source-line-no">1075</span><span id="line-1075"> if (builder.getLabelsList() != null) {</span>
-<span class="source-line-no">1076</span><span id="line-1076"> List<String> labels = builder.getLabelsList();</span>
-<span class="source-line-no">1077</span><span id="line-1077"> for (String label : labels) {</span>
-<span class="source-line-no">1078</span><span id="line-1078"> addLabel(label);</span>
-<span class="source-line-no">1079</span><span id="line-1079"> }</span>
-<span class="source-line-no">1080</span><span id="line-1080"> }</span>
-<span class="source-line-no">1081</span><span id="line-1081"> if (builder.hasCacheBlocks()) {</span>
-<span class="source-line-no">1082</span><span id="line-1082"> this.cacheBlocks = builder.getCacheBlocks();</span>
-<span class="source-line-no">1083</span><span id="line-1083"> }</span>
-<span class="source-line-no">1084</span><span id="line-1084"> if (builder.hasIncludeStartRow()) {</span>
-<span class="source-line-no">1085</span><span id="line-1085"> this.includeStartRow = builder.getIncludeStartRow();</span>
-<span class="source-line-no">1086</span><span id="line-1086"> }</span>
-<span class="source-line-no">1087</span><span id="line-1087"> if (builder.hasIncludeStopRow()) {</span>
-<span class="source-line-no">1088</span><span id="line-1088"> this.includeStopRow = builder.getIncludeStopRow();</span>
-<span class="source-line-no">1089</span><span id="line-1089"> }</span>
-<span class="source-line-no">1090</span><span id="line-1090"> return this;</span>
-<span class="source-line-no">1091</span><span id="line-1091"> }</span>
-<span class="source-line-no">1092</span><span id="line-1092"></span>
-<span class="source-line-no">1093</span><span id="line-1093">}</span>
+<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE",</span>
+<span class="source-line-no">150</span><span id="line-150"> "HE_EQUALS_USE_HASHCODE" },</span>
+<span class="source-line-no">151</span><span id="line-151"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
+<span class="source-line-no">152</span><span id="line-152"> private static class IncludeStartRowFilter {</span>
+<span class="source-line-no">153</span><span id="line-153"> @Override</span>
+<span class="source-line-no">154</span><span id="line-154"> public boolean equals(Object value) {</span>
+<span class="source-line-no">155</span><span id="line-155"> return Boolean.TRUE.equals(value);</span>
+<span class="source-line-no">156</span><span id="line-156"> }</span>
+<span class="source-line-no">157</span><span id="line-157"> }</span>
+<span class="source-line-no">158</span><span id="line-158"></span>
+<span class="source-line-no">159</span><span id="line-159"> /**</span>
+<span class="source-line-no">160</span><span id="line-160"> * Implement lazily-instantiated singleton as per recipe here:</span>
+<span class="source-line-no">161</span><span id="line-161"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
+<span class="source-line-no">162</span><span id="line-162"> */</span>
+<span class="source-line-no">163</span><span id="line-163"> private static class JaxbJsonProviderHolder {</span>
+<span class="source-line-no">164</span><span id="line-164"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
+<span class="source-line-no">165</span><span id="line-165"> }</span>
+<span class="source-line-no">166</span><span id="line-166"></span>
+<span class="source-line-no">167</span><span id="line-167"> @XmlRootElement</span>
+<span class="source-line-no">168</span><span id="line-168"> static class FilterModel {</span>
+<span class="source-line-no">169</span><span id="line-169"></span>
+<span class="source-line-no">170</span><span id="line-170"> @XmlRootElement</span>
+<span class="source-line-no">171</span><span id="line-171"> static class ByteArrayComparableModel {</span>
+<span class="source-line-no">172</span><span id="line-172"> @XmlAttribute</span>
+<span class="source-line-no">173</span><span id="line-173"> public String type;</span>
+<span class="source-line-no">174</span><span id="line-174"> @XmlAttribute</span>
+<span class="source-line-no">175</span><span id="line-175"> public String value;</span>
+<span class="source-line-no">176</span><span id="line-176"> @XmlAttribute</span>
+<span class="source-line-no">177</span><span id="line-177"> public String op;</span>
+<span class="source-line-no">178</span><span id="line-178"></span>
+<span class="source-line-no">179</span><span id="line-179"> static enum ComparatorType {</span>
+<span class="source-line-no">180</span><span id="line-180"> BinaryComparator,</span>
+<span class="source-line-no">181</span><span id="line-181"> BinaryPrefixComparator,</span>
+<span class="source-line-no">182</span><span id="line-182"> BitComparator,</span>
+<span class="source-line-no">183</span><span id="line-183"> NullComparator,</span>
+<span class="source-line-no">184</span><span id="line-184"> RegexStringComparator,</span>
+<span class="source-line-no">185</span><span id="line-185"> SubstringComparator</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> public ByteArrayComparableModel() {</span>
+<span class="source-line-no">189</span><span id="line-189"> }</span>
+<span class="source-line-no">190</span><span id="line-190"></span>
+<span class="source-line-no">191</span><span id="line-191"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
+<span class="source-line-no">192</span><span id="line-192"> String typeName = comparator.getClass().getSimpleName();</span>
+<span class="source-line-no">193</span><span id="line-193"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
+<span class="source-line-no">194</span><span id="line-194"> this.type = typeName;</span>
+<span class="source-line-no">195</span><span id="line-195"> switch (type) {</span>
+<span class="source-line-no">196</span><span id="line-196"> case BinaryComparator:</span>
+<span class="source-line-no">197</span><span id="line-197"> case BinaryPrefixComparator:</span>
+<span class="source-line-no">198</span><span id="line-198"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
+<span class="source-line-no">199</span><span id="line-199"> break;</span>
+<span class="source-line-no">200</span><span id="line-200"> case BitComparator:</span>
+<span class="source-line-no">201</span><span id="line-201"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
+<span class="source-line-no">202</span><span id="line-202"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
+<span class="source-line-no">203</span><span id="line-203"> break;</span>
+<span class="source-line-no">204</span><span id="line-204"> case NullComparator:</span>
+<span class="source-line-no">205</span><span id="line-205"> break;</span>
+<span class="source-line-no">206</span><span id="line-206"> case RegexStringComparator:</span>
+<span class="source-line-no">207</span><span id="line-207"> case SubstringComparator:</span>
+<span class="source-line-no">208</span><span id="line-208"> this.value = Bytes.toString(comparator.getValue());</span>
+<span class="source-line-no">209</span><span id="line-209"> break;</span>
+<span class="source-line-no">210</span><span id="line-210"> default:</span>
+<span class="source-line-no">211</span><span id="line-211"> throw new RuntimeException("unhandled filter type: " + type);</span>
+<span class="source-line-no">212</span><span id="line-212"> }</span>
+<span class="source-line-no">213</span><span id="line-213"> }</span>
+<span class="source-line-no">214</span><span id="line-214"></span>
+<span class="source-line-no">215</span><span id="line-215"> public ByteArrayComparable build() {</span>
+<span class="source-line-no">216</span><span id="line-216"> ByteArrayComparable comparator;</span>
+<span class="source-line-no">217</span><span id="line-217"> switch (ComparatorType.valueOf(type)) {</span>
+<span class="source-line-no">218</span><span id="line-218"> case BinaryComparator:</span>
+<span class="source-line-no">219</span><span id="line-219"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">220</span><span id="line-220"> break;</span>
+<span class="source-line-no">221</span><span id="line-221"> case BinaryPrefixComparator:</span>
+<span class="source-line-no">222</span><span id="line-222"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">223</span><span id="line-223"> break;</span>
+<span class="source-line-no">224</span><span id="line-224"> case BitComparator:</span>
+<span class="source-line-no">225</span><span id="line-225"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
+<span class="source-line-no">226</span><span id="line-226"> BitComparator.BitwiseOp.valueOf(op));</span>
+<span class="source-line-no">227</span><span id="line-227"> break;</span>
+<span class="source-line-no">228</span><span id="line-228"> case NullComparator:</span>
+<span class="source-line-no">229</span><span id="line-229"> comparator = new NullComparator();</span>
+<span class="source-line-no">230</span><span id="line-230"> break;</span>
+<span class="source-line-no">231</span><span id="line-231"> case RegexStringComparator:</span>
+<span class="source-line-no">232</span><span id="line-232"> comparator = new RegexStringComparator(value);</span>
+<span class="source-line-no">233</span><span id="line-233"> break;</span>
+<span class="source-line-no">234</span><span id="line-234"> case SubstringComparator:</span>
+<span class="source-line-no">235</span><span id="line-235"> comparator = new SubstringComparator(value);</span>
+<span class="source-line-no">236</span><span id="line-236"> break;</span>
+<span class="source-line-no">237</span><span id="line-237"> default:</span>
+<span class="source-line-no">238</span><span id="line-238"> throw new RuntimeException("unhandled comparator type: " + type);</span>
+<span class="source-line-no">239</span><span id="line-239"> }</span>
+<span class="source-line-no">240</span><span id="line-240"> return comparator;</span>
+<span class="source-line-no">241</span><span id="line-241"> }</span>
+<span class="source-line-no">242</span><span id="line-242"></span>
+<span class="source-line-no">243</span><span id="line-243"> }</span>
+<span class="source-line-no">244</span><span id="line-244"></span>
+<span class="source-line-no">245</span><span id="line-245"> /**</span>
+<span class="source-line-no">246</span><span id="line-246"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
+<span class="source-line-no">247</span><span id="line-247"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
+<span class="source-line-no">248</span><span id="line-248"> */</span>
+<span class="source-line-no">249</span><span id="line-249"> static class RowRangeModel {</span>
+<span class="source-line-no">250</span><span id="line-250"></span>
+<span class="source-line-no">251</span><span id="line-251"> protected byte[] startRow;</span>
+<span class="source-line-no">252</span><span id="line-252"></span>
+<span class="source-line-no">253</span><span id="line-253"> protected boolean startRowInclusive = true;</span>
+<span class="source-line-no">254</span><span id="line-254"></span>
+<span class="source-line-no">255</span><span id="line-255"> protected byte[] stopRow;</span>
+<span class="source-line-no">256</span><span id="line-256"></span>
+<span class="source-line-no">257</span><span id="line-257"> protected boolean stopRowInclusive = false;</span>
+<span class="source-line-no">258</span><span id="line-258"></span>
+<span class="source-line-no">259</span><span id="line-259"> public RowRangeModel() {</span>
+<span class="source-line-no">260</span><span id="line-260"> }</span>
+<span class="source-line-no">261</span><span id="line-261"></span>
+<span class="source-line-no">262</span><span id="line-262"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
+<span class="source-line-no">263</span><span id="line-263"> this.startRow = rr.getStartRow();</span>
+<span class="source-line-no">264</span><span id="line-264"> this.startRowInclusive = rr.isStartRowInclusive();</span>
+<span class="source-line-no">265</span><span id="line-265"> this.stopRow = rr.getStopRow();</span>
+<span class="source-line-no">266</span><span id="line-266"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
+<span class="source-line-no">267</span><span id="line-267"> }</span>
+<span class="source-line-no">268</span><span id="line-268"></span>
+<span class="source-line-no">269</span><span id="line-269"> public MultiRowRangeFilter.RowRange build() {</span>
+<span class="source-line-no">270</span><span id="line-270"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
+<span class="source-line-no">271</span><span id="line-271"> stopRowInclusive);</span>
+<span class="source-line-no">272</span><span id="line-272"> }</span>
+<span class="source-line-no">273</span><span id="line-273"></span>
+<span class="source-line-no">274</span><span id="line-274"> public byte[] getStartRow() {</span>
+<span class="source-line-no">275</span><span id="line-275"> return startRow;</span>
+<span class="source-line-no">276</span><span id="line-276"> }</span>
+<span class="source-line-no">277</span><span id="line-277"></span>
+<span class="source-line-no">278</span><span id="line-278"> public byte[] getStopRow() {</span>
+<span class="source-line-no">279</span><span id="line-279"> return stopRow;</span>
+<span class="source-line-no">280</span><span id="line-280"> }</span>
+<span class="source-line-no">281</span><span id="line-281"></span>
+<span class="source-line-no">282</span><span id="line-282"> /** Returns if start row is inclusive. */</span>
+<span class="source-line-no">283</span><span id="line-283"> public boolean isStartRowInclusive() {</span>
+<span class="source-line-no">284</span><span id="line-284"> return startRowInclusive;</span>
+<span class="source-line-no">285</span><span id="line-285"> }</span>
+<span class="source-line-no">286</span><span id="line-286"></span>
+<span class="source-line-no">287</span><span id="line-287"> /** Returns if stop row is inclusive. */</span>
+<span class="source-line-no">288</span><span id="line-288"> public boolean isStopRowInclusive() {</span>
+<span class="source-line-no">289</span><span id="line-289"> return stopRowInclusive;</span>
+<span class="source-line-no">290</span><span id="line-290"> }</span>
+<span class="source-line-no">291</span><span id="line-291"></span>
+<span class="source-line-no">292</span><span id="line-292"> @Override</span>
+<span class="source-line-no">293</span><span id="line-293"> public int hashCode() {</span>
+<span class="source-line-no">294</span><span id="line-294"> final int prime = 31;</span>
+<span class="source-line-no">295</span><span id="line-295"> int result = 1;</span>
+<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(startRow);</span>
+<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Arrays.hashCode(stopRow);</span>
+<span class="source-line-no">298</span><span id="line-298"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
+<span class="source-line-no">299</span><span id="line-299"> return result;</span>
+<span class="source-line-no">300</span><span id="line-300"> }</span>
+<span class="source-line-no">301</span><span id="line-301"></span>
+<span class="source-line-no">302</span><span id="line-302"> @Override</span>
+<span class="source-line-no">303</span><span id="line-303"> public boolean equals(Object obj) {</span>
+<span class="source-line-no">304</span><span id="line-304"> if (this == obj) {</span>
+<span class="source-line-no">305</span><span id="line-305"> return true;</span>
+<span class="source-line-no">306</span><span id="line-306"> }</span>
+<span class="source-line-no">307</span><span id="line-307"> if (!(obj instanceof RowRangeModel)) {</span>
+<span class="source-line-no">308</span><span id="line-308"> return false;</span>
+<span class="source-line-no">309</span><span id="line-309"> }</span>
+<span class="source-line-no">310</span><span id="line-310"> RowRangeModel other = (RowRangeModel) obj;</span>
+<span class="source-line-no">311</span><span id="line-311"> return Arrays.equals(startRow, other.startRow)</span>
+<span class="source-line-no">312</span><span id="line-312"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
+<span class="source-line-no">313</span><span id="line-313"> && stopRowInclusive == other.stopRowInclusive;</span>
+<span class="source-line-no">314</span><span id="line-314"> }</span>
+<span class="source-line-no">315</span><span id="line-315"></span>
+<span class="source-line-no">316</span><span id="line-316"> }</span>
+<span class="source-line-no">317</span><span id="line-317"></span>
+<span class="source-line-no">318</span><span id="line-318"> static class FuzzyKeyModel {</span>
+<span class="source-line-no">319</span><span id="line-319"></span>
+<span class="source-line-no">320</span><span id="line-320"> protected byte[] key;</span>
+<span class="source-line-no">321</span><span id="line-321"></span>
+<span class="source-line-no">322</span><span id="line-322"> protected byte[] mask;</span>
+<span class="source-line-no">323</span><span id="line-323"></span>
+<span class="source-line-no">324</span><span id="line-324"> public FuzzyKeyModel() {</span>
+<span class="source-line-no">325</span><span id="line-325"> }</span>
+<span class="source-line-no">326</span><span id="line-326"></span>
+<span class="source-line-no">327</span><span id="line-327"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
+<span class="source-line-no">328</span><span id="line-328"> this.key = keyWithMask.getFirst();</span>
+<span class="source-line-no">329</span><span id="line-329"> this.mask = keyWithMask.getSecond();</span>
+<span class="source-line-no">330</span><span id="line-330"> }</span>
+<span class="source-line-no">331</span><span id="line-331"></span>
+<span class="source-line-no">332</span><span id="line-332"> public Pair<byte[], byte[]> build() {</span>
+<span class="source-line-no">333</span><span id="line-333"> return new Pair<>(key, mask);</span>
+<span class="source-line-no">334</span><span id="line-334"> }</span>
+<span class="source-line-no">335</span><span id="line-335"></span>
+<span class="source-line-no">336</span><span id="line-336"> public byte[] getKey() {</span>
+<span class="source-line-no">337</span><span id="line-337"> return key;</span>
+<span class="source-line-no">338</span><span id="line-338"> }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340"> public void setKey(byte[] key) {</span>
+<span class="source-line-no">341</span><span id="line-341"> this.key = key;</span>
+<span class="source-line-no">342</span><span id="line-342"> }</span>
+<span class="source-line-no">343</span><span id="line-343"></span>
+<span class="source-line-no">344</span><span id="line-344"> public byte[] getMask() {</span>
+<span class="source-line-no">345</span><span id="line-345"> return mask;</span>
+<span class="source-line-no">346</span><span id="line-346"> }</span>
+<span class="source-line-no">347</span><span id="line-347"></span>
+<span class="source-line-no">348</span><span id="line-348"> public void setMask(byte[] mask) {</span>
+<span class="source-line-no">349</span><span id="line-349"> this.mask = mask;</span>
+<span class="source-line-no">350</span><span id="line-350"> }</span>
+<span class="source-line-no">351</span><span id="line-351"></span>
+<span class="source-line-no">352</span><span id="line-352"> @Override</span>
+<span class="source-line-no">353</span><span id="line-353"> public int hashCode() {</span>
+<span class="source-line-no">354</span><span id="line-354"> final int prime = 31;</span>
+<span class="source-line-no">355</span><span id="line-355"> int result = 1;</span>
+<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(key);</span>
+<span class="source-line-no">357</span><span id="line-357"> result = prime * result + Arrays.hashCode(mask);</span>
+<span class="source-line-no">358</span><span id="line-358"> return result;</span>
+<span class="source-line-no">359</span><span id="line-359"> }</span>
+<span class="source-line-no">360</span><span id="line-360"></span>
+<span class="source-line-no">361</span><span id="line-361"> @Override</span>
+<span class="source-line-no">362</span><span id="line-362"> public boolean equals(Object obj) {</span>
+<span class="source-line-no">363</span><span id="line-363"> if (this == obj) {</span>
+<span class="source-line-no">364</span><span id="line-364"> return true;</span>
+<span class="source-line-no">365</span><span id="line-365"> }</span>
+<span class="source-line-no">366</span><span id="line-366"> if (!(obj instanceof FuzzyKeyModel)) {</span>
+<span class="source-line-no">367</span><span id="line-367"> return false;</span>
+<span class="source-line-no">368</span><span id="line-368"> }</span>
+<span class="source-line-no">369</span><span id="line-369"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
+<span class="source-line-no">370</span><span id="line-370"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
+<span class="source-line-no">371</span><span id="line-371"> }</span>
+<span class="source-line-no">372</span><span id="line-372"></span>
+<span class="source-line-no">373</span><span id="line-373"> }</span>
+<span class="source-line-no">374</span><span id="line-374"></span>
+<span class="source-line-no">375</span><span id="line-375"> // A grab bag of fields, would have been a union if this were C.</span>
+<span class="source-line-no">376</span><span id="line-376"> // These are null by default and will only be serialized if set (non null).</span>
+<span class="source-line-no">377</span><span id="line-377"> @XmlAttribute</span>
+<span class="source-line-no">378</span><span id="line-378"> public String type;</span>
+<span class="source-line-no">379</span><span id="line-379"> @XmlAttribute</span>
+<span class="source-line-no">380</span><span id="line-380"> public String op;</span>
+<span class="source-line-no">381</span><span id="line-381"> @XmlElement</span>
+<span class="source-line-no">382</span><span id="line-382"> ByteArrayComparableModel comparator;</span>
+<span class="source-line-no">383</span><span id="line-383"> @XmlAttribute</span>
+<span class="source-line-no">384</span><span id="line-384"> public String value;</span>
+<span class="source-line-no">385</span><span id="line-385"> @XmlElement</span>
+<span class="source-line-no">386</span><span id="line-386"> public List<FilterModel> filters;</span>
+<span class="source-line-no">387</span><span id="line-387"> @XmlAttribute</span>
+<span class="source-line-no">388</span><span id="line-388"> public Integer limit;</span>
+<span class="source-line-no">389</span><span id="line-389"> @XmlAttribute</span>
+<span class="source-line-no">390</span><span id="line-390"> public Integer offset;</span>
+<span class="source-line-no">391</span><span id="line-391"> @XmlAttribute</span>
+<span class="source-line-no">392</span><span id="line-392"> public String family;</span>
+<span class="source-line-no">393</span><span id="line-393"> @XmlAttribute</span>
+<span class="source-line-no">394</span><span id="line-394"> public String qualifier;</span>
+<span class="source-line-no">395</span><span id="line-395"> @XmlAttribute</span>
+<span class="source-line-no">396</span><span id="line-396"> public Boolean ifMissing;</span>
+<span class="source-line-no">397</span><span id="line-397"> @XmlAttribute</span>
+<span class="source-line-no">398</span><span id="line-398"> public Boolean latestVersion;</span>
+<span class="source-line-no">399</span><span id="line-399"> @XmlAttribute</span>
+<span class="source-line-no">400</span><span id="line-400"> public String minColumn;</span>
+<span class="source-line-no">401</span><span id="line-401"> @XmlAttribute</span>
+<span class="source-line-no">402</span><span id="line-402"> public Boolean minColumnInclusive;</span>
+<span class="source-line-no">403</span><span id="line-403"> @XmlAttribute</span>
+<span class="source-line-no">404</span><span id="line-404"> public String maxColumn;</span>
+<span class="source-line-no">405</span><span id="line-405"> @XmlAttribute</span>
+<span class="source-line-no">406</span><span id="line-406"> public Boolean maxColumnInclusive;</span>
+<span class="source-line-no">407</span><span id="line-407"> @XmlAttribute</span>
+<span class="source-line-no">408</span><span id="line-408"> public Boolean dropDependentColumn;</span>
+<span class="source-line-no">409</span><span id="line-409"> @XmlAttribute</span>
+<span class="source-line-no">410</span><span id="line-410"> public Float chance;</span>
+<span class="source-line-no">411</span><span id="line-411"> @XmlElement</span>
+<span class="source-line-no">412</span><span id="line-412"> public List<String> prefixes;</span>
+<span class="source-line-no">413</span><span id="line-413"> @XmlElement</span>
+<span class="source-line-no">414</span><span id="line-414"> private List<RowRangeModel> ranges;</span>
+<span class="source-line-no">415</span><span id="line-415"> @XmlElement</span>
+<span class="source-line-no">416</span><span id="line-416"> public List<Long> timestamps;</span>
+<span class="source-line-no">417</span><span id="line-417"> @XmlElement</span>
+<span class="source-line-no">418</span><span id="line-418"> private List<FuzzyKeyModel> fuzzyKeys;</span>
+<span class="source-line-no">419</span><span id="line-419"></span>
+<span class="source-line-no">420</span><span id="line-420"> static enum FilterType {</span>
+<span class="source-line-no">421</span><span id="line-421"> ColumnCountGetFilter,</span>
+<span class="source-line-no">422</span><span id="line-422"> ColumnPaginationFilter,</span>
+<span class="source-line-no">423</span><span id="line-423"> ColumnPrefixFilter,</span>
+<span class="source-line-no">424</span><span id="line-424"> ColumnRangeFilter,</span>
+<span class="source-line-no">425</span><span id="line-425"> DependentColumnFilter,</span>
+<span class="source-line-no">426</span><span id="line-426"> FamilyFilter,</span>
+<span class="source-line-no">427</span><span id="line-427"> FilterList,</span>
+<span class="source-line-no">428</span><span id="line-428"> FirstKeyOnlyFilter,</span>
+<span class="source-line-no">429</span><span id="line-429"> InclusiveStopFilter,</span>
+<span class="source-line-no">430</span><span id="line-430"> KeyOnlyFilter,</span>
+<span class="source-line-no">431</span><span id="line-431"> MultipleColumnPrefixFilter,</span>
+<span class="source-line-no">432</span><span id="line-432"> MultiRowRangeFilter,</span>
+<span class="source-line-no">433</span><span id="line-433"> PageFilter,</span>
+<span class="source-line-no">434</span><span id="line-434"> PrefixFilter,</span>
+<span class="source-line-no">435</span><span id="line-435"> QualifierFilter,</span>
+<span class="source-line-no">436</span><span id="line-436"> RandomRowFilter,</span>
+<span class="source-line-no">437</span><span id="line-437"> RowFilter,</span>
+<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueExcludeFilter,</span>
+<span class="source-line-no">439</span><span id="line-439"> SingleColumnValueFilter,</span>
+<span class="source-line-no">440</span><span id="line-440"> SkipFilter,</span>
+<span class="source-line-no">441</span><span id="line-441"> TimestampsFilter,</span>
+<span class="source-line-no">442</span><span id="line-442"> ValueFilter,</span>
+<span class="source-line-no">443</span><span id="line-443"> WhileMatchFilter,</span>
+<span class="source-line-no">444</span><span id="line-444"> FuzzyRowFilter</span>
+<span class="source-line-no">445</span><span id="line-445"> }</span>
+<span class="source-line-no">446</span><span id="line-446"></span>
+<span class="source-line-no">447</span><span id="line-447"> public FilterModel() {</span>
+<span class="source-line-no">448</span><span id="line-448"> }</span>
+<span class="source-line-no">449</span><span id="line-449"></span>
+<span class="source-line-no">450</span><span id="line-450"> public FilterModel(Filter filter) {</span>
+<span class="source-line-no">451</span><span id="line-451"> String typeName = filter.getClass().getSimpleName();</span>
+<span class="source-line-no">452</span><span id="line-452"> FilterType type = FilterType.valueOf(typeName);</span>
+<span class="source-line-no">453</span><span id="line-453"> this.type = typeName;</span>
+<span class="source-line-no">454</span><span id="line-454"> switch (type) {</span>
+<span class="source-line-no">455</span><span id="line-455"> case ColumnCountGetFilter:</span>
+<span class="source-line-no">456</span><span id="line-456"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
+<span class="source-line-no">457</span><span id="line-457"> break;</span>
+<span class="source-line-no">458</span><span id="line-458"> case ColumnPaginationFilter:</span>
+<span class="source-line-no">459</span><span id="line-459"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
+<span class="source-line-no">460</span><span id="line-460"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
+<span class="source-line-no">461</span><span id="line-461"> break;</span>
+<span class="source-line-no">462</span><span id="line-462"> case ColumnPrefixFilter:</span>
+<span class="source-line-no">463</span><span id="line-463"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
+<span class="source-line-no">464</span><span id="line-464"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
+<span class="source-line-no">465</span><span id="line-465"> break;</span>
+<span class="source-line-no">466</span><span id="line-466"> case ColumnRangeFilter:</span>
+<span class="source-line-no">467</span><span id="line-467"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
+<span class="source-line-no">468</span><span id="line-468"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
+<span class="source-line-no">469</span><span id="line-469"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
+<span class="source-line-no">470</span><span id="line-470"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
+<span class="source-line-no">471</span><span id="line-471"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
+<span class="source-line-no">472</span><span id="line-472"> break;</span>
+<span class="source-line-no">473</span><span id="line-473"> case DependentColumnFilter: {</span>
+<span class="source-line-no">474</span><span id="line-474"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
+<span class="source-line-no">475</span><span id="line-475"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
+<span class="source-line-no">476</span><span id="line-476"> byte[] qualifier = dcf.getQualifier();</span>
+<span class="source-line-no">477</span><span id="line-477"> if (qualifier != null) {</span>
+<span class="source-line-no">478</span><span id="line-478"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
+<span class="source-line-no">479</span><span id="line-479"> }</span>
+<span class="source-line-no">480</span><span id="line-480"> this.op = dcf.getCompareOperator().toString();</span>
+<span class="source-line-no">481</span><span id="line-481"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
+<span class="source-line-no">482</span><span id="line-482"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
+<span class="source-line-no">483</span><span id="line-483"> }</span>
+<span class="source-line-no">484</span><span id="line-484"> break;</span>
+<span class="source-line-no">485</span><span id="line-485"> case FilterList:</span>
+<span class="source-line-no">486</span><span id="line-486"> this.op = ((FilterList) filter).getOperator().toString();</span>
+<span class="source-line-no">487</span><span id="line-487"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">488</span><span id="line-488"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
+<span class="source-line-no">489</span><span id="line-489"> this.filters.add(new FilterModel(child));</span>
+<span class="source-line-no">490</span><span id="line-490"> }</span>
+<span class="source-line-no">491</span><span id="line-491"> break;</span>
+<span class="source-line-no">492</span><span id="line-492"> case FirstKeyOnlyFilter:</span>
+<span class="source-line-no">493</span><span id="line-493"> case KeyOnlyFilter:</span>
+<span class="source-line-no">494</span><span id="line-494"> break;</span>
+<span class="source-line-no">495</span><span id="line-495"> case InclusiveStopFilter:</span>
+<span class="source-line-no">496</span><span id="line-496"> this.value = Bytes</span>
+<span class="source-line-no">497</span><span id="line-497"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
+<span class="source-line-no">498</span><span id="line-498"> break;</span>
+<span class="source-line-no">499</span><span id="line-499"> case MultipleColumnPrefixFilter:</span>
+<span class="source-line-no">500</span><span id="line-500"> this.prefixes = new ArrayList<>();</span>
+<span class="source-line-no">501</span><span id="line-501"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
+<span class="source-line-no">502</span><span id="line-502"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
+<span class="source-line-no">503</span><span id="line-503"> }</span>
+<span class="source-line-no">504</span><span id="line-504"> break;</span>
+<span class="source-line-no">505</span><span id="line-505"> case MultiRowRangeFilter:</span>
+<span class="source-line-no">506</span><span id="line-506"> this.ranges = new ArrayList<>();</span>
+<span class="source-line-no">507</span><span id="line-507"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
+<span class="source-line-no">508</span><span id="line-508"> this.ranges.add(new RowRangeModel(range));</span>
+<span class="source-line-no">509</span><span id="line-509"> }</span>
+<span class="source-line-no">510</span><span id="line-510"> break;</span>
+<span class="source-line-no">511</span><span id="line-511"> case PageFilter:</span>
+<span class="source-line-no">512</span><span id="line-512"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
+<span class="source-line-no">513</span><span id="line-513"> break;</span>
+<span class="source-line-no">514</span><span id="line-514"> case PrefixFilter:</span>
+<span class="source-line-no">515</span><span id="line-515"> this.value =</span>
+<span class="source-line-no">516</span><span id="line-516"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
+<span class="source-line-no">517</span><span id="line-517"> break;</span>
+<span class="source-line-no">518</span><span id="line-518"> case FamilyFilter:</span>
+<span class="source-line-no">519</span><span id="line-519"> case QualifierFilter:</span>
+<span class="source-line-no">520</span><span id="line-520"> case RowFilter:</span>
+<span class="source-line-no">521</span><span id="line-521"> case ValueFilter:</span>
+<span class="source-line-no">522</span><span id="line-522"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
+<span class="source-line-no">523</span><span id="line-523"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
+<span class="source-line-no">524</span><span id="line-524"> break;</span>
+<span class="source-line-no">525</span><span id="line-525"> case RandomRowFilter:</span>
+<span class="source-line-no">526</span><span id="line-526"> this.chance = ((RandomRowFilter) filter).getChance();</span>
+<span class="source-line-no">527</span><span id="line-527"> break;</span>
+<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueExcludeFilter:</span>
+<span class="source-line-no">529</span><span id="line-529"> case SingleColumnValueFilter: {</span>
+<span class="source-line-no">530</span><span id="line-530"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
+<span class="source-line-no">531</span><span id="line-531"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
+<span class="source-line-no">532</span><span id="line-532"> byte[] qualifier = scvf.getQualifier();</span>
+<span class="source-line-no">533</span><span id="line-533"> if (qualifier != null) {</span>
+<span class="source-line-no">534</span><span id="line-534"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
+<span class="source-line-no">535</span><span id="line-535"> }</span>
+<span class="source-line-no">536</span><span id="line-536"> this.op = scvf.getCompareOperator().toString();</span>
+<span class="source-line-no">537</span><span id="line-537"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
+<span class="source-line-no">538</span><span id="line-538"> if (scvf.getFilterIfMissing()) {</span>
+<span class="source-line-no">539</span><span id="line-539"> this.ifMissing = true;</span>
+<span class="source-line-no">540</span><span id="line-540"> }</span>
+<span class="source-line-no">541</span><span id="line-541"> if (scvf.getLatestVersionOnly()) {</span>
+<span class="source-line-no">542</span><span id="line-542"> this.latestVersion = true;</span>
+<span class="source-line-no">543</span><span id="line-543"> }</span>
+<span class="source-line-no">544</span><span id="line-544"> }</span>
+<span class="source-line-no">545</span><span id="line-545"> break;</span>
+<span class="source-line-no">546</span><span id="line-546"> case SkipFilter:</span>
+<span class="source-line-no">547</span><span id="line-547"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">548</span><span id="line-548"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
+<span class="source-line-no">549</span><span id="line-549"> break;</span>
+<span class="source-line-no">550</span><span id="line-550"> case TimestampsFilter:</span>
+<span class="source-line-no">551</span><span id="line-551"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
+<span class="source-line-no">552</span><span id="line-552"> break;</span>
+<span class="source-line-no">553</span><span id="line-553"> case WhileMatchFilter:</span>
+<span class="source-line-no">554</span><span id="line-554"> this.filters = new ArrayList<>();</span>
+<span class="source-line-no">555</span><span id="line-555"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
+<span class="source-line-no">556</span><span id="line-556"> break;</span>
+<span class="source-line-no">557</span><span id="line-557"> case FuzzyRowFilter:</span>
+<span class="source-line-no">558</span><span id="line-558"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
+<span class="source-line-no">559</span><span id="line-559"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
+<span class="source-line-no">560</span><span id="line-560"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
+<span class="source-line-no">561</span><span id="line-561"> }</span>
+<span class="source-line-no">562</span><span id="line-562"> break;</span>
+<span class="source-line-no">563</span><span id="line-563"> default:</span>
+<span class="source-line-no">564</span><span id="line-564"> throw new RuntimeException("unhandled filter type " + type);</span>
+<span class="source-line-no">565</span><span id="line-565"> }</span>
+<span class="source-line-no">566</span><span id="line-566"> }</span>
+<span class="source-line-no">567</span><span id="line-567"></span>
+<span class="source-line-no">568</span><span id="line-568"> public Filter build() {</span>
+<span class="source-line-no">569</span><span id="line-569"> Filter filter;</span>
+<span class="source-line-no">570</span><span id="line-570"> switch (FilterType.valueOf(type)) {</span>
+<span class="source-line-no">571</span><span id="line-571"> case ColumnCountGetFilter:</span>
+<span class="source-line-no">572</span><span id="line-572"> filter = new ColumnCountGetFilter(limit);</span>
+<span class="source-line-no">573</span><span id="line-573"> break;</span>
+<span class="source-line-no">574</span><span id="line-574"> case ColumnPaginationFilter:</span>
+<span class="source-line-no">575</span><span id="line-575"> filter = new ColumnPaginationFilter(limit, offset);</span>
+<span class="source-line-no">576</span><span id="line-576"> break;</span>
+<span class="source-line-no">577</span><span id="line-577"> case ColumnPrefixFilter:</span>
+<span class="source-line-no">578</span><span id="line-578"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">579</span><span id="line-579"> break;</span>
+<span class="source-line-no">580</span><span id="line-580"> case ColumnRangeFilter:</span>
+<span class="source-line-no">581</span><span id="line-581"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
+<span class="source-line-no">582</span><span id="line-582"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
+<span class="source-line-no">583</span><span id="line-583"> break;</span>
+<span class="source-line-no">584</span><span id="line-584"> case DependentColumnFilter:</span>
+<span class="source-line-no">585</span><span id="line-585"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">586</span><span id="line-586"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
+<span class="source-line-no">587</span><span id="line-587"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">588</span><span id="line-588"> break;</span>
+<span class="source-line-no">589</span><span id="line-589"> case FamilyFilter:</span>
+<span class="source-line-no">590</span><span id="line-590"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">591</span><span id="line-591"> break;</span>
+<span class="source-line-no">592</span><span id="line-592"> case FilterList: {</span>
+<span class="source-line-no">593</span><span id="line-593"> List<Filter> list = new ArrayList<>(filters.size());</span>
+<span class="source-line-no">594</span><span id="line-594"> for (FilterModel model : filters) {</span>
+<span class="source-line-no">595</span><span id="line-595"> list.add(model.build());</span>
+<span class="source-line-no">596</span><span id="line-596"> }</span>
+<span class="source-line-no">597</span><span id="line-597"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
+<span class="source-line-no">598</span><span id="line-598"> }</span>
+<span class="source-line-no">599</span><span id="line-599"> break;</span>
+<span class="source-line-no">600</span><span id="line-600"> case FirstKeyOnlyFilter:</span>
+<span class="source-line-no">601</span><span id="line-601"> filter = new FirstKeyOnlyFilter();</span>
+<span class="source-line-no">602</span><span id="line-602"> break;</span>
+<span class="source-line-no">603</span><span id="line-603"> case InclusiveStopFilter:</span>
+<span class="source-line-no">604</span><span id="line-604"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">605</span><span id="line-605"> break;</span>
+<span class="source-line-no">606</span><span id="line-606"> case KeyOnlyFilter:</span>
+<span class="source-line-no">607</span><span id="line-607"> filter = new KeyOnlyFilter();</span>
+<span class="source-line-no">608</span><span id="line-608"> break;</span>
+<span class="source-line-no">609</span><span id="line-609"> case MultipleColumnPrefixFilter: {</span>
+<span class="source-line-no">610</span><span id="line-610"> byte[][] values = new byte[prefixes.size()][];</span>
+<span class="source-line-no">611</span><span id="line-611"> for (int i = 0; i < prefixes.size(); i++) {</span>
+<span class="source-line-no">612</span><span id="line-612"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
+<span class="source-line-no">613</span><span id="line-613"> }</span>
+<span class="source-line-no">614</span><span id="line-614"> filter = new MultipleColumnPrefixFilter(values);</span>
+<span class="source-line-no">615</span><span id="line-615"> }</span>
+<span class="source-line-no">616</span><span id="line-616"> break;</span>
+<span class="source-line-no">617</span><span id="line-617"> case MultiRowRangeFilter: {</span>
+<span class="source-line-no">618</span><span id="line-618"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
+<span class="source-line-no">619</span><span id="line-619"> for (RowRangeModel rangeModel : ranges) {</span>
+<span class="source-line-no">620</span><span id="line-620"> rowRanges.add(rangeModel.build());</span>
+<span class="source-line-no">621</span><span id="line-621"> }</span>
+<span class="source-line-no">622</span><span id="line-622"> filter = new MultiRowRangeFilter(rowRanges);</span>
+<span class="source-line-no">623</span><span id="line-623"> }</span>
+<span class="source-line-no">624</span><span id="line-624"> break;</span>
+<span class="source-line-no">625</span><span id="line-625"> case PageFilter:</span>
+<span class="source-line-no">626</span><span id="line-626"> filter = new PageFilter(Long.parseLong(value));</span>
+<span class="source-line-no">627</span><span id="line-627"> break;</span>
+<span class="source-line-no">628</span><span id="line-628"> case PrefixFilter:</span>
+<span class="source-line-no">629</span><span id="line-629"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
+<span class="source-line-no">630</span><span id="line-630"> break;</span>
+<span class="source-line-no">631</span><span id="line-631"> case QualifierFilter:</span>
+<span class="source-line-no">632</span><span id="line-632"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">633</span><span id="line-633"> break;</span>
+<span class="source-line-no">634</span><span id="line-634"> case RandomRowFilter:</span>
+<span class="source-line-no">635</span><span id="line-635"> filter = new RandomRowFilter(chance);</span>
+<span class="source-line-no">636</span><span id="line-636"> break;</span>
+<span class="source-line-no">637</span><span id="line-637"> case RowFilter:</span>
+<span class="source-line-no">638</span><span id="line-638"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">639</span><span id="line-639"> break;</span>
+<span class="source-line-no">640</span><span id="line-640"> case SingleColumnValueFilter:</span>
+<span class="source-line-no">641</span><span id="line-641"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">642</span><span id="line-642"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
+<span class="source-line-no">643</span><span id="line-643"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">644</span><span id="line-644"> if (ifMissing != null) {</span>
+<span class="source-line-no">645</span><span id="line-645"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
+<span class="source-line-no">646</span><span id="line-646"> }</span>
+<span class="source-line-no">647</span><span id="line-647"> if (latestVersion != null) {</span>
+<span class="source-line-no">648</span><span id="line-648"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
+<span class="source-line-no">649</span><span id="line-649"> }</span>
+<span class="source-line-no">650</span><span id="line-650"> break;</span>
+<span class="source-line-no">651</span><span id="line-651"> case SingleColumnValueExcludeFilter:</span>
+<span class="source-line-no">652</span><span id="line-652"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
+<span class="source-line-no">653</span><span id="line-653"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
+<span class="source-line-no">654</span><span id="line-654"> CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">655</span><span id="line-655"> if (ifMissing != null) {</span>
+<span class="source-line-no">656</span><span id="line-656"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
+<span class="source-line-no">657</span><span id="line-657"> }</span>
+<span class="source-line-no">658</span><span id="line-658"> if (latestVersion != null) {</span>
+<span class="source-line-no">659</span><span id="line-659"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
+<span class="source-line-no">660</span><span id="line-660"> }</span>
+<span class="source-line-no">661</span><span id="line-661"> break;</span>
+<span class="source-line-no">662</span><span id="line-662"> case SkipFilter:</span>
+<span class="source-line-no">663</span><span id="line-663"> filter = new SkipFilter(filters.get(0).build());</span>
+<span class="source-line-no">664</span><span id="line-664"> break;</span>
+<span class="source-line-no">665</span><span id="line-665"> case TimestampsFilter:</span>
+<span class="source-line-no">666</span><span id="line-666"> filter = new TimestampsFilter(timestamps);</span>
+<span class="source-line-no">667</span><span id="line-667"> break;</span>
+<span class="source-line-no">668</span><span id="line-668"> case ValueFilter:</span>
+<span class="source-line-no">669</span><span id="line-669"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
+<span class="source-line-no">670</span><span id="line-670"> break;</span>
+<span class="source-line-no">671</span><span id="line-671"> case WhileMatchFilter:</span>
+<span class="source-line-no">672</span><span id="line-672"> filter = new WhileMatchFilter(filters.get(0).build());</span>
+<span class="source-line-no">673</span><span id="line-673"> break;</span>
+<span class="source-line-no">674</span><span id="line-674"> case FuzzyRowFilter: {</span>
+<span class="source-line-no">675</span><span id="line-675"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
+<span class="source-line-no">676</span><span id="line-676"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
+<span class="source-line-no">677</span><span id="line-677"> fuzzyKeyArgs.add(keyModel.build());</span>
+<span class="source-line-no">678</span><span id="line-678"> }</span>
+<span class="source-line-no">679</span><span id="line-679"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
+<span class="source-line-no">680</span><span id="line-680"> }</span>
+<span class="source-line-no">681</span><span id="line-681"> break;</span>
+<span class="source-line-no">682</span><span id="line-682"> default:</span>
+<span class="source-line-no">683</span><span id="line-683"> throw new RuntimeException("unhandled filter type: " + type);</span>
+<span class="source-line-no">684</span><span id="line-684"> }</span>
+<span class="source-line-no">685</span><span id="line-685"> return filter;</span>
+<span class="source-line-no">686</span><span id="line-686"> }</span>
+<span class="source-line-no">687</span><span id="line-687"></span>
+<span class="source-line-no">688</span><span id="line-688"> }</span>
+<span class="source-line-no">689</span><span id="line-689"></span>
+<span class="source-line-no">690</span><span id="line-690"> /**</span>
+<span class="source-line-no">691</span><span id="line-691"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
+<span class="source-line-no">692</span><span id="line-692"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
+<span class="source-line-no">693</span><span id="line-693"> */</span>
+<span class="source-line-no">694</span><span id="line-694"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
+<span class="source-line-no">695</span><span id="line-695"> return JaxbJsonProviderHolder.INSTANCE;</span>
+<span class="source-line-no">696</span><span id="line-696"> }</span>
+<span class="source-line-no">697</span><span id="line-697"></span>
+<span class="source-line-no">698</span><span id="line-698"> /**</span>
+<span class="source-line-no">699</span><span id="line-699"> * @param s the JSON representation of the filter</span>
+<span class="source-line-no">700</span><span id="line-700"> * @return the filter</span>
+<span class="source-line-no">701</span><span id="line-701"> */</span>
+<span class="source-line-no">702</span><span id="line-702"> public static Filter buildFilter(String s) throws Exception {</span>
+<span class="source-line-no">703</span><span id="line-703"> FilterModel model =</span>
+<span class="source-line-no">704</span><span id="line-704"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
+<span class="source-line-no">705</span><span id="line-705"> .readValue(s, FilterModel.class);</span>
+<span class="source-line-no">706</span><span id="line-706"> return model.build();</span>
+<span class="source-line-no">707</span><span id="line-707"> }</span>
+<span class="source-line-no">708</span><span id="line-708"></span>
+<span class="source-line-no">709</span><span id="line-709"> /**</span>
+<span class="source-line-no">710</span><span id="line-710"> * @param filter the filter</span>
+<span class="source-line-no">711</span><span id="line-711"> * @return the JSON representation of the filter</span>
+<span class="source-line-no">712</span><span id="line-712"> */</span>
+<span class="source-line-no">713</span><span id="line-713"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
+<span class="source-line-no">714</span><span id="line-714"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
+<span class="source-line-no">715</span><span id="line-715"> .writeValueAsString(new FilterModel(filter));</span>
+<span class="source-line-no">716</span><span id="line-716"> }</span>
+<span class="source-line-no">717</span><span id="line-717"></span>
+<span class="source-line-no">718</span><span id="line-718"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
+<span class="source-line-no">719</span><span id="line-719"></span>
+<span class="source-line-no">720</span><span id="line-720"> /**</span>
+<span class="source-line-no">721</span><span id="line-721"> * @param scan the scan specification</span>
+<span class="source-line-no">722</span><span id="line-722"> */</span>
+<span class="source-line-no">723</span><span id="line-723"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
+<span class="source-line-no">724</span><span id="line-724"> ScannerModel model = new ScannerModel();</span>
+<span class="source-line-no">725</span><span id="line-725"> model.setStartRow(scan.getStartRow());</span>
+<span class="source-line-no">726</span><span id="line-726"> model.setEndRow(scan.getStopRow());</span>
+<span class="source-line-no">727</span><span id="line-727"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
+<span class="source-line-no">728</span><span id="line-728"> if (families != null) {</span>
+<span class="source-line-no">729</span><span id="line-729"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
+<span class="source-line-no">730</span><span id="line-730"> if (entry.getValue() != null) {</span>
+<span class="source-line-no">731</span><span id="line-731"> for (byte[] qualifier : entry.getValue()) {</span>
+<span class="source-line-no">732</span><span id="line-732"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
+<span class="source-line-no">733</span><span id="line-733"> }</span>
+<span class="source-line-no">734</span><span id="line-734"> } else {</span>
+<span class="source-line-no">735</span><span id="line-735"> model.addColumn(entry.getKey());</span>
+<span class="source-line-no">736</span><span id="line-736"> }</span>
+<span class="source-line-no">737</span><span id="line-737"> }</span>
+<span class="source-line-no">738</span><span id="line-738"> }</span>
+<span class="source-line-no">739</span><span id="line-739"> model.setStartTime(scan.getTimeRange().getMin());</span>
+<span class="source-line-no">740</span><span id="line-740"> model.setEndTime(scan.getTimeRange().getMax());</span>
+<span class="source-line-no">741</span><span id="line-741"> int caching = scan.getCaching();</span>
+<span class="source-line-no">742</span><span id="line-742"> if (caching > 0) {</span>
+<span class="source-line-no">743</span><span id="line-743"> model.setCaching(caching);</span>
+<span class="source-line-no">744</span><span id="line-744"> }</span>
+<span class="source-line-no">745</span><span id="line-745"> int batch = scan.getBatch();</span>
+<span class="source-line-no">746</span><span id="line-746"> if (batch > 0) {</span>
+<span class="source-line-no">747</span><span id="line-747"> model.setBatch(batch);</span>
+<span class="source-line-no">748</span><span id="line-748"> }</span>
+<span class="source-line-no">749</span><span id="line-749"> int maxVersions = scan.getMaxVersions();</span>
+<span class="source-line-no">750</span><span id="line-750"> if (maxVersions > 0) {</span>
+<span class="source-line-no">751</span><span id="line-751"> model.setMaxVersions(maxVersions);</span>
+<span class="source-line-no">752</span><span id="line-752"> }</span>
+<span class="source-line-no">753</span><span id="line-753"> if (scan.getLimit() > 0) {</span>
+<span class="source-line-no">754</span><span id="line-754"> model.setLimit(scan.getLimit());</span>
+<span class="source-line-no">755</span><span id="line-755"> }</span>
+<span class="source-line-no">756</span><span id="line-756"> Filter filter = scan.getFilter();</span>
+<span class="source-line-no">757</span><span id="line-757"> if (filter != null) {</span>
+<span class="source-line-no">758</span><span id="line-758"> model.setFilter(stringifyFilter(filter));</span>
+<span class="source-line-no">759</span><span id="line-759"> }</span>
+<span class="source-line-no">760</span><span id="line-760"> // Add the visbility labels if found in the attributes</span>
+<span class="source-line-no">761</span><span id="line-761"> Authorizations authorizations = scan.getAuthorizations();</span>
+<span class="source-line-no">762</span><span id="line-762"> if (authorizations != null) {</span>
+<span class="source-line-no">763</span><span id="line-763"> List<String> labels = authorizations.getLabels();</span>
+<span class="source-line-no">764</span><span id="line-764"> for (String label : labels) {</span>
+<span class="source-line-no">765</span><span id="line-765"> model.addLabel(label);</span>
+<span class="source-line-no">766</span><span id="line-766"> }</span>
+<span class="source-line-no">767</span><span id="line-767"> }</span>
+<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStartRow(scan.includeStartRow());</span>
+<span class="source-line-no">769</span><span id="line-769"> model.setIncludeStopRow(scan.includeStopRow());</span>
+<span class="source-line-no">770</span><span id="line-770"> return model;</span>
+<span class="source-line-no">771</span><span id="line-771"> }</span>
+<span class="source-line-no">772</span><span id="line-772"></span>
+<span class="source-line-no">773</span><span id="line-773"> /**</span>
+<span class="source-line-no">774</span><span id="line-774"> * Default constructor</span>
+<span class="source-line-no">775</span><span id="line-775"> */</span>
+<span class="source-line-no">776</span><span id="line-776"> public ScannerModel() {</span>
+<span class="source-line-no">777</span><span id="line-777"> }</span>
+<span class="source-line-no">778</span><span id="line-778"></span>
+<span class="source-line-no">779</span><span id="line-779"> /**</span>
+<span class="source-line-no">780</span><span id="line-780"> * Constructor</span>
+<span class="source-line-no">781</span><span id="line-781"> * @param startRow the start key of the row-range</span>
+<span class="source-line-no">782</span><span id="line-782"> * @param endRow the end key of the row-range</span>
+<span class="source-line-no">783</span><span id="line-783"> * @param columns the columns to scan</span>
+<span class="source-line-no">784</span><span id="line-784"> * @param batch the number of values to return in batch</span>
+<span class="source-line-no">785</span><span id="line-785"> * @param caching the number of rows that the scanner will fetch at once</span>
+<span class="source-line-no">786</span><span id="line-786"> * @param endTime the upper bound on timestamps of values of interest</span>
+<span class="source-line-no">787</span><span id="line-787"> * @param maxVersions the maximum number of versions to return</span>
+<span class="source-line-no">788</span><span id="line-788"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
+<span class="source-line-no">789</span><span id="line-789"> */</span>
+<span class="source-line-no">790</span><span id="line-790"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
+<span class="source-line-no">791</span><span id="line-791"> long endTime, int maxVersions, String filter) {</span>
+<span class="source-line-no">792</span><span id="line-792"> super();</span>
+<span class="source-line-no">793</span><span id="line-793"> this.startRow = startRow;</span>
+<span class="source-line-no">794</span><span id="line-794"> this.endRow = endRow;</span>
+<span class="source-line-no">795</span><span id="line-795"> this.columns = columns;</span>
+<span class="source-line-no">796</span><span id="line-796"> this.batch = batch;</span>
+<span class="source-line-no">797</span><span id="line-797"> this.caching = caching;</span>
+<span class="source-line-no">798</span><span id="line-798"> this.endTime = endTime;</span>
+<span class="source-line-no">799</span><span id="line-799"> this.maxVersions = maxVersions;</span>
+<span class="source-line-no">800</span><span id="line-800"> this.filter = filter;</span>
+<span class="source-line-no">801</span><span id="line-801"> }</span>
+<span class="source-line-no">802</span><span id="line-802"></span>
+<span class="source-line-no">803</span><span id="line-803"> /**</span>
+<span class="source-line-no">804</span><span id="line-804"> * Constructor</span>
+<span class="source-line-no">805</span><span id="line-805"> * @param startRow the start key of the row-range</span>
+<span class="source-line-no">806</span><span id="line-806"> * @param endRow the end key of the row-range</span>
+<span class="source-line-no">807</span><span id="line-807"> * @param columns the columns to scan</span>
+<span class="source-line-no">808</span><span id="line-808"> * @param batch the number of values to return in batch</span>
+<span class="source-line-no">809</span><span id="line-809"> * @param caching the number of rows that the scanner will fetch at once</span>
+<span class="source-line-no">810</span><span id="line-810"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
+<span class="source-line-no">811</span><span id="line-811"> * earlier than this are excluded)</span>
+<span class="source-line-no">812</span><span id="line-812"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
+<span class="source-line-no">813</span><span id="line-813"> * later than this are excluded)</span>
+<span class="source-line-no">814</span><span id="line-814"> * @param filter a filter specification</span>
+<span class="source-line-no">815</span><span id="line-815"> */</span>
+<span class="source-line-no">816</span><span id="line-816"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
+<span class="source-line-no">817</span><span id="line-817"> long startTime, long endTime, String filter) {</span>
+<span class="source-line-no">818</span><span id="line-818"> super();</span>
+<span class="source-line-no">819</span><span id="line-819"> this.startRow = startRow;</span>
+<span class="source-line-no">820</span><span id="line-820"> this.endRow = endRow;</span>
+<span class="source-line-no">821</span><span id="line-821"> this.columns = columns;</span>
+<span class="source-line-no">822</span><span id="line-822"> this.batch = batch;</span>
+<span class="source-line-no">823</span><span id="line-823"> this.caching = caching;</span>
+<span class="source-line-no">824</span><span id="line-824"> this.startTime = startTime;</span>
+<span class="source-line-no">825</span><span id="line-825"> this.endTime = endTime;</span>
+<span class="source-line-no">826</span><span id="line-826"> this.filter = filter;</span>
+<span class="source-line-no">827</span><span id="line-827"> }</span>
+<span class="source-line-no">828</span><span id="line-828"></span>
+<span class="source-line-no">829</span><span id="line-829"> /**</span>
+<span class="source-line-no">830</span><span id="line-830"> * Add a column to the column set</span>
+<span class="source-line-no">831</span><span id="line-831"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
+<span class="source-line-no">832</span><span id="line-832"> */</span>
+<span class="source-line-no">833</span><span id="line-833"> public void addColumn(byte[] column) {</span>
+<span class="source-line-no">834</span><span id="line-834"> columns.add(column);</span>
+<span class="source-line-no">835</span><span id="line-835"> }</span>
+<span class="source-line-no">836</span><span id="line-836"></span>
+<span class="source-line-no">837</span><span id="line-837"> /**</span>
+<span class="source-line-no">838</span><span id="line-838"> * Add a visibility label to the scan</span>
+<span class="source-line-no">839</span><span id="line-839"> */</span>
+<span class="source-line-no">840</span><span id="line-840"> public void addLabel(String label) {</span>
+<span class="source-line-no">841</span><span id="line-841"> labels.add(label);</span>
+<span class="source-line-no">842</span><span id="line-842"> }</span>
+<span class="source-line-no">843</span><span id="line-843"></span>
+<span class="source-line-no">844</span><span id="line-844"> /** Returns true if a start row was specified */</span>
+<span class="source-line-no">845</span><span id="line-845"> public boolean hasStartRow() {</span>
+<span class="source-line-no">846</span><span id="line-846"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
+<span class="source-line-no">847</span><span id="line-847"> }</span>
+<span class="source-line-no">848</span><span id="line-848"></span>
+<span class="source-line-no">849</span><span id="line-849"> /** Returns start row */</span>
+<span class="source-line-no">850</span><span id="line-850"> @XmlAttribute</span>
+<span class="source-line-no">851</span><span id="line-851"> public byte[] getStartRow() {</span>
+<span class="source-line-no">852</span><span id="line-852"> return startRow;</span>
+<span class="source-line-no">853</span><span id="line-853"> }</span>
+<span class="source-line-no">854</span><span id="line-854"></span>
+<span class="source-line-no">855</span><span id="line-855"> /** Returns true if an end row was specified */</span>
+<span class="source-line-no">856</span><span id="line-856"> public boolean hasEndRow() {</span>
+<span class="source-line-no">857</span><span id="line-857"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
+<span class="source-line-no">858</span><span id="line-858"> }</span>
+<span class="source-line-no">859</span><span id="line-859"></span>
+<span class="source-line-no">860</span><span id="line-860"> /** Returns end row */</span>
+<span class="source-line-no">861</span><span id="line-861"> @XmlAttribute</span>
+<span class="source-line-no">862</span><span id="line-862"> public byte[] getEndRow() {</span>
+<span class="source-line-no">863</span><span id="line-863"> return endRow;</span>
+<span class="source-line-no">864</span><span id="line-864"> }</span>
+<span class="source-line-no">865</span><span id="line-865"></span>
+<span class="source-line-no">866</span><span id="line-866"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
+<span class="source-line-no">867</span><span id="line-867"> @XmlElement(name = "column")</span>
+<span class="source-line-no">868</span><span id="line-868"> public List<byte[]> getColumns() {</span>
+<span class="source-line-no">869</span><span id="line-869"> return columns;</span>
+<span class="source-line-no">870</span><span id="line-870"> }</span>
+<span class="source-line-no">871</span><span id="line-871"></span>
+<span class="source-line-no">872</span><span id="line-872"> @XmlElement(name = "labels")</span>
+<span class="source-line-no">873</span><span id="line-873"> public List<String> getLabels() {</span>
+<span class="source-line-no">874</span><span id="line-874"> return labels;</span>
+<span class="source-line-no">875</span><span id="line-875"> }</span>
+<span class="source-line-no">876</span><span id="line-876"></span>
+<span class="source-line-no">877</span><span id="line-877"> /** Returns the number of cells to return in batch */</span>
+<span class="source-line-no">878</span><span id="line-878"> @XmlAttribute</span>
+<span class="source-line-no">879</span><span id="line-879"> public int getBatch() {</span>
+<span class="source-line-no">880</span><span id="line-880"> return batch;</span>
+<span class="source-line-no">881</span><span id="line-881"> }</span>
+<span class="source-line-no">882</span><span id="line-882"></span>
+<span class="source-line-no">883</span><span id="line-883"> /** Returns the number of rows that the scanner to fetch at once */</span>
+<span class="source-line-no">884</span><span id="line-884"> @XmlAttribute</span>
+<span class="source-line-no">885</span><span id="line-885"> public int getCaching() {</span>
+<span class="source-line-no">886</span><span id="line-886"> return caching;</span>
+<span class="source-line-no">887</span><span id="line-887"> }</span>
+<span class="source-line-no">888</span><span id="line-888"></span>
+<span class="source-line-no">889</span><span id="line-889"> /** Returns the limit specification */</span>
+<span class="source-line-no">890</span><span id="line-890"> @XmlAttribute</span>
+<span class="source-line-no">891</span><span id="line-891"> public int getLimit() {</span>
+<span class="source-line-no">892</span><span id="line-892"> return limit;</span>
+<span class="source-line-no">893</span><span id="line-893"> }</span>
+<span class="source-line-no">894</span><span id="line-894"></span>
+<span class="source-line-no">895</span><span id="line-895"> /** Returns true if HFile blocks should be cached on the servers for this scan, false otherwise */</span>
+<span class="source-line-no">896</span><span id="line-896"> @XmlAttribute</span>
+<span class="source-line-no">897</span><span id="line-897"> public boolean getCacheBlocks() {</span>
+<span class="source-line-no">898</span><span id="line-898"> return cacheBlocks;</span>
+<span class="source-line-no">899</span><span id="line-899"> }</span>
+<span class="source-line-no">900</span><span id="line-900"></span>
+<span class="source-line-no">901</span><span id="line-901"> /** Returns the lower bound on timestamps of items of interest */</span>
+<span class="source-line-no">902</span><span id="line-902"> @XmlAttribute</span>
+<span class="source-line-no">903</span><span id="line-903"> public long getStartTime() {</span>
+<span class="source-line-no">904</span><span id="line-904"> return startTime;</span>
+<span class="source-line-no">905</span><span id="line-905"> }</span>
+<span class="source-line-no">906</span><span id="line-906"></span>
+<span class="source-line-no">907</span><span id="line-907"> /** Returns the upper bound on timestamps of items of interest */</span>
+<span class="source-line-no">908</span><span id="line-908"> @XmlAttribute</span>
+<span class="source-line-no">909</span><span id="line-909"> public long getEndTime() {</span>
+<span class="source-line-no">910</span><span id="line-910"> return endTime;</span>
+<span class="source-line-no">911</span><span id="line-911"> }</span>
+<span class="source-line-no">912</span><span id="line-912"></span>
+<span class="source-line-no">913</span><span id="line-913"> /** Returns maximum number of versions to return */</span>
+<span class="source-line-no">914</span><span id="line-914"> @XmlAttribute</span>
+<span class="source-line-no">915</span><span id="line-915"> public int getMaxVersions() {</span>
+<span class="source-line-no">916</span><span id="line-916"> return maxVersions;</span>
+<span class="source-line-no">917</span><span id="line-917"> }</span>
+<span class="source-line-no">918</span><span id="line-918"></span>
+<span class="source-line-no">919</span><span id="line-919"> /** Returns the filter specification */</span>
+<span class="source-line-no">920</span><span id="line-920"> @XmlElement</span>
+<span class="source-line-no">921</span><span id="line-921"> public String getFilter() {</span>
+<span class="source-line-no">922</span><span id="line-922"> return filter;</span>
+<span class="source-line-no">923</span><span id="line-923"> }</span>
+<span class="source-line-no">924</span><span id="line-924"></span>
+<span class="source-line-no">925</span><span id="line-925"> /**</span>
+<span class="source-line-no">926</span><span id="line-926"> * @param startRow start row</span>
+<span class="source-line-no">927</span><span id="line-927"> */</span>
+<span class="source-line-no">928</span><span id="line-928"> public void setStartRow(byte[] startRow) {</span>
+<span class="source-line-no">929</span><span id="line-929"> this.startRow = startRow;</span>
+<span class="source-line-no">930</span><span id="line-930"> }</span>
+<span class="source-line-no">931</span><span id="line-931"></span>
+<span class="source-line-no">932</span><span id="line-932"> /**</span>
+<span class="source-line-no">933</span><span id="line-933"> * @param endRow end row</span>
+<span class="source-line-no">934</span><span id="line-934"> */</span>
+<span class="source-line-no">935</span><span id="line-935"> public void setEndRow(byte[] endRow) {</span>
+<span class="source-line-no">936</span><span id="line-936"> this.endRow = endRow;</span>
+<span class="source-line-no">937</span><span id="line-937"> }</span>
+<span class="source-line-no">938</span><span id="line-938"></span>
+<span class="source-line-no">939</span><span id="line-939"> /**</span>
+<span class="source-line-no">940</span><span id="line-940"> * @param columns list of columns of interest in column:qualifier format, or empty for all</span>
+<span class="source-line-no">941</span><span id="line-941"> */</span>
+<span class="source-line-no">942</span><span id="line-942"> public void setColumns(List<byte[]> columns) {</span>
+<span class="source-line-no">943</span><span id="line-943"> this.columns = columns;</span>
+<span class="source-line-no">944</span><span id="line-944"> }</span>
+<span class="source-line-no">945</span><span id="line-945"></span>
+<span class="source-line-no">946</span><span id="line-946"> /**</span>
+<span class="source-line-no">947</span><span id="line-947"> * @param batch the number of cells to return in batch</span>
+<span class="source-line-no">948</span><span id="line-948"> */</span>
+<span class="source-line-no">949</span><span id="line-949"> public void setBatch(int batch) {</span>
+<span class="source-line-no">950</span><span id="line-950"> this.batch = batch;</span>
+<span class="source-line-no">951</span><span id="line-951"> }</span>
+<span class="source-line-no">952</span><span id="line-952"></span>
+<span class="source-line-no">953</span><span id="line-953"> /**</span>
+<span class="source-line-no">954</span><span id="line-954"> * @param caching the number of rows to fetch at once</span>
+<span class="source-line-no">955</span><span id="line-955"> */</span>
+<span class="source-line-no">956</span><span id="line-956"> public void setCaching(int caching) {</span>
+<span class="source-line-no">957</span><span id="line-957"> this.caching = caching;</span>
+<span class="source-line-no">958</span><span id="line-958"> }</span>
+<span class="source-line-no">959</span><span id="line-959"></span>
+<span class="source-line-no">960</span><span id="line-960"> /**</span>
+<span class="source-line-no">961</span><span id="line-961"> * @param value true if HFile blocks should be cached on the servers for this scan, false</span>
+<span class="source-line-no">962</span><span id="line-962"> * otherwise</span>
+<span class="source-line-no">963</span><span id="line-963"> */</span>
+<span class="source-line-no">964</span><span id="line-964"> public void setCacheBlocks(boolean value) {</span>
+<span class="source-line-no">965</span><span id="line-965"> this.cacheBlocks = value;</span>
+<span class="source-line-no">966</span><span id="line-966"> }</span>
+<span class="source-line-no">967</span><span id="line-967"></span>
+<span class="source-line-no">968</span><span id="line-968"> /**</span>
+<span class="source-line-no">969</span><span id="line-969"> * @param limit the number of rows can fetch of each scanner at lifetime</span>
+<span class="source-line-no">970</span><span id="line-970"> */</span>
+<span class="source-line-no">971</span><span id="line-971"> public void setLimit(int limit) {</span>
+<span class="source-line-no">972</span><span id="line-972"> this.limit = limit;</span>
+<span class="source-line-no">973</span><span id="line-973"> }</span>
+<span class="source-line-no">974</span><span id="line-974"></span>
+<span class="source-line-no">975</span><span id="line-975"> /**</span>
+<span class="source-line-no">976</span><span id="line-976"> * @param maxVersions maximum number of versions to return</span>
+<span class="source-line-no">977</span><span id="line-977"> */</span>
+<span class="source-line-no">978</span><span id="line-978"> public void setMaxVersions(int maxVersions) {</span>
+<span class="source-line-no">979</span><span id="line-979"> this.maxVersions = maxVersions;</span>
+<span class="source-line-no">980</span><span id="line-980"> }</span>
+<span class="source-line-no">981</span><span id="line-981"></span>
+<span class="source-line-no">982</span><span id="line-982"> /**</span>
+<span class="source-line-no">983</span><span id="line-983"> * @param startTime the lower bound on timestamps of values of interest</span>
+<span class="source-line-no">984</span><span id="line-984"> */</span>
+<span class="source-line-no">985</span><span id="line-985"> public void setStartTime(long startTime) {</span>
+<span class="source-line-no">986</span><span id="line-986"> this.startTime = startTime;</span>
+<span class="source-line-no">987</span><span id="line-987"> }</span>
+<span class="source-line-no">988</span><span id="line-988"></span>
+<span class="source-line-no">989</span><span id="line-989"> /**</span>
+<span class="source-line-no">990</span><span id="line-990"> * @param endTime the upper bound on timestamps of values of interest</span>
+<span class="source-line-no">991</span><span id="line-991"> */</span>
+<span class="source-line-no">992</span><span id="line-992"> public void setEndTime(long endTime) {</span>
+<span class="source-line-no">993</span><span id="line-993"> this.endTime = endTime;</span>
+<span class="source-line-no">994</span><span id="line-994"> }</span>
+<span class="source-line-no">995</span><span id="line-995"></span>
+<span class="source-line-no">996</span><span id="line-996"> /**</span>
+<span class="source-line-no">997</span><span id="line-997"> * @param filter the filter specification</span>
+<span class="source-line-no">998</span><span id="line-998"> */</span>
+<span class="source-line-no">999</span><span id="line-999"> public void setFilter(String filter) {</span>
+<span class="source-line-no">1000</span><span id="line-1000"> this.filter = filter;</span>
+<span class="source-line-no">1001</span><span id="line-1001"> }</span>
+<span class="source-line-no">1002</span><span id="line-1002"></span>
+<span class="source-line-no">1003</span><span id="line-1003"> @Override</span>
+<span class="source-line-no">1004</span><span id="line-1004"> public Message messageFromObject() {</span>
+<span class="source-line-no">1005</span><span id="line-1005"> Scanner.Builder builder = Scanner.newBuilder();</span>
+<span class="source-line-no">1006</span><span id="line-1006"> if (!Bytes.equals(startRow, HConstants.EMPTY_START_ROW)) {</span>
+<span class="source-line-no">1007</span><span id="line-1007"> builder.setStartRow(UnsafeByteOperations.unsafeWrap(startRow));</span>
+<span class="source-line-no">1008</span><span id="line-1008"> }</span>
+<span class="source-line-no">1009</span><span id="line-1009"> if (!Bytes.equals(endRow, HConstants.EMPTY_START_ROW)) {</span>
+<span class="source-line-no">1010</span><span id="line-1010"> builder.setEndRow(UnsafeByteOperations.unsafeWrap(endRow));</span>
+<span class="source-line-no">1011</span><span id="line-1011"> }</span>
+<span class="source-line-no">1012</span><span id="line-1012"> for (byte[] column : columns) {</span>
+<span class="source-line-no">1013</span><span id="line-1013"> builder.addColumns(UnsafeByteOperations.unsafeWrap(column));</span>
+<span class="source-line-no">1014</span><span id="line-1014"> }</span>
+<span class="source-line-no">1015</span><span id="line-1015"> if (startTime != 0) {</span>
+<span class="source-line-no">1016</span><span id="line-1016"> builder.setStartTime(startTime);</span>
+<span class="source-line-no">1017</span><span id="line-1017"> }</span>
+<span class="source-line-no">1018</span><span id="line-1018"> if (endTime != 0) {</span>
+<span class="source-line-no">1019</span><span id="line-1019"> builder.setEndTime(endTime);</span>
+<span class="source-line-no">1020</span><span id="line-1020"> }</span>
+<span class="source-line-no">1021</span><span id="line-1021"> builder.setBatch(getBatch());</span>
+<span class="source-line-no">1022</span><span id="line-1022"> if (caching > 0) {</span>
+<span class="source-line-no">1023</span><span id="line-1023"> builder.setCaching(caching);</span>
+<span class="source-line-no">1024</span><span id="line-1024"> }</span>
+<span class="source-line-no">1025</span><span id="line-1025"> if (limit > 0) {</span>
+<span class="source-line-no">1026</span><span id="line-1026"> builder.setLimit(limit);</span>
+<span class="source-line-no">1027</span><span id="line-1027"> }</span>
+<span class="source-line-no">1028</span><span id="line-1028"> builder.setMaxVersions(maxVersions);</span>
+<span class="source-line-no">1029</span><span id="line-1029"> if (filter != null) {</span>
+<span class="source-line-no">1030</span><span id="line-1030"> builder.setFilter(filter);</span>
+<span class="source-line-no">1031</span><span id="line-1031"> }</span>
+<span class="source-line-no">1032</span><span id="line-1032"> if (labels != null && labels.size() > 0) {</span>
+<span class="source-line-no">1033</span><span id="line-1033"> for (String label : labels)</span>
+<span class="source-line-no">1034</span><span id="line-1034"> builder.addLabels(label);</span>
+<span class="source-line-no">1035</span><span id="line-1035"> }</span>
+<span class="source-line-no">1036</span><span id="line-1036"> builder.setCacheBlocks(cacheBlocks);</span>
+<span class="source-line-no">1037</span><span id="line-1037"> builder.setIncludeStartRow(includeStartRow);</span>
+<span class="source-line-no">1038</span><span id="line-1038"> builder.setIncludeStopRow(includeStopRow);</span>
+<span class="source-line-no">1039</span><span id="line-1039"> return builder.build();</span>
+<span class="source-line-no">1040</span><span id="line-1040"> }</span>
+<span class="source-line-no">1041</span><span id="line-1041"></span>
+<span class="source-line-no">1042</span><span id="line-1042"> @Override</span>
+<span class="source-line-no">1043</span><span id="line-1043"> public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws IOException {</span>
+<span class="source-line-no">1044</span><span id="line-1044"> Scanner.Builder builder = Scanner.newBuilder();</span>
+<span class="source-line-no">1045</span><span id="line-1045"> RestUtil.mergeFrom(builder, cis);</span>
+<span class="source-line-no">1046</span><span id="line-1046"> if (builder.hasStartRow()) {</span>
+<span class="source-line-no">1047</span><span id="line-1047"> startRow = builder.getStartRow().toByteArray();</span>
+<span class="source-line-no">1048</span><span id="line-1048"> }</span>
+<span class="source-line-no">1049</span><span id="line-1049"> if (builder.hasEndRow()) {</span>
+<span class="source-line-no">1050</span><span id="line-1050"> endRow = builder.getEndRow().toByteArray();</span>
+<span class="source-line-no">1051</span><span id="line-1051"> }</span>
+<span class="source-line-no">1052</span><span id="line-1052"> for (ByteString column : builder.getColumnsList()) {</span>
+<span class="source-line-no">1053</span><span id="line-1053"> addColumn(column.toByteArray());</span>
+<span class="source-line-no">1054</span><span id="line-1054"> }</span>
+<span class="source-line-no">1055</span><span id="line-1055"> if (builder.hasBatch()) {</span>
+<span class="source-line-no">1056</span><span id="line-1056"> batch = builder.getBatch();</span>
+<span class="source-line-no">1057</span><span id="line-1057"> }</span>
+<span class="source-line-no">1058</span><span id="line-1058"> if (builder.hasCaching()) {</span>
+<span class="source-line-no">1059</span><span id="line-1059"> caching = builder.getCaching();</span>
+<span class="source-line-no">1060</span><span id="line-1060"> }</span>
+<span class="source-line-no">1061</span><span id="line-1061"> if (builder.hasLimit()) {</span>
+<span class="source-line-no">1062</span><span id="line-1062"> limit = builder.getLimit();</span>
+<span class="source-line-no">1063</span><span id="line-1063"> }</span>
+<span class="source-line-no">1064</span><span id="line-1064"> if (builder.hasStartTime()) {</span>
+<span class="source-line-no">1065</span><span id="line-1065"> startTime = builder.getStartTime();</span>
+<span class="source-line-no">1066</span><span id="line-1066"> }</span>
+<span class="source-line-no">1067</span><span id="line-1067"> if (builder.hasEndTime()) {</span>
+<span class="source-line-no">1068</span><span id="line-1068"> endTime = builder.getEndTime();</span>
+<span class="source-line-no">1069</span><span id="line-1069"> }</span>
+<span class="source-line-no">1070</span><span id="line-1070"> if (builder.hasMaxVersions()) {</span>
+<span class="source-line-no">1071</span><span id="line-1071"> maxVersions = builder.getMaxVersions();</span>
+<span class="source-line-no">1072</span><span id="line-1072"> }</span>
+<span class="source-line-no">1073</span><span id="line-1073"> if (builder.hasFilter()) {</span>
+<span class="source-line-no">1074</span><span id="line-1074"> filter = builder.getFilter();</span>
+<span class="source-line-no">1075</span><span id="line-1075"> }</span>
+<span class="source-line-no">1076</span><span id="line-1076"> if (builder.getLabelsList() != null) {</span>
+<span class="source-line-no">1077</span><span id="line-1077"> List<String> labels = builder.getLabelsList();</span>
+<span class="source-line-no">1078</span><span id="line-1078"> for (String label : labels) {</span>
+<span class="source-line-no">1079</span><span id="line-1079"> addLabel(label);</span>
+<span class="source-line-no">1080</span><span id="line-1080"> }</span>
+<span class="source-line-no">1081</span><span id="line-1081"> }</span>
+<span class="source-line-no">1082</span><span id="line-1082"> if (builder.hasCacheBlocks()) {</span>
+<span class="source-line-no">1083</span><span id="line-1083"> this.cacheBlocks = builder.getCacheBlocks();</span>
+<span class="source-line-no">1084</span><span id="line-1084"> }</span>
+<span class="source-line-no">1085</span><span id="line-1085"> if (builder.hasIncludeStartRow()) {</span>
+<span class="source-line-no">1086</span><span id="line-1086"> this.includeStartRow = builder.getIncludeStartRow();</span>
+<span class="source-line-no">1087</span><span id="line-1087"> }</span>
+<span class="source-line-no">1088</span><span id="line-1088"> if (builder.hasIncludeStopRow()) {</span>
+<span class="source-line-no">1089</span><span id="line-1089"> this.includeStopRow = builder.getIncludeStopRow();</span>
+<span class="source-line-no">1090</span><span id="line-1090"> }</span>
+<span class="source-line-no">1091</span><span id="line-1091"> return this;</span>
+<span class="source-line-no">1092</span><span id="line-1092"> }</span>
+<span class="source-line-no">1093</span><span id="line-1093"></span>
+<span class="source-line-no">1094</span><span id="line-1094">}</span>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html
index 43531cdce2a..e259d02dbf6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FuzzyKeyModel.html
@@ -159,951 +159,952 @@
<span class="source-line-no">146</span><span id="line-146"> }</span>
<span class="source-line-no">147</span><span id="line-147"></span>
<span class="source-line-no">148</span><span id="line-148"> @edu.umd.cs.findbugs.annotations.SuppressWarnings(</span>
-<span class="source-line-no">149</span><span id="line-149"> value = { "EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS", "HE_EQUALS_NO_HASHCODE" },</span>
-<span class="source-line-no">150</span><span id="line-150"> justification = "1.The supplied value from the JSON Value Filter is of Type Boolean, hence supressing the check, 2.hashCode method will not be invoked, hence supressing the check")</span>
-<span class="source-line-no">151</span><span id="line-151"> private static class IncludeStartRowFilter {</span>
-<span class="source-line-no">152</span><span id="line-152"> @Override</span>
-<span class="source-line-no">153</span><span id="line-153"> public boolean equals(Object value) {</span>
-<span class="source-line-no">154</span><span id="line-154"> return Boolean.TRUE.equals(value);</span>
-<span class="source-line-no">155</span><span id="line-155"> }</span>
-<span class="source-line-no">156</span><span id="line-156"> }</span>
-<span class="source-line-no">157</span><span id="line-157"></span>
-<span class="source-line-no">158</span><span id="line-158"> /**</span>
-<span class="source-line-no">159</span><span id="line-159"> * Implement lazily-instantiated singleton as per recipe here:</span>
-<span class="source-line-no">160</span><span id="line-160"> * http://literatejava.com/jvm/fastest-threadsafe-singleton-jvm/</span>
-<span class="source-line-no">161</span><span id="line-161"> */</span>
-<span class="source-line-no">162</span><span id="line-162"> private static class JaxbJsonProviderHolder {</span>
-<span class="source-line-no">163</span><span id="line-163"> static final JacksonJaxbJsonProvider INSTANCE = new JacksonJaxbJsonProvider();</span>
-<span class="source-line-no">164</span><span id="line-164"> }</span>
-<span class="source-line-no">165</span><span id="line-165"></span>
-<span class="source-line-no">166</span><span id="line-166"> @XmlRootElement</span>
-<span class="source-line-no">167</span><span id="line-167"> static class FilterModel {</span>
-<span class="source-line-no">168</span><span id="line-168"></span>
-<span class="source-line-no">169</span><span id="line-169"> @XmlRootElement</span>
-<span class="source-line-no">170</span><span id="line-170"> static class ByteArrayComparableModel {</span>
-<span class="source-line-no">171</span><span id="line-171"> @XmlAttribute</span>
-<span class="source-line-no">172</span><span id="line-172"> public String type;</span>
-<span class="source-line-no">173</span><span id="line-173"> @XmlAttribute</span>
-<span class="source-line-no">174</span><span id="line-174"> public String value;</span>
-<span class="source-line-no">175</span><span id="line-175"> @XmlAttribute</span>
-<span class="source-line-no">176</span><span id="line-176"> public String op;</span>
-<span class="source-line-no">177</span><span id="line-177"></span>
-<span class="source-line-no">178</span><span id="line-178"> static enum ComparatorType {</span>
-<span class="source-line-no">179</span><span id="line-179"> BinaryComparator,</span>
-<span class="source-line-no">180</span><span id="line-180"> BinaryPrefixComparator,</span>
-<span class="source-line-no">181</span><span id="line-181"> BitComparator,</span>
-<span class="source-line-no">182</span><span id="line-182"> NullComparator,</span>
-<span class="source-line-no">183</span><span id="line-183"> RegexStringComparator,</span>
-<span class="source-line-no">184</span><span id="line-184"> SubstringComparator</span>
-<span class="source-line-no">185</span><span id="line-185"> }</span>
-<span class="source-line-no">186</span><span id="line-186"></span>
-<span class="source-line-no">187</span><span id="line-187"> public ByteArrayComparableModel() {</span>
-<span class="source-line-no">188</span><span id="line-188"> }</span>
-<span class="source-line-no">189</span><span id="line-189"></span>
-<span class="source-line-no">190</span><span id="line-190"> public ByteArrayComparableModel(ByteArrayComparable comparator) {</span>
-<span class="source-line-no">191</span><span id="line-191"> String typeName = comparator.getClass().getSimpleName();</span>
-<span class="source-line-no">192</span><span id="line-192"> ComparatorType type = ComparatorType.valueOf(typeName);</span>
-<span class="source-line-no">193</span><span id="line-193"> this.type = typeName;</span>
-<span class="source-line-no">194</span><span id="line-194"> switch (type) {</span>
-<span class="source-line-no">195</span><span id="line-195"> case BinaryComparator:</span>
-<span class="source-line-no">196</span><span id="line-196"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">197</span><span id="line-197"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">198</span><span id="line-198"> break;</span>
-<span class="source-line-no">199</span><span id="line-199"> case BitComparator:</span>
-<span class="source-line-no">200</span><span id="line-200"> this.value = Bytes.toString(Base64.getEncoder().encode(comparator.getValue()));</span>
-<span class="source-line-no">201</span><span id="line-201"> this.op = ((BitComparator) comparator).getOperator().toString();</span>
-<span class="source-line-no">202</span><span id="line-202"> break;</span>
-<span class="source-line-no">203</span><span id="line-203"> case NullComparator:</span>
-<span class="source-line-no">204</span><span id="line-204"> break;</span>
-<span class="source-line-no">205</span><span id="line-205"> case RegexStringComparator:</span>
-<span class="source-line-no">206</span><span id="line-206"> case SubstringComparator:</span>
-<span class="source-line-no">207</span><span id="line-207"> this.value = Bytes.toString(comparator.getValue());</span>
-<span class="source-line-no">208</span><span id="line-208"> break;</span>
-<span class="source-line-no">209</span><span id="line-209"> default:</span>
-<span class="source-line-no">210</span><span id="line-210"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">211</span><span id="line-211"> }</span>
-<span class="source-line-no">212</span><span id="line-212"> }</span>
-<span class="source-line-no">213</span><span id="line-213"></span>
-<span class="source-line-no">214</span><span id="line-214"> public ByteArrayComparable build() {</span>
-<span class="source-line-no">215</span><span id="line-215"> ByteArrayComparable comparator;</span>
-<span class="source-line-no">216</span><span id="line-216"> switch (ComparatorType.valueOf(type)) {</span>
-<span class="source-line-no">217</span><span id="line-217"> case BinaryComparator:</span>
-<span class="source-line-no">218</span><span id="line-218"> comparator = new BinaryComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">219</span><span id="line-219"> break;</span>
-<span class="source-line-no">220</span><span id="line-220"> case BinaryPrefixComparator:</span>
-<span class="source-line-no">221</span><span id="line-221"> comparator = new BinaryPrefixComparator(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">222</span><span id="line-222"> break;</span>
-<span class="source-line-no">223</span><span id="line-223"> case BitComparator:</span>
-<span class="source-line-no">224</span><span id="line-224"> comparator = new BitComparator(Base64.getDecoder().decode(value),</span>
-<span class="source-line-no">225</span><span id="line-225"> BitComparator.BitwiseOp.valueOf(op));</span>
-<span class="source-line-no">226</span><span id="line-226"> break;</span>
-<span class="source-line-no">227</span><span id="line-227"> case NullComparator:</span>
-<span class="source-line-no">228</span><span id="line-228"> comparator = new NullComparator();</span>
-<span class="source-line-no">229</span><span id="line-229"> break;</span>
-<span class="source-line-no">230</span><span id="line-230"> case RegexStringComparator:</span>
-<span class="source-line-no">231</span><span id="line-231"> comparator = new RegexStringComparator(value);</span>
-<span class="source-line-no">232</span><span id="line-232"> break;</span>
-<span class="source-line-no">233</span><span id="line-233"> case SubstringComparator:</span>
-<span class="source-line-no">234</span><span id="line-234"> comparator = new SubstringComparator(value);</span>
-<span class="source-line-no">235</span><span id="line-235"> break;</span>
-<span class="source-line-no">236</span><span id="line-236"> default:</span>
-<span class="source-line-no">237</span><span id="line-237"> throw new RuntimeException("unhandled comparator type: " + type);</span>
-<span class="source-line-no">238</span><span id="line-238"> }</span>
-<span class="source-line-no">239</span><span id="line-239"> return comparator;</span>
-<span class="source-line-no">240</span><span id="line-240"> }</span>
-<span class="source-line-no">241</span><span id="line-241"></span>
-<span class="source-line-no">242</span><span id="line-242"> }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244"> /**</span>
-<span class="source-line-no">245</span><span id="line-245"> * This DTO omits the pseudo-getters in MultiRowRangeFilter.RowRange which break Jackson</span>
-<span class="source-line-no">246</span><span id="line-246"> * deserialization. It also avoids adding those as dummy JSON elements.</span>
-<span class="source-line-no">247</span><span id="line-247"> */</span>
-<span class="source-line-no">248</span><span id="line-248"> static class RowRangeModel {</span>
-<span class="source-line-no">249</span><span id="line-249"></span>
-<span class="source-line-no">250</span><span id="line-250"> protected byte[] startRow;</span>
-<span class="source-line-no">251</span><span id="line-251"></span>
-<span class="source-line-no">252</span><span id="line-252"> protected boolean startRowInclusive = true;</span>
-<span class="source-line-no">253</span><span id="line-253"></span>
-<span class="source-line-no">254</span><span id="line-254"> protected byte[] stopRow;</span>
-<span class="source-line-no">255</span><span id="line-255"></span>
-<span class="source-line-no">256</span><span id="line-256"> protected boolean stopRowInclusive = false;</span>
-<span class="source-line-no">257</span><span id="line-257"></span>
-<span class="source-line-no">258</span><span id="line-258"> public RowRangeModel() {</span>
-<span class="source-line-no">259</span><span id="line-259"> }</span>
-<span class="source-line-no">260</span><span id="line-260"></span>
-<span class="source-line-no">261</span><span id="line-261"> public RowRangeModel(MultiRowRangeFilter.RowRange rr) {</span>
-<span class="source-line-no">262</span><span id="line-262"> this.startRow = rr.getStartRow();</span>
-<span class="source-line-no">263</span><span id="line-263"> this.startRowInclusive = rr.isStartRowInclusive();</span>
-<span class="source-line-no">264</span><span id="line-264"> this.stopRow = rr.getStopRow();</span>
-<span class="source-line-no">265</span><span id="line-265"> this.stopRowInclusive = rr.isStopRowInclusive();</span>
-<span class="source-line-no">266</span><span id="line-266"> }</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268"> public MultiRowRangeFilter.RowRange build() {</span>
-<span class="source-line-no">269</span><span id="line-269"> return new MultiRowRangeFilter.RowRange(startRow, startRowInclusive, stopRow,</span>
-<span class="source-line-no">270</span><span id="line-270"> stopRowInclusive);</span>
-<span class="source-line-no">271</span><span id="line-271"> }</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273"> public byte[] getStartRow() {</span>
-<span class="source-line-no">274</span><span id="line-274"> return startRow;</span>
-<span class="source-line-no">275</span><span id="line-275"> }</span>
-<span class="source-line-no">276</span><span id="line-276"></span>
-<span class="source-line-no">277</span><span id="line-277"> public byte[] getStopRow() {</span>
-<span class="source-line-no">278</span><span id="line-278"> return stopRow;</span>
-<span class="source-line-no">279</span><span id="line-279"> }</span>
-<span class="source-line-no">280</span><span id="line-280"></span>
-<span class="source-line-no">281</span><span id="line-281"> /** Returns if start row is inclusive. */</span>
-<span class="source-line-no">282</span><span id="line-282"> public boolean isStartRowInclusive() {</span>
-<span class="source-line-no">283</span><span id="line-283"> return startRowInclusive;</span>
-<span class="source-line-no">284</span><span id="line-284"> }</span>
-<span class="source-line-no">285</span><span id="line-285"></span>
-<span class="source-line-no">286</span><span id="line-286"> /** Returns if stop row is inclusive. */</span>
-<span class="source-line-no">287</span><span id="line-287"> public boolean isStopRowInclusive() {</span>
-<span class="source-line-no">288</span><span id="line-288"> return stopRowInclusive;</span>
-<span class="source-line-no">289</span><span id="line-289"> }</span>
-<span class="source-line-no">290</span><span id="line-290"></span>
-<span class="source-line-no">291</span><span id="line-291"> @Override</span>
-<span class="source-line-no">292</span><span id="line-292"> public int hashCode() {</span>
-<span class="source-line-no">293</span><span id="line-293"> final int prime = 31;</span>
-<span class="source-line-no">294</span><span id="line-294"> int result = 1;</span>
-<span class="source-line-no">295</span><span id="line-295"> result = prime * result + Arrays.hashCode(startRow);</span>
-<span class="source-line-no">296</span><span id="line-296"> result = prime * result + Arrays.hashCode(stopRow);</span>
-<span class="source-line-no">297</span><span id="line-297"> result = prime * result + Objects.hash(startRowInclusive, stopRowInclusive);</span>
-<span class="source-line-no">298</span><span id="line-298"> return result;</span>
-<span class="source-line-no">299</span><span id="line-299"> }</span>
-<span class="source-line-no">300</span><span id="line-300"></span>
-<span class="source-line-no">301</span><span id="line-301"> @Override</span>
-<span class="source-line-no">302</span><span id="line-302"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">303</span><span id="line-303"> if (this == obj) {</span>
-<span class="source-line-no">304</span><span id="line-304"> return true;</span>
-<span class="source-line-no">305</span><span id="line-305"> }</span>
-<span class="source-line-no">306</span><span id="line-306"> if (!(obj instanceof RowRangeModel)) {</span>
-<span class="source-line-no">307</span><span id="line-307"> return false;</span>
-<span class="source-line-no">308</span><span id="line-308"> }</span>
-<span class="source-line-no">309</span><span id="line-309"> RowRangeModel other = (RowRangeModel) obj;</span>
-<span class="source-line-no">310</span><span id="line-310"> return Arrays.equals(startRow, other.startRow)</span>
-<span class="source-line-no">311</span><span id="line-311"> && startRowInclusive == other.startRowInclusive && Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312"> && stopRowInclusive == other.stopRowInclusive;</span>
-<span class="source-line-no">313</span><span id="line-313"> }</span>
-<span class="source-line-no">314</span><span id="line-314"></span>
-<span class="source-line-no">315</span><span id="line-315"> }</span>
-<span class="source-line-no">316</span><span id="line-316"></span>
-<span class="source-line-no">317</span><span id="line-317"> static class FuzzyKeyModel {</span>
-<span class="source-line-no">318</span><span id="line-318"></span>
-<span class="source-line-no">319</span><span id="line-319"> protected byte[] key;</span>
-<span class="source-line-no">320</span><span id="line-320"></span>
-<span class="source-line-no">321</span><span id="line-321"> protected byte[] mask;</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323"> public FuzzyKeyModel() {</span>
-<span class="source-line-no">324</span><span id="line-324"> }</span>
-<span class="source-line-no">325</span><span id="line-325"></span>
-<span class="source-line-no">326</span><span id="line-326"> public FuzzyKeyModel(Pair<byte[], byte[]> keyWithMask) {</span>
-<span class="source-line-no">327</span><span id="line-327"> this.key = keyWithMask.getFirst();</span>
-<span class="source-line-no">328</span><span id="line-328"> this.mask = keyWithMask.getSecond();</span>
-<span class="source-line-no">329</span><span id="line-329"> }</span>
-<span class="source-line-no">330</span><span id="line-330"></span>
-<span class="source-line-no">331</span><span id="line-331"> public Pair<byte[], byte[]> build() {</span>
-<span class="source-line-no">332</span><span id="line-332"> return new Pair<>(key, mask);</span>
-<span class="source-line-no">333</span><span id="line-333"> }</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335"> public byte[] getKey() {</span>
-<span class="source-line-no">336</span><span id="line-336"> return key;</span>
-<span class="source-line-no">337</span><span id="line-337"> }</span>
-<span class="source-line-no">338</span><span id="line-338"></span>
-<span class="source-line-no">339</span><span id="line-339"> public void setKey(byte[] key) {</span>
-<span class="source-line-no">340</span><span id="line-340"> this.key = key;</span>
-<span class="source-line-no">341</span><span id="line-341"> }</span>
-<span class="source-line-no">342</span><span id="line-342"></span>
-<span class="source-line-no">343</span><span id="line-343"> public byte[] getMask() {</span>
-<span class="source-line-no">344</span><span id="line-344"> return mask;</span>
-<span class="source-line-no">345</span><span id="line-345"> }</span>
-<span class="source-line-no">346</span><span id="line-346"></span>
-<span class="source-line-no">347</span><span id="line-347"> public void setMask(byte[] mask) {</span>
-<span class="source-line-no">348</span><span id="line-348"> this.mask = mask;</span>
-<span class="source-line-no">349</span><span id="line-349"> }</span>
-<span class="source-line-no">350</span><span id="line-350"></span>
-<span class="source-line-no">351</span><span id="line-351"> @Override</span>
-<span class="source-line-no">352</span><span id="line-352"> public int hashCode() {</span>
-<span class="source-line-no">353</span><span id="line-353"> final int prime = 31;</span>
-<span class="source-line-no">354</span><span id="line-354"> int result = 1;</span>
-<span class="source-line-no">355</span><span id="line-355"> result = prime * result + Arrays.hashCode(key);</span>
-<span class="source-line-no">356</span><span id="line-356"> result = prime * result + Arrays.hashCode(mask);</span>
-<span class="source-line-no">357</span><span id="line-357"> return result;</span>
-<span class="source-line-no">358</span><span id="line-358"> }</span>
-<span class="source-line-no">359</span><span id="line-359"></span>
-<span class="source-line-no">360</span><span id="line-360"> @Override</span>
-<span class="source-line-no">361</span><span id="line-361"> public boolean equals(Object obj) {</span>
-<span class="source-line-no">362</span><span id="line-362"> if (this == obj) {</span>
-<span class="source-line-no">363</span><span id="line-363"> return true;</span>
-<span class="source-line-no">364</span><span id="line-364"> }</span>
-<span class="source-line-no">365</span><span id="line-365"> if (!(obj instanceof FuzzyKeyModel)) {</span>
-<span class="source-line-no">366</span><span id="line-366"> return false;</span>
-<span class="source-line-no">367</span><span id="line-367"> }</span>
-<span class="source-line-no">368</span><span id="line-368"> FuzzyKeyModel other = (FuzzyKeyModel) obj;</span>
-<span class="source-line-no">369</span><span id="line-369"> return Arrays.equals(key, other.key) && Arrays.equals(mask, other.mask);</span>
-<span class="source-line-no">370</span><span id="line-370"> }</span>
-<span class="source-line-no">371</span><span id="line-371"></span>
-<span class="source-line-no">372</span><span id="line-372"> }</span>
-<span class="source-line-no">373</span><span id="line-373"></span>
-<span class="source-line-no">374</span><span id="line-374"> // A grab bag of fields, would have been a union if this were C.</span>
-<span class="source-line-no">375</span><span id="line-375"> // These are null by default and will only be serialized if set (non null).</span>
-<span class="source-line-no">376</span><span id="line-376"> @XmlAttribute</span>
-<span class="source-line-no">377</span><span id="line-377"> public String type;</span>
-<span class="source-line-no">378</span><span id="line-378"> @XmlAttribute</span>
-<span class="source-line-no">379</span><span id="line-379"> public String op;</span>
-<span class="source-line-no">380</span><span id="line-380"> @XmlElement</span>
-<span class="source-line-no">381</span><span id="line-381"> ByteArrayComparableModel comparator;</span>
-<span class="source-line-no">382</span><span id="line-382"> @XmlAttribute</span>
-<span class="source-line-no">383</span><span id="line-383"> public String value;</span>
-<span class="source-line-no">384</span><span id="line-384"> @XmlElement</span>
-<span class="source-line-no">385</span><span id="line-385"> public List<FilterModel> filters;</span>
-<span class="source-line-no">386</span><span id="line-386"> @XmlAttribute</span>
-<span class="source-line-no">387</span><span id="line-387"> public Integer limit;</span>
-<span class="source-line-no">388</span><span id="line-388"> @XmlAttribute</span>
-<span class="source-line-no">389</span><span id="line-389"> public Integer offset;</span>
-<span class="source-line-no">390</span><span id="line-390"> @XmlAttribute</span>
-<span class="source-line-no">391</span><span id="line-391"> public String family;</span>
-<span class="source-line-no">392</span><span id="line-392"> @XmlAttribute</span>
-<span class="source-line-no">393</span><span id="line-393"> public String qualifier;</span>
-<span class="source-line-no">394</span><span id="line-394"> @XmlAttribute</span>
-<span class="source-line-no">395</span><span id="line-395"> public Boolean ifMissing;</span>
-<span class="source-line-no">396</span><span id="line-396"> @XmlAttribute</span>
-<span class="source-line-no">397</span><span id="line-397"> public Boolean latestVersion;</span>
-<span class="source-line-no">398</span><span id="line-398"> @XmlAttribute</span>
-<span class="source-line-no">399</span><span id="line-399"> public String minColumn;</span>
-<span class="source-line-no">400</span><span id="line-400"> @XmlAttribute</span>
-<span class="source-line-no">401</span><span id="line-401"> public Boolean minColumnInclusive;</span>
-<span class="source-line-no">402</span><span id="line-402"> @XmlAttribute</span>
-<span class="source-line-no">403</span><span id="line-403"> public String maxColumn;</span>
-<span class="source-line-no">404</span><span id="line-404"> @XmlAttribute</span>
-<span class="source-line-no">405</span><span id="line-405"> public Boolean maxColumnInclusive;</span>
-<span class="source-line-no">406</span><span id="line-406"> @XmlAttribute</span>
-<span class="source-line-no">407</span><span id="line-407"> public Boolean dropDependentColumn;</span>
-<span class="source-line-no">408</span><span id="line-408"> @XmlAttribute</span>
-<span class="source-line-no">409</span><span id="line-409"> public Float chance;</span>
-<span class="source-line-no">410</span><span id="line-410"> @XmlElement</span>
-<span class="source-line-no">411</span><span id="line-411"> public List<String> prefixes;</span>
-<span class="source-line-no">412</span><span id="line-412"> @XmlElement</span>
-<span class="source-line-no">413</span><span id="line-413"> private List<RowRangeModel> ranges;</span>
-<span class="source-line-no">414</span><span id="line-414"> @XmlElement</span>
-<span class="source-line-no">415</span><span id="line-415"> public List<Long> timestamps;</span>
-<span class="source-line-no">416</span><span id="line-416"> @XmlElement</span>
-<span class="source-line-no">417</span><span id="line-417"> private List<FuzzyKeyModel> fuzzyKeys;</span>
-<span class="source-line-no">418</span><span id="line-418"></span>
-<span class="source-line-no">419</span><span id="line-419"> static enum FilterType {</span>
-<span class="source-line-no">420</span><span id="line-420"> ColumnCountGetFilter,</span>
-<span class="source-line-no">421</span><span id="line-421"> ColumnPaginationFilter,</span>
-<span class="source-line-no">422</span><span id="line-422"> ColumnPrefixFilter,</span>
-<span class="source-line-no">423</span><span id="line-423"> ColumnRangeFilter,</span>
-<span class="source-line-no">424</span><span id="line-424"> DependentColumnFilter,</span>
-<span class="source-line-no">425</span><span id="line-425"> FamilyFilter,</span>
-<span class="source-line-no">426</span><span id="line-426"> FilterList,</span>
-<span class="source-line-no">427</span><span id="line-427"> FirstKeyOnlyFilter,</span>
-<span class="source-line-no">428</span><span id="line-428"> InclusiveStopFilter,</span>
-<span class="source-line-no">429</span><span id="line-429"> KeyOnlyFilter,</span>
-<span class="source-line-no">430</span><span id="line-430"> MultipleColumnPrefixFilter,</span>
-<span class="source-line-no">431</span><span id="line-431"> MultiRowRangeFilter,</span>
-<span class="source-line-no">432</span><span id="line-432"> PageFilter,</span>
-<span class="source-line-no">433</span><span id="line-433"> PrefixFilter,</span>
-<span class="source-line-no">434</span><span id="line-434"> QualifierFilter,</span>
-<span class="source-line-no">435</span><span id="line-435"> RandomRowFilter,</span>
-<span class="source-line-no">436</span><span id="line-436"> RowFilter,</span>
-<span class="source-line-no">437</span><span id="line-437"> SingleColumnValueExcludeFilter,</span>
-<span class="source-line-no">438</span><span id="line-438"> SingleColumnValueFilter,</span>
-<span class="source-line-no">439</span><span id="line-439"> SkipFilter,</span>
-<span class="source-line-no">440</span><span id="line-440"> TimestampsFilter,</span>
-<span class="source-line-no">441</span><span id="line-441"> ValueFilter,</span>
-<span class="source-line-no">442</span><span id="line-442"> WhileMatchFilter,</span>
-<span class="source-line-no">443</span><span id="line-443"> FuzzyRowFilter</span>
-<span class="source-line-no">444</span><span id="line-444"> }</span>
-<span class="source-line-no">445</span><span id="line-445"></span>
-<span class="source-line-no">446</span><span id="line-446"> public FilterModel() {</span>
-<span class="source-line-no">447</span><span id="line-447"> }</span>
-<span class="source-line-no">448</span><span id="line-448"></span>
-<span class="source-line-no">449</span><span id="line-449"> public FilterModel(Filter filter) {</span>
-<span class="source-line-no">450</span><span id="line-450"> String typeName = filter.getClass().getSimpleName();</span>
-<span class="source-line-no">451</span><span id="line-451"> FilterType type = FilterType.valueOf(typeName);</span>
-<span class="source-line-no">452</span><span id="line-452"> this.type = typeName;</span>
-<span class="source-line-no">453</span><span id="line-453"> switch (type) {</span>
-<span class="source-line-no">454</span><span id="line-454"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">455</span><span id="line-455"> this.limit = ((ColumnCountGetFilter) filter).getLimit();</span>
-<span class="source-line-no">456</span><span id="line-456"> break;</span>
-<span class="source-line-no">457</span><span id="line-457"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">458</span><span id="line-458"> this.limit = ((ColumnPaginationFilter) filter).getLimit();</span>
-<span class="source-line-no">459</span><span id="line-459"> this.offset = ((ColumnPaginationFilter) filter).getOffset();</span>
-<span class="source-line-no">460</span><span id="line-460"> break;</span>
-<span class="source-line-no">461</span><span id="line-461"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">462</span><span id="line-462"> byte[] src = ((ColumnPrefixFilter) filter).getPrefix();</span>
-<span class="source-line-no">463</span><span id="line-463"> this.value = Bytes.toString(Base64.getEncoder().encode(src));</span>
-<span class="source-line-no">464</span><span id="line-464"> break;</span>
-<span class="source-line-no">465</span><span id="line-465"> case ColumnRangeFilter:</span>
-<span class="source-line-no">466</span><span id="line-466"> ColumnRangeFilter crf = (ColumnRangeFilter) filter;</span>
-<span class="source-line-no">467</span><span id="line-467"> this.minColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMinColumn()));</span>
-<span class="source-line-no">468</span><span id="line-468"> this.minColumnInclusive = crf.getMinColumnInclusive();</span>
-<span class="source-line-no">469</span><span id="line-469"> this.maxColumn = Bytes.toString(Base64.getEncoder().encode(crf.getMaxColumn()));</span>
-<span class="source-line-no">470</span><span id="line-470"> this.maxColumnInclusive = crf.getMaxColumnInclusive();</span>
-<span class="source-line-no">471</span><span id="line-471"> break;</span>
-<span class="source-line-no">472</span><span id="line-472"> case DependentColumnFilter: {</span>
-<span class="source-line-no">473</span><span id="line-473"> DependentColumnFilter dcf = (DependentColumnFilter) filter;</span>
-<span class="source-line-no">474</span><span id="line-474"> this.family = Bytes.toString(Base64.getEncoder().encode(dcf.getFamily()));</span>
-<span class="source-line-no">475</span><span id="line-475"> byte[] qualifier = dcf.getQualifier();</span>
-<span class="source-line-no">476</span><span id="line-476"> if (qualifier != null) {</span>
-<span class="source-line-no">477</span><span id="line-477"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">478</span><span id="line-478"> }</span>
-<span class="source-line-no">479</span><span id="line-479"> this.op = dcf.getCompareOperator().toString();</span>
-<span class="source-line-no">480</span><span id="line-480"> this.comparator = new ByteArrayComparableModel(dcf.getComparator());</span>
-<span class="source-line-no">481</span><span id="line-481"> this.dropDependentColumn = dcf.dropDependentColumn();</span>
-<span class="source-line-no">482</span><span id="line-482"> }</span>
-<span class="source-line-no">483</span><span id="line-483"> break;</span>
-<span class="source-line-no">484</span><span id="line-484"> case FilterList:</span>
-<span class="source-line-no">485</span><span id="line-485"> this.op = ((FilterList) filter).getOperator().toString();</span>
-<span class="source-line-no">486</span><span id="line-486"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">487</span><span id="line-487"> for (Filter child : ((FilterList) filter).getFilters()) {</span>
-<span class="source-line-no">488</span><span id="line-488"> this.filters.add(new FilterModel(child));</span>
-<span class="source-line-no">489</span><span id="line-489"> }</span>
-<span class="source-line-no">490</span><span id="line-490"> break;</span>
-<span class="source-line-no">491</span><span id="line-491"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">492</span><span id="line-492"> case KeyOnlyFilter:</span>
-<span class="source-line-no">493</span><span id="line-493"> break;</span>
-<span class="source-line-no">494</span><span id="line-494"> case InclusiveStopFilter:</span>
-<span class="source-line-no">495</span><span id="line-495"> this.value = Bytes</span>
-<span class="source-line-no">496</span><span id="line-496"> .toString(Base64.getEncoder().encode(((InclusiveStopFilter) filter).getStopRowKey()));</span>
-<span class="source-line-no">497</span><span id="line-497"> break;</span>
-<span class="source-line-no">498</span><span id="line-498"> case MultipleColumnPrefixFilter:</span>
-<span class="source-line-no">499</span><span id="line-499"> this.prefixes = new ArrayList<>();</span>
-<span class="source-line-no">500</span><span id="line-500"> for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) {</span>
-<span class="source-line-no">501</span><span id="line-501"> this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));</span>
-<span class="source-line-no">502</span><span id="line-502"> }</span>
-<span class="source-line-no">503</span><span id="line-503"> break;</span>
-<span class="source-line-no">504</span><span id="line-504"> case MultiRowRangeFilter:</span>
-<span class="source-line-no">505</span><span id="line-505"> this.ranges = new ArrayList<>();</span>
-<span class="source-line-no">506</span><span id="line-506"> for (RowRange range : ((MultiRowRangeFilter) filter).getRowRanges()) {</span>
-<span class="source-line-no">507</span><span id="line-507"> this.ranges.add(new RowRangeModel(range));</span>
-<span class="source-line-no">508</span><span id="line-508"> }</span>
-<span class="source-line-no">509</span><span id="line-509"> break;</span>
-<span class="source-line-no">510</span><span id="line-510"> case PageFilter:</span>
-<span class="source-line-no">511</span><span id="line-511"> this.value = Long.toString(((PageFilter) filter).getPageSize());</span>
-<span class="source-line-no">512</span><span id="line-512"> break;</span>
-<span class="source-line-no">513</span><span id="line-513"> case PrefixFilter:</span>
-<span class="source-line-no">514</span><span id="line-514"> this.value =</span>
-<span class="source-line-no">515</span><span id="line-515"> Bytes.toString(Base64.getEncoder().encode(((PrefixFilter) filter).getPrefix()));</span>
-<span class="source-line-no">516</span><span id="line-516"> break;</span>
-<span class="source-line-no">517</span><span id="line-517"> case FamilyFilter:</span>
-<span class="source-line-no">518</span><span id="line-518"> case QualifierFilter:</span>
-<span class="source-line-no">519</span><span id="line-519"> case RowFilter:</span>
-<span class="source-line-no">520</span><span id="line-520"> case ValueFilter:</span>
-<span class="source-line-no">521</span><span id="line-521"> this.op = ((CompareFilter) filter).getCompareOperator().toString();</span>
-<span class="source-line-no">522</span><span id="line-522"> this.comparator = new ByteArrayComparableModel(((CompareFilter) filter).getComparator());</span>
-<span class="source-line-no">523</span><span id="line-523"> break;</span>
-<span class="source-line-no">524</span><span id="line-524"> case RandomRowFilter:</span>
-<span class="source-line-no">525</span><span id="line-525"> this.chance = ((RandomRowFilter) filter).getChance();</span>
-<span class="source-line-no">526</span><span id="line-526"> break;</span>
-<span class="source-line-no">527</span><span id="line-527"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">528</span><span id="line-528"> case SingleColumnValueFilter: {</span>
-<span class="source-line-no">529</span><span id="line-529"> SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter;</span>
-<span class="source-line-no">530</span><span id="line-530"> this.family = Bytes.toString(Base64.getEncoder().encode(scvf.getFamily()));</span>
-<span class="source-line-no">531</span><span id="line-531"> byte[] qualifier = scvf.getQualifier();</span>
-<span class="source-line-no">532</span><span id="line-532"> if (qualifier != null) {</span>
-<span class="source-line-no">533</span><span id="line-533"> this.qualifier = Bytes.toString(Base64.getEncoder().encode(qualifier));</span>
-<span class="source-line-no">534</span><span id="line-534"> }</span>
-<span class="source-line-no">535</span><span id="line-535"> this.op = scvf.getCompareOperator().toString();</span>
-<span class="source-line-no">536</span><span id="line-536"> this.comparator = new ByteArrayComparableModel(scvf.getComparator());</span>
-<span class="source-line-no">537</span><span id="line-537"> if (scvf.getFilterIfMissing()) {</span>
-<span class="source-line-no">538</span><span id="line-538"> this.ifMissing = true;</span>
-<span class="source-line-no">539</span><span id="line-539"> }</span>
-<span class="source-line-no">540</span><span id="line-540"> if (scvf.getLatestVersionOnly()) {</span>
-<span class="source-line-no">541</span><span id="line-541"> this.latestVersion = true;</span>
-<span class="source-line-no">542</span><span id="line-542"> }</span>
-<span class="source-line-no">543</span><span id="line-543"> }</span>
-<span class="source-line-no">544</span><span id="line-544"> break;</span>
-<span class="source-line-no">545</span><span id="line-545"> case SkipFilter:</span>
-<span class="source-line-no">546</span><span id="line-546"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">547</span><span id="line-547"> this.filters.add(new FilterModel(((SkipFilter) filter).getFilter()));</span>
-<span class="source-line-no">548</span><span id="line-548"> break;</span>
-<span class="source-line-no">549</span><span id="line-549"> case TimestampsFilter:</span>
-<span class="source-line-no">550</span><span id="line-550"> this.timestamps = ((TimestampsFilter) filter).getTimestamps();</span>
-<span class="source-line-no">551</span><span id="line-551"> break;</span>
-<span class="source-line-no">552</span><span id="line-552"> case WhileMatchFilter:</span>
-<span class="source-line-no">553</span><span id="line-553"> this.filters = new ArrayList<>();</span>
-<span class="source-line-no">554</span><span id="line-554"> this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter()));</span>
-<span class="source-line-no">555</span><span id="line-555"> break;</span>
-<span class="source-line-no">556</span><span id="line-556"> case FuzzyRowFilter:</span>
-<span class="source-line-no">557</span><span id="line-557"> this.fuzzyKeys = new ArrayList<>(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558"> for (Pair<byte[], byte[]> keyWithMask : ((FuzzyRowFilter) filter).getFuzzyKeys()) {</span>
-<span class="source-line-no">559</span><span id="line-559"> this.fuzzyKeys.add(new FuzzyKeyModel(keyWithMask));</span>
-<span class="source-line-no">560</span><span id="line-560"> }</span>
-<span class="source-line-no">561</span><span id="line-561"> break;</span>
-<span class="source-line-no">562</span><span id="line-562"> default:</span>
-<span class="source-line-no">563</span><span id="line-563"> throw new RuntimeException("unhandled filter type " + type);</span>
-<span class="source-line-no">564</span><span id="line-564"> }</span>
-<span class="source-line-no">565</span><span id="line-565"> }</span>
-<span class="source-line-no">566</span><span id="line-566"></span>
-<span class="source-line-no">567</span><span id="line-567"> public Filter build() {</span>
-<span class="source-line-no">568</span><span id="line-568"> Filter filter;</span>
-<span class="source-line-no">569</span><span id="line-569"> switch (FilterType.valueOf(type)) {</span>
-<span class="source-line-no">570</span><span id="line-570"> case ColumnCountGetFilter:</span>
-<span class="source-line-no">571</span><span id="line-571"> filter = new ColumnCountGetFilter(limit);</span>
-<span class="source-line-no">572</span><span id="line-572"> break;</span>
-<span class="source-line-no">573</span><span id="line-573"> case ColumnPaginationFilter:</span>
-<span class="source-line-no">574</span><span id="line-574"> filter = new ColumnPaginationFilter(limit, offset);</span>
-<span class="source-line-no">575</span><span id="line-575"> break;</span>
-<span class="source-line-no">576</span><span id="line-576"> case ColumnPrefixFilter:</span>
-<span class="source-line-no">577</span><span id="line-577"> filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">578</span><span id="line-578"> break;</span>
-<span class="source-line-no">579</span><span id="line-579"> case ColumnRangeFilter:</span>
-<span class="source-line-no">580</span><span id="line-580"> filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,</span>
-<span class="source-line-no">581</span><span id="line-581"> Base64.getDecoder().decode(maxColumn), maxColumnInclusive);</span>
-<span class="source-line-no">582</span><span id="line-582"> break;</span>
-<span class="source-line-no">583</span><span id="line-583"> case DependentColumnFilter:</span>
-<span class="source-line-no">584</span><span id="line-584"> filter = new DependentColumnFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">585</span><span id="line-585"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,</span>
-<span class="source-line-no">586</span><span id="line-586"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">587</span><span id="line-587"> break;</span>
-<span class="source-line-no">588</span><span id="line-588"> case FamilyFilter:</span>
-<span class="source-line-no">589</span><span id="line-589"> filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">590</span><span id="line-590"> break;</span>
-<span class="source-line-no">591</span><span id="line-591"> case FilterList: {</span>
-<span class="source-line-no">592</span><span id="line-592"> List<Filter> list = new ArrayList<>(filters.size());</span>
-<span class="source-line-no">593</span><span id="line-593"> for (FilterModel model : filters) {</span>
-<span class="source-line-no">594</span><span id="line-594"> list.add(model.build());</span>
-<span class="source-line-no">595</span><span id="line-595"> }</span>
-<span class="source-line-no">596</span><span id="line-596"> filter = new FilterList(FilterList.Operator.valueOf(op), list);</span>
-<span class="source-line-no">597</span><span id="line-597"> }</span>
-<span class="source-line-no">598</span><span id="line-598"> break;</span>
-<span class="source-line-no">599</span><span id="line-599"> case FirstKeyOnlyFilter:</span>
-<span class="source-line-no">600</span><span id="line-600"> filter = new FirstKeyOnlyFilter();</span>
-<span class="source-line-no">601</span><span id="line-601"> break;</span>
-<span class="source-line-no">602</span><span id="line-602"> case InclusiveStopFilter:</span>
-<span class="source-line-no">603</span><span id="line-603"> filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">604</span><span id="line-604"> break;</span>
-<span class="source-line-no">605</span><span id="line-605"> case KeyOnlyFilter:</span>
-<span class="source-line-no">606</span><span id="line-606"> filter = new KeyOnlyFilter();</span>
-<span class="source-line-no">607</span><span id="line-607"> break;</span>
-<span class="source-line-no">608</span><span id="line-608"> case MultipleColumnPrefixFilter: {</span>
-<span class="source-line-no">609</span><span id="line-609"> byte[][] values = new byte[prefixes.size()][];</span>
-<span class="source-line-no">610</span><span id="line-610"> for (int i = 0; i < prefixes.size(); i++) {</span>
-<span class="source-line-no">611</span><span id="line-611"> values[i] = Base64.getDecoder().decode(prefixes.get(i));</span>
-<span class="source-line-no">612</span><span id="line-612"> }</span>
-<span class="source-line-no">613</span><span id="line-613"> filter = new MultipleColumnPrefixFilter(values);</span>
-<span class="source-line-no">614</span><span id="line-614"> }</span>
-<span class="source-line-no">615</span><span id="line-615"> break;</span>
-<span class="source-line-no">616</span><span id="line-616"> case MultiRowRangeFilter: {</span>
-<span class="source-line-no">617</span><span id="line-617"> ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());</span>
-<span class="source-line-no">618</span><span id="line-618"> for (RowRangeModel rangeModel : ranges) {</span>
-<span class="source-line-no">619</span><span id="line-619"> rowRanges.add(rangeModel.build());</span>
-<span class="source-line-no">620</span><span id="line-620"> }</span>
-<span class="source-line-no">621</span><span id="line-621"> filter = new MultiRowRangeFilter(rowRanges);</span>
-<span class="source-line-no">622</span><span id="line-622"> }</span>
-<span class="source-line-no">623</span><span id="line-623"> break;</span>
-<span class="source-line-no">624</span><span id="line-624"> case PageFilter:</span>
-<span class="source-line-no">625</span><span id="line-625"> filter = new PageFilter(Long.parseLong(value));</span>
-<span class="source-line-no">626</span><span id="line-626"> break;</span>
-<span class="source-line-no">627</span><span id="line-627"> case PrefixFilter:</span>
-<span class="source-line-no">628</span><span id="line-628"> filter = new PrefixFilter(Base64.getDecoder().decode(value));</span>
-<span class="source-line-no">629</span><span id="line-629"> break;</span>
-<span class="source-line-no">630</span><span id="line-630"> case QualifierFilter:</span>
-<span class="source-line-no">631</span><span id="line-631"> filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">632</span><span id="line-632"> break;</span>
-<span class="source-line-no">633</span><span id="line-633"> case RandomRowFilter:</span>
-<span class="source-line-no">634</span><span id="line-634"> filter = new RandomRowFilter(chance);</span>
-<span class="source-line-no">635</span><span id="line-635"> break;</span>
-<span class="source-line-no">636</span><span id="line-636"> case RowFilter:</span>
-<span class="source-line-no">637</span><span id="line-637"> filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">638</span><span id="line-638"> break;</span>
-<span class="source-line-no">639</span><span id="line-639"> case SingleColumnValueFilter:</span>
-<span class="source-line-no">640</span><span id="line-640"> filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">641</span><span id="line-641"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">642</span><span id="line-642"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">643</span><span id="line-643"> if (ifMissing != null) {</span>
-<span class="source-line-no">644</span><span id="line-644"> ((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">645</span><span id="line-645"> }</span>
-<span class="source-line-no">646</span><span id="line-646"> if (latestVersion != null) {</span>
-<span class="source-line-no">647</span><span id="line-647"> ((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">648</span><span id="line-648"> }</span>
-<span class="source-line-no">649</span><span id="line-649"> break;</span>
-<span class="source-line-no">650</span><span id="line-650"> case SingleColumnValueExcludeFilter:</span>
-<span class="source-line-no">651</span><span id="line-651"> filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),</span>
-<span class="source-line-no">652</span><span id="line-652"> qualifier != null ? Base64.getDecoder().decode(qualifier) : null,</span>
-<span class="source-line-no">653</span><span id="line-653"> CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">654</span><span id="line-654"> if (ifMissing != null) {</span>
-<span class="source-line-no">655</span><span id="line-655"> ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);</span>
-<span class="source-line-no">656</span><span id="line-656"> }</span>
-<span class="source-line-no">657</span><span id="line-657"> if (latestVersion != null) {</span>
-<span class="source-line-no">658</span><span id="line-658"> ((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);</span>
-<span class="source-line-no">659</span><span id="line-659"> }</span>
-<span class="source-line-no">660</span><span id="line-660"> break;</span>
-<span class="source-line-no">661</span><span id="line-661"> case SkipFilter:</span>
-<span class="source-line-no">662</span><span id="line-662"> filter = new SkipFilter(filters.get(0).build());</span>
-<span class="source-line-no">663</span><span id="line-663"> break;</span>
-<span class="source-line-no">664</span><span id="line-664"> case TimestampsFilter:</span>
-<span class="source-line-no">665</span><span id="line-665"> filter = new TimestampsFilter(timestamps);</span>
-<span class="source-line-no">666</span><span id="line-666"> break;</span>
-<span class="source-line-no">667</span><span id="line-667"> case ValueFilter:</span>
-<span class="source-line-no">668</span><span id="line-668"> filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());</span>
-<span class="source-line-no">669</span><span id="line-669"> break;</span>
-<span class="source-line-no">670</span><span id="line-670"> case WhileMatchFilter:</span>
-<span class="source-line-no">671</span><span id="line-671"> filter = new WhileMatchFilter(filters.get(0).build());</span>
-<span class="source-line-no">672</span><span id="line-672"> break;</span>
-<span class="source-line-no">673</span><span id="line-673"> case FuzzyRowFilter: {</span>
-<span class="source-line-no">674</span><span id="line-674"> ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());</span>
-<span class="source-line-no">675</span><span id="line-675"> for (FuzzyKeyModel keyModel : fuzzyKeys) {</span>
-<span class="source-line-no">676</span><span id="line-676"> fuzzyKeyArgs.add(keyModel.build());</span>
-<span class="source-line-no">677</span><span id="line-677"> }</span>
-<span class="source-line-no">678</span><span id="line-678"> filter = new FuzzyRowFilter(fuzzyKeyArgs);</span>
-<span class="source-line-no">679</span><span id="line-679"> }</span>
-<span class="source-line-no">680</span><span id="line-680"> break;</span>
-<span class="source-line-no">681</span><span id="line-681"> default:</span>
-<span class="source-line-no">682</span><span id="line-682"> throw new RuntimeException("unhandled filter type: " + type);</span>
-<span class="source-line-no">683</span><span id="line-683"> }</span>
-<span class="source-line-no">684</span><span id="line-684"> return filter;</span>
-<span class="source-line-no">685</span><span id="line-685"> }</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687"> }</span>
-<span class="source-line-no">688</span><span id="line-688"></span>
-<span class="source-line-no">689</span><span id="line-689"> /**</span>
-<span class="source-line-no">690</span><span id="line-690"> * Get the <code>JacksonJaxbJsonProvider</code> instance;</span>
-<span class="source-line-no">691</span><span id="line-691"> * @return A <code>JacksonJaxbJsonProvider</code>.</span>
-<span class="source-line-no">692</span><span id="line-692"> */</span>
-<span class="source-line-no">693</span><span id="line-693"> private static JacksonJaxbJsonProvider getJasonProvider() {</span>
-<span class="source-line-no">694</span><span id="line-694"> return JaxbJsonProviderHolder.INSTANCE;</span>
-<span class="source-line-no">695</span><span id="line-695"> }</span>
-<span class="source-line-no">696</span><span id="line-696"></span>
-<span class="source-line-no">697</span><span id="line-697"> /**</span>
-<span class="source-line-no">698</span><span id="line-698"> * @param s the JSON representation of the filter</span>
-<span class="source-line-no">699</span><span id="line-699"> * @return the filter</span>
-<span class="source-line-no">700</span><span id="line-700"> */</span>
-<span class="source-line-no">701</span><span id="line-701"> public static Filter buildFilter(String s) throws Exception {</span>
-<span class="source-line-no">702</span><span id="line-702"> FilterModel model =</span>
-<span class="source-line-no">703</span><span id="line-703"> getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">704</span><span id="line-704"> .readValue(s, FilterModel.class);</span>
-<span class="source-line-no">705</span><span id="line-705"> return model.build();</span>
-<span class="source-line-no">706</span><span id="line-706"> }</span>
-<span class="source-line-no">707</span><span id="line-707"></span>
-<span class="source-line-no">708</span><span id="line-708"> /**</span>
-<span class="source-line-no">709</span><span id="line-709"> * @param filter the filter</span>
-<span class="source-line-no">710</span><span id="line-710"> * @return the JSON representation of the filter</span>
-<span class="source-line-no">711</span><span id="line-711"> */</span>
-<span class="source-line-no">712</span><span id="line-712"> public static String stringifyFilter(final Filter filter) throws Exception {</span>
-<span class="source-line-no">713</span><span id="line-713"> return getJasonProvider().locateMapper(FilterModel.class, MediaType.APPLICATION_JSON_TYPE)</span>
-<span class="source-line-no">714</span><span id="line-714"> .writeValueAsString(new FilterModel(filter));</span>
-<span class="source-line-no">715</span><span id="line-715"> }</span>
-<span class="source-line-no">716</span><span id="line-716"></span>
-<span class="source-line-no">717</span><span id="line-717"> private static final byte[] COLUMN_DIVIDER = Bytes.toBytes(":");</span>
-<span class="source-line-no">718</span><span id="line-718"></span>
-<span class="source-line-no">719</span><span id="line-719"> /**</span>
-<span class="source-line-no">720</span><span id="line-720"> * @param scan the scan specification</span>
-<span class="source-line-no">721</span><span id="line-721"> */</span>
-<span class="source-line-no">722</span><span id="line-722"> public static ScannerModel fromScan(Scan scan) throws Exception {</span>
-<span class="source-line-no">723</span><span id="line-723"> ScannerModel model = new ScannerModel();</span>
-<span class="source-line-no">724</span><span id="line-724"> model.setStartRow(scan.getStartRow());</span>
-<span class="source-line-no">725</span><span id="line-725"> model.setEndRow(scan.getStopRow());</span>
-<span class="source-line-no">726</span><span id="line-726"> Map<byte[], NavigableSet<byte[]>> families = scan.getFamilyMap();</span>
-<span class="source-line-no">727</span><span id="line-727"> if (families != null) {</span>
-<span class="source-line-no">728</span><span id="line-728"> for (Map.Entry<byte[], NavigableSet<byte[]>> entry : families.entrySet()) {</span>
-<span class="source-line-no">729</span><span id="line-729"> if (entry.getValue() != null) {</span>
-<span class="source-line-no">730</span><span id="line-730"> for (byte[] qualifier : entry.getValue()) {</span>
-<span class="source-line-no">731</span><span id="line-731"> model.addColumn(Bytes.add(entry.getKey(), COLUMN_DIVIDER, qualifier));</span>
-<span class="source-line-no">732</span><span id="line-732"> }</span>
-<span class="source-line-no">733</span><span id="line-733"> } else {</span>
-<span class="source-line-no">734</span><span id="line-734"> model.addColumn(entry.getKey());</span>
-<span class="source-line-no">735</span><span id="line-735"> }</span>
-<span class="source-line-no">736</span><span id="line-736"> }</span>
-<span class="source-line-no">737</span><span id="line-737"> }</span>
-<span class="source-line-no">738</span><span id="line-738"> model.setStartTime(scan.getTimeRange().getMin());</span>
-<span class="source-line-no">739</span><span id="line-739"> model.setEndTime(scan.getTimeRange().getMax());</span>
-<span class="source-line-no">740</span><span id="line-740"> int caching = scan.getCaching();</span>
-<span class="source-line-no">741</span><span id="line-741"> if (caching > 0) {</span>
-<span class="source-line-no">742</span><span id="line-742"> model.setCaching(caching);</span>
-<span class="source-line-no">743</span><span id="line-743"> }</span>
-<span class="source-line-no">744</span><span id="line-744"> int batch = scan.getBatch();</span>
-<span class="source-line-no">745</span><span id="line-745"> if (batch > 0) {</span>
-<span class="source-line-no">746</span><span id="line-746"> model.setBatch(batch);</span>
-<span class="source-line-no">747</span><span id="line-747"> }</span>
-<span class="source-line-no">748</span><span id="line-748"> int maxVersions = scan.getMaxVersions();</span>
-<span class="source-line-no">749</span><span id="line-749"> if (maxVersions > 0) {</span>
-<span class="source-line-no">750</span><span id="line-750"> model.setMaxVersions(maxVersions);</span>
-<span class="source-line-no">751</span><span id="line-751"> }</span>
-<span class="source-line-no">752</span><span id="line-752"> if (scan.getLimit() > 0) {</span>
-<span class="source-line-no">753</span><span id="line-753"> model.setLimit(scan.getLimit());</span>
-<span class="source-line-no">754</span><span id="line-754"> }</span>
-<span class="source-line-no">755</span><span id="line-755"> Filter filter = scan.getFilter();</span>
-<span class="source-line-no">756</span><span id="line-756"> if (filter != null) {</span>
-<span class="source-line-no">757</span><span id="line-757"> model.setFilter(stringifyFilter(filter));</span>
-<span class="source-line-no">758</span><span id="line-758"> }</span>
-<span class="source-line-no">759</span><span id="line-759"> // Add the visbility labels if found in the attributes</span>
-<span class="source-line-no">760</span><span id="line-760"> Authorizations authorizations = scan.getAuthorizations();</span>
-<span class="source-line-no">761</span><span id="line-761"> if (authorizations != null) {</span>
-<span class="source-line-no">762</span><span id="line-762"> List<String> labels = authorizations.getLabels();</span>
-<span class="source-line-no">763</span><span id="line-763"> for (String label : labels) {</span>
-<span class="source-line-no">764</span><span id="line-764"> model.addLabel(label);</span>
-<span class="source-line-no">765</span><span id="line-765"> }</span>
-<span class="source-line-no">766</span><span id="line-766"> }</span>
-<span class="source-line-no">767</span><span id="line-767"> model.setIncludeStartRow(scan.includeStartRow());</span>
-<span class="source-line-no">768</span><span id="line-768"> model.setIncludeStopRow(scan.includeStopRow());</span>
-<span class="source-line-no">769</span><span id="line-769"> return model;</span>
-<span class="source-line-no">770</span><span id="line-770"> }</span>
-<span class="source-line-no">771</span><span id="line-771"></span>
-<span class="source-line-no">772</span><span id="line-772"> /**</span>
-<span class="source-line-no">773</span><span id="line-773"> * Default constructor</span>
-<span class="source-line-no">774</span><span id="line-774"> */</span>
-<span class="source-line-no">775</span><span id="line-775"> public ScannerModel() {</span>
-<span class="source-line-no">776</span><span id="line-776"> }</span>
-<span class="source-line-no">777</span><span id="line-777"></span>
-<span class="source-line-no">778</span><span id="line-778"> /**</span>
-<span class="source-line-no">779</span><span id="line-779"> * Constructor</span>
-<span class="source-line-no">780</span><span id="line-780"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">781</span><span id="line-781"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">782</span><span id="line-782"> * @param columns the columns to scan</span>
-<span class="source-line-no">783</span><span id="line-783"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">784</span><span id="line-784"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">785</span><span id="line-785"> * @param endTime the upper bound on timestamps of values of interest</span>
-<span class="source-line-no">786</span><span id="line-786"> * @param maxVersions the maximum number of versions to return</span>
-<span class="source-line-no">787</span><span id="line-787"> * @param filter a filter specification (values with timestamps later than this are excluded)</span>
-<span class="source-line-no">788</span><span id="line-788"> */</span>
-<span class="source-line-no">789</span><span id="line-789"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">790</span><span id="line-790"> long endTime, int maxVersions, String filter) {</span>
-<span class="source-line-no">791</span><span id="line-791"> super();</span>
-<span class="source-line-no">792</span><span id="line-792"> this.startRow = startRow;</span>
-<span class="source-line-no">793</span><span id="line-793"> this.endRow = endRow;</span>
-<span class="source-line-no">794</span><span id="line-794"> this.columns = columns;</span>
-<span class="source-line-no">795</span><span id="line-795"> this.batch = batch;</span>
-<span class="source-line-no">796</span><span id="line-796"> this.caching = caching;</span>
-<span class="source-line-no">797</span><span id="line-797"> this.endTime = endTime;</span>
-<span class="source-line-no">798</span><span id="line-798"> this.maxVersions = maxVersions;</span>
-<span class="source-line-no">799</span><span id="line-799"> this.filter = filter;</span>
-<span class="source-line-no">800</span><span id="line-800"> }</span>
-<span class="source-line-no">801</span><span id="line-801"></span>
-<span class="source-line-no">802</span><span id="line-802"> /**</span>
-<span class="source-line-no">803</span><span id="line-803"> * Constructor</span>
-<span class="source-line-no">804</span><span id="line-804"> * @param startRow the start key of the row-range</span>
-<span class="source-line-no">805</span><span id="line-805"> * @param endRow the end key of the row-range</span>
-<span class="source-line-no">806</span><span id="line-806"> * @param columns the columns to scan</span>
-<span class="source-line-no">807</span><span id="line-807"> * @param batch the number of values to return in batch</span>
-<span class="source-line-no">808</span><span id="line-808"> * @param caching the number of rows that the scanner will fetch at once</span>
-<span class="source-line-no">809</span><span id="line-809"> * @param startTime the lower bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">810</span><span id="line-810"> * earlier than this are excluded)</span>
-<span class="source-line-no">811</span><span id="line-811"> * @param endTime the upper bound on timestamps of values of interest (values with timestamps</span>
-<span class="source-line-no">812</span><span id="line-812"> * later than this are excluded)</span>
-<span class="source-line-no">813</span><span id="line-813"> * @param filter a filter specification</span>
-<span class="source-line-no">814</span><span id="line-814"> */</span>
-<span class="source-line-no">815</span><span id="line-815"> public ScannerModel(byte[] startRow, byte[] endRow, List<byte[]> columns, int batch, int caching,</span>
-<span class="source-line-no">816</span><span id="line-816"> long startTime, long endTime, String filter) {</span>
-<span class="source-line-no">817</span><span id="line-817"> super();</span>
-<span class="source-line-no">818</span><span id="line-818"> this.startRow = startRow;</span>
-<span class="source-line-no">819</span><span id="line-819"> this.endRow = endRow;</span>
-<span class="source-line-no">820</span><span id="line-820"> this.columns = columns;</span>
-<span class="source-line-no">821</span><span id="line-821"> this.batch = batch;</span>
-<span class="source-line-no">822</span><span id="line-822"> this.caching = caching;</span>
-<span class="source-line-no">823</span><span id="line-823"> this.startTime = startTime;</span>
-<span class="source-line-no">824</span><span id="line-824"> this.endTime = endTime;</span>
-<span class="source-line-no">825</span><span id="line-825"> this.filter = filter;</span>
-<span class="source-line-no">826</span><span id="line-826"> }</span>
-<span class="source-line-no">827</span><span id="line-827"></span>
-<span class="source-line-no">828</span><span id="line-828"> /**</span>
-<span class="source-line-no">829</span><span id="line-829"> * Add a column to the column set</span>
-<span class="source-line-no">830</span><span id="line-830"> * @param column the column name, as &lt;column&gt;(:&lt;qualifier&gt;)?</span>
-<span class="source-line-no">831</span><span id="line-831"> */</span>
-<span class="source-line-no">832</span><span id="line-832"> public void addColumn(byte[] column) {</span>
-<span class="source-line-no">833</span><span id="line-833"> columns.add(column);</span>
-<span class="source-line-no">834</span><span id="line-834"> }</span>
-<span class="source-line-no">835</span><span id="line-835"></span>
-<span class="source-line-no">836</span><span id="line-836"> /**</span>
-<span class="source-line-no">837</span><span id="line-837"> * Add a visibility label to the scan</span>
-<span class="source-line-no">838</span><span id="line-838"> */</span>
-<span class="source-line-no">839</span><span id="line-839"> public void addLabel(String label) {</span>
-<span class="source-line-no">840</span><span id="line-840"> labels.add(label);</span>
-<span class="source-line-no">841</span><span id="line-841"> }</span>
-<span class="source-line-no">842</span><span id="line-842"></span>
-<span class="source-line-no">843</span><span id="line-843"> /** Returns true if a start row was specified */</span>
-<span class="source-line-no">844</span><span id="line-844"> public boolean hasStartRow() {</span>
-<span class="source-line-no">845</span><span id="line-845"> return !Bytes.equals(startRow, HConstants.EMPTY_START_ROW);</span>
-<span class="source-line-no">846</span><span id="line-846"> }</span>
-<span class="source-line-no">847</span><span id="line-847"></span>
-<span class="source-line-no">848</span><span id="line-848"> /** Returns start row */</span>
-<span class="source-line-no">849</span><span id="line-849"> @XmlAttribute</span>
-<span class="source-line-no">850</span><span id="line-850"> public byte[] getStartRow() {</span>
-<span class="source-line-no">851</span><span id="line-851"> return startRow;</span>
-<span class="source-line-no">852</span><span id="line-852"> }</span>
-<span class="source-line-no">853</span><span id="line-853"></span>
-<span class="source-line-no">854</span><span id="line-854"> /** Returns true if an end row was specified */</span>
-<span class="source-line-no">855</span><span id="line-855"> public boolean hasEndRow() {</span>
-<span class="source-line-no">856</span><span id="line-856"> return !Bytes.equals(endRow, HConstants.EMPTY_END_ROW);</span>
-<span class="source-line-no">857</span><span id="line-857"> }</span>
-<span class="source-line-no">858</span><span id="line-858"></span>
-<span class="source-line-no">859</span><span id="line-859"> /** Returns end row */</span>
-<span class="source-line-no">860</span><span id="line-860"> @XmlAttribute</span>
-<span class="source-line-no">861</span><span id="line-861"> public byte[] getEndRow() {</span>
-<span class="source-line-no">862</span><span id="line-862"> return endRow;</span>
-<span class="source-line-no">863</span><span id="line-863"> }</span>
-<span class="source-line-no">864</span><span id="line-864"></span>
-<span class="source-line-no">865</span><span id="line-865"> /** Returns list of columns of interest in column:qualifier format, or empty for all */</span>
... 11579 lines suppressed ...