blob: c16076a7a98abc855603356e664a876d01abe2f2 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>ColumnInterpreter (Apache HBase 4.0.0-alpha-1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.hadoop.hbase.coprocessor, class: ColumnInterpreter">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/ColumnInterpreter.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.hadoop.hbase.coprocessor</a></div>
<h1 title="Class ColumnInterpreter" class="title">Class ColumnInterpreter&lt;T,<wbr>S,<wbr>P extends org.apache.hbase.thirdparty.com.google.protobuf.Message,<wbr>Q extends org.apache.hbase.thirdparty.com.google.protobuf.Message,<wbr>R extends org.apache.hbase.thirdparty.com.google.protobuf.Message&gt;</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><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">java.lang.Object</a>
<div class="inheritance">org.apache.hadoop.hbase.coprocessor.ColumnInterpreter&lt;T,<wbr>S,<wbr>P,<wbr>Q,<wbr>R&gt;</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../client/coprocessor/BigDecimalColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor">BigDecimalColumnInterpreter</a></code>, <code><a href="../client/coprocessor/DoubleColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor">DoubleColumnInterpreter</a></code>, <code><a href="../client/coprocessor/LongColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor">LongColumnInterpreter</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@LimitedPrivate("Coprocesssor")
@Evolving
</span><span class="modifiers">public abstract class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-50">ColumnInterpreter</a>&lt;T,<wbr>S,<wbr>P extends org.apache.hbase.thirdparty.com.google.protobuf.Message,<wbr>Q extends org.apache.hbase.thirdparty.com.google.protobuf.Message,<wbr>R extends org.apache.hbase.thirdparty.com.google.protobuf.Message&gt;</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">Defines how value for specific column is interpreted and provides utility methods like compare,
add, multiply etc for them. Takes column family, column qualifier and return the cell value. Its
concrete implementation should handle null case gracefully. Refer to
<a href="../client/coprocessor/LongColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor"><code>LongColumnInterpreter</code></a> for an example.
<p>
Takes two generic parameters and three Message parameters. The cell value type of the interpreter
is &lt;T&gt;. During some computations like sum, average, the return type can be different than
the cell value data type, for eg, sum of int cell values might overflow in case of a int result,
we should use Long for its result. Therefore, this class mandates to use a different (promoted)
data type for result of these computations &lt;S&gt;. All computations are performed on the
promoted data type &lt;S&gt;. There is a conversion method
<a href="#castToReturnType(T)"><code>castToReturnType(Object)</code></a> which takes a &lt;T&gt; type and returns a
&lt;S&gt; type. The AggregateIm&gt;lementation uses PB messages to initialize the user's
ColumnInterpreter implementation, and for sending the responses back to AggregationClient.
<p>
&lt;T&gt; Cell value data type<br>
&lt;S&gt; Promoted data type<br>
&lt;P&gt; PB message that is used to transport initializer specific bytes<br>
&lt;Q&gt; PB message that is used to transport Cell (&lt;T&gt;) instance<br>
&lt;R&gt; PB message that is used to transport Promoted (&lt;S&gt;) instance</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ColumnInterpreter</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#add(S,S)" class="member-name-link">add</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;l1,
<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;l2)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns sum or non null value among (if either of them is null); otherwise returns a null.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#castToCellType(S)" class="member-name-link">castToCellType</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;response)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">The response message comes as type S.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#castToReturnType(T)" class="member-name-link">castToReturnType</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;o)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">provides casting opportunity between the data types.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#compare(T,T)" class="member-name-link">compare</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;l1,
<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;l2)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This takes care if either of arguments are null.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract double</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#divideForAvg(S,java.lang.Long)" class="member-name-link">divideForAvg</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o,
<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>&nbsp;l)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">used for computing average of &lt;S&gt; data values.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getCellValueFromProto(Q)" class="member-name-link">getCellValueFromProto</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">Q</a>&nbsp;q)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This method gets the PB message corresponding to the cell type</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getMaxValue()" class="member-name-link">getMaxValue</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">returns the maximum value for this type T</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getMinValue()" class="member-name-link">getMinValue</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getPromotedValueFromProto(R)" class="member-name-link">getPromotedValueFromProto</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">R</a>&nbsp;r)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This method gets the promoted type from the proto message</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">Q</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getProtoForCellType(T)" class="member-name-link">getProtoForCellType</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;t)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This method gets the PB message corresponding to the cell type</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">R</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getProtoForPromotedType(S)" class="member-name-link">getProtoForPromotedType</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;s)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This method gets the PB message corresponding to the promoted type</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">P</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getRequestData()" class="member-name-link">getRequestData</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This method should return any additional data that is needed on the server side to construct
the ColumnInterpreter.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getValue(byte%5B%5D,byte%5B%5D,org.apache.hadoop.hbase.Cell)" class="member-name-link">getValue</a><wbr>(byte[]&nbsp;colFamily,
byte[]&nbsp;colQualifier,
<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns value of type T</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#increment(S)" class="member-name-link">increment</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns increment</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#initialize(P)" class="member-name-link">initialize</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">P</a>&nbsp;msg)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">This method should initialize any field(s) of the ColumnInterpreter with a parsing of the
passed message bytes (used on the server side).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#multiply(S,S)" class="member-name-link">multiply</a><wbr>(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o1,
<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o2)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns multiplication</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<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></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <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>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <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>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>ColumnInterpreter</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-52">ColumnInterpreter</a></span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getValue(byte[],byte[],org.apache.hadoop.hbase.Cell)">
<h3>getValue</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-56">getValue</a></span><wbr><span class="parameters">(byte[]&nbsp;colFamily,
byte[]&nbsp;colQualifier,
<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</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>
<div class="block">Returns value of type T</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><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></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="add(S,S)">
<h3 id="add(java.lang.Object,java.lang.Object)">add</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-59">add</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;l1,
<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;l2)</span></div>
<div class="block">Returns sum or non null value among (if either of them is null); otherwise returns a null.</div>
</section>
</li>
<li>
<section class="detail" id="getMaxValue()">
<h3>getMaxValue</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-64">getMaxValue</a></span>()</div>
<div class="block">returns the maximum value for this type T</div>
</section>
</li>
<li>
<section class="detail" id="getMinValue()">
<h3>getMinValue</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-66">getMinValue</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="multiply(S,S)">
<h3 id="multiply(java.lang.Object,java.lang.Object)">multiply</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-69">multiply</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o1,
<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o2)</span></div>
<div class="block">Returns multiplication</div>
</section>
</li>
<li>
<section class="detail" id="increment(S)">
<h3 id="increment(java.lang.Object)">increment</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-72">increment</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o)</span></div>
<div class="block">Returns increment</div>
</section>
</li>
<li>
<section class="detail" id="castToReturnType(T)">
<h3 id="castToReturnType(java.lang.Object)">castToReturnType</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-77">castToReturnType</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;o)</span></div>
<div class="block">provides casting opportunity between the data types.</div>
</section>
</li>
<li>
<section class="detail" id="compare(T,T)">
<h3 id="compare(java.lang.Object,java.lang.Object)">compare</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-86">compare</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;l1,
<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;l2)</span></div>
<div class="block">This takes care if either of arguments are null. returns 0 if they are equal or both are null;
<ul>
<li>&gt; 0 if l1 &gt; l2 or l1 is not null and l2 is null.</li>
<li>&lt; 0 if l1 &lt; l2 or l1 is null and l2 is not null.</li>
</ul></div>
</section>
</li>
<li>
<section class="detail" id="divideForAvg(S,java.lang.Long)">
<h3 id="divideForAvg(java.lang.Object,java.lang.Long)">divideForAvg</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-92">divideForAvg</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;o,
<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>&nbsp;l)</span></div>
<div class="block">used for computing average of &lt;S&gt; data values. Not providing the divide method that takes
two &lt;S&gt; values as it is not needed as of now.</div>
</section>
</li>
<li>
<section class="detail" id="getRequestData()">
<h3>getRequestData</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">P</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-102">getRequestData</a></span>()</div>
<div class="block">This method should return any additional data that is needed on the server side to construct
the ColumnInterpreter. The server will pass this to the <a href="#initialize(P)"><code>initialize(P)</code></a> method. If there is
no ColumnInterpreter specific data (for e.g.,
<a href="../client/coprocessor/LongColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor"><code>LongColumnInterpreter</code></a>) then null should be
returned.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the PB message</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="initialize(P)">
<h3 id="initialize(org.apache.hbase.thirdparty.com.google.protobuf.Message)">initialize</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-108">initialize</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">P</a>&nbsp;msg)</span></div>
<div class="block">This method should initialize any field(s) of the ColumnInterpreter with a parsing of the
passed message bytes (used on the server side).</div>
</section>
</li>
<li>
<section class="detail" id="getProtoForCellType(T)">
<h3 id="getProtoForCellType(java.lang.Object)">getProtoForCellType</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">Q</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-114">getProtoForCellType</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a>&nbsp;t)</span></div>
<div class="block">This method gets the PB message corresponding to the cell type</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the PB message for the cell-type instance</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getCellValueFromProto(Q)">
<h3 id="getCellValueFromProto(org.apache.hbase.thirdparty.com.google.protobuf.Message)">getCellValueFromProto</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-120">getCellValueFromProto</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">Q</a>&nbsp;q)</span></div>
<div class="block">This method gets the PB message corresponding to the cell type</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the cell-type instance from the PB message</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getProtoForPromotedType(S)">
<h3 id="getProtoForPromotedType(java.lang.Object)">getProtoForPromotedType</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">R</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-126">getProtoForPromotedType</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;s)</span></div>
<div class="block">This method gets the PB message corresponding to the promoted type</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the PB message for the promoted-type instance</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getPromotedValueFromProto(R)">
<h3 id="getPromotedValueFromProto(org.apache.hbase.thirdparty.com.google.protobuf.Message)">getPromotedValueFromProto</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-132">getPromotedValueFromProto</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">R</a>&nbsp;r)</span></div>
<div class="block">This method gets the promoted type from the proto message</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the promoted-type instance from the PB message</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="castToCellType(S)">
<h3 id="castToCellType(java.lang.Object)">castToCellType</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">T</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.html#line-138">castToCellType</a></span><wbr><span class="parameters">(<a href="ColumnInterpreter.html" title="type parameter in ColumnInterpreter">S</a>&nbsp;response)</span></div>
<div class="block">The response message comes as type S. This will convert/cast it to T. In some sense, performs
the opposite of <a href="#castToReturnType(T)"><code>castToReturnType(Object)</code></a></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>