blob: 67445a26e70dc6c40ac8024d1df955ab0ae19f05 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>Glossary (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Glossary (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= 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="class-use/Glossary.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" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.util</a></div>
<h2 title="Interface Glossary" class="title">Interface Glossary</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public interface <span class="typeNameLabel">Glossary</span></pre>
<div class="block">A collection of terms.
<p>(This is not a real class. It is here so that terms which do not map to
classes can be referenced in Javadoc.)</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<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>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ABSTRACT_FACTORY_PATTERN">ABSTRACT_FACTORY_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Provide an interface for creating families of related or dependent
objects without specifying their concrete classes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ADAPTER_PATTERN">ADAPTER_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Convert the interface of a class into another interface clients expect.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BRIDGE_PATTERN">BRIDGE_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Decouple an abstraction from its implementation so that the two can very
independently.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BUILDER_PATTERN">BUILDER_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Separate the construction of a complex object from its representation so
that the same construction process can create different representations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CHAIN_OF_RESPONSIBILITY_PATTERN">CHAIN_OF_RESPONSIBILITY_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Avoid coupling the sender of a request to its receiver by giving more
than one object a chance to handle the request.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#COMMAND_PATTERN">COMMAND_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests, and support
undoable operations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#COMPOSITE_PATTERN">COMPOSITE_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Compose objects into tree structures to represent part-whole hierarchies.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECORATOR_PATTERN">DECORATOR_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Attach additional responsibilities to an object dynamically.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FACADE_PATTERN">FACADE_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Provide a unified interface to a set of interfaces in a subsystem.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FACTORY_METHOD_PATTERN">FACTORY_METHOD_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Define an interface for creating an object, but let subclasses decide
which class to instantiate.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FLYWEIGHT_PATTERN">FLYWEIGHT_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Use sharing to support large numbers of fine-grained objects efficiently.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#INTERPRETER_PATTERN">INTERPRETER_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Given a language, define a representation for its grammar along with an
interpreter that uses the representation to interpret sentences in the
language.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ITERATOR_PATTERN">ITERATOR_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Provide a way to access the elements of an aggregate object sequentially
without exposing its underlying representation.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MEDIATOR_PATTERN">MEDIATOR_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Define an object that encapsulates how a set of objects interact.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MEMENTO_PATTERN">MEMENTO_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Without violating encapsulation, capture and externalize an objects's
internal state so that the object can be restored to this state later.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#OBSERVER_PATTERN">OBSERVER_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Define a one-to-many dependency between objects so that when one object
changes state, all its dependents are notified and updated automatically.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PATTERN">PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">This table shows how and where the Gang of Four patterns are applied.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PROTOTYPE_PATTERN">PROTOTYPE_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Specify the kinds of objects to create using a prototypical instance, and
create new objects by copying this prototype.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PROXY_PATTERN">PROXY_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Provide a surrogate or placeholder for another object to control access
to it.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SINGLETON_PATTERN">SINGLETON_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Ensure a class only has one instance, and provide a global point of
access to it.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SQL2003">SQL2003</a></span></code></th>
<td class="colLast">
<div class="block">The official SQL:2003 standard (ISO/IEC 9075:2003), which is broken up
into numerous parts.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SQL92">SQL92</a></span></code></th>
<td class="colLast">
<div class="block">The official SQL-92 standard (ISO/IEC 9075:1992).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SQL99">SQL99</a></span></code></th>
<td class="colLast">
<div class="block">The official SQL:1999 standard (ISO/IEC 9075:1999), which is broken up
into five parts.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#STATE_PATTERN">STATE_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Allow an object to alter its behavior when its internal state changes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#STRATEGY_PATTERN">STRATEGY_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Define a family of algorithms, encapsulate each one, and make them
interchangeable.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TEMPLATE_METHOD_PATTERN">TEMPLATE_METHOD_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Define the skeleton of an algorithm in an operation, deferring some steps
to subclasses.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#VISITOR_PATTERN">VISITOR_PATTERN</a></span></code></th>
<td class="colLast">
<div class="block">Represent an operation to be performed on the elements of an object
structure.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> PATTERN</pre>
<div class="block"><p>This table shows how and where the Gang of Four patterns are applied.
The table uses information from the GoF book and from a course on
advanced object design taught by Craig Larman.</p>
<p>The patterns are in three groups depicting frequency of use. The
patterns in light green are used
<i>frequently</i>. Those in yellow have
<i>moderate</i> use. Patterns in red are
<i>infrequently</i> used. The GoF column gives the original Gang Of Four
category for the pattern. The Problem and Pattern columns are from
Craig's refinement of the type of problems they apply to and a refinement
of the original three pattern categories.</p>
<table style="border-spacing:0px;padding:3px;border:1px">
<caption>
<a href="http://www.onr.com/user/loeffler/java/references.html#gof">
<b>Gang of Four Patterns</b></a>
</caption>
<tr>
<!-- Headers for each column -->
<th>Pattern Name</th>
<th style="text-align:middle"><a href="#category">GOF Category</a></th>
<th style="text-align:middle">Problem</th>
<th style="text-align:middle">Pattern</th>
<th style="text-align:middle">Often Uses</th>
<th style="text-align:middle">Related To</th>
</tr>
<!-- Frequently used patterns have a lime background -->
<tr>
<td style="background-color:lime"><a href="#AbstractFactoryPattern">Abstract Factory</a>
</td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Instances</td>
<td>Class/Interface Definition plus Inheritance</td>
<td><a href="#FactoryMethodPattern">Factory Method</a><br>
<a href="#PrototypePattern">Prototype</a><br>
<a href="#SingletonPattern">Singleton</a> with <a href="#FacadePattern">
Facade</a></td>
<td><a href="#FactoryMethodPattern">Factory Method</a><br>
<a href="#PrototypePattern">Prototype</a><br>
<a href="#SingletonPattern">Singleton</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#ObjectAdapterPattern">Object Adapter</a>
</td>
<td style="background-color:silver">Structural</td>
<td>Interface</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#BridgePattern">Bridge</a><br>
<a href="#DecoratorPattern">Decorator</a><br>
<a href="#ProxyPattern">Proxy</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#CommandPattern">Command</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Organization or Communication of Work<br>
Action/Response</td>
<td>Behavior Objects</td>
<td><a href="#CompositePattern">Composite</a></td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#MementoPattern">Memento</a><br>
<a href="#PrototypePattern">Prototype</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#CompositePattern">Composite</a></td>
<td style="background-color:silver">Structural</td>
<td>Structural Decomposition of Objects or Subsystems</td>
<td>Wrap Many</td>
<td style="text-align:middle">-</td>
<td><a href="#DecoratorPattern">Decorator</a><br>
<a href="#IteratorPattern">Iterator</a><br>
<a href="#VisitorPattern">Visitor</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#DecoratorPattern">Decorator</a></td>
<td style="background-color:silver">Structural</td>
<td>Instance Behavior</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#ObjectAdapterPattern">Object Adapter</a><br>
<a href="#CompositePattern">Composite</a><br>
<a href="#StrategyPattern">Strategy</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#FacadePattern">Facade</a></td>
<td style="background-color:silver">Structural</td>
<td>Access Control<br>
&nbsp;
<hr>
<p>Structural Decomposition of Objects or Subsystems</td>
<td>Wrap Many</td>
<td><a href="#SingletonPattern">Singleton</a> with <a href="#AbstractFactoryPattern">Abstract Factory</a></td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#MediatorPattern">Mediator</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#FlyweightPattern">Flyweight</a></td>
<td style="background-color:silver">Structural</td>
<td>Shared Resource Handling</td>
<td>Object State or Values</td>
<td style="text-align:middle">-</td>
<td><a href="#SingletonPattern">Singleton</a><br>
<a href="#StatePattern">State</a><br>
<a href="#StrategyPattern">Strategy</a><br>
Shareable</td>
</tr>
<tr>
<td style="background-color:lime"><a href="#IteratorPattern">Iterator</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Traversal Algorithm<br>
&nbsp;
<hr>
<p>Access Control</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#FactoryMethodPattern">Factory Method</a><br>
<a href="#MementoPattern">Memento</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#ObserverPattern">Observer</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Event Response<br>
&nbsp;
<hr>
<p>Organization or Communication of Work</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#MediatorPattern">Mediator</a><br>
<a href="#SingletonPattern">Singleton</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#ProxyPattern">Proxy</a></td>
<td style="background-color:silver">Structural</td>
<td>Access Control</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#ObjectAdapterPattern">Adapter</a><br>
<a href="#DecoratorPattern">Decorator</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#SingletonPattern">Singleton</a></td>
<td style="background-color:teal;color:white">Creational</td>
<td>Access Control</td>
<td>Other</td>
<td style="text-align:middle">-</td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#BuilderPattern">Builder</a><br>
<a href="#PrototypePattern">Prototype</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#StatePattern">State</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Instance Behavior</td>
<td>Object State or Values</td>
<td><a href="#FlyweightPattern">Flyweight</a></td>
<td><a href="#FlyweightPattern">Flyweight</a><br>
<a href="#SingletonPattern">Singleton</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#StrategyPattern">Strategy</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm</td>
<td>Behavior Objects</td>
<td style="text-align:middle">-</td>
<td><a href="#FlyweightPattern">Flyweight</a><br>
<a href="#StatePattern">State</a><br>
<a href="#TemplateMethodPattern">Template Method</a></td>
</tr>
<tr>
<td style="background-color:lime"><a href="#TemplateMethodPattern">Template Method</a>
</td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm</td>
<td>Class or Interface Definition plus Inheritance</td>
<td style="text-align:middle">-</td>
<td><a href="#StrategyPattern">Strategy</a></td>
</tr>
<!-- Moderately use patterns have a yellow background -->
<tr>
<td style="background-color:yellow"><a href="#ClassAdapterPattern">Class Adapter</a>
</td>
<td style="background-color:silver">Structural</td>
<td>Interface</td>
<td>Class or Interface Definition plus Inheritance</td>
<td style="text-align:middle">-</td>
<td><a href="#BridgePattern">Bridge</a><br>
<a href="#DecoratorPattern">Decorator</a><br>
<a href="#ProxyPattern">Proxy</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#BridgePattern">Bridge</a></td>
<td style="background-color:silver">Structural</td>
<td>Implementation</td>
<td>Wrap One</td>
<td style="text-align:middle">-</td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#ClassAdapterPattern">Class Adaptor</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#BuilderPattern">Builder</a></td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Structures</td>
<td>Class or Interface Definition plus Inheritance</td>
<td style="text-align:middle">-</td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#CompositePattern">Composite</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#ChainOfResponsibilityPattern">Chain of
Responsibility</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm<br>
&nbsp;
<hr>
<p>Organization or Communication of Work</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#FactoryMethodPattern">Factory Method</a>
</td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Instances</td>
<td>Class or Interface Definition plus Inheritance</td>
<td><a href="#TemplateMethodPattern">Template Method</a></td>
<td><a href="#AbstractFactoryPattern">Abstract Factory</a><br>
<a href="#TemplateMethodPattern">Template Method</a><br>
<a href="#PrototypePattern">Prototype</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#MediatorPattern">Mediator</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Interaction between Objects<br>
&nbsp;
<hr>
<p>Organization or Communication of Work</td>
<td>Low Coupling</td>
<td style="text-align:middle">-</td>
<td><a href="#FacadePattern">Facade</a><br>
<a href="#ObserverPattern">Observer</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#PrototypePattern">Prototype</a></td>
<td style="background-color:teal;color:white">Creational</td>
<td>Creating Instances</td>
<td>Other</td>
<td style="text-align:middle">-</td>
<td><a href="#PrototypePattern">Prototype</a><br>
<a href="#CompositePattern">Composite</a><br>
<a href="#DecoratorPattern">Decorator</a></td>
</tr>
<tr>
<td style="background-color:yellow"><a href="#VisitorPattern">Visitor</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Single Algorithm</td>
<td>Behavior Objects</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#VisitorPattern">Visitor</a></td>
</tr>
<!-- Seldom used patterns have a red background -->
<tr>
<td style="background-color:red;color:white"><a href="#InterpreterPattern">
Interpreter</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Organization or Communication of Work</td>
<td>Other</td>
<td style="text-align:middle">-</td>
<td><a href="#CompositePattern">Composite</a><br>
<a href="#FlyweightPattern">Flyweight</a><br>
<a href="#IteratorPattern">Iterator</a><br>
<a href="#VisitorPattern">Visitor</a></td>
</tr>
<tr>
<td style="background-color:red;color:white"><a href="#MementoPattern">
Memento</a></td>
<td style="background-color:maroon;color:white">Behavioral</td>
<td>Instance Management</td>
<td>Object State or Values</td>
<td style="text-align:middle">-</td>
<td><a href="#CommandPattern">Command</a><br>
<a href="#IteratorPattern">Iterator</a></td>
</tr>
</table></div>
</li>
</ul>
<a id="ABSTRACT_FACTORY_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ABSTRACT_FACTORY_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> ABSTRACT_FACTORY_PATTERN</pre>
<div class="block">Provide an interface for creating families of related or dependent
objects without specifying their concrete classes. (See <a href="http://c2.com/cgi/wiki?AbstractFactoryPattern">GoF</a>.)</div>
</li>
</ul>
<a id="BUILDER_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>BUILDER_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> BUILDER_PATTERN</pre>
<div class="block">Separate the construction of a complex object from its representation so
that the same construction process can create different representations.
(See <a href="http://c2.com/cgi/wiki?BuilderPattern">GoF</a>.)</div>
</li>
</ul>
<a id="FACTORY_METHOD_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FACTORY_METHOD_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> FACTORY_METHOD_PATTERN</pre>
<div class="block">Define an interface for creating an object, but let subclasses decide
which class to instantiate. Lets a class defer instantiation to
subclasses. (See <a href="http://c2.com/cgi/wiki?FactoryMethodPattern">
GoF</a>.)</div>
</li>
</ul>
<a id="PROTOTYPE_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PROTOTYPE_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> PROTOTYPE_PATTERN</pre>
<div class="block">Specify the kinds of objects to create using a prototypical instance, and
create new objects by copying this prototype. (See <a href="http://c2.com/cgi/wiki?PrototypePattern">GoF</a>.)</div>
</li>
</ul>
<a id="SINGLETON_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SINGLETON_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> SINGLETON_PATTERN</pre>
<div class="block">Ensure a class only has one instance, and provide a global point of
access to it. (See <a href="http://c2.com/cgi/wiki?SingletonPattern">
GoF</a>.)
<p>Note that a common way of implementing a singleton, the so-called <a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html">
double-checked locking pattern</a>, is fatally flawed in Java. Don't use
it!</p></div>
</li>
</ul>
<a id="ADAPTER_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ADAPTER_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> ADAPTER_PATTERN</pre>
<div class="block">Convert the interface of a class into another interface clients expect.
Lets classes work together that couldn't otherwise because of
incompatible interfaces. (See <a href="http://c2.com/cgi/wiki?AdapterPattern">GoF</a>.)</div>
</li>
</ul>
<a id="BRIDGE_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>BRIDGE_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> BRIDGE_PATTERN</pre>
<div class="block">Decouple an abstraction from its implementation so that the two can very
independently. (See <a href="http://c2.com/cgi/wiki?BridgePattern">
GoF</a>.)</div>
</li>
</ul>
<a id="COMPOSITE_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>COMPOSITE_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> COMPOSITE_PATTERN</pre>
<div class="block">Compose objects into tree structures to represent part-whole hierarchies.
Lets clients treat individual objects and compositions of objects
uniformly. (See <a href="http://c2.com/cgi/wiki?CompositePattern">
GoF</a>.)</div>
</li>
</ul>
<a id="DECORATOR_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DECORATOR_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> DECORATOR_PATTERN</pre>
<div class="block">Attach additional responsibilities to an object dynamically. Provides a
flexible alternative to subclassing for extending functionality. (See <a href="http://c2.com/cgi/wiki?DecoratorPattern">GoF</a>.)</div>
</li>
</ul>
<a id="FACADE_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FACADE_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> FACADE_PATTERN</pre>
<div class="block">Provide a unified interface to a set of interfaces in a subsystem.
Defines a higher-level interface that makes the subsystem easier to use.
(See <a href="http://c2.com/cgi/wiki?FacadePattern">GoF</a>.)</div>
</li>
</ul>
<a id="FLYWEIGHT_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FLYWEIGHT_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> FLYWEIGHT_PATTERN</pre>
<div class="block">Use sharing to support large numbers of fine-grained objects efficiently.
(See <a href="http://c2.com/cgi/wiki?FlyweightPattern">GoF</a>.)</div>
</li>
</ul>
<a id="PROXY_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PROXY_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> PROXY_PATTERN</pre>
<div class="block">Provide a surrogate or placeholder for another object to control access
to it. (See <a href="http://c2.com/cgi/wiki?ProxyPattern">GoF</a>.)</div>
</li>
</ul>
<a id="CHAIN_OF_RESPONSIBILITY_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CHAIN_OF_RESPONSIBILITY_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> CHAIN_OF_RESPONSIBILITY_PATTERN</pre>
<div class="block">Avoid coupling the sender of a request to its receiver by giving more
than one object a chance to handle the request. Chain the receiving
objects and pass the request along the chain until an object handles it.
(See <a href="http://c2.com/cgi/wiki?ChainOfResponsibilityPattern">
GoF</a>.)</div>
</li>
</ul>
<a id="COMMAND_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>COMMAND_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> COMMAND_PATTERN</pre>
<div class="block">Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests, and support
undoable operations. (See <a href="http://c2.com/cgi/wiki?CommandPattern">GoF</a>.)</div>
</li>
</ul>
<a id="INTERPRETER_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INTERPRETER_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> INTERPRETER_PATTERN</pre>
<div class="block">Given a language, define a representation for its grammar along with an
interpreter that uses the representation to interpret sentences in the
language. (See <a href="http://c2.com/cgi/wiki?InterpreterPattern">
GoF</a>.)</div>
</li>
</ul>
<a id="ITERATOR_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ITERATOR_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> ITERATOR_PATTERN</pre>
<div class="block">Provide a way to access the elements of an aggregate object sequentially
without exposing its underlying representation. (See <a href="http://c2.com/cgi/wiki?IteratorPattern">GoF</a>.)</div>
</li>
</ul>
<a id="MEDIATOR_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MEDIATOR_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> MEDIATOR_PATTERN</pre>
<div class="block">Define an object that encapsulates how a set of objects interact.
Promotes loose coupling by keeping objects from referring to each other
explicitly, and it lets you vary their interaction independently. (See <a href="http://c2.com/cgi/wiki?MediatorPattern">GoF</a>.)</div>
</li>
</ul>
<a id="MEMENTO_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MEMENTO_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> MEMENTO_PATTERN</pre>
<div class="block">Without violating encapsulation, capture and externalize an objects's
internal state so that the object can be restored to this state later.
(See <a href="http://c2.com/cgi/wiki?MementoPattern">GoF</a>.)</div>
</li>
</ul>
<a id="OBSERVER_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>OBSERVER_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> OBSERVER_PATTERN</pre>
<div class="block">Define a one-to-many dependency between objects so that when one object
changes state, all its dependents are notified and updated automatically.
(See <a href="http://c2.com/cgi/wiki?ObserverPattern">GoF</a>.)</div>
</li>
</ul>
<a id="STATE_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STATE_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> STATE_PATTERN</pre>
<div class="block">Allow an object to alter its behavior when its internal state changes.
The object will appear to change its class. (See <a href="http://c2.com/cgi/wiki?StatePattern">GoF</a>.)</div>
</li>
</ul>
<a id="STRATEGY_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STRATEGY_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> STRATEGY_PATTERN</pre>
<div class="block">Define a family of algorithms, encapsulate each one, and make them
interchangeable. Lets the algorithm vary independently from clients that
use it. (See <a href="http://c2.com/cgi/wiki?StrategyPattern">GoF</a>.)</div>
</li>
</ul>
<a id="TEMPLATE_METHOD_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TEMPLATE_METHOD_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> TEMPLATE_METHOD_PATTERN</pre>
<div class="block">Define the skeleton of an algorithm in an operation, deferring some steps
to subclasses. Lets subclasses redefine certain steps of an algorithm
without changing the algorithm's structure. (See <a href="http://c2.com/cgi/wiki?TemplateMethodPattern">GoF</a>.)</div>
</li>
</ul>
<a id="VISITOR_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>VISITOR_PATTERN</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> VISITOR_PATTERN</pre>
<div class="block">Represent an operation to be performed on the elements of an object
structure. Lets you define a new operation without changing the classes
of the elements on which it operates. (See <a href="http://c2.com/cgi/wiki?VisitorPattern">GoF</a>.)</div>
</li>
</ul>
<a id="SQL92">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SQL92</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> SQL92</pre>
<div class="block">The official SQL-92 standard (ISO/IEC 9075:1992). To reference this
standard from methods that implement its rules, use the &#64;sql.92
custom block tag in Javadoc comments; for the tag body, use the format
<code>&lt;SectionId&gt; [ ItemType &lt;ItemId&gt; ]</code>, where
<ul>
<li><code>SectionId</code> is the numbered or named section in the table
of contents, e.g. "Section 4.18.9" or "Annex A"
<li><code>ItemType</code> is one of { Table, Syntax Rule, Access Rule,
General Rule, or Leveling Rule }
<li><code>ItemId</code> is a dotted path expression to the specific item
</ul>
<p>For example,
<blockquote><pre><code>&#64;sql.92 Section 11.4 Syntax Rule 7.c
</code></pre></blockquote>
<p>is a well-formed reference to the rule for the default character set to
use for column definitions of character type.
<p>Note that this tag is a block tag (like &#64;see) and cannot be used
inline.</div>
</li>
</ul>
<a id="SQL99">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SQL99</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> SQL99</pre>
<div class="block">The official SQL:1999 standard (ISO/IEC 9075:1999), which is broken up
into five parts. To reference this standard from methods that implement
its rules, use the &#64;sql.99 custom block tag in Javadoc comments; for
the tag body, use the format <code>&lt;PartId&gt; &lt;SectionId&gt; [
ItemType &lt;ItemId&gt; ]</code>, where
<ul>
<li><code>PartId</code> is the numbered part (up to Part 5)
<li><code>SectionId</code> is the numbered or named section in the part's
table of contents, e.g. "Section 4.18.9" or "Annex A"
<li><code>ItemType</code> is one of { Table, Syntax Rule, Access Rule,
General Rule, or Conformance Rule }
<li><code>ItemId</code> is a dotted path expression to the specific item
</ul>
<p>For example,
<blockquote><pre><code>&#64;sql.99 Part 2 Section 11.4 Syntax Rule 7.b
</code></pre></blockquote>
<p>is a well-formed reference to the rule for the default character set to
use for column definitions of character type.
<p>Note that this tag is a block tag (like &#64;see) and cannot be used
inline.</div>
</li>
</ul>
<a id="SQL2003">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SQL2003</h4>
<pre>static final&nbsp;<a href="Glossary.html" title="interface in org.apache.calcite.util">Glossary</a> SQL2003</pre>
<div class="block">The official SQL:2003 standard (ISO/IEC 9075:2003), which is broken up
into numerous parts. To reference this standard from methods that
implement its rules, use the &#64;sql.2003 custom block tag in Javadoc
comments; for the tag body, use the format <code>&lt;PartId&gt;
&lt;SectionId&gt; [ ItemType &lt;ItemId&gt; ]</code>, where
<ul>
<li><code>PartId</code> is the numbered part
<li><code>SectionId</code> is the numbered or named section in the part's
table of contents, e.g. "Section 4.11.2" or "Annex A"
<li><code>ItemType</code> is one of { Table, Syntax Rule, Access Rule,
General Rule, or Conformance Rule }
<li><code>ItemId</code> is a dotted path expression to the specific item
</ul>
<p>For example,
<blockquote><pre><code>&#64;sql.2003 Part 2 Section 11.4 Syntax Rule 10.b
</code></pre></blockquote>
<p>is a well-formed reference to the rule for the default character set to
use for column definitions of character type.
<p>Note that this tag is a block tag (like &#64;see) and cannot be used
inline.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<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="class-use/Glossary.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" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>