blob: 710a16e04dfcc383cd329fdb2c543ca894bbe99a [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>BitRpcUtility (Drill : 1.20.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BitRpcUtility (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BitRpcUtility.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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/drill/exec/rpc/BitConnectionConfig.html" title="class in org.apache.drill.exec.rpc"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/drill/exec/rpc/ChannelClosedException.html" title="class in org.apache.drill.exec.rpc"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/drill/exec/rpc/BitRpcUtility.html" target="_top">Frames</a></li>
<li><a href="BitRpcUtility.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.drill.exec.rpc</div>
<h2 title="Class BitRpcUtility" class="title">Class BitRpcUtility</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.drill.exec.rpc.BitRpcUtility</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public final class <span class="typeNameLabel">BitRpcUtility</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Utility class providing common methods shared between <a href="../../../../../org/apache/drill/exec/rpc/data/DataClient.html" title="class in org.apache.drill.exec.rpc.data"><code>DataClient</code></a> and
<a href="../../../../../org/apache/drill/exec/rpc/control/ControlClient.html" title="class in org.apache.drill.exec.rpc.control"><code>ControlClient</code></a></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/rpc/BitRpcUtility.html#isLocalControlServer-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-">isLocalControlServer</a></span>(<a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto">CoordinationProtos.DrillbitEndpoint</a>&nbsp;local,
<a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto">CoordinationProtos.DrillbitEndpoint</a>&nbsp;remote)</code>
<div class="block">Verifies if local and remote Drillbit Endpoint has same control server by using address and control port
information.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;T extends com.google.protobuf.Internal.EnumLite,CC extends <a href="../../../../../org/apache/drill/exec/rpc/ClientConnection.html" title="interface in org.apache.drill.exec.rpc">ClientConnection</a>,HS extends com.google.protobuf.MessageLite,HR extends com.google.protobuf.MessageLite&gt;<br>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/rpc/BitRpcUtility.html#prepareSaslHandshake-org.apache.drill.exec.rpc.RpcConnectionHandler-java.util.List-CC-org.apache.drill.exec.rpc.BitConnectionConfig-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-org.apache.drill.exec.rpc.BasicClient-T-">prepareSaslHandshake</a></span>(<a href="../../../../../org/apache/drill/exec/rpc/RpcConnectionHandler.html" title="interface in org.apache.drill.exec.rpc">RpcConnectionHandler</a>&lt;CC&gt;&nbsp;connectionHandler,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;serverAuthMechanisms,
CC&nbsp;connection,
<a href="../../../../../org/apache/drill/exec/rpc/BitConnectionConfig.html" title="class in org.apache.drill.exec.rpc">BitConnectionConfig</a>&nbsp;config,
<a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto">CoordinationProtos.DrillbitEndpoint</a>&nbsp;endpoint,
<a href="../../../../../org/apache/drill/exec/rpc/BasicClient.html" title="class in org.apache.drill.exec.rpc">BasicClient</a>&lt;T,CC,HS,HR&gt;&nbsp;client,
T&nbsp;saslRpcType)</code>
<div class="block">Creates various instances needed to start the SASL handshake.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/rpc/BitRpcUtility.html#validateHandshake-int-java.util.List-int-org.apache.drill.exec.rpc.ClientConnection-org.apache.drill.exec.rpc.BitConnectionConfig-org.apache.drill.exec.rpc.BasicClient-">validateHandshake</a></span>(int&nbsp;handshakeRpcVersion,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;remoteAuthMechs,
int&nbsp;rpcVersion,
<a href="../../../../../org/apache/drill/exec/rpc/ClientConnection.html" title="interface in org.apache.drill.exec.rpc">ClientConnection</a>&nbsp;connection,
<a href="../../../../../org/apache/drill/exec/rpc/BitConnectionConfig.html" title="class in org.apache.drill.exec.rpc">BitConnectionConfig</a>&nbsp;config,
<a href="../../../../../org/apache/drill/exec/rpc/BasicClient.html" title="class in org.apache.drill.exec.rpc">BasicClient</a>&nbsp;client)</code>
<div class="block">Method to do validation on the handshake message received from server side.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="validateHandshake-int-java.util.List-int-org.apache.drill.exec.rpc.ClientConnection-org.apache.drill.exec.rpc.BitConnectionConfig-org.apache.drill.exec.rpc.BasicClient-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateHandshake</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;validateHandshake(int&nbsp;handshakeRpcVersion,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;remoteAuthMechs,
int&nbsp;rpcVersion,
<a href="../../../../../org/apache/drill/exec/rpc/ClientConnection.html" title="interface in org.apache.drill.exec.rpc">ClientConnection</a>&nbsp;connection,
<a href="../../../../../org/apache/drill/exec/rpc/BitConnectionConfig.html" title="class in org.apache.drill.exec.rpc">BitConnectionConfig</a>&nbsp;config,
<a href="../../../../../org/apache/drill/exec/rpc/BasicClient.html" title="class in org.apache.drill.exec.rpc">BasicClient</a>&nbsp;client)
throws <a href="../../../../../org/apache/drill/exec/rpc/RpcException.html" title="class in org.apache.drill.exec.rpc">RpcException</a></pre>
<div class="block">Method to do validation on the handshake message received from server side. Only used by BitClients NOT UserClient.
Verify if rpc version of handshake message matches the supported RpcVersion and also validates the
security configuration between client and server</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>handshakeRpcVersion</code> - - rpc version received in handshake message</dd>
<dd><code>remoteAuthMechs</code> - - authentication mechanisms supported by server</dd>
<dd><code>rpcVersion</code> - - supported rpc version on client</dd>
<dd><code>connection</code> - - client connection</dd>
<dd><code>config</code> - - client connectin config</dd>
<dd><code>client</code> - - data client or control client</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>- Immutable list of authentication mechanisms supported by server or null</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/rpc/RpcException.html" title="class in org.apache.drill.exec.rpc">RpcException</a></code> - - exception is thrown if rpc version or authentication configuration mismatch is found</dd>
</dl>
</li>
</ul>
<a name="prepareSaslHandshake-org.apache.drill.exec.rpc.RpcConnectionHandler-java.util.List-org.apache.drill.exec.rpc.ClientConnection-org.apache.drill.exec.rpc.BitConnectionConfig-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-org.apache.drill.exec.rpc.BasicClient-com.google.protobuf.Internal.EnumLite-">
<!-- -->
</a><a name="prepareSaslHandshake-org.apache.drill.exec.rpc.RpcConnectionHandler-java.util.List-CC-org.apache.drill.exec.rpc.BitConnectionConfig-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-org.apache.drill.exec.rpc.BasicClient-T-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepareSaslHandshake</h4>
<pre>public static&nbsp;&lt;T extends com.google.protobuf.Internal.EnumLite,CC extends <a href="../../../../../org/apache/drill/exec/rpc/ClientConnection.html" title="interface in org.apache.drill.exec.rpc">ClientConnection</a>,HS extends com.google.protobuf.MessageLite,HR extends com.google.protobuf.MessageLite&gt;&nbsp;void&nbsp;prepareSaslHandshake(<a href="../../../../../org/apache/drill/exec/rpc/RpcConnectionHandler.html" title="interface in org.apache.drill.exec.rpc">RpcConnectionHandler</a>&lt;CC&gt;&nbsp;connectionHandler,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;serverAuthMechanisms,
CC&nbsp;connection,
<a href="../../../../../org/apache/drill/exec/rpc/BitConnectionConfig.html" title="class in org.apache.drill.exec.rpc">BitConnectionConfig</a>&nbsp;config,
<a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto">CoordinationProtos.DrillbitEndpoint</a>&nbsp;endpoint,
<a href="../../../../../org/apache/drill/exec/rpc/BasicClient.html" title="class in org.apache.drill.exec.rpc">BasicClient</a>&lt;T,CC,HS,HR&gt;&nbsp;client,
T&nbsp;saslRpcType)</pre>
<div class="block">Creates various instances needed to start the SASL handshake. This is called from
<a href="../../../../../org/apache/drill/exec/rpc/BasicClient.html#prepareSaslHandshake-org.apache.drill.exec.rpc.RpcConnectionHandler-java.util.List-"><code>BasicClient.prepareSaslHandshake(RpcConnectionHandler, List)</code></a> only for
<a href="../../../../../org/apache/drill/exec/rpc/data/DataClient.html" title="class in org.apache.drill.exec.rpc.data"><code>DataClient</code></a> and <a href="../../../../../org/apache/drill/exec/rpc/control/ControlClient.html" title="class in org.apache.drill.exec.rpc.control"><code>ControlClient</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>connectionHandler</code> - - Connection handler used by client's to know about success/failure conditions.</dd>
<dd><code>serverAuthMechanisms</code> - - List of auth mechanisms configured on server side</dd>
<dd><code>connection</code> - - ClientConnection used for authentication</dd>
<dd><code>config</code> - - ClientConnection config</dd>
<dd><code>endpoint</code> - - Remote DrillbitEndpoint</dd>
<dd><code>client</code> - - Either of DataClient/ControlClient instance</dd>
<dd><code>saslRpcType</code> - - SASL_MESSAGE RpcType for Data and Control channel</dd>
</dl>
</li>
</ul>
<a name="isLocalControlServer-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isLocalControlServer</h4>
<pre>public static&nbsp;boolean&nbsp;isLocalControlServer(<a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto">CoordinationProtos.DrillbitEndpoint</a>&nbsp;local,
<a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto">CoordinationProtos.DrillbitEndpoint</a>&nbsp;remote)</pre>
<div class="block">Verifies if local and remote Drillbit Endpoint has same control server by using address and control port
information. This method is used instead of equals in <a href="../../../../../org/apache/drill/exec/proto/CoordinationProtos.DrillbitEndpoint.html" title="class in org.apache.drill.exec.proto"><code>CoordinationProtos.DrillbitEndpoint</code></a> because DrillbitEndpoint stores
state information in it.
For local Drillbit a reference is stored in <a href="../../../../../org/apache/drill/exec/server/DrillbitContext.html" title="class in org.apache.drill.exec.server"><code>DrillbitContext</code></a> as soon as
Drillbit is started in <a href="../../../../../org/apache/drill/exec/service/ServiceEngine.html#start--"><code>ServiceEngine.start()</code></a> with state as STARTUP, but
while planning minor fragment the assignment list is used from active list of Drillbits in which state for local
Drillbit will not be STARTUP</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>local</code> - - DrillbitEndpoint instance for local bit</dd>
<dd><code>remote</code> - - DrillbitEndpoint instance for remote bit</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if address and control port for local and remote are same.
false - otherwise</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BitRpcUtility.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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/drill/exec/rpc/BitConnectionConfig.html" title="class in org.apache.drill.exec.rpc"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/drill/exec/rpc/ChannelClosedException.html" title="class in org.apache.drill.exec.rpc"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/drill/exec/rpc/BitRpcUtility.html" target="_top">Frames</a></li>
<li><a href="BitRpcUtility.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 1970 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>