blob: 07b4784ce30c3e90f806f5c4ec61be524d9b84f8 [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>LogFixture.LogFixtureBuilder (Drill : 1.20.0 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="LogFixture.LogFixtureBuilder (Drill : 1.20.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":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";
</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/LogFixture.LogFixtureBuilder.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/test/LogFixture.html" title="class in org.apache.drill.test"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/drill/test/LogFixture.LogSpec.html" title="class in org.apache.drill.test"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/drill/test/LogFixture.LogFixtureBuilder.html" target="_top">Frames</a></li>
<li><a href="LogFixture.LogFixtureBuilder.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><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>Field&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.drill.test</div>
<h2 title="Class LogFixture.LogFixtureBuilder" class="title">Class LogFixture.LogFixtureBuilder</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.test.LogFixture.LogFixtureBuilder</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../org/apache/drill/test/LogFixture.html" title="class in org.apache.drill.test">LogFixture</a></dd>
</dl>
<hr>
<br>
<pre>public static class <span class="typeNameLabel">LogFixture.LogFixtureBuilder</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">Builds the log settings to be used for a test. The log settings here
add to those specified in a <tt>logback.xml</tt> or
<tt>logback-test.xml</tt> file on your class path. In particular, if
the logging configuration already redirects the Drill logger to the
console, setting console logging here does nothing.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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/drill/test/LogFixture.LogFixtureBuilder.html#LogFixtureBuilder--">LogFixtureBuilder</a></span>()</code>&nbsp;</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="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><a href="../../../../org/apache/drill/test/LogFixture.html" title="class in org.apache.drill.test">LogFixture</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#build--">build</a></span>()</code>
<div class="block">Apply the log levels and output, then return a fixture to be used
in a try-with-resources block.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#disable--">disable</a></span>()</code>
<div class="block">Turns off all logging.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#logger-java.lang.Class-ch.qos.logback.classic.Level-">logger</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;loggerClass,
ch.qos.logback.classic.Level&nbsp;level)</code>
<div class="block">Set a specific logger to the given level.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#logger-java.lang.String-ch.qos.logback.classic.Level-">logger</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;loggerName,
ch.qos.logback.classic.Level&nbsp;level)</code>
<div class="block">Set a specific logger to the given level.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#rootLogger-ch.qos.logback.classic.Level-">rootLogger</a></span>(ch.qos.logback.classic.Level&nbsp;level)</code>
<div class="block">Set the desired log level on the root logger.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#toConsole--">toConsole</a></span>()</code>
<div class="block">Send all enabled logging to the console (if not already configured.) Some
Drill log configuration files send the root to the console (or file), but
the Drill loggers to Lilith.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#toConsole-ch.qos.logback.core.ConsoleAppender-java.lang.String-">toConsole</a></span>(ch.qos.logback.core.ConsoleAppender&lt;ch.qos.logback.classic.spi.ILoggingEvent&gt;&nbsp;appender,
<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;format)</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html#toConsole-java.lang.String-">toConsole</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;format)</code>
<div class="block">Send logging to the console using the defined format.</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="LogFixtureBuilder--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LogFixtureBuilder</h4>
<pre>public&nbsp;LogFixtureBuilder()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="toConsole--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toConsole</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;toConsole()</pre>
<div class="block">Send all enabled logging to the console (if not already configured.) Some
Drill log configuration files send the root to the console (or file), but
the Drill loggers to Lilith. In that case, Lilith "hides" the console
logger. Using this call adds a console logger to the Drill logger so that
output does, in fact, go to the console regardless of the configuration
in the Logback configuration file.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this builder</dd>
</dl>
</li>
</ul>
<a name="toConsole-ch.qos.logback.core.ConsoleAppender-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toConsole</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;toConsole(ch.qos.logback.core.ConsoleAppender&lt;ch.qos.logback.classic.spi.ILoggingEvent&gt;&nbsp;appender,
<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;format)</pre>
</li>
</ul>
<a name="toConsole-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toConsole</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;toConsole(<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;format)</pre>
<div class="block">Send logging to the console using the defined format.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>format</code> - valid Logback log format</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this builder</dd>
</dl>
</li>
</ul>
<a name="logger-java.lang.String-ch.qos.logback.classic.Level-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>logger</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;logger(<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;loggerName,
ch.qos.logback.classic.Level&nbsp;level)</pre>
<div class="block">Set a specific logger to the given level.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loggerName</code> - name of the logger (typically used for package-level
loggers)</dd>
<dd><code>level</code> - the desired Logback-defined level</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this builder</dd>
</dl>
</li>
</ul>
<a name="logger-java.lang.Class-ch.qos.logback.classic.Level-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>logger</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;logger(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;loggerClass,
ch.qos.logback.classic.Level&nbsp;level)</pre>
<div class="block">Set a specific logger to the given level.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loggerClass</code> - class that defines the logger (typically used for
class-specific loggers)</dd>
<dd><code>level</code> - the desired Logback-defined level</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this builder</dd>
</dl>
</li>
</ul>
<a name="disable--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>disable</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;disable()</pre>
<div class="block">Turns off all logging. If called first, you can set disable as your
general policy, then turn back on loggers selectively for those
of interest.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this builder</dd>
</dl>
</li>
</ul>
<a name="rootLogger-ch.qos.logback.classic.Level-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rootLogger</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.LogFixtureBuilder.html" title="class in org.apache.drill.test">LogFixture.LogFixtureBuilder</a>&nbsp;rootLogger(ch.qos.logback.classic.Level&nbsp;level)</pre>
<div class="block">Set the desired log level on the root logger.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>level</code> - the desired Logback log level</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this builder</dd>
</dl>
</li>
</ul>
<a name="build--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>build</h4>
<pre>public&nbsp;<a href="../../../../org/apache/drill/test/LogFixture.html" title="class in org.apache.drill.test">LogFixture</a>&nbsp;build()</pre>
<div class="block">Apply the log levels and output, then return a fixture to be used
in a try-with-resources block. The fixture automatically restores
the original configuration on completion of the try block.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the log fixture</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/LogFixture.LogFixtureBuilder.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/test/LogFixture.html" title="class in org.apache.drill.test"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/drill/test/LogFixture.LogSpec.html" title="class in org.apache.drill.test"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/drill/test/LogFixture.LogFixtureBuilder.html" target="_top">Frames</a></li>
<li><a href="LogFixture.LogFixtureBuilder.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><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>Field&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; 2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>