blob: dfa099abb44493249b8ba5290007057f7820029b [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>VariantMetadata (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="VariantMetadata (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/VariantMetadata.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/record/metadata/VariantColumnMetadata.html" title="class in org.apache.drill.exec.record.metadata"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantSchema.html" title="class in org.apache.drill.exec.record.metadata"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/record/metadata/VariantMetadata.html" target="_top">Frames</a></li>
<li><a href="VariantMetadata.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.record.metadata</div>
<h2 title="Interface VariantMetadata" class="title">Interface VariantMetadata</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantSchema.html" title="class in org.apache.drill.exec.record.metadata">VariantSchema</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">VariantMetadata</span></pre>
<div class="block">Describes the contents of a list or union field. Such fields are,
in effect, a map from minor type to vector, represented here as
a map from minor type to column metadata. The child columns used here
are a useful fiction. The column name is made up to be the same as
the name of the type.
<p>
In Drill, a union and a list are related, but distinct. In metadata,
a union is an optional variant while a list is a variant array.
This makes the representation simpler
and should be a good-enough approximation of reality.
<p>
Variants can contain three kinds of children:
<ul>
<li>Nullable (optional) scalar vectors.</li>
<li>Non-nullable (required) map.</li>
<li>Nullable (optional) list.</li>
</ul>
<p>
A union cannot contain a repeated vector. Instead, the
union can contain a list. Note also that maps can never be optional,
so they are required in the union, even though the map is, in effect,
optional (the map is effectively null if it is not used for a give
row.) Yes, this is confusing, but it is how the vectors are
implemented (for now.)
<p>
A list type is modeled here as a repeated union type. This is not
entirely accurate, but it is another useful fiction. (In actual
implementation, a list is either a single type, or a array of
unions. This detail is abstracted away here.)
<p>
In vector implementation, unions declare their member types, but
lists don't. Here, both types declare their member types. (Another
useful fiction.)
<p>
A union or list can contain a map. Maps have structure. To support this,
the metadata allows adding a map column that contains the map structure.
Such metadata exist only in this system; it is not easily accessible in
the vector implementation.
<p>
A union or list can contain a list (though not a union.) As described
here, lists can have structure, and so, like maps, can be built using
a column that provides that structure.
<p>
Note that the Drill <a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html#UNION"><code>UNION</code></a> and
<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html#LIST"><code>LIST</code></a> implementations are considered experimental
and are not generally enabled. As a result, this metadata schema must
also be considered experimental and subject to change.</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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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/drill/exec/record/metadata/VariantMetadata.html#addType-org.apache.drill.exec.record.metadata.ColumnMetadata-">addType</a></span>(<a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&nbsp;col)</code>
<div class="block">Add a column for any supported type to the variant.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#addType-org.apache.drill.common.types.TypeProtos.MinorType-">addType</a></span>(<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;type)</code>
<div class="block">Add any supported type to the variant.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#becomeSimple--">becomeSimple</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#hasType-org.apache.drill.common.types.TypeProtos.MinorType-">hasType</a></span>(<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;type)</code>
<div class="block">Determine if the given type is a member of the variant.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#isSimple--">isSimple</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#isSingleType--">isSingleType</a></span>()</code>
<div class="block">A list is defined as a list of variants at the metadata layer.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#listSubtype--">listSubtype</a></span>()</code>
<div class="block">Lists are odd creatures: they contain a union if they have more
than one subtype, but are like a nullable repeated type if they
contain only one type.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#member-org.apache.drill.common.types.TypeProtos.MinorType-">member</a></span>(<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;type)</code>
<div class="block">Retrieve the virtual column for a given type.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#members--">members</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#parent--">parent</a></span>()</code>
<div class="block">Return the column that defines this variant structure</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#size--">size</a></span>()</code>
<div class="block">Returns the number of types in the variant.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#types--">types</a></span>()</code>
<div class="block">Returns the list of types which are members of this variant.</div>
</td>
</tr>
</table>
</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="addType-org.apache.drill.common.types.TypeProtos.MinorType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addType</h4>
<pre><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&nbsp;addType(<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;type)</pre>
<div class="block">Add any supported type to the variant.
<p>
At present, the union
vector does not support the decimal types. This class does not
reject such types; but they will cause a runtime exception when
code asks the union vector for these types.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type to add</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the "virtual" column for that type</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the type has already been
added</dd>
</dl>
</li>
</ul>
<a name="addType-org.apache.drill.exec.record.metadata.ColumnMetadata-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addType</h4>
<pre>void&nbsp;addType(<a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&nbsp;col)</pre>
<div class="block">Add a column for any supported type to the variant.
Use this to add structure to a list or map member.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>col</code> - column to add. The column must have the correct
mode. The column's type is used as the type key</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the type has already been
added, or if the mode is wrong</dd>
</dl>
</li>
</ul>
<a name="size--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre>int&nbsp;size()</pre>
<div class="block">Returns the number of types in the variant.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of types in the variant</dd>
</dl>
</li>
</ul>
<a name="hasType-org.apache.drill.common.types.TypeProtos.MinorType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasType</h4>
<pre>boolean&nbsp;hasType(<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;type)</pre>
<div class="block">Determine if the given type is a member of the variant.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><tt>true</tt> if the type is a member,
<tt>false</tt> if not</dd>
</dl>
</li>
</ul>
<a name="types--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>types</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&gt;&nbsp;types()</pre>
<div class="block">Returns the list of types which are members of this variant.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of types</dd>
</dl>
</li>
</ul>
<a name="members--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>members</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&gt;&nbsp;members()</pre>
</li>
</ul>
<a name="member-org.apache.drill.common.types.TypeProtos.MinorType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>member</h4>
<pre><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&nbsp;member(<a href="../../../../../../org/apache/drill/common/types/TypeProtos.MinorType.html" title="enum in org.apache.drill.common.types">TypeProtos.MinorType</a>&nbsp;type)</pre>
<div class="block">Retrieve the virtual column for a given type.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - the type key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the virtual column, or <tt>null</tt> if the type
is not a member of the variant</dd>
</dl>
</li>
</ul>
<a name="parent--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parent</h4>
<pre><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&nbsp;parent()</pre>
<div class="block">Return the column that defines this variant structure</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the column that returns this variant structure
from its <a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html#variantSchema--"><code>variantSchema()</code></a>
method</dd>
</dl>
</li>
</ul>
<a name="isSingleType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSingleType</h4>
<pre>boolean&nbsp;isSingleType()</pre>
<div class="block">A list is defined as a list of variants at the metadata layer.
But, in implementation, a list will do special processing if the
variant (union) contains only one type.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><tt>true</tt> if this variant contains only one type,
</tt>false</tt> if the variant contains 0, 2 or more types</dd>
</dl>
</li>
</ul>
<a name="listSubtype--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>listSubtype</h4>
<pre><a href="../../../../../../org/apache/drill/exec/record/metadata/ColumnMetadata.html" title="interface in org.apache.drill.exec.record.metadata">ColumnMetadata</a>&nbsp;listSubtype()</pre>
<div class="block">Lists are odd creatures: they contain a union if they have more
than one subtype, but are like a nullable repeated type if they
contain only one type. This method returns the type of the array:
either the single type (if <a href="../../../../../../org/apache/drill/exec/record/metadata/VariantMetadata.html#isSingleType--"><code>isSingleType()</code></a> is <tt>true</tt>)
or a reference to the synthetic union column nested inside the
list.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the metadata for the implicit column within the list</dd>
</dl>
</li>
</ul>
<a name="becomeSimple--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>becomeSimple</h4>
<pre>void&nbsp;becomeSimple()</pre>
</li>
</ul>
<a name="isSimple--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isSimple</h4>
<pre>boolean&nbsp;isSimple()</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/VariantMetadata.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/record/metadata/VariantColumnMetadata.html" title="class in org.apache.drill.exec.record.metadata"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/drill/exec/record/metadata/VariantSchema.html" title="class in org.apache.drill.exec.record.metadata"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/record/metadata/VariantMetadata.html" target="_top">Frames</a></li>
<li><a href="VariantMetadata.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>