blob: 7aee68529d7c0737c208f528a0b5087abbf62086 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>DelegatingEnumerator (Apache Calcite calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.linq4j, class: DelegatingEnumerator">
<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.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../script-dir/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../script-dir/jquery-3.4.1.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.js"></script>
</head>
<body class="class-declaration">
<script type="text/javascript">var data = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flexBox">
<header role="banner" class="flexHeader">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</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 class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&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>
<div class="navListSearch"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="skipNav"><a id="skip.navbar.top">
<!-- -->
</a></div>
</nav>
</header>
<div class="flexContent">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.linq4j</a></div>
<h1 title="Class DelegatingEnumerator" class="title">Class DelegatingEnumerator&lt;T&gt;</h1>
</div>
<div class="contentContainer">
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a>
<div class="inheritance">org.apache.calcite.linq4j.DelegatingEnumerator&lt;T&gt;</div>
</div>
<section class="description">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - type of value to return, as passed from the delegate enumerator</dd>
</dl>
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang" class="externalLink">AutoCloseable</a></code>, <code><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;T&gt;</code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">DelegatingEnumerator&lt;T&gt;</span>
extends <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>
implements <a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;T&gt;</pre>
<div class="block">Simple enumerator that just delegates all calls to the passed enumerator.</div>
</section>
<section class="summary">
<ul class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<li class="blockList">
<section class="fieldSummary"><a id="field.summary">
<!-- -->
</a>
<h2>Field Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#delegate">delegate</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li class="blockList">
<section class="constructorSummary"><a id="constructor.summary">
<!-- -->
</a>
<h2>Constructor Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.linq4j.Enumerator)">DelegatingEnumerator</a></span>&#8203;(<a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;&nbsp;delegate)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li class="blockList">
<section class="methodSummary"><a id="method.summary">
<!-- -->
</a>
<h2>Method Summary</h2>
<div class="memberSummary">
<div role="tablist" aria-orientation="horizontal"><button role="tab" aria-selected="true" aria-controls="memberSummary_tabpanel" tabindex="0" onkeydown="switchTab(event)" id="t0" class="activeTableTab">All Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t2" class="tableTab" onclick="show(2);">Instance Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t4" class="tableTab" onclick="show(8);">Concrete Methods</button></div>
<div id="memberSummary_tabpanel" role="tabpanel">
<table aria-labelledby="t0">
<thead>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor" id="i0">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#close()">close</a></span>()</code></th>
<td class="colLast">
<div class="block">Closes this enumerable and releases resources.</div>
</td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code><a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#current()">current</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the current element in the collection.</div>
</td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#moveNext()">moveNext</a></span>()</code></th>
<td class="colLast">
<div class="block">Advances the enumerator to the next element of the collection.</div>
</td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reset()">reset</a></span>()</code></th>
<td class="colLast">
<div class="block">Sets the enumerator to its initial position, which is before the first
element in the collection.</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<li class="blockList">
<section class="fieldDetails"><a id="field.detail">
<!-- -->
</a>
<h2>Field Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="delegate">delegate</a></h3>
<div class="memberSignature"><span class="modifiers">protected final</span>&nbsp;<span class="returnType"><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;</span>&nbsp;<span class="memberName">delegate</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li class="blockList">
<section class="constructorDetails"><a id="constructor.detail">
<!-- -->
</a>
<h2>Constructor Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;(org.apache.calcite.linq4j.Enumerator)">DelegatingEnumerator</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="memberName">DelegatingEnumerator</span>&#8203;(<span class="arguments"><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;&nbsp;delegate)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li class="blockList">
<section class="methodDetails"><a id="method.detail">
<!-- -->
</a>
<h2>Method Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="current()">current</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a></span>&nbsp;<span class="memberName">current</span>()</div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Enumerator.html#current()">Enumerator</a></code></span></div>
<div class="block">Gets the current element in the collection.
<p>After an enumerator is created or after the <a href="Enumerator.html#reset()"><code>Enumerator.reset()</code></a> method is
called, the <a href="Enumerator.html#moveNext()"><code>Enumerator.moveNext()</code></a> method must be called to advance the
enumerator to the first element of the collection before reading the
value of the <code>current</code> property; otherwise, <code>current</code> is
undefined.
<p>This method also throws <a href="https://docs.oracle.com/javase/9/docs/api/java/util/NoSuchElementException.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>NoSuchElementException</code></a> if
the last call to <code>moveNext</code> returned <code>false</code>, which indicates
the end of the collection.
<p>This method does not move the position of the enumerator, and
consecutive calls to <code>current</code> return the same object until either
<code>moveNext</code> or <code>reset</code> is called.
<p>An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to <code>moveNext</code> or <code>reset</code> may,
at the discretion of the implementation, throw a
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/ConcurrentModificationException.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>ConcurrentModificationException</code></a>. If the collection is
modified between <code>moveNext</code> and <code>current</code>, <code>current</code>
returns the element that it is set to, even if the enumerator is already
invalidated.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Enumerator.html#current()">current</a></code>&nbsp;in interface&nbsp;<code><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Current element</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="moveNext()">moveNext</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">moveNext</span>()</div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Enumerator.html#moveNext()">Enumerator</a></code></span></div>
<div class="block">Advances the enumerator to the next element of the collection.
<p>After an enumerator is created or after the <code>reset</code> method is
called, an enumerator is positioned before the first element of the
collection, and the first call to the <code>moveNext</code> method moves the
enumerator over the first element of the collection.
<p>If <code>moveNext</code> passes the end of the collection, the enumerator
is positioned after the last element in the collection and
<code>moveNext</code> returns <code>false</code>. When the enumerator is at this
position, subsequent calls to <code>moveNext</code> also return <code>false</code>
until <code>#reset</code> is called.
<p>An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to <code>moveNext</code> or <a href="Enumerator.html#reset()"><code>Enumerator.reset()</code></a> may,
at the discretion of the implementation, throw a
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/ConcurrentModificationException.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>ConcurrentModificationException</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Enumerator.html#moveNext()">moveNext</a></code>&nbsp;in interface&nbsp;<code><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the enumerator was successfully advanced to the
next element; <code>false</code> if the enumerator has passed the end of
the collection</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="reset()">reset</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType">void</span>&nbsp;<span class="memberName">reset</span>()</div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Enumerator.html#reset()">Enumerator</a></code></span></div>
<div class="block">Sets the enumerator to its initial position, which is before the first
element in the collection.
<p>An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to <a href="Enumerator.html#moveNext()"><code>Enumerator.moveNext()</code></a> or <code>reset</code> may,
at the discretion of the implementation, throw a
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/ConcurrentModificationException.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>ConcurrentModificationException</code></a>.
<p>This method is optional; it may throw
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>UnsupportedOperationException</code></a>.
<p><b>Notes to Implementers</b>
<p>All calls to Reset must result in the same state for the enumerator.
The preferred implementation is to move the enumerator to the beginning
of the collection, before the first element. This invalidates the
enumerator if the collection has been modified since the enumerator was
created, which is consistent with <a href="Enumerator.html#moveNext()"><code>Enumerator.moveNext()</code></a> and
<a href="Enumerator.html#current()"><code>Enumerator.current()</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Enumerator.html#reset()">reset</a></code>&nbsp;in interface&nbsp;<code><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;</code></dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="close()">close</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType">void</span>&nbsp;<span class="memberName">close</span>()</div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Enumerator.html#close()">Enumerator</a></code></span></div>
<div class="block">Closes this enumerable and releases resources.
<p>This method is idempotent. Calling it multiple times has the same effect
as calling it once.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/AutoCloseable.html?is-external=true#close()" title="class or interface in java.lang" class="externalLink">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang" class="externalLink">AutoCloseable</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Enumerator.html#close()">close</a></code>&nbsp;in interface&nbsp;<code><a href="Enumerator.html" title="interface in org.apache.calcite.linq4j">Enumerator</a>&lt;<a href="DelegatingEnumerator.html" title="type parameter in DelegatingEnumerator">T</a>&gt;</code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
</div>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</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 class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&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>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &copy; 2012-2021 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>