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>&nbsp;</dd>
 <dt>affixShutdownHook(Thread, int) - Static method in class org.apache.hadoop.hbase.util.ShutdownHookManager</dt>
 <dd>&nbsp;</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>&nbsp;</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>&nbsp;</dd>
 <dt>call(O) - Method in class org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverOperationWithResult</dt>
 <dd>&nbsp;</dd>
-<dt>call(AbstractRpcBasedConnectionRegistry.Callable&lt;T&gt;, Predicate&lt;T&gt;, String) - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>call(AbstractRpcBasedConnectionRegistry.Callable&lt;T&gt;, Predicate&lt;T&gt;, String) - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>&nbsp;</dd>
 <dt>call(HBaseRpcController, AdminProtos.AdminService.Interface) - Method in interface org.apache.hadoop.hbase.client.AsyncAdminRequestRetryingCaller.Callable</dt>
 <dd>&nbsp;</dd>
@@ -7148,7 +7148,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>close() - Method in class org.apache.hadoop.hbase.chaos.ChaosAgent</dt>
 <dd>&nbsp;</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>&nbsp;</dd>
 <dt>close() - Method in interface org.apache.hadoop.hbase.client.Admin</dt>
 <dd>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</dd>
 <dt>getActiveLogFiles() - Static method in class org.apache.hadoop.hbase.logging.Log4jUtils</dt>
 <dd>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</dd>
 <dt>getMetaRegionLocations() - Method in interface org.apache.hadoop.hbase.client.ConnectionRegistry</dt>
 <dd>
@@ -37357,7 +37357,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>HEDGED_READS_DESC - Static variable in interface org.apache.hadoop.hbase.regionserver.MetricsRegionServerSource</dt>
 <dd>&nbsp;</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>
 &nbsp;</dd>
 <dt>START_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
 <dd>&nbsp;</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>&nbsp;</dd>
 <dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder</dt>
 <dd>&nbsp;</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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&#160;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>&lt;<a href="ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</a>&gt;</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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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="&lt;init&gt;()">
 <h3>ComparatorType</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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="&lt;init&gt;()">
 <h3>ByteArrayComparableModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;<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="&lt;init&gt;(org.apache.hadoop.hbase.filter.ByteArrayComparable)">
 <h3>ByteArrayComparableModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;comparator)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;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>&nbsp;<span class="return-type"><a href="../../filter/ByteArrayComparable.html" title="class in org.apache.hadoop.hbase.filter">ByteArrayComparable</a></span>&nbsp;<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>&nbsp;<span class="return-type"><a href="../../filter/ByteArrayComparable.html" title="class in org.apache.hadoop.hbase.filter">ByteArrayComparable</a></span>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.FilterType.html" title="enum class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FilterType</a>&gt;</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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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="&lt;init&gt;()">
 <h3>FilterType</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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="&lt;init&gt;()">
 <h3>FuzzyKeyModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;<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="&lt;init&gt;(org.apache.hadoop.hbase.util.Pair)">
 <h3>FuzzyKeyModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&lt;byte[],<wbr>byte[]&gt;&nbsp;keyWithMask)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&lt;byte[],<wbr>byte[]&gt;&nbsp;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>&nbsp;<span class="return-type"><a href="../../util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[],<wbr>byte[]&gt;</span>&nbsp;<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>&nbsp;<span class="return-type"><a href="../../util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[],<wbr>byte[]&gt;</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;key)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;key)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="getMask()">
 <h3>getMask</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;mask)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;mask)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="hashCode()">
 <h3>hashCode</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;in class&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;ob [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;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>&nbsp;in class&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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="&lt;init&gt;()">
 <h3>RowRangeModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;<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="&lt;init&gt;(org.apache.hadoop.hbase.filter.MultiRowRangeFilter.RowRange)">
 <h3>RowRangeModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;rr)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;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>&nbsp;<span class="return-type"><a href="../../filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a></span>&nbsp;<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>&nbsp;<span class="return-type"><a href="../../filter/MultiRowRangeFilter.RowRange.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter.RowRange</a></span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;in class&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;ob [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;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>&nbsp;in class&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/rest [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel</a>&gt;</span>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&lt;<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>&gt;</span>&nbsp;<span class="element-name"><a href="../../../. [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&lt;<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>&gt;</span>&nbsp;<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>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.RowRangeModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.RowRangeModel</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html [...]
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.RowRangeModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.RowRangeModel</a>&gt;</span>&nbsp;<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>&nbsp;<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>&lt;<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>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../.. [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&lt;<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>&gt;</span>&nbsp;<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>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.FuzzyKeyModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FuzzyKeyModel</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html [...]
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<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>&lt;<a href="ScannerModel.FilterModel.FuzzyKeyModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel.FilterModel.FuzzyKeyModel</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html [...]
 </section>
 </li>
 </ul>
@@ -371,13 +371,13 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;()">
 <h3>FilterModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;<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="&lt;init&gt;(org.apache.hadoop.hbase.filter.Filter)">
 <h3>FilterModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;filter)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;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>&nbsp;<span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span>&nbsp;<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>&nbsp;<span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span>&nbsp;<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="&lt;init&gt;()">
 <h3>IncludeStartRowFilter</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<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>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;value) [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;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>&nbsp;in class&nbsp;<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>&nbsp;<span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span>&nbsp;<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>&nbsp;<span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span>&nbsp;<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="&lt;init&gt;()">
 <h3>JaxbJsonProviderHolder</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<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>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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="&lt;init&gt;()">
 <h3>ScannerModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&nbsp;<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="&lt;init&gt;(byte[],byte[],java.util.List,int,int,long,int,java.lang.String)">
 <h3>ScannerModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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[]&nbsp;startRow,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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[]&nbsp;startRow,
  byte[]&nbsp;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>&lt;byte[]&gt;&nbsp;columns,
  int&nbsp;batch,
@@ -560,7 +560,7 @@ implements <a href="../ProtobufMessageHandler.html" title="interface in org.apac
 <li>
 <section class="detail" id="&lt;init&gt;(byte[],byte[],java.util.List,int,int,long,long,java.lang.String)">
 <h3>ScannerModel</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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[]&nbsp;startRow,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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[]&nbsp;startRow,
  byte[]&nbsp;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>&lt;byte[]&gt;&nbsp;columns,
  int&nbsp;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>&nbsp;<span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span>&nbsp;<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>&nbsp;<span class="return-type">org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</span>&nbsp;<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>&nbsp;<span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span>&nbsp;<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>&nbsp;<span class="return-type"><a href="../../filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<span class="return-type"><a href="ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a></span>&nbsp;<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>&nbsp;scan)</span>
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ScannerModel.html" title="class in org.apache.hadoop.hbase.rest.model">ScannerModel</a></span>&nbsp;<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>&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;column)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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>&nbsp;label)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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>&nbsp;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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<span class="return-type">byte[]</span>&nbsp;<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>&nbsp;<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>&lt;byte[]&gt;</span>&nbsp;<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>&nbsp;<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>&lt;byte[]&gt;</span>&nbsp;<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>&nbsp;<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>&lt;<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>&gt;</span>&nbsp;<span class="element-name"><a href="../../../. [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<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>&lt;<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>&gt;</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">boolean</span>&nbsp;<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>&nbsp;<span class="return-type">long</span>&nbsp;<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>&nbsp;<span class="return-type">long</span>&nbsp;<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>&nbsp;<span class="return-type">long</span>&nbsp;<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>&nbsp;<span class="return-type">long</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<span class="return-type">int</span>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;startRow)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;endRow)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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[]&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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>&lt;byte[]&gt;&nbsp;columns)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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>&lt;byte[]&gt;&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;batch)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;caching)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;value)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;limit)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;maxVersions)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;startTime)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;endTime)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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&nbsp;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>&nbsp;<span class="return-type">void</span>&nbsp;<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>&nbsp;filter)</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<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>&nbsp;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>&nbsp;<span class="return-type">org.apache.hbase.thirdparty.com.google.protobuf.Message</span>&nbsp;<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>&nbsp;<span class="return-type">org.apache.hbase.thirdparty.com.google.protobuf.Message</span>&nbsp;<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:&nbsp;<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>&nbsp;<span class="return-type"><a href="../ProtobufMessageHandler.html" title="interface in org.apache.hadoop.hbase.rest">ProtobufMessageHandler</a></span>&nbsp;<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&nbsp;cis)</span>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ProtobufMessageHandler.html" title="interface in org.apache.hadoop.hbase.rest">ProtobufMessageHandler</a></span>&nbsp;<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&nbsp;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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
-<span class="source-line-no">332</span><span id="line-332">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
-<span class="source-line-no">691</span><span id="line-691">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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&lt;byte[]&gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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 &gt; 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 &gt; 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 &amp;&amp; labels.size() &gt; 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&lt;String&gt; 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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
+<span class="source-line-no">313</span><span id="line-313">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
+<span class="source-line-no">333</span><span id="line-333">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
+<span class="source-line-no">559</span><span id="line-559">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
+<span class="source-line-no">692</span><span id="line-692">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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&lt;byte[]&gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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 &gt; 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 &gt; 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 &amp;&amp; labels.size() &gt; 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&lt;String&gt; 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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
-<span class="source-line-no">332</span><span id="line-332">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
-<span class="source-line-no">691</span><span id="line-691">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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&lt;byte[]&gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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 &gt; 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 &gt; 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 &amp;&amp; labels.size() &gt; 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&lt;String&gt; 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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
+<span class="source-line-no">313</span><span id="line-313">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
+<span class="source-line-no">333</span><span id="line-333">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
+<span class="source-line-no">559</span><span id="line-559">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
+<span class="source-line-no">692</span><span id="line-692">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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&lt;byte[]&gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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 &gt; 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 &gt; 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 &amp;&amp; labels.size() &gt; 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&lt;String&gt; 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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
-<span class="source-line-no">332</span><span id="line-332">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
-<span class="source-line-no">691</span><span id="line-691">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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&lt;byte[]&gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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 &gt; 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 &gt; 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 &amp;&amp; labels.size() &gt; 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&lt;String&gt; 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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
+<span class="source-line-no">313</span><span id="line-313">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
+<span class="source-line-no">333</span><span id="line-333">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
+<span class="source-line-no">559</span><span id="line-559">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
+<span class="source-line-no">692</span><span id="line-692">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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&lt;byte[]&gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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 &gt; 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 &gt; 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 &amp;&amp; labels.size() &gt; 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&lt;String&gt; 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">          &amp;&amp; startRowInclusive == other.startRowInclusive &amp;&amp; Arrays.equals(stopRow, other.stopRow)</span>
-<span class="source-line-no">312</span><span id="line-312">          &amp;&amp; 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&lt;byte[], byte[]&gt; 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&lt;byte[], byte[]&gt; build() {</span>
-<span class="source-line-no">332</span><span id="line-332">        return new Pair&lt;&gt;(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) &amp;&amp; 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&lt;FilterModel&gt; 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&lt;String&gt; 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&lt;RowRangeModel&gt; 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&lt;Long&gt; 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&lt;FuzzyKeyModel&gt; 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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;();</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&lt;&gt;(((FuzzyRowFilter) filter).getFuzzyKeys().size());</span>
-<span class="source-line-no">558</span><span id="line-558">          for (Pair&lt;byte[], byte[]&gt; 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&lt;Filter&gt; list = new ArrayList&lt;&gt;(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 &lt; 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&lt;MultiRowRangeFilter.RowRange&gt; rowRanges = new ArrayList&lt;&gt;(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&lt;Pair&lt;byte[], byte[]&gt;&gt; fuzzyKeyArgs = new ArrayList&lt;&gt;(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 &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt; instance;</span>
-<span class="source-line-no">691</span><span id="line-691">   * @return A &lt;code&gt;JacksonJaxbJsonProvider&lt;/code&gt;.</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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; 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 &gt; 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 &gt; 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 &gt; 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() &gt; 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&lt;String&gt; 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&lt;byte[]&gt; 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&lt;byte[]&gt; 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 &amp;lt;column&amp;gt;(:&amp;lt;qualifier&amp;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 ...