blob: 10af7aa0240d432b0b867f631428dd16c9704f71 [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>AuthenticationTokenSecretManager (Apache HBase 3.0.0-alpha-2-SNAPSHOT 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="AuthenticationTokenSecretManager (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance 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/AuthenticationTokenSecretManager.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/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" target="_top">Frames</a></li>
<li><a href="AuthenticationTokenSecretManager.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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.hadoop.hbase.security.token</div>
<h2 title="Class AuthenticationTokenSecretManager" class="title">Class AuthenticationTokenSecretManager</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.hadoop.security.token.SecretManager&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hbase.security.token.AuthenticationTokenSecretManager</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@InterfaceAudience.Private
public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.58">AuthenticationTokenSecretManager</a>
extends org.apache.hadoop.security.token.SecretManager&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</pre>
<div class="block">Manages an internal list of secret keys used to sign new authentication
tokens as they are generated, and to valid existing tokens used for
authentication.
<p>
A single instance of <code>AuthenticationTokenSecretManager</code> will be
running as the "leader" in a given HBase cluster. The leader is responsible
for periodically generating new secret keys, which are then distributed to
followers via ZooKeeper, and for expiring previously used secret keys that
are no longer needed (as any tokens using them have expired).
</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager.LeaderElector</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.security.token.SecretManager">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.security.token.SecretManager</h3>
<code>org.apache.hadoop.security.token.SecretManager.InvalidToken</code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#allKeys">allKeys</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKClusterId</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#clusterId">clusterId</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#currentKey">currentKey</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#idSeq">idSeq</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#keyUpdateInterval">keyUpdateInterval</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#lastKeyUpdate">lastKeyUpdate</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager.LeaderElector</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#leaderElector">leaderElector</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#name">name</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) static <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#NAME_PREFIX">NAME_PREFIX</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#tokenMaxLifetime">tokenMaxLifetime</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#tokenSeq">tokenSeq</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#zkWatcher">zkWatcher</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#AuthenticationTokenSecretManager-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-long-long-">AuthenticationTokenSecretManager</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
<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>&nbsp;serverName,
long&nbsp;keyUpdateInterval,
long&nbsp;tokenMaxLifetime)</code>
<div class="block">Create a new secret manager instance for generating keys.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance 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>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#addKey-org.apache.hadoop.hbase.security.token.AuthenticationKey-">addKey</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a>&nbsp;key)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#createIdentifier--">createIdentifier</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#createPassword-org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier-">createPassword</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&nbsp;identifier)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/javax/crypto/SecretKey.html?is-external=true" title="class or interface in javax.crypto">SecretKey</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#createSecretKey-byte:A-">createSecretKey</a></span>(byte[]&nbsp;raw)</code>&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#generateToken-java.lang.String-">generateToken</a></span>(<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>&nbsp;username)</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#getCurrentKey--">getCurrentKey</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#getKey-int-">getKey</a></span>(int&nbsp;keyId)</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>(package private) long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#getLastKeyUpdate--">getLastKeyUpdate</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#getName--">getName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>(package private) boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#isCurrentKeyRolled--">isCurrentKeyRolled</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#isMaster--">isMaster</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#removeExpiredKeys--">removeExpiredKeys</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>(package private) boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#removeKey-java.lang.Integer-">removeKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;keyId)</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#retrievePassword-org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier-">retrievePassword</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&nbsp;identifier)</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#rollCurrentKey--">rollCurrentKey</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#start--">start</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#stop--">stop</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.security.token.SecretManager">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.hadoop.security.token.SecretManager</h3>
<code>checkAvailableForRead, createPassword, generateSecret, retriableRetrievePassword</code></li>
</ul>
<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">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="NAME_PREFIX">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NAME_PREFIX</h4>
<pre>static final&nbsp;<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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.61">NAME_PREFIX</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.security.token.AuthenticationTokenSecretManager.NAME_PREFIX">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="LOG">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.63">LOG</a></pre>
</li>
</ul>
<a name="lastKeyUpdate">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lastKeyUpdate</h4>
<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.66">lastKeyUpdate</a></pre>
</li>
</ul>
<a name="keyUpdateInterval">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>keyUpdateInterval</h4>
<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.67">keyUpdateInterval</a></pre>
</li>
</ul>
<a name="tokenMaxLifetime">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tokenMaxLifetime</h4>
<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.68">tokenMaxLifetime</a></pre>
</li>
</ul>
<a name="zkWatcher">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>zkWatcher</h4>
<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.69">zkWatcher</a></pre>
</li>
</ul>
<a name="leaderElector">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leaderElector</h4>
<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager.LeaderElector</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.70">leaderElector</a></pre>
</li>
</ul>
<a name="clusterId">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clusterId</h4>
<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKClusterId</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.71">clusterId</a></pre>
</li>
</ul>
<a name="allKeys">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allKeys</h4>
<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.73">allKeys</a></pre>
</li>
</ul>
<a name="currentKey">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentKey</h4>
<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.74">currentKey</a></pre>
</li>
</ul>
<a name="idSeq">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>idSeq</h4>
<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.76">idSeq</a></pre>
</li>
</ul>
<a name="tokenSeq">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tokenSeq</h4>
<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.77">tokenSeq</a></pre>
</li>
</ul>
<a name="name">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>name</h4>
<pre>private&nbsp;<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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.78">name</a></pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AuthenticationTokenSecretManager-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-long-long-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AuthenticationTokenSecretManager</h4>
<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.91">AuthenticationTokenSecretManager</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
<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>&nbsp;serverName,
long&nbsp;keyUpdateInterval,
long&nbsp;tokenMaxLifetime)</pre>
<div class="block">Create a new secret manager instance for generating keys.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>conf</code> - Configuration to use</dd>
<dd><code>zk</code> - Connection to zookeeper for handling leader elections</dd>
<dd><code>keyUpdateInterval</code> - Time (in milliseconds) between rolling a new master key for token signing</dd>
<dd><code>tokenMaxLifetime</code> - Maximum age (in milliseconds) before a token expires and is no longer valid</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="start--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.102">start</a>()</pre>
</li>
</ul>
<a name="stop--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.113">stop</a>()</pre>
</li>
</ul>
<a name="isMaster--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isMaster</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.117">isMaster</a>()</pre>
</li>
</ul>
<a name="getName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre>public&nbsp;<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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.121">getName</a>()</pre>
</li>
</ul>
<a name="createPassword-org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createPassword</h4>
<pre>protected&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.126">createPassword</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&nbsp;identifier)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>createPassword</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.security.token.SecretManager&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="retrievePassword-org.apache.hadoop.hbase.security.token.AuthenticationTokenIdentifier-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>retrievePassword</h4>
<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.138">retrievePassword</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&nbsp;identifier)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>retrievePassword</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.security.token.SecretManager&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.hadoop.security.token.SecretManager.InvalidToken</code></dd>
</dl>
</li>
</ul>
<a name="createIdentifier--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createIdentifier</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.176">createIdentifier</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>createIdentifier</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.security.token.SecretManager&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="generateToken-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>generateToken</h4>
<pre>public&nbsp;org.apache.hadoop.security.token.Token&lt;<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenIdentifier</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.180">generateToken</a>(<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>&nbsp;username)</pre>
</li>
</ul>
<a name="addKey-org.apache.hadoop.hbase.security.token.AuthenticationKey-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addKey</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.190">addKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a>&nbsp;key)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="removeKey-java.lang.Integer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeKey</h4>
<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.209">removeKey</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;keyId)</pre>
</li>
</ul>
<a name="getCurrentKey--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentKey</h4>
<pre><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.224">getCurrentKey</a>()</pre>
</li>
</ul>
<a name="getKey-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKey</h4>
<pre><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationKey.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationKey</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.228">getKey</a>(int&nbsp;keyId)</pre>
</li>
</ul>
<a name="removeExpiredKeys--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeExpiredKeys</h4>
<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.232">removeExpiredKeys</a>()</pre>
</li>
</ul>
<a name="isCurrentKeyRolled--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCurrentKeyRolled</h4>
<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.250">isCurrentKeyRolled</a>()</pre>
</li>
</ul>
<a name="rollCurrentKey--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rollCurrentKey</h4>
<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.254">rollCurrentKey</a>()</pre>
</li>
</ul>
<a name="getLastKeyUpdate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLastKeyUpdate</h4>
<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.278">getLastKeyUpdate</a>()</pre>
</li>
</ul>
<a name="createSecretKey-byte:A-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createSecretKey</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/crypto/SecretKey.html?is-external=true" title="class or interface in javax.crypto">SecretKey</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#line.282">createSecretKey</a>(byte[]&nbsp;raw)</pre>
</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/AuthenticationTokenSecretManager.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/hadoop/hbase/security/token/AuthenticationTokenIdentifier.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.LeaderElector.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" target="_top">Frames</a></li>
<li><a href="AuthenticationTokenSecretManager.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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; 2007&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>