This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/juneau-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new b439a2422 Update website
b439a2422 is described below

commit b439a242237506854de04970c234e1ac4505e341
Author: JamesBognar <[email protected]>
AuthorDate: Fri Jun 24 04:26:04 2022 -0400

    Update website
---
 content/index.html         |  11 -
 templates/components.html  | 232 -------------------
 templates/config.html      | 169 --------------
 templates/dto.html         | 268 ----------------------
 templates/examples.html    | 131 -----------
 templates/index.html       |  11 -
 templates/marshall.html    | 557 ---------------------------------------------
 templates/petstore.html    | 555 --------------------------------------------
 templates/rest-client.html | 115 ----------
 templates/rest-server.html | 450 ------------------------------------
 10 files changed, 2499 deletions(-)

diff --git a/content/index.html b/content/index.html
index 8467adff6..2131a9d17 100644
--- a/content/index.html
+++ b/content/index.html
@@ -195,17 +195,6 @@
        <nav>
                <ul>
                        <li><a href='about.html' id='about' onclick="return 
select(this)">About</a>
-                       <li><a href='components.html' id='components' 
onclick="return select(this)">Components</a>
-                               <ul>
-                                       <li><a href='marshall.html' 
id='marshall' onclick="return select(this)">marshall</a>
-                                       <li><a href='dto.html' id='dto' 
onclick="return select(this)">dto</a>
-                                       <li><a href='config.html' id='config' 
onclick="return select(this)">config</a>
-                                       <li><a href='rest-server.html' 
id='rest-server' onclick="return select(this)">rest-server</a>
-                                       <li><a href='rest-client.html' 
id='rest-client' onclick="return select(this)">rest-client</a>
-                                       <li><a href='examples.html' 
id='examples' onclick="return select(this)">examples</a>
-                                       <li><a href='petstore.html' 
id='petstore' onclick="return select(this)">petstore</a>
-                               </ul>
-                       </li>
                        <li><a href='https://github.com/apache/juneau' 
target='_blank'>GitHub</a></li>
                        <li><a href='https://github.com/apache/juneau/wiki' 
target='_blank'>Wiki</a></li>
                        <li><a 
href='https://juneau.apache.org/site/apidocs-9.0-B1/overview-summary.html#overview.description'
 target='_blank'>Documentation</a></li>
diff --git a/templates/components.html b/templates/components.html
deleted file mode 100644
index 09e5721c8..000000000
--- a/templates/components.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-       <!-- 
===========================================================================================================
 -->
-       <!-- === COMPONENTS 
============================================================================================
 -->
-       <!-- 
===========================================================================================================
 -->
-       
-       <h5 class='toc'>Components</h5>
-       <div class='topic'>
-               <p>
-                       We've strived to keep prerequisites to an absolute 
minimum in order to make adoption as easy as possible.
-               </p>
-               <p>
-                       The library consists of the following artifacts found 
in the Maven group <code>"org.apache.juneau"</code>:
-               </p>
-               <table class='styled w800'>
-                       <tr>
-                               <th>Category</th><th>Maven 
Artifacts</th><th>Description</th><th>Prereqs</th>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td rowspan="5" 
style='text-align:center;font-weight:bold;padding:20px;' 
class='code'>juneau-core</td>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall'>juneau-marshall</a></td>
-                               <td>Serializers and parsers for:
-                                       <ul style='margin:0px 10px;'>
-                                               <li>JSON
-                                               <li>XML
-                                               <li>HTML
-                                               <li>UON
-                                               <li>URL-Encoding
-                                               <li>MessagePack
-                                               <li>OpenAPI
-                                               <li>SOAP/XML
-                                               <li>CSV
-                                               <li>BSON (coming soon)
-                                               <li>YAML (coming soon)
-                                               <li>Protobuf (coming soon)
-                                               <li>Amazon Ion (coming soon)
-                                       </ul>
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8
-                                       </ul>
-                               </td>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
-                               <td>
-                                       Serializers and parsers for:
-                                       <ul style='margin:0px 10px;'>
-                                               <li>RDF/XML
-                                               <li>RDF/XML-Abbrev 
-                                               <li>N-Triple
-                                               <li>Turtle
-                                               <li>N3
-                                       </ul>                           
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8
-                                               <li>Apache Jena 2.7.1
-                                       </ul>
-                               </td>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-dto'>juneau-dto</a></td>
-                               <td>
-                                       Data Transfer Objects for:
-                                       <ul style='margin:0px 10px;'>
-                                               <li>HTML5
-                                               <li>Atom
-                                               <li>Cognos
-                                               <li>JSON-Schema
-                                               <li>Swagger 2.0
-                                       </ul>                           
-                               </td>
-                               <td><ul style='margin:0px 10px;'><li>Java 
8+</li></ul></td>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-svl'>juneau-svl</a></td>
-                               <td>
-                                       Simple Variable Language API
-                               </td>
-                               <td><ul style='margin:0px 10px;'><li>Java 
8+</li></ul></td>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-config'>juneau-config</a></td>
-                               <td>
-                                       Configuration file API
-                               </td>
-                               <td><ul style='margin:0px 10px;'><li>Java 
8+</li></ul></td>
-                       </tr>
-                       <tr class='light bb'>
-                               <td rowspan="4" 
style='text-align:center;font-weight:bold;padding:20px;' 
class='code'>juneau-rest</td>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-server'>juneau-rest-server</a></td>
-                               <td>
-                                       REST Servlet API
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8
-                                               <li>Servlet 3.1+
-                                       </ul>
-                               </td>
-                       </tr>
-                       <tr class='light bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
-                               <td>
-                                       Spring Boot integration support
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8+
-                                               <li>Spring Boot 2.0+
-                                       </ul>
-                               </td>
-                       </tr>
-                       <tr class='light bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
-                               <td>
-                                       JAX-RS support
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8+
-                                               <li>JAX-RS 2.0
-                                       </ul>
-                               </td>
-                       </tr>
-                       <tr class='light bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-client'>juneau-rest-client</a></td>
-                               <td>
-                                       REST Client API
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8+
-                                               <li>Apache HttpClient 4.5+
-                                       </ul>
-                               </td>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td rowspan="2" 
style='text-align:center;font-weight:bold;padding:20px;' 
class='code'>juneau-examples</td>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-examples-core'>juneau-examples-core</a></td>
-                               <td>
-                                       Core code examples
-                               </td>
-                               <td></td>
-                       </tr>
-                       <tr class='dark bb'>
-                               <td class='code'><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-examples-rest'>juneau-examples-rest</a></td>
-                               <td>
-                                       REST code examples
-                               </td>
-                               <td></td>
-                       </tr>
-                       <tr class='light bb'>
-                               <td rowspan="1" 
style='text-align:center;font-weight:bold;padding:20px;' 
class='code'>juneau-all</td>
-                               <td class='code'><code>juneau-all</code></td>
-                               <td>
-                                       Combination of the following:
-                                       <ul style='margin:0px 10px;'>
-                                               <li>juneau-marshall
-                                               <li>juneau-dto
-                                               <li>juneau-svl
-                                               <li>juneau-config
-                                               <li>juneau-rest-server
-                                               <li>juneau-rest-client
-                                       </ul>
-                               </td>
-                               <td>
-                                       <ul style='margin:0px 10px;'>
-                                               <li>Java 8+
-                                               <li>Servlet 3.1+
-                                               <li>Apache HttpClient 4.5+
-                                       </ul>
-                               </td>
-                       </tr>
-               </table>
-               
-               <p>
-                       The current version of Juneau is <code>{@property 
juneauVersion}</code>.
-                       The easiest way to pull in the library is through the 
following maven dependency:
-               </p>
-               <p class='bcode w800'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-all<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-               <p>
-                       If you would like to work with the bleeding-edge code, 
you can access the <code>{@property juneauVersionNext}-SNAPSHOT</code>
-                       version through the following repository:
-               </p>
-               <p class='bcode w800'>
-       <xt>&lt;pluginRepositories&gt;
-               &lt;pluginRepository&gt;
-                       &lt;id&gt;<xv>apache.snapshots</xv>&lt;/id&gt;
-                       
&lt;url&gt;<xv>http://repository.apache.org/snapshots/</xv>&lt;/url&gt;
-                       &lt;snapshots&gt;
-                               &lt;enabled&gt;<xv>true</xv>&lt;/enabled&gt;
-                               
&lt;updatePolicy&gt;<xv>always</xv>&lt;/updatePolicy&gt;
-                       &lt;/snapshots&gt;
-               &lt;/pluginRepository&gt;
-       &lt;/pluginRepositories&gt;</xt>
-               </p>    
-               <p>
-                       Each of the components are also packaged as stand-alone 
OSGi modules.
-               </p>
-       </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/templates/config.html b/templates/config.html
deleted file mode 100644
index 5a6bf7223..000000000
--- a/templates/config.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-CONFIG 
=====================================================================================
 -->
-       <!-- 
=======================================================================================================
 -->
-       
-       <h5 class='toc' id='juneau-config'>juneau-config</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-config<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-config-{@property juneauVersion}.jar 
-               </p>    
-       
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.config_{@property juneauVersion}.jar 
-               </p>    
-
-               <p>
-                       The <code>juneau-config</code> module defines an API 
allows you to interact with INI-style configuration files using POJOs.  
-                       It builds upon the marshalling and SVL APIs to provide 
sophisticated dynamic configuration files.
-               <p>
-               <p class='bcode w800'>
-       <cc>#--------------------------</cc>
-       <cc># My section</cc>
-       <cc>#--------------------------</cc>
-       <cs>[MySection]</cs>
-       
-       <cc># An integer</cc>
-       <ck>anInt</ck> = <cv>1</cv> 
-       
-       <cc># A boolean</cc>
-       <ck>aBoolean</ck> = <cv>true</cv>
-       
-       <cc># An int array</cc>
-       <ck>anIntArray</ck> = <cv>[1,2,3]</cv>
-       
-       <cc># A POJO that can be converted from a String</cc>
-       <ck>aURL</ck> = <cv>http://foo </cv>
-       
-       <cc># A POJO that can be converted from JSON</cc>
-       <ck>aBean</ck> = <cv>{foo:'bar',baz:123}</cv>
-       
-       <cc># A system property</cc>
-       <ck>locale</ck> = <cv>$S{java.locale, en_US}</cv>
-       
-       <cc># An environment variable</cc>
-       <ck>path</ck> = <cv>$E{PATH, unknown}</cv>
-       
-       <cc># A manifest file entry</cc>
-       <ck>mainClass</ck> = <cv>$MF{Main-Class}</cv>
-       
-       <cc># Another value in this config file</cc>
-       <ck>sameAsAnInt</ck> = <cv>$C{MySection/anInt}</cv>
-       
-       <cc># A command-line argument in the form "myarg=foo"</cc>
-       <ck>myArg</ck> = <cv>$ARG{myarg}</cv>
-       
-       <cc># The first command-line argument</cc>
-       <ck>firstArg</ck> = <cv>$ARG{0}</cv>
-
-       <cc># Look for system property, or env var if that doesn't exist, or 
command-line arg if that doesn't exist.</cc>
-       <ck>nested</ck> = <cv>$S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}}</cv>
-
-       <cc># A POJO with embedded variables</cc>
-       <ck>aBean2</ck> = <cv>{foo:'$ARG{0}',baz:$C{MySection/anInt}}</cv>
-               </p>
-               <p>
-                       The beauty of these files is that they're easy to read 
and modify, yet sophisticated enough to allow you to
-                       store arbitrary-complex data structures and retrieve 
them as simple values or complex POJOs:
-               </p>
-               <p class='bcode w800'>
-       <jc>// Load our config file</jc>
-       Config <jv>config</jv> = 
Config.<jsm>create</jsm>().name(<js>"MyIniFile.cfg"</js>).build();
-       
-       <jk>int</jk> <jv>anInt</jv> = 
<jv>config</jv>.getInt(<js>"MySection/anInt"</js>); 
-       <jk>boolean</jk> <jv>aBoolean</jv> = 
<jv>config</jv>.getBoolean(<js>"MySection/aBoolean"</js>); 
-       <jk>int</jk>[] <jv>anIntArray</jv> = 
<jv>config</jv>.getObject(<js>"MySection/anIntArray"</js>, 
<jk>int</jk>[].<jk>class</jk>); 
-       URL <jv>aURL</jv> = 
<jv>config</jv>.getObject(<js>"MySection/aURL"</js>, URL.<jk>class</jk>); 
-       MyBean <jv>aBean</jv> = 
<jv>config</jv>.getObject(<js>"MySection/aBean"</js>, MyBean.<jk>class</jk>); 
-       Locale <jv>locale</jv> = 
<jv>config</jv>.getObject(<js>"MySection/locale"</js>, Locale.<jk>class</jk>); 
-       String <jv>path</jv> = 
<jv>config</jv>.getString(<js>"MySection/path"</js>); 
-       String <jv>mainClass</jv> = 
<jv>config</jv>.getString(<js>"MySection/mainClass"</js>); 
-       <jk>int</jk> <jv>sameAsAnInt</jv> = 
<jv>config</jv>.getInt(<js>"MySection/sameAsAnInt"</js>); 
-       String <jv>myArg</jv> = 
<jv>config</jv>.getString(<js>"MySection/myArg"</js>); 
-       String <jv>firstArg</jv> = 
<jv>config</jv>.getString(<js>"MySection/firstArg"</js>); 
-               </p>
-               <p>
-                       One of the more powerful aspects of the REST servlets 
is that you can pull values directly from
-                       config files by using the <js>"$C"</js> variable in 
annotations.
-                       For example, the HTML stylesheet for your REST servlet 
can be defined in a config file like so:
-               </p>
-               <p class='bcode w800'>
-       <ja>@Rest</ja>(
-               path=<js>"/myResource"</js>,
-               config=<js>"$S{my.config.file}"</js>  <jc>// Path to config 
file (here pulled from a system property)</jc>
-       )
-       <ja>@HtmlDocConfig</ja>(
-               stylesheet=<js>"$C{MyResourceSettings/myStylesheet}"</js>  
<jc>// Stylesheet location pulled from config file.</jc>
-       )
-       <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
-               </p>
-               <p>
-                       Other features:
-               </p>
-               <ul class='spaced-list'>
-                       <li>
-                               Support for storing and retrieving any of the 
following data types:
-                               <ul>
-                                       <li>Primitives
-                                       <li>POJOs
-                                       <li>Beans
-                                       <li>Arrays, Maps, and Collections of 
anything
-                                       <li>Binary data
-                               </ul>
-                       <li>
-                               A listener API that allows you to, for example, 
reinitialize your REST resource if the config file 
-                               changes, or listen for changes to particular 
sections or values.
-                       <li>
-                               Filesystem watcher integration allows configs 
to reflect changes on the file system in real-time.
-                       <li>
-                               Config files can be modified through the Config 
class (e.g. add/remove/modify sections and keys, add/remove comments and 
whitespace, etc...).
-                               <br>When using these APIs, you <b>DO NOT</b> 
lose formatting in your existing configuration file.
-                               All existing whitespace and comments are 
preserved for you!
-                       <li>
-                               Support for encoding of values for added 
security.
-                       <li>
-                               Config sections can be used to directly 
populate beans.
-                       <li>
-                               Config sections can be accessed and manipulated 
through Java interface proxies.
-                       <li>
-                               An extensible storage API allows you to write 
your own config storage location for files such as databases or the cloud.
-               </ul>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-config'>juneau-config</a>
-               </ul>
-       </div>  
-</body>
-</html>
\ No newline at end of file
diff --git a/templates/dto.html b/templates/dto.html
deleted file mode 100644
index d5cf8dab9..000000000
--- a/templates/dto.html
+++ /dev/null
@@ -1,268 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-DTO 
========================================================================================
 -->
-       <!-- 
=======================================================================================================
 -->
-       
-       <h5 class='toc' id='juneau-dto'>juneau-dto</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-dto<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-dto-{@property juneauVersion}.jar 
-               </p>    
-       
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.dto_{@property juneauVersion}.jar 
-               </p>    
-
-               <p>
-                       Data Transfer Object libraries are provided for a 
variety of languages that allow you to serialize commonly-used
-                       documents.  
-               </p>
-               <ul>
-                       <li>HTML5
-                       <li>Atom
-                       <li>Cognos
-                       <li>JSON-Schema
-                       <li>Swagger 2.0
-               </ul>                           
-               <p>     
-                       HTML5 documents and fragments can be constructed using 
the HTML5 DTOs and HTML or XML serializers:
-               </p>
-               <p class='bcode w800'>
-       <jk>import static</jk> org.apache.juneau.dto.html5.HtmlBuilder.*;
-               
-       Object <jv>myform</jv> =
-               
<jsm>form</jsm>().action(<js>"/submit"</js>).method(<js>"POST"</js>)
-               .children(
-                       <js>"Position (1-10000): "</js>, 
<jsm>input</jsm>(<js>"number"</js>).name(<js>"pos"</js>).value(1), 
<jsm>br</jsm>(),
-                       <js>"Limit (1-10000): "</js>, 
<jsm>input</jsm>(<js>"number"</js>).name(<js>"limit"</js>).value(100), 
<jsm>br</jsm>(),
-                       <jsm>button</jsm>(<js>"submit"</js>, <js>"Submit"</js>),
-                       <jsm>button</jsm>(<js>"reset"</js>, <js>"Reset"</js>)
-               );      
-
-       String <jv>html</jv> = 
HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>myform</jv>);
-               </p>
-               <p class='bcode w800'><xt>
-       &lt;form <xa>action</xa>=<xs>'/submit'</xs> 
<xa>method</xa>=<xs>'POST'</xs>&gt;
-               <xv>Position (1-10000):</xv> &lt;input 
<xa>name</xa>=<xs>'pos'</xs> <xa>type</xa>=<xs>'number'</xs> 
<xa>value</xa>=<xs>'1'</xs>/&gt;&lt;br/&gt;
-               <xv>Limit (1-10000):</xv> &lt;input 
<xa>name</xa>=<xs>'pos'</xs> <xa>type</xa>=<xs>'number'</xs> 
<xa>value</xa>=<xs>'100'</xs>/&gt;&lt;br/&gt;
-               &lt;button 
<xa>type</xa>=<xs>'submit'</xs>&gt;<xv>Submit</xv>&lt;/button&gt;
-               &lt;button 
<xa>type</xa>=<xs>'reset'</xs>&gt;<xv>Reset</xv>&lt;/button&gt;                 
      
-       &lt;/form&gt;
-               </xt></p>
-               <p>
-                       And you're not limited to just HTML.  The HTML5 beans 
are POJOs that can be serialized using any
-                       of the serializers, such as lax JSON:
-               </p>
-               <p class='bcode w800'>
-       {
-               <jok>_type</jok>: <jov>'form'</jov>,
-               <jok>a</jok>: { <jok>action</jok>: <jov>'/submit'</jov>, 
<jok>method</jok>: <jov>'POST'</jov> },
-               <jok>c</jok>: [
-                       <jov>'Position (1-10000): '</jov>,
-                       { <jok>_type</jok>: <jov>'input'</jov>, <jok>a</jok>: { 
<jok>type</jok>: <jov>'number'</jov>, <jok>name</jok>: <jov>'pos'</jov>, 
<jok>value</jok>: <jov>1</jov> } },
-                       { <jok>_type</jok>: <jov>'br'</jov> },
-                       <jov>'Limit (1-10000): '</jov>,
-                       { <jok>_type</jok>: <jov>'input'</jov>, <jok>a</jok>: { 
<jok>type</jok>: <jov>'number'</jov>, <jok>name</jok>: <jov>'limit'</jov>, 
<jok>value</jok>: <jov>100</jov> } },
-                       { <jok>_type</jok>: <jov>'br'</jov> },
-                       { <jok>_type</jok>: <jov>'button'</jov>, <jok>a</jok>: 
{ <jok>type</jok>: <jov>'submit'</jov> }, <jok>c</jok>: [ <jov>'Submit'</jov> ] 
},
-                       { <jok>_type</jok>: <jov>'button'</jov>, <jok>a</jok>: 
{ <jok>type</jok>: <jov>'reset'</jov> }, <jok>c</jok>: [ <jov>'Reset'</jov> ] }
-               ]
-       }                       
-               </p>
-               
-               <p>     
-                       ATOM feeds can be constructed using the ATOM DTOs and 
XML serializer:
-               </p>
-               <p class='bcode w800'>
-       <jk>import static</jk> org.apache.juneau.dto.atom.AtomBuilder.*;
-       
-       Feed <jv>feed</jv> = 
-               <jsm>feed</jsm>(<js>"tag:juneau.apache.org"</js>, <js>"Juneau 
ATOM specification"</js>, <js>"2016-01-02T03:04:05Z"</js>)
-               .subtitle(<jsm>text</jsm>(<js>"html"</js>).text(<js>"Describes 
&lt;em&gt;stuff&lt;/em&gt; about Juneau"</js>))
-               .links(
-                       <jsm>link</jsm>(<js>"alternate"</js>, 
<js>"text/html"</js>, 
<js>"http://juneau.apache.org/";</js>).hreflang(<js>"en"</js>),
-                       <jsm>link</jsm>(<js>"self"</js>, 
<js>"application/atom+xml"</js>, <js>"http://juneau.apache.org/feed.atom";</js>)
-               )
-               .rights(<js>"Copyright (c) 2016, Apache Foundation"</js>)
-               .entries(
-                       
<jsm>entry</jsm>(<js>"tag:juneau.sample.com,2013:1.2345"</js>, <js>"Juneau ATOM 
specification snapshot"</js>, <js>"2016-01-02T03:04:05Z"</js>)
-                       .published(<js>"2016-01-02T03:04:05Z"</js>)
-                       .content(
-                               <jsm>content</jsm>(<js>"xhtml"</js>)
-                               .lang(<js>"en"</js>)
-                               .base(<js>"http://www.apache.org/";</js>)
-                               
.text(<js>"&lt;div&gt;&lt;p&gt;&lt;i&gt;[Update: Juneau supports 
ATOM.]&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;"</js>)
-                       )
-               );
-       
-       <jc>// Serialize to ATOM/XML</jc>
-       String <jv>atomXml</jv> = 
XmlSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>feed</jv>);
-                       </p>
-                       <p class='bcode w800'>
-       <xt>&lt;feed&gt;</xt>
-               <xt>&lt;id&gt;</xt>
-                       tag:juneau.apache.org
-               <xt>&lt;/id&gt;</xt>
-               <xt>&lt;link</xt> 
<xa>href</xa>=<xs>'http://juneau.apache.org/'</xs> 
<xa>rel</xa>=<xs>'alternate'</xs> <xa>type</xa>=<xs>'text/html'</xs> 
<xa>hreflang</xa>=<xs>'en'</xs>/<xt>&gt;</xt>
-               <xt>&lt;link</xt> 
<xa>href</xa>=<xs>'http://juneau.apache.org/feed.atom'</xs> 
<xa>rel</xa>=<xs>'self'</xs> 
<xa>type</xa>=<xs>'application/atom+xml'</xs>/<xt>&gt;</xt>
-               <xt>&lt;rights&gt;</xt>
-                       Copyright (c) 2016, Apache Foundation
-               <xt>&lt;/rights&gt;</xt>
-               <xt>&lt;title</xt> <xa>type</xa>=<xs>'text'</xs>&gt;</xt>
-                       Juneau ATOM specification
-               <xt>&lt;/title&gt;</xt>
-               
<xt>&lt;updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/updated&gt;</xt>
-               <xt>&lt;subtitle</xt> <xa>type</xa>=<xs>'html'</xs><xt>&gt;</xt>
-                       Describes &lt;em&gt;stuff&lt;/em&gt; about Juneau
-               <xt>&lt;/subtitle&gt;</xt>
-               <xt>&lt;entry&gt;</xt>
-                       <xt>&lt;id&gt;</xt>
-                               tag:juneau.apache.org
-                       <xt>&lt;/id&gt;</xt>
-                       <xt>&lt;title&gt;</xt>
-                               Juneau ATOM specification snapshot
-                       <xt>&lt;/title&gt;</xt>
-                       
<xt>&lt;updated&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/updated&gt;</xt>
-                       <xt>&lt;content</xt> 
<xa>base</xa>=<xs>'http://www.apache.org/'</xs> <xa>lang</xa>=<xs>'en'</xs> 
<xa>type</xa>=<xs>'xhtml'</xs><xt>&gt;</xt>
-                               <xt>&lt;div</xt> 
<xa>xmlns</xa>=<xs>"http://www.w3.org/1999/xhtml";</xs><xt>&gt;&lt;p&gt;&lt;i&gt;</xt>[Update:
 Juneau supports ATOM.]<xt>&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</xt>
-                       <xt>&lt;/content&gt;</xt>
-                       
<xt>&lt;published&gt;</xt>2016-01-02T03:04:05Z<xt>&lt;/published&gt;</xt>
-               <xt>&lt;/entry&gt;</xt>
-       <xt>&lt;/feed&gt;</xt>          
-               </p>
-               <p>     
-                       Swagger documents can be constructed using the Swagger 
DTOs and JSON serializer:
-               </p>
-               <p class='bcode w800'>
-       <jk>import static</jk> org.apache.juneau.dto.swagger.SwaggerBuilder.*;
-
-       Swagger <jv>swagger</jv> = <jsm>swagger</jsm>()
-               .swagger(<js>"2.0"</js>)
-               .info(
-                       <jsm>info</jsm>(<js>"Swagger Petstore"</js>, 
<js>"1.0.0"</js>)
-                               .description(<js>"This is a sample server 
Petstore server."</js>)
-                               
.termsOfService(<js>"http://swagger.io/terms/";</js>)
-                               .contact(
-                                       
<jsm>contact</jsm>().email(<js>"[email protected]"</js>)
-                               )
-                               .license(
-                                       <jsm>license</jsm>(<js>"Apache 
2.0"</js>).url(<js>"http://www.apache.org/licenses/LICENSE-2.0.html";</js>)
-                               )
-               )
-               .path(<js>"/pet"</js>, <js>"post"</js>,
-                       <jsm>operation</jsm>()
-                               .tags(<js>"pet"</js>)
-                               .summary(<js>"Add a new pet to the store"</js>)
-                               .description(<js>""</js>)
-                               .operationId(<js>"addPet"</js>)
-                               .consumes(MediaType.<jsf>JSON</jsf>, 
MediaType.<jsf>XML</jsf>)
-                               .produces(MediaType.<jsf>JSON</jsf>, 
MediaType.<jsf>XML</jsf>)
-                               .parameters(
-                                       
<jsm>parameterInfo</jsm>(<js>"body"</js>, <js>"body"</js>)
-                                               .description(<js>"Pet object 
that needs to be added to the store"</js>)
-                                               .required(<jk>true</jk>)
-                               )
-                               .response(405, 
<jsm>responseInfo</jsm>(<js>"Invalid input"</js>))
-               );
-
-       <jc>// Serialize to Swagger/JSON</jc>
-       String <jv>swaggerJson</jv> = 
JsonSerializer.<jsf>DEFAULT_READABLE</jsf>.serialize(<jv>swagger</jv>);
-               </p>
-               <p class='bcode w800'>
-       {
-               <jok>"swagger"</jok>: <jov>"2.0"</jov>,
-               <jok>"info"</jok>: {
-                       <jok>"title"</jok>: <jov>"Swagger Petstore"</jov>,
-                       <jok>"description"</jok>: <jov>"This is a sample server 
Petstore server."</jov>,
-                       <jok>"version"</jok>: <jov>"1.0.0"</jov>,
-                       <jok>"termsOfService"</jok>: 
<jov>"http://swagger.io/terms/";</jov>,
-                       <jok>"contact"</jok>: {
-                               <jok>"email"</jok>: 
<jov>"[email protected]"</jov>
-                       },
-                       <jok>"license"</jok>: {
-                               <jok>"name"</jok>: <jov>"Apache 2.0"</jov>,
-                               <jok>"url"</jok>: 
<jov>"http://www.apache.org/licenses/LICENSE-2.0.html";</jov>
-                       }
-               },
-               <jok>"paths"</jok>: {
-                       <jok>"/pet"</jok>: {
-                               <jok>"post"</jok>: {
-                                       <jok>"tags"</jok>: [
-                                               <jov>"pet"</jov>
-                                       ],
-                                       <jok>"summary"</jok>: <jov>"Add a new 
pet to the store"</jov>,
-                                       <jok>"description"</jok>: <jov>""</jov>,
-                                       <jok>"operationId"</jok>: 
<jov>"addPet"</jov>,
-                                       <jok>"consumes"</jok>: [
-                                               <jov>"application/json"</jov>,
-                                               <jov>"text/xml"</jov>
-                                       ],
-                                       <jok>"produces"</jok>: [
-                                               <jov>"application/json"</jov>,
-                                               <jov>"text/xml"</jov>
-                                       ],
-                                       <jok>"parameters"</jok>: [
-                                               {
-                                                       <jok>"in"</jok>: 
<jov>"body"</jov>,
-                                                       <jok>"name"</jok>: 
<jov>"body"</jov>,
-                                                       
<jok>"description"</jok>: <jov>"Pet object that needs to be added to the 
store"</jov>,
-                                                       <jok>"required"</jok>: 
<jov>true</jov>
-                                               }
-                                       ],
-                                       <jok>"responses"</jok>: {
-                                               <jok>"405"</jok>: {
-                                                       
<jok>"description"</jok>: <jov>"Invalid input"</jov>
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }               
-               </p>
-               <p>
-                       Note that these DTOs can also be serialized to any of 
the other supported languages such as JSON or MessagePack!
-                       And they can be parsed back into their original objects!
-               </p>
-               <p>
-                       As a convenience, you can also simply call 
<code>toString()</code> on any of these DTOs and they will
-                       be serialized directly to a string in the typical 
language (e.g. HTML5 beans to HTML, Swagger to JSON, etc...).
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-dto'>juneau-dto</a>
-               </ul>
-       </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/templates/examples.html b/templates/examples.html
deleted file mode 100644
index fda57b536..000000000
--- a/templates/examples.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-       
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-EXAMPLES-CORE 
============================================================================== 
-->
-       <!-- 
=======================================================================================================
 -->
-
-       <h5 class='toc' id='juneau-examples-core'>juneau-examples-core</h5>
-       <div class='topic'>
-               <h5 class='figure'>Archive File</h5>
-               <p class='bcode w500'>
-       juneau-examples-core-{@property juneauVersion}.zip 
-               </p>    
-       
-               <p>
-                       The <code>juneau-examples-core</code> project contains 
various code examples for using the core APIs. 
-               </p>
-       
-               <img class='bordered' 
src='images/juneau-examples-core.Installing.3.png' style='width:400px'>
-       
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-examples-core'>juneau-examples-core</a>
-               </ul>
-       </div>  
-       
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-EXAMPLES-REST 
============================================================================== 
-->
-       <!-- 
=======================================================================================================
 -->
-
-       <h5 class='toc' id='juneau-examples-rest'>juneau-examples-rest</h5>
-       <div class='topic'>
-               <h5 class='figure'>Archive File</h5>
-               <p class='bcode w500'>
-       juneau-examples-rest-{@property juneauVersion}.zip 
-               </p>    
-       
-               <p>
-                       The <code>juneau-examples-rest</code> project includes 
various examples of REST resources written
-                       using Juneau.
-               </p>
-               <p>
-                       When running, it produces the following REST interface:
-               </p>
-               
-               <p class='bcode w800'>
-       http://localhost:10000
-               </p>                    
-               <img class='bordered w800' 
src='images/juneau-examples-rest.RootResources.1.png'>
-       
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-examples-rest'>juneau-examples-rest</a>
-               </ul>
-       </div>  
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-EXAMPLES-REST-JETTY 
======================================================================== -->
-       <!-- 
=======================================================================================================
 -->
-
-       <h5 class='toc' 
id='juneau-examples-rest-jetty'>juneau-examples-rest-jetty</h5>
-       <div class='topic'>
-               <h5 class='figure'>Archive File</h5>
-               <p class='bcode w500'>
-       juneau-examples-rest-jetty-{@property juneauVersion}.zip 
-               </p>    
-       
-               <p>
-                       The <code>juneau-examples-rest-jetty</code> project 
includes everything you need create a Samples REST 
-                       microservice in an Eclipse workspace and build it as an 
executable jar.
-               </p>
-       
-               <img class='bordered' 
src='images/juneau-examples-rest-jetty.Installing.3.png' style='width:400px'>
-
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-examples-rest-jetty'>juneau-examples-rest-jetty</a>
-               </ul>
-       </div>  
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-EXAMPLES-REST-SPRINGBOOT 
=================================================================== -->
-       <!-- 
=======================================================================================================
 -->
-
-       <h5 class='toc' 
id='juneau-examples-rest'>juneau-examples-rest-springboot</h5>
-       <div class='topic'>
-               <h5 class='figure'>Archive File</h5>
-               <p class='bcode w500'>
-       juneau-examples-rest-springboot{@property juneauVersion}.zip 
-               </p>    
-       
-               <p>
-                       The <code>juneau-examples-rest-springboot</code> 
library contains the same examples as <code>juneau-examples-rest</code>
-                       but also includes the following:
-               </p>
-               <ul class='spaced-list'>
-                       <li>
-                               A starter class for invoking the examples using 
Spring Boot.
-                       <li>
-                               A resource resolver for resolving REST 
resources as injectable beans.
-                       <li>
-                               A POM that extends from 
<code>spring-boot-starter-parent</code> that allows you to build a fully-shaded 
executable jar.
-                       <li>
-                               Configuration files for deploying the 
microservice to Heroku.
-               </ul>
-       
-               <img class='bordered' 
src='images/juneau-examples-rest-springboot.Installing.3.png' 
style='width:400px'>
-
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-examples-rest-springboot'>juneau-examples-rest-springboot</a>
-               </ul>
-       </div>  
-
-</body>
-</html>
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
index cb8e4a450..11869ea0e 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -195,17 +195,6 @@
        <nav>
                <ul>
                        <li><a href='about.html' id='about' onclick="return 
select(this)">About</a>
-                       <li><a href='components.html' id='components' 
onclick="return select(this)">Components</a>
-                               <ul>
-                                       <li><a href='marshall.html' 
id='marshall' onclick="return select(this)">marshall</a>
-                                       <li><a href='dto.html' id='dto' 
onclick="return select(this)">dto</a>
-                                       <li><a href='config.html' id='config' 
onclick="return select(this)">config</a>
-                                       <li><a href='rest-server.html' 
id='rest-server' onclick="return select(this)">rest-server</a>
-                                       <li><a href='rest-client.html' 
id='rest-client' onclick="return select(this)">rest-client</a>
-                                       <li><a href='examples.html' 
id='examples' onclick="return select(this)">examples</a>
-                                       <li><a href='petstore.html' 
id='petstore' onclick="return select(this)">petstore</a>
-                               </ul>
-                       </li>
                        <li><a href='https://github.com/apache/juneau' 
target='_blank'>GitHub</a></li>
                        <li><a href='https://github.com/apache/juneau/wiki' 
target='_blank'>Wiki</a></li>
                        <li><a 
href='https://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#overview.description' 
target='_blank'>Documentation</a></li>
diff --git a/templates/marshall.html b/templates/marshall.html
deleted file mode 100644
index 52467be5f..000000000
--- a/templates/marshall.html
+++ /dev/null
@@ -1,557 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-MARSHALL 
===================================================================================
 -->
-       <!-- 
=======================================================================================================
 -->
-       
-       <h5 class='toc' id='juneau-marshall'>juneau-marshall</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-marshall<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-marshall-{@property juneauVersion}.jar 
-               </p>    
-       
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.marshall_{@property juneauVersion}.jar 
-               </p>    
-
-               <p>
-                       The <code>juneau-marshall</code> library includes 
easy-to-use and highly customizable serializers and parsers
-                       based around a common API.  
-               </p>
-               <p>
-                       <a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#Glossaries.LanguageSupport'>Glossary &gt; 
Language Support</a>
-               </p>
-               <p>
-                       Features include:
-               </p>
-               <ul class='spaced-list'>
-                       <li>Serializers can send output directly to Writers, 
OutputStreams, Files, Strings, or byte arrays.
-                       <li>Parsers can receive input directly from Readers, 
InputStreams, Files, Strings, or byte arrays.
-                       <li>Parsers can reconstruct arbitrarily complex data 
structures consisting of maps, collections, beans, and other POJOs.
-                       <li>Serializers and parsers do not use intermediate 
DOMs!  POJOs are serialized directly to streams and parsed back directly to 
POJOs, making them extremely efficient and fast.
-                       <li>Supported languages are highly-customizable and 
powerful.  For example, JSON support includes:
-                               <ul>
-                                       <li>Support for variants such as LAX 
syntax (unquoted attributes and single quotes).
-                                       <li>Support for embedded Javascript 
comments.
-                                       <li>Fully RFC1759 compliant.
-                                       <li>20% faster than Jackson.
-                               </ul>
-               </ul>
-               <hr>
-               <p>
-                       The default serializers can often be used to serialize 
POJOs in a single line of code:
-               </p>
-               <p class='bcode w800'>
-       <jc>// A simple bean</jc>
-       <jk>public class</jk> Person {
-               <jk>public</jk> String <jf>name</jf> = <js>"John Smith"</js>;
-               <jk>public int</jk> <jf>age</jf> = 21;
-       }
-       
-       Person <jv>person</jv> = <jk>new</jk> Person();  <jc>// An arbitrary 
POJO</jc>
-       
-       <jc>// Produces:
-       // "{name:'John Smith',age:21}"</jc>
-       String <jv>laxJson</jv> = 
SimpleJsonSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-       
-       <jc>// Produces:
-       // "{"name":"John Smith","age":21}"</jc>
-       String <jv>strictJson</jv> = 
JsonSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-       
-       <jc>// Produces:
-       // &lt;object&gt;
-       //   &lt;name&gt;John Smith&lt;/name&gt;
-       //   &lt;age&gt;21&lt;/age&gt;
-       // &lt;/object&gt;</jc>
-       String <jv>xml</jv> = 
XmlSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-       
-       <jc>// Produces:
-       // &lt;table&gt;
-       //   &lt;tr&gt;&lt;td&gt;name&lt;/td&gt;&lt;td&gt;John 
Smith&lt;/td&gt;&lt;/tr&gt;
-       //   
&lt;tr&gt;&lt;td&gt;age&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;/tr&gt;
-       // &lt;/table&gt;</jc>
-       String <jv>html</jv> = 
HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-       
-       <jc>// Same as Html, but wraps it in HTML and BODY elements with page 
title/description/links:</jc>
-       String <jv>htmlDoc</jv> = 
HtmlDocSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-
-       <jc>// Produces:
-       // name='John+Smith'&amp;age=21</jc>
-       String <jv>urlEncoding</jv> = 
UrlEncodingSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-
-       <jc>// Produces:
-       // (name='John Smith',age=21)</jc>
-       String <jv>uon</jv> = 
UonSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-
-       <jc>// Produces:
-       // 82 A4 name AA 4A John Smith 68 A3 age 15</jc>
-       <jk>byte</jk>[] <jv>messagePack</jv> = 
MsgPackSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.Serializers'>juneau-marshall
 > Serializers</a>
-               </ul>
-               
-               <hr>
-
-               <p>
-                       Parsing back into POJOs is equally simple for any of 
the supported languages shown above.  
-                       Language fragments are also supported.
-               </p>
-               <p>
-                       JSON parsing shown here:
-               </p>
-               <p class='bcode w800'>
-       <jc>// Use one of the predefined parsers.</jc>
-       ReaderParser <jv>parser</jv> = JsonParser.<jsf>DEFAULT</jsf>;
-       
-       <jc>// Parse a JSON object (creates a generic ObjectMap).</jc>
-       String <jv>json</jv> = <js>"{name:'John Smith',age:21}"</js>;
-       Map <jv>map</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
Map.<jk>class</jk>);
-       
-       <jc>// Parse a JSON string.</jc>
-       <jv>json</jv> = <js>"'foobar'"</js>;
-       String <jv>string</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
String.<jk>class</jk>);
-       
-       <jc>// Parse a JSON number as a Long or Float.</jc>
-       <jv>json</jv> = <js>"123"</js>;
-       Long <jv>_long</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
Long.<jk>class</jk>);
-       Float <jv>_float</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
Float.<jk>class</jk>);
-       
-       <jc>// Parse a JSON object as a bean.</jc>
-       <jv>json</jv> = <js>"{name:'John Smith',age:21}"</js>;
-       Person <jv>person</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
Person.<jk>class</jk>);
-       
-       <jc>// Parse a JSON object as a HashMap&lt;String,Person&gt;.</jc>
-       <jv>json</jv> = <js>"{a:{name:'John Smith',age:21},b:{name:'Joe 
Smith',age:42}}"</js>;
-       Map&lt;String,Person&gt; <jv>personMap</jv> = <jv>parser</jv>.parse(
-               <jv>json</jv>, 
-               HashMap.<jk>class</jk>, 
-               String.<jk>class</jk>, 
-               Person.<jk>class</jk>
-       );
-       
-       <jc>// Parse a JSON object as a 
HashMap&lt;String,LinkedList&lt;Person&gt;&gt;.</jc>
-       <jv>json</jv> = <js>"{a:[{name:'John Smith',age:21},{name:'Joe 
Smith',age:42}]}"</js>;
-       Map&lt;String,List&lt;Person&gt;&gt; <jv>personListMap</jv> = 
<jv>parser</jv>.parse(
-               <jv>json</jv>, 
-               HashMap.<jk>class</jk>, 
-               String.<jk>class</jk>, 
-               LinkedList.<jk>class</jk>, 
-               Person.<jk>class</jk>
-       );
-
-       <jc>// Parse a JSON array of integers as a Collection of Integers or 
int[] array.</jc>
-       <jv>json</jv> = <js>"[1,2,3]"</js>;
-       List&lt;Integer&gt; <jv>integerList</jv> = <jv>parser</jv>.parse(
-               <jv>json</jv>, 
-               LinkedList.<jk>class</jk>, 
-               Integer.<jk>class</jk>
-       );
-       <jk>int</jk>[] <jv>intList</jv> = <jv>parser</jv>.parse(
-               <jv>json</jv>, 
-               <jk>int</jk>[].<jk>class</jk>
-       );
-       
-       <jc>// Parse arbitrary input into ObjectMap or ObjectList objects 
-       // (similar to JSONObject/JSONArray but generalized for all 
languages).</jc>
-       <jv>json</jv> = <js>"{name:'John Smith',age:21}"</js>;
-       OMap <jv>oMap</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
OMap.<jk>class</jk>);
-       <jk>int</jk> age = <jv>oMap</jv>.getInt(<js>"age"</js>);
-       
-       <jv>json</jv> = <js>"[1,true,null]"</js>;
-       OList <jv>oList</jv> = <jv>parser</jv>.parse(<jv>json</jv>, 
ObjectList.<jk>class</jk>);  
-       <jk>boolean</jk> <jv>boolean</jv> = <jv>oList</jv>.getBoolean(1);
-               </p>
-
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.Parsers'>juneau-marshall > 
Parsers</a>
-               </ul>
-               <hr>
-               <p>
-                       Marshalls are pairings of serializers and parsers in a 
single class for even simpler code:
-               </p>
-               <p class='bcode w800'>
-       Person <jv>person</jv> = <jk>new</jk> Person(); <jc>// An arbitrary 
POJO</jc>
-
-       <jc>// Serialize</jc>
-       String <jv>json</jv> = Json.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>simpleJson</jv> = 
SimpleJson.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>xml</jv> = Xml.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>html</jv> = Html.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>uon</jv> = Uon.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>urlEncoding</jv> = 
UrlEncoding.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>openapi</jv> = 
OpenApi.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       <jk>byte</jk>[] <jv>msgPack</jv> = 
MsgPack.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>rdfXml</jv> = 
RdfXml.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>rdfXmlAbbrev</jv> = 
RdfXmlAbbrev.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>n3</jv> = N3.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>nTuple</jv> = 
NTuple.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-       String <jv>turtle</jv> = 
Turtle.<jsf>DEFAULT</jsf>.write(<jv>person</jv>);
-
-       <jc>// Parse</jc>
-       <jv>person</jv> = Json.<jsf>DEFAULT</jsf>.read(<jv>json</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = Xml.<jsf>DEFAULT</jsf>.read(<jv>xml</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = Html.<jsf>DEFAULT</jsf>.read(<jv>html</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = Uon.<jsf>DEFAULT</jsf>.read(<jv>uon</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = 
UrlEncoding.<jsf>DEFAULT</jsf>.read(<jv>urlEncoding</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = OpenApi.<jsf>DEFAULT</jsf>.read(<jv>openapi</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = MsgPack.<jsf>DEFAULT</jsf>.read(<jv>msgPack</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = RdfXml.<jsf>DEFAULT</jsf>.read(<jv>rdfXml</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = 
RdfXmlAbbrev.<jsf>DEFAULT</jsf>.read(<jv>rdfXmlAbbrev</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = N3.<jsf>DEFAULT</jsf>.read(<jv>n3</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = NTuple.<jsf>DEFAULT</jsf>.read(<jv>nTuple</jv>, 
Person.<jk>class</jk>);
-       <jv>person</jv> = Turtle.<jsf>DEFAULT</jsf>.read(<jv>turtle</jv>, 
Person.<jk>class</jk>);
-               </p>
-
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.Marshalls'>juneau-marshall 
> Marshalls</a>
-               </ul>
-       
-               <hr>
-
-               <p>
-                       Serializers and parsers are builder-based.  Build from 
scratch or clone existing instances.  Lots of configuration options available 
for all the languages.
-               </p>
-               <p class='bcode w800'>
-       <jc>// Create a serializer from scratch programmatically using a 
builder.</jc>
-       JsonSerializer <jv>serializer</jv> = JsonSerializer.<jsm>create</jsm>()
-      .simple()                        <jc>// Simple mode</jc>
-      .sq()                            <jc>// Use single quotes</jc>
-      .swaps(                          <jc>// Swap unserializable classes with 
surrogate POJOs</jc>
-         IteratorSwap.<jk>class</jk>,           <jc>// Iterators swapped with 
lists</jc>
-         ByteArrayBase64Swap.<jk>class</jk>,    <jc>// byte[] swapped with 
base-64 encoded strings</jc>
-         CalendarSwap.ISO8601DT.<jk>class</jk>  <jc>// Calendars swapped with 
ISO8601-compliant strings</jc>
-       )
-      .timeZone(TimeZone.<jsf>GMT</jsf>)          <jc>// For timezone-specific 
serialization</jc>
-      .locale(Locale.<jsf>JAPAN</jsf>)            <jc>// For locale-specific 
serialization</jc>
-      .sortCollections()               
-      .sortProperties()                
-      .keepNullProperties()
-      .trimStrings()
-      .beanMethodVisibility(<jsf>PROTECTED</jsf>)     <jc>// Control which 
fields/methods are serialized</jc>
-      .dictionary(                        <jc>// Adds type variables for 
resolution during parsing</jc>
-         MyBeanA.<jk>class</jk>, 
-         MyBeanB.<jk>class</jk>
-      )
-      .debug()                         <jc>// Debug mode</jc>
-      .build();
-   
-       <jc>// Same as above, but using declarative named properties.</jc>
-       <jc>// This is how serializers and parsers are typically configured on 
REST servlets and clients.</jc>
-       JsonSerializer <jv>serializer</jv> = JsonSerializer.<jsm>create</jsm>()
-               .set(<jsf>JSON_simpleMode</jsf>, <jk>true</jk>) 
-               .set(<jsf>SERIALIZER_quoteChar</jsf>, <js>'\''</js>)
-               .appendTo(<jsf>BEAN_swaps</jsf>, IteratorSwap.<jk>class</jk>)
-               .appendTo(<jsf>BEAN_swaps</jsf>, 
ByteArrayBase64Swap.<jk>class</jk>)
-               .appendTo(<jsf>BEAN_swaps</jsf>, 
CalendarSwap.ISO8601DT.<jk>class</jk>)
-               .set(<jsf>BEAN_timeZone</jsf>, TimeZone.<jsf>GMT</jsf>)
-               .set(<jsf>BEAN_locale</jsf>, Locale.<jsf>JAPAN</jsf>)
-               .set(<jsf>SERIALIZER_sortCollections</jsf>, <jk>true</jk>)
-               .set(<jsf>BEAN_sortProperties</jsf>, <jk>true</jk>)
-               .set(<jsf>SERIALIZER_keepNullProperties</jsf>, <jk>true</jk>)
-               .set(<jsf>SERIALIZER_trimStrings</jsf>, <jk>true</jk>)
-               .set(<jsf>BEAN_beanMethodVisibility</jsf>, <jsf>PROTECTED</jsf>)
-               .appendTo(<jsf>BEAN_dictionary</jsf>, MyBeanA.<jk>class</jk>) 
-               .appendTo(<jsf>BEAN_dictionary</jsf>, MyBeanB.<jk>class</jk>)
-               .set(<jsf>BEAN_debug</jsf>, <jk>true</jk>)
-               .build();
-
-       <jc>// Clone an existing serializer and modify it to use 
single-quotes.</jc>
-       JsonSerializer <jv>serializer</jv> = 
JsonSerializer.<jsf>DEFAULT</jsf>.builder()
-               .sq()
-               .build();       
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.ConfigurableProperties'>juneau-marshall
 > Configurable Properties</a>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#Glossaries.ConfigurableProperties'>Glossary
 > Configurable Properties</a>
-               </ul>
-               
-               <hr>
-               <p>
-                       Many POJOs such as primitives, beans, collections, 
arrays, and classes with various known constructors and methods are 
serializable out-of-the-box.  
-                       For other objects, "transforms" allow you to perform 
various mutations on them before serialization and after parsing.  
-               </p>
-               <ul class='spaced-list'>
-                       <li>Transforms
-                               <ul>
-                                       <li>Bean filters - Control how bean 
properties are handled (naming conventions, ordering, visibility,...).
-                                       <li>POJO swaps - Replace 
non-serializable POJOs with serializable equivalents.
-                                               <br>Predefined swaps provided 
for common cases: <code>ByteArrayBase64Swap</code>, 50+ variants of 
Calendar/Date swaps, <code>Enumeration/Iterator</code> swaps.
-                               </ul>
-                       <li>Annotations 
-                               <br>Various annotations available for your POJO 
classes that are recognized by ALL serializers and parsers:  
-                               <br><ja>@Bean</ja>, <ja>@Beanc</ja>, 
<ja>@Beanp</ja>, <ja>@BeanIgnore</ja>, <ja>@NameProperty</ja>, 
<ja>@ParentProperty</ja>
-                               <br>
-                               <br>Annotations also provided for 
language-specific behaviors where it makes sense:
-                               <br><ja>@Json</ja>, <ja>@Html</ja>, 
<ja>@Xml</ja>, <ja>@UrlEncoding</ja>
-                               <br>
-                               <br>All annotations have programmatic 
equivalents when you don't have access to POJO source.
-                               
-                       <li>Swap methods
-                               <br>By default, various instance and static 
methods and constructors are automatically detected and supported:
-                               <br><code>valueOf(String)</code>, 
<code>parse(String)</code>, <code>parseString(String)</code>, 
<code>forName(String)</code>, <code>forString(String)</code>, 
-                                       <code>fromString(String)</code>, 
<code>T(String)</code>, <code>Object swap(BeanSession)</code>, <code>T 
unswap(BeanSession, T.class)</code>
-               </ul>
-       
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.PojoCategories'>juneau-marshall
 > POJO Categories</a>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#Glossaries.Annotations'>Glossary > 
Annotations</a>
-               </ul>
-       
-               <hr>
-               <p>
-                       UON (URL-Encoded Object Notation) allows JSON-like data 
structures (OBJECT, ARRAY, NUMBER, BOOLEAN, STRING, NULL) in HTTP constructs 
(query parameters, form parameters,
-                       headers, URL parts) without violating RFC2396.
-                       This allows POJOs to be converted directly into these 
HTTP constructs which is not possible in other languages such as JSON.
-               </p>
-               <p class='bcode w800'>
-       (
-               id=1, 
-               name=<js>'John+Smith'</js>, 
-               uri=<js>http://sample/addressBook/person/1</js>, 
-               addressBookUri=<js>http://sample/addressBook</js>,
-               birthDate=<js>1946-08-12T00:00:00Z</js>,
-               addresses=@(
-                       (
-                               
uri=<js>http://sample/addressBook/address/1</js>, 
-                               
personUri=<js>http://sample/addressBook/person/1</js>, 
-                               id=<js>1</js>, 
-                               street=<js>'100+Main+Street'</js>, 
-                               city=<js>Anywhereville</js>, 
-                               state=<js>NY</js>, 
-                               zip=<js>12345</js>, 
-                               isCurrent=<jk>true</jk>
-                       )
-               )
-       )
-               </p>
-
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.UonDetails'>juneau-marshall
 > UON Details</a>
-               </ul>
-
-               <hr>
-               <p>
-                       Lots of shortcuts are provided throughout the API to 
simplify tasks, and the APIs are often useful for debugging and logging 
purposes as well:
-               </p>
-               <p class='bcode w800'>
-       <jc>// Create JSON strings from scratch using fluent-style code.</jc>
-       String <jv>jsonObject</jv> = <jk>new</jk> 
OMap().append(<js>"foo"</js>,<js>"bar"</js>).toString(); 
-       String <jv>jsonArray</jv> = <jk>new</jk> 
OList().append(<js>"foo"</js>).append(123).append(<jk>null</jk>).toString(); 
-       
-       <jc>// Create maps and beans directly from JSON.</jc>
-       Map&lt;String,Object&gt; <jv>myMap</jv> = <jk>new</jk> 
OMap(<js>"{foo:'bar'}"</js>); 
-       List&lt;Object&gt; <jv>myList</jv> = <jk>new</jk> 
OList(<js>"['foo',123,null]"</js>); 
-
-       <jc>// Load a POJO from a JSON file.</jc>
-       MyPojo <jv>myPojo</jv> = 
JsonParser.<jsf>DEFAULT</jsf>.parse(<jk>new</jk> File(<js>"myPojo.json"</js>));
-
-       <jc>// Serialize POJOs and ignore exceptions (great for logging)</jc>
-       String <jv>json</jv> = 
SimpleJson.<jsf>DEFAULT</jsf>.toString(<jv>myPojo</jv>);
-       
-       <jc>// Dump a POJO to the console.</jc>
-       SimpleJson.<jsf>DEFAULT</jsf>.println(<jv>myPojo</jv>);
-       
-       String <jv>message</jv> = <jk>new</jk> StringMessage(<js>"My POJO in 
{0}: {1}"</js>, <js>"JSON"</js>, <jk>new</jk> 
StringObject(<jv>myPojo</jv>)).toString();
-       
-       <jc>// Create a 'REST-like' wrapper around a POJO.</jc>
-       <jc>// Allows you to manipulate POJO trees using URIs and 
GET/PUT/POST/DELETE commands.</jc>
-       PojoRest <jv>pojoRest</jv> = <jk>new</jk> PojoRest(<jv>myPojo</jv>);
-       <jv>pojoRest</jv>.get(String.<jk>class</jk>, 
<js>"addressBook/0/name"</js>);
-       <jv>pojoRest</jv>.put(<js>"addressBook/0/name"</js>, <js>"John 
Smith"</js>);
-               </p>
-
-               <ul class='seealso'>
-               <ul class='doctree'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.ObjectMap'>juneau-marshall 
> ObjectMap and ObjectList</a>
-               </ul>
-
-               <hr>
-               <p>
-                       <code>SerializerGroup</code> and 
<code>ParserGroup</code> classes allow serializers and parsers 
-                       to be retrieved by W3C-compliant HTTP 
<code>Accept</code> and <code>Content-Type</code> values:
-               </p>
-               <p class='bcode w800'>
-       <jc>// Construct a new serializer group with configuration parameters 
that get applied to all serializers.</jc>
-       SerializerGroup <jv>serializerGroup</jv> = 
SerializerGroup.<jsm>create</jsm>()
-               .append(JsonSerializer.<jk>class</jk>, 
UrlEncodingSerializer.<jk>class</jk>);
-               .ws()   <jc>// or .setUseWhitespace(true) or 
.set(SERIALIZER_useWhitespace, true)</jc>
-               .swaps(CalendarSwap.ISO8601DT.<jk>class</jk>) <jc>// or 
.appendTo(BEAN_pojoSwaps, CalendarSwap.ISO8601DT.class)</jc>
-               .build();
-
-       <jc>// Find the appropriate serializer by Accept type and serialize our 
POJO to the specified writer.</jc>
-       <jc>// Fully RFC2616 compliant.</jc>
-       <jv>serializerGroup</jv>.getSerializer(<js>"text/invalid, 
text/json;q=0.8, text/*;q:0.6, *\/*;q=0.0"</js>)
-               .serialize(<jv>person</jv>, <jv>myWriter</jv>);
-               
-       <jc>// Construct a new parser group with configuration parameters that 
get applied to all parsers.</jc>
-       ParserGroup <jv>parserGroup</jv> = ParserGroup.<jsm>create</jsm>()
-               .append(JsonParser.<jk>class</jk>, 
UrlEncodingParser.<jk>class</jk>);
-               .swaps(CalendarSwap.ISO8601DT.<jk>class</jk>) <jc>// or 
.appendTo(BEAN_pojoSwaps, CalendarSwap.ISO8601DT.class)</jc>
-               .build();
-
-       Person <jv>person</jv> = 
<jv>parserGroup</jv>.getParser(<js>"text/json"</js>).parse(<jv>myReader</jv>, 
Person.<jk>class</jk>);
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall.Groups'>juneau-marshall > 
SerializerGroups and ParserGroups</a>
-               </ul>
-               <p>
-                       The <code>org.apache.juneau.svl</code> package defines 
an API for a language called "Simple Variable Language".
-                       In a nutshell, Simple Variable Language (or SVL) is 
text that contains variables of the form
-                       <js>"$varName{varKey}"</js>.
-               </p>
-               <p>
-                       Variables can be recursively nested within the varKey 
(e.g. <js>"$FOO{$BAR{xxx},$BAZ{xxx}}"</js>).
-                       Variables can also return values that themselves 
contain more variables.
-               </p>
-               <p class='bcode w800'>
-       <jc>// Use the default variable resolver to resolve a string that 
contains $S (system property) variables</jc>
-       String <jv>myProperty</jv> = 
VarResolver.<jsf>DEFAULT</jsf>.resolve(<js>"The Java home directory is 
$S{java.home}"</js>);
-               </p>
-               <p>
-                       The following shows how variables can be arbitrarily 
nested:
-               </p>
-               <p class='bcode w800'>
-       <jc>// Look up a property in the following order:
-       // 1) MYPROPERTY environment variable.
-       // 2) 'my.property' system property if environment variable not found.
-       // 3) 'not found' string if system property not found.</jc>
-       String <jv>myproperty</jv> = 
VarResolver.<jsf>DEFAULT</jsf>.resolve(<js>"$E{MYPROPERTY,$S{my.property,not 
found}}"</js>);
-               </p>
-               <p>
-                       SVL is a large topic on it's own. 
-                       It is used extensively in the ConfigFile, REST and 
Microservice APIs.
-               </p>
-               <p>
-                       Plugging in your own variables is also easy.
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-svl'>juneau-svl</a>
-               </ul>
-
-       </div>
-       
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-MARSHALL-RDF 
=============================================================================== 
-->
-       <!-- 
=======================================================================================================
 -->
-       
-       <h5 class='toc' id='juneau-marshall-rdf'>juneau-marshall-rdf</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-marshall-rdf<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-marshall-rdf-{@property juneauVersion}.jar 
-               </p>    
-       
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.marshall.rdf_{@property juneauVersion}.jar 
-               </p>    
-
-               <p>
-                       The <code>juneau-marshall-rdf</code> library provides 
additional serializers and parsers for RDF.
-                       These rely on the Apache Jena library to provide 
support for the following languages:
-               </p>
-               <ul>
-                       <li>RDF/XML
-                       <li>RDF/XML-Abbrev      
-                       <li>N-Triple
-                       <li>Turtle
-                       <li>N3
-               </ul>                           
-               <p>
-                       The serializers and parsers work identically to those 
in <code>juneau-marshall</code>, but are
-                       packaged separately so that you don't need to pull in 
the Jena dependency unless you need it.
-               </p>
-       
-               <p class='bcode w800'>
-       <jc>// A simple bean</jc>
-       <jk>public class</jk> Person {
-               <jk>public</jk> String <jf>name</jf> = <js>"This is RDF 
format."</js>;
-               <jk>public</jk> String <jf>id</jf> = <js>"foo"</js>;
-       }
-       
-       <jc>// Serialize a bean to various RDF languages</jc>
-       Person <jv>person</jv> = <jk>new</jk> Person();
-
-       <jc>// Produces:
-       // &lt;rdf:RDF
-       //  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
-       //  xmlns:jp="http://www.apache.org/juneaubp/";
-       //  xmlns:j="http://www.apache.org/juneau/"&gt;
-       //      &lt;rdf:Description&gt;
-       //              &lt;jp:name&gt;This is RDF format.&lt;/jp:name&gt;
-       //              &lt;jp:id&gt;foo&lt;/jp:id&gt;
-       //      &lt;/rdf:Description&gt;
-       // &lt;/rdf:RDF&gt;</jc>
-       String <jv>rdfXml</jv> = 
RdfXmlAbbrevSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-       
-       <jc>// Produces:
-       // @prefix jp:      &lt;http://www.apache.org/juneaubp/&gt; .
-       // @prefix j:       &lt;http://www.apache.org/juneau/&gt; .
-       //      []    jp:id  "foo" ;
-       //            jp:name "This is RDF format." .</jc>
-       String <jv>rdfN3</jv> = 
N3Serializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-
-       <jc>// Produces:
-       // _:A3bf53c85X3aX157cf407e2dX3aXX2dX7ffd 
&lt;http://www.apache.org/juneaubp/name&gt; "This is RDF format." .
-       // _:A3bf53c85X3aX157cf407e2dX3aXX2dX7ffd 
&lt;http://www.apache.org/juneaubp/age&gt; "rdf" .</jc>
-       String <jv>rdfNTriple</jv> = 
NTripleSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-
-       <jc>// Produces:
-       // @prefix jp:      &lt;http://www.apache.org/juneaubp/&gt; .
-       // @prefix j:       &lt;http://www.apache.org/juneau/&gt; .
-       //      []    jp:id  "foo" ;
-       //            jp:name "This is RDF format." .</jc>
-       String <jv>rdfTurtle</jv> = 
TurtleSerializer.<jsf>DEFAULT</jsf>.serialize(<jv>person</jv>);
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-marshall-rdf'>juneau-marshall-rdf</a>
-               </ul>           
-       </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/templates/petstore.html b/templates/petstore.html
deleted file mode 100644
index d5896adab..000000000
--- a/templates/petstore.html
+++ /dev/null
@@ -1,555 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-               @import url("../content/styles/juneau-code.css");
-               @import url("../content/styles/juneau-doc.css");
-               p { max-width: 800px;}
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-<h2 class='topic'>PetStore Application</h2>
-<div class='topic'>
-       <p>
-               The <c>PetStore</c> application is an functional application 
meant to demonstrate using Juneau with other technologies
-               such as Spring Boot, Spring Data, Bootstrap, and Datatables to 
create fully-functional applications with end-to-end
-               REST integration support.  
-       </p>
-       <p>
-               What makes Juneau unique is the ability to create Java 
interfaces that behave just like RPC, but using REST
-               as the underlying protocol.  And the technology it not tied to 
any platform so it can be used in any environment
-               by simply pulling in Maven dependencies.  The server-side need 
only provide the ability to host a servlet.
-       </p>
-       <p>
-               Visit the <a class='doclink' 
href='https://github.com/apache/juneau-petstore'>GitHub project</a> hosting the 
application.
-       </p>
-       <p>
-               The project is broken down into the following subprojects:
-       </p>
-       <ul class='spaced-list'>
-               <li><c>juneau-petstore-api</c> - Contains the Java interface 
and DTOs for the petstore application.
-               <li><c>juneau-petstore-server</c> - Contains the server-side 
Java implementation of the petstore Java interface as a REST resource.
-               <li><c>juneau-petstore-client</c> - Contains the client-side 
Java proxy of the petstore Java interface.
-       </ul>
-
-       <h3 class='topic'>Running the Petstore App</h3>
-       <div class='topic'>
-               <ul class='spaced-list'>
-                       <li>
-                               Install <a class='doclink' 
href='https://docs.docker.com/install/'>docker</a> on your machine.
-                       </li>
-                       <li>
-                               <p>
-                                       Clone the Petstore project on your 
machine.
-                               </p>
-                               <p class='bcode w800'>
-       git clone https://github.com/apache/juneau-petstore.git
-                               </p>
-                       </li>
-                       <li>
-                               <p>
-                                       Open terminal inside the project 
directory and run the below command to start the app.
-                               </p>
-                               <p class='bcode w800'>
-       docker build . -t petstore &amp;&amp; docker run -p 5000:5000 petstore
-                               </p>
-                       </li>
-               </ul>
-       </div>
-
-       <h3 class='topic'>juneau-petstore-api</h3>
-       <div class='topic'>
-               <p>
-                       The <c>juneau-petstore-api</c> module contains the Java 
interface of our application and the DTOs that go along
-                       with it.  These classes are meant to be shared between 
the server and client side code.
-               </p>
-               
-               <p>
-                       The <c>PetStore</c> class is our primary class for 
defining our application.  It's a standard Java interface with 
-                       annotations used to describe how the methods map to 
REST calls.
-               </p>
-               <h5 class='figure'>PetStore.java</h5>
-               <p class='bcode w800'> 
-       <ja>@Remote</ja>(path=<js>"/petstore"</js>)
-       <jk>public interface</jk> PetStore {
-       
-               <ja>@RemoteMethod</ja>(method=<jsf>GET</jsf>, 
path=<js>"/pet"</js>)
-               <jk>public</jk> Collection&lt;Pet&gt; getPets() <jk>throws</jk> 
NotAcceptable;
-       
-               <ja>@RemoteMethod</ja>(path=<js>"/pet/{petId}"</js>)
-               <jk>public</jk> Pet getPet(
-                       <ja>@Path</ja>(
-                               name=<js>"petId"</js>,
-                               description=<js>"ID of pet to return"</js>,
-                               example=<js>"123"</js>
-                       )
-                       <jk>long</jk> <jv>petId</jv>
-               ) <jk>throws</jk> IdNotFound, NotAcceptable;
-       
-               <ja>@RemoteMethod</ja>(method=<jsf>POST</jsf>, 
path=<js>"/pet"</js>)
-               <jk>public long</jk> createPet(
-                       <ja>@Body</ja>(
-                               description=<js>"Pet object to add to the 
store"</js>
-                       ) CreatePet <jv>pet</jv>
-               ) <jk>throws</jk> IdConflict, NotAcceptable, 
UnsupportedMediaType;
-       
-               ...
-       }
-               </p>
-               <p>
-                       <ja>@Remote</ja> and <ja>@RemoteMethod</ja> are 
client-side annotations used to map the method calls to REST
-                       and will be describe in the client code section.
-               </p>
-               <p>
-                       <ja>@Path</ja> and <ja>@Body</ja> are used by both the 
client and server side code to map to REST artifacts on both
-                       sides.
-               </p>
-               <p>
-                       Both sets of annotations are provided by pulling in the 
Juneau dependency below:
-               
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-marshall<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>8.1.0<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-               <p>
-                       The <c>Pet</c> class is a DTO that gets serialized over 
the REST connection.  It is also annotated with JPA annotations
-                       so that they can easily be stored in a JPA datastore on 
the server side.
-               </p>
-               <h5 class='figure'>Pet.java</h5>
-               <p class='bcode w800'>
-       <ja>@Bean</ja>(typeName=<js>"Pet"</js>, fluentSetters=<jk>true</jk>, 
properties=<js>"id,species,name,tags,price,status"</js>)
-       <ja>@Entity</ja>(name=<js>"PetstorePet"</js>)
-       <jk>public class</jk> Pet {
-       
-               <ja>@Column @Id @GeneratedValue</ja>
-               <ja>@Schema</ja>(description=<js>"Unique identifier for this 
pet."</js>)
-               <ja>@Html</ja>(link=<js>"servlet:/pet/{id}"</js>)
-               <jk>private long</jk> <jf>id</jf>;
-       
-               <ja>@Column</ja>(length=50)
-               <ja>@Schema</ja>(description=<js>"Pet name."</js>, minLength=3, 
maxLength=50)
-               <jk>private</jk> String <jf>name</jf>;
-       
-               <ja>@Column</ja>
-               <ja>@Schema</ja>(description=<js>"Price of pet."</js>, 
maximum=<js>"999.99"</js>)
-               <ja>@Html</ja>(render=PriceRender.<jk>class</jk>)
-               <jk>private float</jk> <jf>price</jf>;
-       
-               ...
-       }
-               </p>
-               <p>
-                       The annotations here are a combination of Juneau 
annotations for controlling marshalling (<ja>@Bean</ja>, <ja>@Html</ja>) 
-                       and documentation/validation (<ja>@Schema</ja>), and 
JPA annoations for database persistence (<ja>@Entity</ja>, <ja>@Column</ja>).
-               </p>
-               <div class='info'>
-                       Most applications may choose to have separate classes 
for DTOs and JPA beans since you typically are not going to want
-                       to expose server-side details to client-side code.  In 
these examples however they were combined into the same classes for brevity.
-               </div>
-       </div>
-       
-       <h3 class='topic'>juneau-petstore-client</h3>
-       <div class='topic'>
-               <p>
-                       The <c>juneau-petstore-client</c> module contains a 
single <c>Main</c> class used to instantiate the proxy against
-                       our remote REST interface using the Java interface 
described above.
-               </p>
-               
-               <h5 class='figure'>Main.java</h5>
-               <p class='bcode w800'>
-       <jk>public class</jk> Main {
-       
-               <jk>public static void</jk> main(String[] <jv>args</jv>) {
-       
-                       <jc>// Create a RestClient with JSON serialization 
support.</jc>
-                       RestClient <jv>restClient</jv> = 
RestClient.<jsm>create</jsm>().simpleJson().build();
-       
-                       <jc>// Instantiate our proxy.</jc>
-                       PetStore <jv>petStore</jv> = 
<jv>restClient</jv>.getRemote(PetStore.<jk>class</jk>, 
<js>"http://localhost:5000";</js>);
-
-                       <jc>// Print out the pets in the store.</jc>
-                       Collection&lt;Pet&gt; <jv>pets</jv> = 
<jv>petStore</jv>.getPets();
-
-                       <jc>// Pretty-print them to STDOUT.</jc>
-                       
SimpleJson.<jsf>DEFAULT_READABLE</jsf>.println(<jv>pets</jv>);
-               }
-       }
-               </p>
-               <p>
-                       Notice how little code is necessary to construct a 
remote proxy.
-               </p>
-       </div>
-       
-       <h3 class='topic'>juneau-petstore-server</h3>
-       <div class='topic'>
-               <p>
-                       The <c>juneau-petstore-server</c> module contains all 
of the guts of the application.  It's a standard Spring Boot
-                       application with Juneau integration support.
-               </p>
-               
-               <h5 class='figure'>App.java</h5>
-               <p class='bcode w800'>
-       <ja>@SpringBootApplication</ja>
-       <jk>public class</jk> App {
-       
-               <jk>public static void</jk> main(String[] <jv>args</jv>) {
-                       <jk>new</jk> App().start(<jv>args</jv>);
-               }
-       
-               <jk>protected void</jk> start(String[] <jv>args</jv>) {
-                       <jk>new</jk> 
SpringApplicationBuilder(App.<jk>class</jk>)
-                               .initializers(<jk>new</jk> 
JuneauRestInitializer(App.<jk>class</jk>)) 
-                               .run(<jv>args</jv>);
-               }
-       }
-               </p>
-               
-               <h5 class='figure'>AppConfiguration.java</h5>
-               <p class='bcode w800'>
-       <ja>@Configuration</ja>
-       <jk>public class</jk> AppConfiguration {
-       
-               <ja>@Bean</ja>
-               <jk>public</jk> PetStoreService petStoreService() {
-                       <jk>return new</jk> PetStoreService();
-               }
-       
-               <ja>@Bean</ja>
-               <ja>@JuneauRestRoot</ja>
-               <jk>public</jk> RootResources rootResources() {
-                       <jk>return new</jk> RootResources();
-               }
-       
-               <ja>@Bean</ja>
-               <jk>public</jk> PetStoreResource petStoreResource() {
-                       <jk>return new</jk> PetStoreResource();
-               }
-       }
-               </p>
-               <p>
-                       The <c>JuneauRestInitializer</c> is used to allow 
Juneau resource classes to reference child Spring beans.
-                       It is only required if you wish to use injection on 
your child resources.
-               </p>
-               
-               <p>
-                       The <c>RootResources</c> class is the top-level entry 
point into the REST API.  It allows us to group
-                       child resources.  In our case though we only have one 
child resource...<c>PetStoreResource</c>:
-               </p>
-
-               <h5 class='figure'>RootResources.java</h5>
-               <p class='bcode w800'>
-       <ja>@Rest</ja>(
-               path=<js>"/*"</js>,
-               title=<js>"Root resources"</js>,
-               description=<js>"Example of a router resource page."</js>,
-               children={
-                       PetStoreResource.<jk>class</jk>
-               }
-       )
-       <ja>@HtmlDocConfig</ja>(
-               widgets={
-                       ContentTypeMenuItem.<jk>class</jk>,
-                       ThemeMenuItem.<jk>class</jk>
-               },
-               navlinks={
-                       <js>"options: ?method=OPTIONS"</js>,
-                       <js>"$W{ContentTypeMenuItem}"</js>,
-                       <js>"$W{ThemeMenuItem}"</js>,
-                       <js>"source: 
$C{Source/gitHub}/org/apache/juneau/petstore/rest/$R{servletClassSimple}.java"</js>
-               },
-               aside={
-                       <js>"&lt;div style='max-width:400px' 
class='text'&gt;"</js>,
-                       <js>"   &lt;p&gt;This is an example of a 'router' page 
that serves as a jumping-off point to child resources.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Resources can be nested arbitrarily 
deep through router pages.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Note the &lt;span 
class='link'&gt;options&lt;/span&gt; link provided that lets you see the 
generated swagger doc for this page.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Also note the &lt;span 
class='link'&gt;sources&lt;/span&gt; link on these pages to view the source 
code for the page.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;All content on pages in the UI are 
serialized POJOs.  In this case, it's a serialized array of beans with 2 
properties, 'name' and 'description'.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Other features (such as this aside) 
are added through annotations.&lt;/p&gt;"</js>,
-                       <js>"&lt;/div&gt;"</js>
-               }
-       )
-       <ja>@SerializerConfig</ja>(
-               <jc>// For testing purposes, we want to use single quotes in 
all the serializers so it's easier to do simple
-               // String comparisons.
-               // You can apply any of the Serializer/Parser/BeanContext 
settings this way.</jc>
-               quoteChar=<js>"'"</js>
-       )
-       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup {
-               <jk>private static final long</jk> <jsf>serialVersionUID</jsf> 
= 1L;
-       }
-               </p>
-               <p>
-                       This page renders as follows:
-               </p>
-               
-               <p class='bcode w800'>
-       http://localhost:5000
-               </p>                    
-               <img class='bordered w800' src='petstore/RootResources.png'>
-               
-               <p>
-                       The <c>PetStoreResource</c> class is the REST 
implementation of our <c>PetStore</c> interface.  
-               </p>
-               
-               <h5 class='figure'>PetStoreResource.java</h5>
-               <p class='bcode w800'>
-       <ja>@Rest</ja>(
-               path=<js>"/petstore"</js>,
-               title=<js>"Petstore application"</js>,
-               description={
-                       <js>"This is a sample server Petstore server based on 
the Petstore sample at Swagger.io."</js>,
-                       <js>"You can find out more about Swagger at 
http://swagger.io.";</js>,
-               },
-               swagger=<ja>@ResourceSwagger</ja>(
-                       version=<js>"1.0.0"</js>,
-                       title=<js>"Swagger Petstore"</js>,
-                       termsOfService=<js>"You are on your own."</js>,
-                       contact=<ja>@Contact</ja>(
-                               name=<js>"Juneau Development Team"</js>,
-                               email=<js>"[email protected]"</js>,
-                               url=<js>"http://juneau.apache.org";</js>
-                       ),
-                       license=<ja>@License</ja>(
-                               name=<js>"Apache 2.0"</js>,
-                               
url=<js>"http://www.apache.org/licenses/LICENSE-2.0.html";</js>
-                       ),
-                       externalDocs=<ja>@ExternalDocs</ja>(
-                               description=<js>"Find out more about 
Juneau"</js>,
-                               url=<js>"http://juneau.apache.org";</js>
-                       ),
-                       tags={
-                               <ja>@Tag</ja>(
-                                       name=<js>"pet"</js>,
-                                       description=<js>"Everything about your 
Pets"</js>,
-                                       externalDocs=<ja>@ExternalDocs</ja>(
-                                               description=<js>"Find out 
more"</js>,
-                                               
url=<js>"http://juneau.apache.org";</js>
-                                       )
-                               ),
-                               <ja>@Tag</ja>(
-                                       name=<js>"store"</js>,
-                                       description=<js>"Access to Petstore 
orders"</js>
-                               ),
-                               <ja>@Tag</ja>(
-                                       name=<js>"user"</js>,
-                                       description=<js>"Operations about 
user"</js>,
-                                       externalDocs=<ja>@ExternalDocs</ja>(
-                                               description=<js>"Find out more 
about our store"</js>,
-                                               
url=<js>"http://juneau.apache.org";</js>
-                                       )
-                               )
-                       }
-               ),
-               staticFiles={<js>"htdocs:/htdocs"</js>} 
-       )
-       <ja>@HtmlDocConfig</ja>(
-               widgets={
-                       ContentTypeMenuItem.<jk>class</jk>,
-                       ThemeMenuItem.<jk>class</jk>,
-               },
-               navlinks={
-                       <js>"up: request:/.."</js>,
-                       <js>"options: servlet:/?method=OPTIONS"</js>,
-                       <js>"$W{ContentTypeMenuItem}"</js>,
-                       <js>"$W{ThemeMenuItem}"</js>,
-                       <js>"source: 
$C{Source/gitHub}/org/apache/juneau/petstore/rest/$R{servletClassSimple}.java"</js>
-               },
-               head={
-                       <js>"&lt;link rel='icon' 
href='$U{servlet:/htdocs/cat.png}'/&gt;"</js>  <jc>// Add a cat icon to the 
page.</jc>
-               },
-               header={
-                       <js>"&lt;h1&gt;$R{resourceTitle}&lt;/h1&gt;"</js>,
-                       <js>"&lt;h2&gt;$R{methodSummary}&lt;/h2&gt;"</js>,
-                       <js>"$C{PetStore/headerImage}"</js>
-               },
-               aside={
-                       <js>"&lt;div style='max-width:400px' 
class='text'&gt;"</js>,
-                       <js>"   &lt;p&gt;This page shows a standard nested REST 
resource.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;It shows how different properties can 
be rendered on the same bean in different views.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;It also shows examples of HtmlRender 
classes and @BeanProperty(format) annotations.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;It also shows how the Queryable 
converter and query widget can be used to create searchable 
interfaces.&lt;/p&gt;"</js>,
-                       <js>"&lt;/div&gt;"</js>
-               },
-               stylesheet=<js>"servlet:/htdocs/themes/dark.css"</js>  <jc>// 
Use dark theme by default.</jc>
-       )
-       <jk>public class</jk> PetStoreResource <jk>extends</jk> BasicRest 
<jk>implements</jk> PetStore {
-       
-               <ja>@Inject</ja>
-               <jk>private</jk> PetStoreService <jf>store</jf>;
-       
-               <jd>/**
-                * Navigation page
-                *
-                * @return Navigation page contents.
-                */</jd>
-               <ja>@RestMethod</ja>(
-                       name=<jsf>GET</jsf>,
-                       path=<js>"/"</js>,
-                       summary=<js>"Navigation page"</js>
-               )
-               <ja>@HtmlDocConfig</ja>(
-                       style={
-                               <js>"INHERIT"</js>,  <jc>// Flag for inheriting 
resource-level CSS.</jc>
-                               <js>"body { "</js>,
-                                       <js>"background-image: 
url('petstore/htdocs/background.jpg'); "</js>,
-                                       <js>"background-color: black; "</js>,
-                                       <js>"background-size: cover; "</js>,
-                                       <js>"background-attachment: fixed; 
"</js>,
-                               <js>"}"</js>
-                       }
-               )
-               <jk>public</jk> ResourceDescriptions getTopPage() {
-                       <jk>return new</jk> ResourceDescriptions()
-                               .append(<js>"pet"</js>, <js>"All pets in the 
store"</js>)
-                               .append(<js>"store"</js>, <js>"Orders and 
inventory"</js>)
-                               .append(<js>"user"</js>, <js>"Petstore 
users"</js>)
-                       ;
-               }
-               
-               ...
-               </p>            
-               <p>
-                       Clicking the <c>petstore</c> link on the root page 
takes you to our PetStore resource:
-               </p>
-               <p class='bcode w800'>
-       http://localhost:5000/petstore
-               </p>                    
-               <img class='bordered w800' src='petstore/PetStore.png'>
-       
-               <p>
-                       The methods defined in our <c>PetStore</c> interface 
are implemented like so:
-               </p>            
-               <h5 class='figure'>PetStoreResource.java</h5>
-               <p class='bcode w800'>
-       <ja>@Override</ja> <jc>/* PetStore */</jc>
-       <ja>@RestMethod</ja>(
-               name=<jsf>GET</jsf>,
-               path=<js>"/pet"</js>,
-               summary=<js>"All pets in the store"</js>,
-               swagger=<ja>@MethodSwagger</ja>(
-                       tags=<js>"pet"</js>,
-                       parameters={
-                               Queryable.<jsf>SWAGGER_PARAMS</jsf>  <jc>// 
Documents searching.</jc>
-                       }
-               ),
-               converters={Queryable.<jk>class</jk>}  <jc>// Searching 
support.</jc>
-       )
-       <ja>@BeanConfig</ja>(
-               bpx=<js>"Pet: tags,photo"</js>  <jc>// In this view, don't 
serialize tags/photos properties.</jc>
-       )
-       <jk>public</jk> Collection&lt;Pet&gt; getPets() <jk>throws</jk> 
NotAcceptable {
-               <jk>return</jk> <jf>store</jf>.getPets();
-       }
-
-       <ja>@Override</ja> <jc>/* PetStore */</jc>
-       <ja>@RestMethod</ja>(
-               name=<jsf>GET</jsf>,
-               path=<js>"/pet/{petId}"</js>,
-               summary=<js>"Find pet by ID"</js>,
-               description=<js>"Returns a single pet"</js>,
-               swagger=<ja>@MethodSwagger</ja>(
-                       tags=<js>"pet"</js>
-               )
-       )
-       <jk>public</jk> Pet getPet(<jk>long</jk> <jv>petId</jv>) 
<jk>throws</jk> IdNotFound, NotAcceptable {
-               <jk>return</jk> <jf>store</jf>.getPet(<jv>petId</jv>);
-       }
-
-       <ja>@Override</ja> <jc>/* PetStore */</jc>
-       <ja>@RestMethod</ja>(
-               name=<jsf>POST</jsf>,
-               path=<js>"/pet"</js>,
-               summary=<js>"Add a new pet to the store"</js>,
-               swagger=<ja>@MethodSwagger</ja>(
-                       tags=<js>"pet"</js>
-               ),
-               roleGuard=<js>"ROLE_ADMIN || (ROLE_USER &amp;&amp; 
ROLE_WRITABLE)"</js>  <jc>// Restrict access to this method.</jc>
-       )
-       <jk>public long</jk> createPet(CreatePet <jv>pet</jv>) <jk>throws</jk> 
IdConflict, NotAcceptable, UnsupportedMediaType {
-               <jk>return</jk> <jf>store</jf>.create(<jv>pet</jv>).getId();
-       }
-       
-       ...
-               </p>            
-               <p>
-                       After running the <c>Main</c> method in the client code 
to populate the database, the page renders as follows:
-               </p>
-               <p class='bcode w800'>
-       http://localhost:5000/petstore/pet
-               </p>                    
-               <img class='bordered w800' src='petstore/PetStore_pets.png'>
-       
-               <p>
-                       The <l>OPTIONS</l> menu items takes you to the 
auto-generated Swagger UI for the application:
-               </p>
-               <p class='bcode w900'>
-       http://localhost:10000/petstore/pet?method=OPTIONS
-               </p>                    
-               <img class='bordered w900' src='petstore/9a.png'>
-               <p>
-                       Since we've defined tags on our annotations, the 
pet-related operations are all grouped under the <l>pet</l> tag:
-               </p>
-               <img class='bordered w900' src='petstore/9b.png'>
-               <p>
-                       Information for all HTTP parts is automatically 
generated:
-               </p>
-               <img class='bordered w900' src='petstore/9h.png'>
-               <p>
-                       The schema models for POJO models is available in the 
<l>Responses</l> section of an operation:
-               </p>
-               <img class='bordered w900' src='petstore/9c.png'>
-               <p>
-                       Auto-generated examples are available for all supported 
languages:
-               </p>
-               <img class='bordered w900' src='petstore/9d.png'>
-               <p>
-                       For example, <l>application/json+simple</l>:
-               </p>
-               <img class='bordered w900' src='petstore/9e.png'>
-               <p>
-                       Examples can be derived in a number of ways.  In our 
case, we've defined a static method on our <l>Pet</l>
-                       class annotated with <ja>@Example</ja>:
-               </p>
-               <h5 class='figure'>Pet.java</h5>
-               <p class='bcode w800'>
-       <ja>@Example</ja>
-       <jk>public static</jk> Pet example() {
-               <jk>return new</jk> Pet()
-                       .id(123)
-                       .species(Species.<jsf>DOG</jsf>)
-                       .name(<js>"Doggie"</js>)
-                       .tags(<js>"friendly"</js>,<js>"smart"</js>)
-                       .status(PetStatus.<jsf>AVAILABLE</jsf>);
-       }
-               </p>
-               <p>
-                       Similar functionality exists for request bodies as well:
-               </p>
-               <img class='bordered w900' src='petstore/9f.png'>
-               <p>
-                       At the bottom of the page is a listing of the POJO 
models in the app:
-               </p>
-               <img class='bordered w900' src='petstore/9g.png'>
-               
-       </div>
-</div>
-</body>
diff --git a/templates/rest-client.html b/templates/rest-client.html
deleted file mode 100644
index 33a2d963f..000000000
--- a/templates/rest-client.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-REST-CLIENT 
================================================================================
 -->
-       <!-- 
=======================================================================================================
 -->
-       
-       <h5 class='toc' id='juneau-rest-client'>juneau-rest-client</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-rest-client<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-rest-client-{@property juneauVersion}.jar 
-               </p>    
-       
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.rest.client_{@property juneauVersion}.jar 
-               </p>    
-
-               <p>
-                       Built upon the feature-rich Apache HttpClient library, 
the Juneau RestClient API adds support for fluent-style
-                       REST calls and the ability to perform marshalling of 
POJOs to and from HTTP parts.
-               </p>
-               
-               <h5 class='figure'>Example:</h5>
-               <p class='bcode w800'>
-       <jc>// Create a basic REST client with JSON support and download a 
bean.</jc>
-       MyBean <jv>bean</jv> = RestClient.<jsm>create</jsm>()
-               .simpleJson()
-               .build()
-               .get(<jsf>URI</jsf>)
-               .run()
-               .assertStatus().code().is(200)
-               
.assertHeader(<js>"Content-Type"</js>).matchesSimple(<js>"application/json*"</js>)
-               .getBody().as(MyBean.<jk>class</jk>);
-               </p>
-               
-               <p>
-                       Breaking apart the fluent call, we can see the classes 
being used:
-               </p>
-               
-               <p class='bcode w800'>
-       RestClientBuilder <jv>builder</jv> = 
RestClient.<jsm>create</jsm>().simpleJson();
-       RestClient <jv>client</jv> = <jv>builder</jv>.build();
-       RestRequest <jv>req</jv> = <jv>client</jv>.get(<jsf>URI</jsf>);
-       RestResponse <jv>res</jv> = <jv>req</jv>.run();
-       RestResponseStatusLineAssertion <jv>statusLineAssertion</jv> = 
<jv>res</jv>.assertStatus();
-       FluentIntegerAssertion&lt;RestResponse&gt; <jv>codeAssertion</jv> = 
<jv>statusLineAssertion</jv>.code();
-       <jv>res</jv> = <jv>codeAssertion</jv>.is(200);
-       FluentStringAssertion&lt;RestResponse&gt; <jv>headerAssertion</jv> = 
<jv>res</jv>.assertHeader(<js>"Content-Type"</js>);
-       <jv>res</jv> = 
<jv>headerAssertion</jv>.matchesSimple(<js>"application/json*"</js>);
-       RestResponseBody <jv>body</jv> = <jv>res</jv>.getBody();
-       MyBean <jv>bean</jv> = <jv>body</jv>.as(MyBean.<jk>class</jk>);
-               </p>
-               
-               <p>
-                       It additionally provides support for creating remote 
proxy interfaces using REST as the transport medium.
-               </p>
-               
-               <h5 class='figure'>Example:</h5>
-               <p class='bcode w800'>
-       <jc>// Define a Remote proxy for interacting with a REST interface.</jc>
-       <ja>@Remote</ja>(path=<js>"/petstore"</js>)
-       <jk>public interface</jk> PetStore {
-       
-               <ja>@RemoteMethod</ja>(method=<jsf>POST</jsf>, 
path=<js>"/pets"</js>)
-               Pet addPet(
-                       <ja>@Body</ja> CreatePet <jv>pet</jv>,
-                       <ja>@Header</ja>(<js>"E-Tag"</js>) UUID <jv>etag</jv>,
-                       <ja>@Query</ja>(<js>"debug"</js>) <jk>boolean</jk> 
<jv>debug</jv>
-               );
-       }
-
-       <jc>// Use a RestClient with default Simple JSON support.</jc>
-       RestClient <jv>client</jv> = 
RestClient.<jsm>create</jsm>().simpleJson().build();
-       
-       PetStore <jv>store</jv> = 
<jv>client</jv>.getRemote(PetStore.<jk>class</jk>, 
<js>"http://localhost:10000";</js>);
-       CreatePet <jv>createPet</jv> = <jk>new</jk> 
CreatePet(<js>"Fluffy"</js>, 9.99);
-       Pet <jv>pet</jv> = <jv>store</jv>.addPet(<jv>createPet</jv>, 
UUID.<jsm>randomUUID</jsm>(), <jk>true</jk>);
-               </p>
-       
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-client'>juneau-rest-client</a>
-               </ul>
-       </div>  
-</body>
-</html>
\ No newline at end of file
diff --git a/templates/rest-server.html b/templates/rest-server.html
deleted file mode 100644
index 4e13fd8ca..000000000
--- a/templates/rest-server.html
+++ /dev/null
@@ -1,450 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-       <!-- Google Tag Manager -->
-       <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
-       new Date().getTime(),event:'gtm.js'});var 
f=d.getElementsByTagName(s)[0],
-       j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-       
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-       })(window,document,'script','dataLayer','GTM-MT3PBTF');</script>
-       <!-- End Google Tag Manager -->
-
-       <style>
-               @import url("styles/juneau-code.css");
-               @import url("styles/juneau-doc.css");
-       </style>
-</head>
-<body>
-       <!-- Google Tag Manager (noscript) -->
-       <noscript><iframe 
src="https://www.googletagmanager.com/ns.html?id=GTM-MT3PBTF";
-       height="0" width="0" 
style="display:none;visibility:hidden"></iframe></noscript>
-       <!-- End Google Tag Manager (noscript) -->      
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-REST-SERVER 
================================================================================
 -->
-       <!-- 
=======================================================================================================
 -->
-       
-       <h5 class='toc' id='juneau-rest-server'>juneau-rest-server</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-rest-server<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-rest-server-{@property juneauVersion}.jar 
-               </p>    
-       
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.rest.server_{@property juneauVersion}.jar 
-               </p>    
-
-               <p>
-                       The REST server API builds upon the 
<code>SerializerGroup</code> and <code>ParserGroup</code> classes 
-                       to provide annotated REST servlets that automatically 
negotiate the HTTP media types for you.
-                       Developers simply work with requests, responses, 
headers, path variables, query parameters, and form data as POJOs.
-                       It allows you to create sophisticated REST interfaces 
using tiny amounts of code.
-               </p>
-               <p>
-                       The end goal is to provide simple and flexible yet 
sophisticated REST interfaces that allow POJOs to be automatically represented 
as 
-                       different content types depending on whatever the 
particular need: 
-               </p>
-               <ul class='spaced-list'>
-                       <li>HTML for viewing POJOs in easy-to-read format in a 
browser.
-                       <li>JSON for interacting through Javascript.
-                       <li>XML for interacting with other applications.
-                       <li>RDF for interacting with triple stores.
-                       <li>URL-Encoding for interacting through HTML forms.
-                       <li>MessagePack for efficiently transmitting large 
amounts of data.
-               </ul>
-               <p>
-                       A simple example that supports all languages:
-               </p>
-               <p class='bcode w800'>
-       <ja>@Rest</ja>(
-               path=<js>"/systemProperties"</js>,
-               title=<js>"System properties resource"</js>
-       )
-       <jk>public class</jk> SystemPropertiesResource <jk>extends</jk> 
BasicRestServlet {
-       
-               <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/"</js>)
-               <jk>public</jk> Map 
getSystemProperties(<ja>@Query</ja>(<js>"sort"</js>) <jk>boolean</jk> 
<jv>sort</jv>) <jk>throws</jk> Throwable {
-                       <jk>if</jk> (<jv>sort</jv>)
-                               <jk>return new</jk> 
TreeMap(System.<jsm>getProperties</jsm>());
-                       <jk>return</jk> System.<jsm>getProperties</jsm>();
-               }
-       
-               <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, 
path=<js>"/{propertyName}"</js>)
-               <jk>public</jk> String 
getSystemProperty(<ja>@Path</ja>(<js>"propertyName"</js>) String 
<jv>propertyName</jv>) <jk>throws</jk> Throwable {
-                       <jk>return</jk> 
System.<jsm>getProperty</jsm>(<jv>propertyName</jv>);
-               }
-       
-               <ja>@RestMethod</ja>(name=<jsf>PUT</jsf>, 
path=<js>"/{propertyName}"</js>, guards=AdminGuard.<jk>class</jk>)
-               <jk>public</jk> String 
setSystemProperty(<ja>@Path</ja>(<js>"propertyName"</js>) String 
<jv>propertyName</jv>, <ja>@Body</ja> String <jv>value</jv>) {
-                       System.<jsm>setProperty</jsm>(<jv>propertyName</jv>, 
<jv>value</jv>);
-                       <jk>return</jk> <js>"OK"</js>;
-               }
-       
-               <ja>@RestMethod</ja>(name=<jsf>POST</jsf>, path=<js>"/"</js>, 
guards=AdminGuard.<jk>class</jk>)
-               <jk>public</jk> String setSystemProperties(<ja>@Body</ja> 
java.util.Properties <jv>newProperties</jv>) {
-                       System.<jsm>setProperties</jsm>(<jv>newProperties</jv>);
-                       <jk>return</jk> <js>"OK"</js>;
-               }
-       
-               <ja>@RestMethod</ja>(name=<jsf>DELETE</jsf>, 
path=<js>"/{propertyName}"</js>, guards=AdminGuard.<jk>class</jk>)
-               <jk>public</jk> String 
deleteSystemProperty(<ja>@Path</ja>(<js>"propertyName"</js>) String 
<jv>propertyName</jv>) {
-                       System.<jsm>clearProperty</jsm>(<jv>propertyName</jv>);
-                       <jk>return</jk> <js>"OK"</js>;
-               }
-       }
-               </p>
-               <br><br><hr>
-               <p>
-                       The REST API is built on top of Servlets, making them 
easy to deploy in any JEE environment.  
-               </p>
-               <p>
-                       REST Java methods can return any of the following 
objects:  
-                       <br>POJOs, <ja>@Response</ja> annotated objects, 
<code>Readers</code>, <code>InputStreams</code>, <code>ZipFiles</code>, 
<code>Redirects</code>, <code>Streamables</code>, and <code>Writables</code>.
-               </p>
-               <p>
-                       Or add your own handlers for other types.  
-               </p>
-               <p>
-                       REST Java methods can be passed any of the following 
objects in any order:
-               </p>
-               <ul class='spaced-list'>
-                       <li>Low-level request/response objects:
-                               <br><code>HttpServletRequest</code>, 
<code>HttpServletResponse</code>, <code>RestRequest</code>, 
<code>RestResponse</code>.
-                       <li>Intermediate-level objects:  
-                               <br><code>RequestHeaders</code>, 
<code>RequestQuery</code>, <code>RequestFormData</code>, 
<code>RequestPathMatch</code>, <code>RequestBody</code>.
-                       <li>All RFC 2616 request header objects:  
-                               <br><code>Accept</code>, 
<code>AcceptLanguage</code>, <code>AcceptEncoding</code>...
-                       <li>Annotated parameters:  
-                               <br><ja>@Header</ja>, <ja>@Query</ja>, 
<ja>@FormData</ja>, <ja>@Path</ja>, <ja>@PathRemainder</ja>, <ja>@Body</ja>.  
-                       <li>Other objects:  
-                               <br><code>Locale</code>, 
<code>ResourceBundle</code>, <code>MessageBundle</code>, 
<code>InputStream</code>, <code>OutputStream</code>, <code>Reader</code>, 
<code>Writer</code>...
-                       <li>User-defined parameter types.
-               </ul>
-               <p>
-                       Automatic error handling is provided for a variety of 
conditions: 
-               </p>
-               <ul>
-                       <li>Automatic 401 errors (Unauthorized) on failed 
guards.
-                       <li>Automatic 404 errors (Not Found) on unmatched path 
patterns.
-                       <li>Automatic 405 errors (Method Not Implemented) on 
unimplemented methods.
-                       <li>Automatic 406 errors (Not Acceptable) when no 
matching serializer was found to handle the <l>Accept</l> header.
-                       <li>Automatic 412 errors (Precondition Failed) when all 
matchers failed to match.
-                       <li>Automatic 415 errors (Unsupported Media Type) when 
no matching parser was found was found to handle the <l>Content-Type</l> header.
-                       <li>Automatic 500 errors on uncaught exceptions.
-                       <li>Throw your own runtime RestException with HTTP 
status and response object. 
-               </ul>
-               <p>
-                       Other features include: 
-               </p> 
-               <ul class='spaced-list'>
-                       <li>Extremely simple debuggability using nothing more 
than your browser.
-                       <li>Simplified localization support.
-                       <li>Configurability through external INI files.
-                       <li>Client-versioned responses (and other customizable 
heuristic matching APIs).
-                       <li>Automatic statistics gathering.
-                       <li>Define and use your own HTML stylesheets.
-                       <li>Lots of up-to-date documentation and examples.
-                       <li>MUCH MORE!....
-               </ul>
-               <br><hr>
-               <p>     
-                       Navigable hierarchies of REST resources are easy to set 
up either programmatically or through annotations.
-               </p>
-               <p>
-                       The following example is the <code>RootResources</code> 
class from the REST examples showing how to construct
-                       a grouping of resources using the 
<code>children()</code> annotation:
-               </p>
-               <p class='bcode w800'>
-       <ja>@Rest</ja>(
-               path=<js>"/"</js>,
-               title=<js>"Root resources"</js>,
-               description=<js>"Example of a router resource page."</js>,
-               children={
-                       HelloWorldResource.<jk>class</jk>,
-                       PetStoreResource.<jk>class</jk>,
-                       DtoExamples.<jk>class</jk>,
-                       ConfigResource.<jk>class</jk>,
-                       LogsResource.<jk>class</jk>,
-                       ShutdownResource.<jk>class</jk>
-               }
-       )
-       <ja>@HtmlDocConfig</ja>(
-               links={
-                       <js>"options: ?method=OPTIONS"</js>,
-                       <js>"$W{ContentTypeMenuItem}"</js>,
-                       <js>"source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/RootResources.java"</js>
-               },
-               aside={
-                       <js>"&lt;div style='max-width:400px' 
class='text'&gt;"</js>,
-                       <js>"   &lt;p&gt;This is an example of a 'router' page 
that serves as a jumping-off point to child resources.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Resources can be nested arbitrarily 
deep through router pages.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Note the options link provided that 
lets you see the generated swagger doc for this page.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Also note the source link on these 
pages to view the source code for the page.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;All content on pages in the UI are 
serialized POJOs.  In this case, it's a serialized array of beans with 2 
properties, 'name' and 'description'.&lt;/p&gt;"</js>,
-                       <js>"   &lt;p&gt;Other features (such as this aside) 
are added through annotations.&lt;/p&gt;"</js>,
-                       <js>"&lt;/div&gt;"</js>
-               },
-               footer=<js>"$W{PoweredByApache}"</js>,
-               widgets={
-                       PoweredByApache.<jk>class</jk>,
-                       ContentTypeMenuItem.<jk>class</jk>
-               }
-       )
-       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup { <jc>/* No code needed! */</jc> }
-               </p>
-               <p>
-                       The above resource when rendered in HTML shows how easy 
it is to discover and navigate to child resources using a browser:
-               </p>
-               <p class='bcode w800'>
-       http://localhost:10000
-               </p>
-               <img class='bordered w800' 
src='images/juneau-examples-rest.RootResources.1.png'>
-               <p>
-                       Resources can be nested arbitrarily deep.  
-                       The <ja>@Rest</ja> and <ja>@RestMethod</ja> annotations 
can be applied to any classes, not just
-                       servlets.  The only requirement is that the top-level 
resource be a subclass of <code>RestServlet</code> as a hook into
-                       the servlet container.
-               </p>
-               
-               <p>
-                       The <code>juneau-examples-rest</code> project includes 
various other examples that highlight some of the 
-                       capabilities of the REST servlet API.
-                       <br>
-                       For example, the <code>PetStoreResource</code> class 
shows some advanced features such as using POJO renders
-                       and converters, and HTML widgets.
-               </p>
-               <p class='bcode w800'>
-       http://localhost:10000/petstore
-               </p>                    
-               <img class='bordered w800' 
src='images/juneau-examples-rest.PetStoreResource.1.png'>
-               <p>
-                       The beans being serialized are shown here:
-               </p>
-               <p class='bcode w800'>
-       <jc>// Our bean class.</jc>
-       <jk>public class</jk> Pet {
-
-               <ja>@Html</ja>(link=<js>"servlet:/{id}"</js>)  <jc>// Creates a 
hyperlink in HTML view.</jc>
-               <ja>@NameProperty</ja>                <jc>// Links the parent 
key to this bean.</jc>
-               <jk>public int</jk> <jf>id</jf>;
-
-               <jk>public</jk> String <jf>name</jf>;
-               <jk>public</jk> Kind <jf>kind</jf>;
-
-               <ja>@Beanp</ja>(format=<js>"$%.2f"</js>)  <jc>// Renders price 
in dollars.</jc>
-               <jk>public float</jk> <jf>price</jf>;
-
-               
<ja>@Beanp</ja>(swap=DateSwap.<jsf>RFC2822D</jsf>.<jk>class</jk>)  <jc>// 
Renders dates in RFC2822 format.</jc>
-               <jk>public</jk> Date <jf>birthDate</jf>;
-
-               <jk>public int</jk> getAge() {
-                       Calendar <jv>calendar</jv> = <jk>new</jk> 
GregorianCalendar();
-                       <jv>calendar</jv>.setTime(<jf>birthDate</jf>);
-                       <jk>return new</jk> 
GregorianCalendar().get(Calendar.<jsf>YEAR</jsf>) - 
<jv>calendar</jv>.get(Calendar.<jsf>YEAR</jsf>);
-               }
-       }
-
-       <ja>@Html</ja>(render=KindRender.<jk>class</jk>)  <jc>// Render as an 
icon in HTML.</jc>
-       <jk>public static enum</jk> Kind {
-               <jsf>CAT</jsf>, <jsf>DOG</jsf>, <jsf>BIRD</jsf>, 
<jsf>FISH</jsf>, <jsf>MOUSE</jsf>, <jsf>RABBIT</jsf>, <jsf>SNAKE</jsf>
-       }
-
-       <jk>public static class</jk> KindRender <jk>extends</jk> 
HtmlRender&lt;Kind&gt; {
-               <ja>@Override</ja>
-               <jk>public</jk> Object getContent(SerializerSession 
<jv>session</jv>, Kind <jv>value</jv>) {
-                       <jk>return new</jk> 
Img().src(<js>"servlet:/htdocs/"</js>+<jv>value</jv>.toString().toLowerCase()+<js>".png"</js>);
-               }
-               <ja>@Override</ja>
-               <jk>public</jk> String getStyle(SerializerSession 
<jv>session</jv>, Kind <jv>value</jv>) {
-                       <jk>return</jk> <js>"background-color:#FDF2E9"</js>;
-               }
-       }
-               </p>
-       
-               <p>
-                       The <code>QUERY</code> menu item shows the capabilities 
of Converters which are post-processors that
-                       work to filter POJOs after they've been returned by 
your Java method.
-                       <br>
-                       In this case, we're using the <code>Queryable</code> 
converter that allows us to perform search/view/sort/paging
-                       against collections of beans:
-               </p>
-               <img class='bordered w800' 
src='images/juneau-examples-rest.PetStoreResource.2.png'>
-       
-               <p>
-                       The drop-down menu items are implemented through 
"widgets" which allow you to embed arbitrary HTML, Javascript, 
-                       and CSS in the HTML view of the page.
-               </p>
-               <p class='bcode w800'>
-       <ja>@RestMethod</ja>(
-               name=<jsf>GET</jsf>,
-               path=<js>"/"</js>,
-               summary=<js>"The complete list of pets in the store"</js>,
-
-               <jc>// Add our converter for POJO query support.</jc>
-               converters=Queryable.<jk>class</jk>
-       )
-       <ja>@HtmlDocConfig</ja>(
-               
-               <jc>// Add our menu items in the nav links.</jc>
-               links={
-                       <js>"up: request:/.."</js>,
-                       <js>"options: servlet:/?method=OPTIONS"</js>,
-                       <js>"$W{QueryMenuItem}"</js>,
-                       <js>"$W{ContentTypeMenuItem}"</js>,
-                       <js>"$W{StyleMenuItem}"</js>,
-                       <js>"source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java"</js>
-               },
-               
-               <jc>// Add 'query' and 'content-types' menu items.</jc>
-               widgets={
-                       QueryMenuItem.<jk>class</jk>,
-                       ContentTypeMenuItem.<jk>class</jk>,
-                       StyleMenuItem.<jk>class</jk>
-               }
-       )
-       <jk>public</jk> Collection&lt;Pet&gt; getPets() {
-               </p>
-               
-               <p>
-                       HTML views are highly customizable with abilities such 
as defining your own look-and-feel and even allowing
-                       you to define your own templates.
-               </p>
-               <p>
-                       For example, the PetStore page above rendered in one of 
the other predefined stylesheets:
-               </p>    
-               <h5 class='figure'>Light look-and-feel</h5>
-               <img class='bordered w800' 
src='images/juneau-examples-rest.PetStoreResource.3.png'>
-               <h5 class='figure'>Dark look-and-feel</h5>
-               <img class='bordered w800' 
src='images/juneau-examples-rest.PetStoreResource.4.png'>            
-               
-               <p>
-                       Swagger UI is auto-generated and self-hosted through 
OPTIONS requests: 
-               </p>
-               <p class='bcode w900'>
-       http://localhost:10000/petstore?method=OPTIONS
-               </p>
-               <img class='bordered w900' 
src='images/juneau-examples-rest.PetStoreResource.9a.png'>
-               <br>            
-               <img class='bordered w900' 
src='images/juneau-examples-rest.PetStoreResource.9h.png'>
-               <br>            
-               <img class='bordered w900' 
src='images/juneau-examples-rest.PetStoreResource.9f.png'>           
-
-               <p>
-                       Swagger contains auto-generated code examples for all 
supported languages:
-               </p>
-               <img class='bordered w900' 
src='images/juneau-examples-rest.PetStoreResource.9d.png'>
-               <br>            
-               <img class='bordered w900' 
src='images/juneau-examples-rest.PetStoreResource.9e.png'>           
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-server'>juneau-rest-server</a>
-               </ul>
-               
-       </div>
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-REST-SERVER-SPRINGBOOT 
===================================================================== -->
-       <!-- 
=======================================================================================================
 -->
-
-       <h5 class='toc' 
id='juneau-rest-server-springboot'>juneau-rest-server-springboot</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-rest-server-springboot<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-rest-server-springboot-{@property juneauVersion}.jar 
-               </p>    
-               
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.rest.server.springboot_{@property juneauVersion}.jar 
-               </p>    
-               
-               <p>
-                       The <code>juneau-rest-server-springboot</code> library 
provides classes to make it easy to integrate
-                       Juneau REST resources with Spring and Spring Boot.
-               </p>
-               
-               <h5 class='figure'>Example:</h5>
-               <p class='bcode w800'>
-       <ja>@SpringBootApplication</ja>
-       <ja>@Controller</ja>
-       <jk>public class</jk> App {
-       
-               <jk>public static void</jk> main(String[] <jv>args</jv>) {
-                       <jk>new</jk> 
SpringApplicationBuilder(App.<jk>class</jk>)
-                               .initializers(<jk>new</jk> 
JuneauRestInitializer(App.<jk>class</jk>))
-                               .run(<jv>args</jv>);
-               }
-       
-               <jd>/** Our root resource */</jd>
-               <ja>@Bean @JuneauRestRoot</ja>
-               <jk>public</jk> RootResource getRootResource() {
-                       <jk>return new</jk> RootResource();  <jc>// A subclass 
of RestServlet.</jc>
-               }
-       }
-               </p>
-               <p>
-                       The initializer will search for Spring beans annotated 
with the <ja>@JuneauRestRoot</ja> annotation identifying it
-                       as a top-level servlet to be deployed in the Spring 
Boot web container.
-               </p>
-               
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-server-springboot'>juneau-rest-server-springboot</a>
-               </ul>
-       </div>
-
-       <!-- 
=======================================================================================================
 -->
-       <!-- === JUNEAU-REST-SERVER-JAXRS 
========================================================================== -->
-       <!-- 
=======================================================================================================
 -->
-
-       <h5 class='toc' 
id='juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</h5>
-       <div class='topic'>
-               <h5 class='figure'>Maven Dependency</h5>
-               <p class='bcode w500'>
-       <xt>&lt;dependency&gt;</xt>
-               
<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-               
<xt>&lt;artifactId&gt;</xt>juneau-rest-server-jaxrs<xt>&lt;/artifactId&gt;</xt>
-               <xt>&lt;version&gt;</xt>{@property 
juneauVersion}<xt>&lt;/version&gt;</xt>
-       <xt>&lt;/dependency&gt;</xt>
-               </p>    
-       
-               <h5 class='figure'>Java Library</h5>
-               <p class='bcode w500'>
-       juneau-rest-server-jaxrs-{@property juneauVersion}.jar 
-               </p>    
-               
-               <h5 class='figure'>OSGi Module</h5>
-               <p class='bcode w500'>
-       org.apache.juneau.rest.server.jaxrs_{@property juneauVersion}.jar 
-               </p>    
-               
-               <p>
-                       The <code>juneau-rest-server-jaxrs</code> module 
defines predefined <code>MessageBodyReader</code> and 
-                       <code>MessageBodyWriter</code> implementations for 
using Juneau serializers and parsers in JAX-RS environments.
-               </p>    
-
-               <ul class='seealso'>
-                       <li><a class='doclink' 
href='http://juneau.apache.org/site/apidocs-{@property 
juneauVersion}/overview-summary.html#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a>
-               </ul>
-       </div>
-</body>
-</html>
\ No newline at end of file

Reply via email to