juneau-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jamesbog...@apache.org
Subject [juneau-website] branch asf-site updated: Update javadocs.
Date Fri, 02 Mar 2018 00:00:28 GMT
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 4a057b7  Update javadocs.
4a057b7 is described below

commit 4a057b768f213638a4beb37869e1c7f36738a8e1
Author: JamesBognar <jamesbognar@apache.org>
AuthorDate: Thu Mar 1 19:00:21 2018 -0500

    Update javadocs.
---
 content/site/apidocs/allclasses-frame.html         |   12 +-
 content/site/apidocs/allclasses-noframe.html       |   12 +-
 content/site/apidocs/constant-values.html          |   92 +-
 content/site/apidocs/index-all.html                |  136 +-
 .../apache/juneau/microservice/Microservice.html   |  168 +-
 .../juneau/microservice/RestMicroservice.html      |   10 +-
 .../apache/juneau/microservice/package-frame.html  |    6 +-
 .../juneau/microservice/package-summary.html       |   24 +-
 .../apache/juneau/microservice/package-tree.html   |    8 +-
 .../microservice/resources/ConfigResource.html     |   34 +-
 .../microservice/resources/DebugResource.html      |   14 +-
 .../resources/DirectoryResource.FileResource.html  |   20 +-
 .../microservice/resources/DirectoryResource.html  |   34 +-
 .../resources/LogsResource.FileResource.html       |   22 +-
 .../microservice/resources/LogsResource.html       |   30 +-
 .../microservice/resources/SampleRootResource.html |   26 +-
 .../microservice/resources/ShutdownResource.html   |   14 +-
 .../microservice/resources/package-tree.html       |   12 +-
 .../microservice/sample/HelloWorldResource.html    |   14 +-
 .../juneau/microservice/sample/RootResources.html  |   26 +-
 .../microservice/sample/package-summary.html       |    4 +-
 .../juneau/microservice/sample/package-tree.html   |   14 +-
 .../org/apache/juneau/msgpack/package-summary.html |    4 +-
 .../org/apache/juneau/msgpack/package-tree.html    |    4 +-
 .../org/apache/juneau/rest/RestContextBuilder.html |  290 +-
 .../org/apache/juneau/rest/RestServletDefault.html |    2 +-
 .../apache/juneau/rest/RestServletException.html   |    4 +-
 .../apidocs/org/apache/juneau/rest/RestUtils.html  |    4 +-
 .../org/apache/juneau/rest/package-frame.html      |    2 +-
 .../org/apache/juneau/rest/package-summary.html    |    2 +-
 .../org/apache/juneau/rest/package-tree.html       |    2 +-
 .../org/apache/juneau/svl/DefaultingVar.html       |    2 +-
 .../apidocs/org/apache/juneau/svl/VarResolver.html |   56 +-
 .../org/apache/juneau/svl/VarResolverBuilder.html  |    8 +-
 .../org/apache/juneau/svl/vars/CoalesceVar.html    |    4 +-
 .../org/apache/juneau/svl/vars/LowerCaseVar.html   |    4 +-
 .../org/apache/juneau/svl/vars/NotEmptyVar.html    |    4 +-
 .../org/apache/juneau/svl/vars/package-frame.html  |    2 +
 .../apache/juneau/svl/vars/package-summary.html    |   18 +-
 .../org/apache/juneau/svl/vars/package-tree.html   |    2 +
 content/site/apidocs/overview-frame.html           |    1 -
 content/site/apidocs/overview-summary.html         |  605 +--
 content/site/apidocs/overview-tree.html            |   23 +-
 content/site/apidocs/package-list                  |    1 -
 content/site/apidocs/resources/juneau-doc.css      |    5 +
 content/site/apidocs/serialized-form.html          |   38 +-
 .../apache/juneau/microservice/Microservice.html   | 1527 ++++----
 .../microservice/resources/ConfigResource.html     |  375 +-
 .../microservice/resources/DebugResource.html      |    2 +-
 .../resources/DirectoryResource.FileResource.html  |  695 ++--
 .../microservice/resources/DirectoryResource.html  |  695 ++--
 .../resources/LogsResource.FileResource.html       |  609 ++-
 .../microservice/resources/LogsResource.html       |  609 ++-
 .../microservice/resources/SampleRootResource.html |    4 +-
 .../microservice/resources/ShutdownResource.html   |    4 +-
 .../microservice/sample/HelloWorldResource.html    |    4 +-
 .../juneau/microservice/sample/RootResources.html  |    8 +-
 .../org/apache/juneau/rest/RestContextBuilder.html | 3896 ++++++++++----------
 .../org/apache/juneau/svl/VarResolver.html         |  228 +-
 .../org/apache/juneau/svl/VarResolverBuilder.html  |  105 +-
 60 files changed, 5278 insertions(+), 5302 deletions(-)

diff --git a/content/site/apidocs/allclasses-frame.html b/content/site/apidocs/allclasses-frame.html
index 95e091e..40f0237 100644
--- a/content/site/apidocs/allclasses-frame.html
+++ b/content/site/apidocs/allclasses-frame.html
@@ -29,7 +29,7 @@
 <li><a href="org/apache/juneau/transform/AnnotationBeanFilterBuilder.html" title="class in org.apache.juneau.transform" target="classFrame">AnnotationBeanFilterBuilder</a></li>
 <li><a href="org/apache/juneau/dto/html5/Area.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Area</a></li>
 <li><a href="org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils" target="classFrame">Args</a></li>
-<li><a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars" target="classFrame">ArgsVar</a></li>
+<li><a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">ArgsVar</a></li>
 <li><a href="org/apache/juneau/internal/ArrayUtils.html" title="class in org.apache.juneau.internal" target="classFrame">ArrayUtils</a></li>
 <li><a href="org/apache/juneau/dto/html5/Article.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Article</a></li>
 <li><a href="org/apache/juneau/internal/AsciiMap.html" title="class in org.apache.juneau.internal" target="classFrame">AsciiMap</a></li>
@@ -420,7 +420,7 @@
 <li><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">LowerCaseVar</a></li>
 <li><a href="org/apache/juneau/dto/html5/Main.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Main</a></li>
 <li><a href="org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils" target="classFrame">ManifestFile</a></li>
-<li><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars" target="classFrame">ManifestFileVar</a></li>
+<li><a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">ManifestFileVar</a></li>
 <li><a href="org/apache/juneau/dto/html5/Map.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Map</a></li>
 <li><a href="org/apache/juneau/transform/MapSwap.html" title="class in org.apache.juneau.transform" target="classFrame">MapSwap</a></li>
 <li><a href="org/apache/juneau/svl/MapVar.html" title="class in org.apache.juneau.svl" target="classFrame">MapVar</a></li>
@@ -596,11 +596,7 @@
 <li><a href="org/apache/juneau/rest/vars/RequestQueryVar.html" title="class in org.apache.juneau.rest.vars" target="classFrame">RequestQueryVar</a></li>
 <li><a href="org/apache/juneau/rest/vars/RequestVar.html" title="class in org.apache.juneau.rest.vars" target="classFrame">RequestVar</a></li>
 <li><a href="org/apache/juneau/svl/ResolvingObjectMap.html" title="class in org.apache.juneau.svl" target="classFrame">ResolvingObjectMap</a></li>
-<li><a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice" target="classFrame">Resource</a></li>
 <li><a href="org/apache/juneau/rest/labels/ResourceDescription.html" title="class in org.apache.juneau.rest.labels" target="classFrame">ResourceDescription</a></li>
-<li><a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice" target="classFrame">ResourceGroup</a></li>
-<li><a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice" target="classFrame">ResourceJena</a></li>
-<li><a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice" target="classFrame">ResourceJenaGroup</a></li>
 <li><a href="org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">ResourceSwagger</a></li>
 <li><a href="org/apache/juneau/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">Response</a></li>
 <li><a href="org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest" target="classFrame"><span class="interfaceName">ResponseHandler</span></a></li>
@@ -650,7 +646,9 @@
 <li><a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest" target="classFrame">RestServlet</a></li>
 <li><a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletDefault</a></li>
 <li><a href="org/apache/juneau/rest/RestServletException.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletException</a></li>
-<li><a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletGroupDefault</a></li>
+<li><a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletGroup</a></li>
+<li><a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice" target="classFrame">RestServletJenaDefault</a></li>
+<li><a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice" target="classFrame">RestServletJenaGroup</a></li>
 <li><a href="org/apache/juneau/rest/RestUtils.html" title="class in org.apache.juneau.rest" target="classFrame">RestUtils</a></li>
 <li><a href="org/apache/juneau/dto/ResultSetList.html" title="class in org.apache.juneau.dto" target="classFrame">ResultSetList</a></li>
 <li><a href="org/apache/juneau/http/RetryAfter.html" title="class in org.apache.juneau.http" target="classFrame">RetryAfter</a></li>
diff --git a/content/site/apidocs/allclasses-noframe.html b/content/site/apidocs/allclasses-noframe.html
index db9e23f..3b6847f 100644
--- a/content/site/apidocs/allclasses-noframe.html
+++ b/content/site/apidocs/allclasses-noframe.html
@@ -29,7 +29,7 @@
 <li><a href="org/apache/juneau/transform/AnnotationBeanFilterBuilder.html" title="class in org.apache.juneau.transform">AnnotationBeanFilterBuilder</a></li>
 <li><a href="org/apache/juneau/dto/html5/Area.html" title="class in org.apache.juneau.dto.html5">Area</a></li>
 <li><a href="org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a></li>
-<li><a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a></li>
+<li><a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></li>
 <li><a href="org/apache/juneau/internal/ArrayUtils.html" title="class in org.apache.juneau.internal">ArrayUtils</a></li>
 <li><a href="org/apache/juneau/dto/html5/Article.html" title="class in org.apache.juneau.dto.html5">Article</a></li>
 <li><a href="org/apache/juneau/internal/AsciiMap.html" title="class in org.apache.juneau.internal">AsciiMap</a></li>
@@ -420,7 +420,7 @@
 <li><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars">LowerCaseVar</a></li>
 <li><a href="org/apache/juneau/dto/html5/Main.html" title="class in org.apache.juneau.dto.html5">Main</a></li>
 <li><a href="org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a></li>
-<li><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars">ManifestFileVar</a></li>
+<li><a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></li>
 <li><a href="org/apache/juneau/dto/html5/Map.html" title="class in org.apache.juneau.dto.html5">Map</a></li>
 <li><a href="org/apache/juneau/transform/MapSwap.html" title="class in org.apache.juneau.transform">MapSwap</a></li>
 <li><a href="org/apache/juneau/svl/MapVar.html" title="class in org.apache.juneau.svl">MapVar</a></li>
@@ -596,11 +596,7 @@
 <li><a href="org/apache/juneau/rest/vars/RequestQueryVar.html" title="class in org.apache.juneau.rest.vars">RequestQueryVar</a></li>
 <li><a href="org/apache/juneau/rest/vars/RequestVar.html" title="class in org.apache.juneau.rest.vars">RequestVar</a></li>
 <li><a href="org/apache/juneau/svl/ResolvingObjectMap.html" title="class in org.apache.juneau.svl">ResolvingObjectMap</a></li>
-<li><a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></li>
 <li><a href="org/apache/juneau/rest/labels/ResourceDescription.html" title="class in org.apache.juneau.rest.labels">ResourceDescription</a></li>
-<li><a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></li>
-<li><a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice">ResourceJena</a></li>
-<li><a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">ResourceJenaGroup</a></li>
 <li><a href="org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation">ResourceSwagger</a></li>
 <li><a href="org/apache/juneau/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation">Response</a></li>
 <li><a href="org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest"><span class="interfaceName">ResponseHandler</span></a></li>
@@ -650,7 +646,9 @@
 <li><a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></li>
 <li><a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></li>
 <li><a href="org/apache/juneau/rest/RestServletException.html" title="class in org.apache.juneau.rest">RestServletException</a></li>
-<li><a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></li>
+<li><a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></li>
+<li><a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice">RestServletJenaDefault</a></li>
+<li><a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice">RestServletJenaGroup</a></li>
 <li><a href="org/apache/juneau/rest/RestUtils.html" title="class in org.apache.juneau.rest">RestUtils</a></li>
 <li><a href="org/apache/juneau/dto/ResultSetList.html" title="class in org.apache.juneau.dto">ResultSetList</a></li>
 <li><a href="org/apache/juneau/http/RetryAfter.html" title="class in org.apache.juneau.http">RetryAfter</a></li>
diff --git a/content/site/apidocs/constant-values.html b/content/site/apidocs/constant-values.html
index aa8d96d..14df548 100644
--- a/content/site/apidocs/constant-values.html
+++ b/content/site/apidocs/constant-values.html
@@ -1297,60 +1297,6 @@
 <ul class="blockList">
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a name="org.apache.juneau.microservice.vars.ArgsVar.NAME">
-<!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td><code><a href="org/apache/juneau/microservice/vars/ArgsVar.html#NAME">NAME</a></code></td>
-<td class="colLast"><code>"ARG"</code></td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.juneau.microservice.vars.ArgsVar.SESSION_args">
-<!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td><code><a href="org/apache/juneau/microservice/vars/ArgsVar.html#SESSION_args">SESSION_args</a></code></td>
-<td class="colLast"><code>"args"</code></td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars">ManifestFileVar</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a name="org.apache.juneau.microservice.vars.ManifestFileVar.NAME">
-<!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td><code><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html#NAME">NAME</a></code></td>
-<td class="colLast"><code>"MF"</code></td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.juneau.microservice.vars.ManifestFileVar.SESSION_manifest">
-<!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td><code><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html#SESSION_manifest">SESSION_manifest</a></code></td>
-<td class="colLast"><code>"manifest"</code></td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-<ul class="blockList">
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.juneau.msgpack.<a href="org/apache/juneau/msgpack/MsgPackSerializer.html" title="class in org.apache.juneau.msgpack">MsgPackSerializer</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
@@ -2319,6 +2265,25 @@
 <ul class="blockList">
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.juneau.svl.vars.ArgsVar.NAME">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/juneau/svl/vars/ArgsVar.html#NAME">NAME</a></code></td>
+<td class="colLast"><code>"A"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars">CoalesceVar</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
@@ -2395,6 +2360,25 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.juneau.svl.vars.ManifestFileVar.NAME">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/juneau/svl/vars/ManifestFileVar.html#NAME">NAME</a></code></td>
+<td class="colLast"><code>"MF"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars">NotEmptyVar</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
diff --git a/content/site/apidocs/index-all.html b/content/site/apidocs/index-all.html
index e009981..dc69de9 100644
--- a/content/site/apidocs/index-all.html
+++ b/content/site/apidocs/index-all.html
@@ -461,18 +461,6 @@
 <dd>
 <div class="block">Add a dictionary name mapping for the specified collection class with the specified entry class.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars(RestContextBuilder)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></dt>
-<dd>
-<div class="block">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceGroup.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars(RestContextBuilder)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></dt>
-<dd>
-<div class="block">Initializes the registry URL and rest clent.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceJenaGroup.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars(RestContextBuilder)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">ResourceJenaGroup</a></dt>
-<dd>
-<div class="block">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/swagger/Operation.html#addConsumes-java.util.Collection-">addConsumes(Collection&lt;MediaType&gt;)</a></span> - Method in class org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/Operation.html" title="class in org.apache.juneau.dto.swagger">Operation</a></dt>
 <dd>
 <div class="block">Adds one or more values to the <property>consumes</property> property.</div>
@@ -1459,11 +1447,11 @@
 <dd>
 <div class="block">Returns <jk>true</jk> if the specified argument types are valid for the specified parameter types.</div>
 </dd>
-<dt><a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars"><span class="typeNameLink">ArgsVar</span></a> - Class in <a href="org/apache/juneau/microservice/vars/package-summary.html">org.apache.juneau.microservice.vars</a></dt>
+<dt><a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">ArgsVar</span></a> - Class in <a href="org/apache/juneau/svl/vars/package-summary.html">org.apache.juneau.svl.vars</a></dt>
 <dd>
 <div class="block">JVM args variable resolver.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ArgsVar.html#ArgsVar--">ArgsVar()</a></span> - Constructor for class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ArgsVar.html#ArgsVar--">ArgsVar()</a></span> - Constructor for class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></dt>
 <dd>
 <div class="block">Constructor.</div>
 </dd>
@@ -7235,15 +7223,17 @@
 <div class="block">Default string variable resolver with support for system properties and environment variables:
  
  
-   <code>$S{key}</code>,<code>$S{key,default}</code> - <a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
-   <code>$E{key}</code>,<code>$E{key,default}</code> - <a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
-   <code>$IF{booleanValue, thenValue[, elseValue]}</code> - <a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
-   <code>$SW{stringValue, matchPattern:thenValue[, matchPattern:thenValue}</code> - <a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
-   <code>$CO{arg1[,arg2...]}</code> - <a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
-   <code>$PM{stringValue,matchPattern}</code> - <a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
-   <code>$UC{stringValue}</code> - <a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
-   <code>$LC{stringValue}</code> - <a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
-   <code>$NE{stringValue}</code> - <a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
+   <code>$S{key[,default]}</code> - <a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
+   <code>$E{key[,default]}</code> - <a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
+   <code>$A{key[,default]}</code> - <a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a>
+   <code>$MF{key[,default]}</code> - <a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a>
+   <code>$IF{arg,then[,else]}</code> - <a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
+   <code>$SW{arg,pattern1:then1[,pattern2:then2...]}</code> - <a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
+   <code>$CO{arg[,arg2...]}</code> - <a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
+   <code>$PM{arg,pattern}</code> - <a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
+   <code>$UC{arg}</code> - <a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
+   <code>$LC{arg}</code> - <a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
+   <code>$NE{arg}</code> - <a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
  </div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/transform/PropertyFilter.html#DEFAULT">DEFAULT</a></span> - Static variable in class org.apache.juneau.transform.<a href="org/apache/juneau/transform/PropertyFilter.html" title="class in org.apache.juneau.transform">PropertyFilter</a></dt>
@@ -10397,7 +10387,7 @@
 <dd>
 <div class="block">[GET /] - Shows child utilities.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServletGroupDefault.html#getChildren-org.apache.juneau.rest.RestRequest-">getChildren(RestRequest)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServletGroup.html#getChildren-org.apache.juneau.rest.RestRequest-">getChildren(RestRequest)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></dt>
 <dd>
 <div class="block">[GET /] - Get child resources.</div>
 </dd>
@@ -16744,6 +16734,14 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-">init(ServletConfig)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ArgsVar.html#init-org.apache.juneau.utils.Args-">init(Args)</a></span> - Static method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></dt>
+<dd>
+<div class="block">Initialize the args for this variable.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ManifestFileVar.html#init-org.apache.juneau.utils.ManifestFile-">init(ManifestFile)</a></span> - Static method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></dt>
+<dd>
+<div class="block">Initialize the manifest file for this variable.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/BeanRuntimeException.html#initCause-java.lang.Throwable-">initCause(Throwable)</a></span> - Method in exception org.apache.juneau.<a href="org/apache/juneau/BeanRuntimeException.html" title="class in org.apache.juneau">BeanRuntimeException</a></dt>
 <dd>
 <div class="block">Sets the inner cause for this exception.</div>
@@ -18788,11 +18786,11 @@
 <dd>
 <div class="block">Finds and loads the manifest file of the jar file that the specified class is contained within.</div>
 </dd>
-<dt><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars"><span class="typeNameLink">ManifestFileVar</span></a> - Class in <a href="org/apache/juneau/microservice/vars/package-summary.html">org.apache.juneau.microservice.vars</a></dt>
+<dt><a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">ManifestFileVar</span></a> - Class in <a href="org/apache/juneau/svl/vars/package-summary.html">org.apache.juneau.svl.vars</a></dt>
 <dd>
 <div class="block">Manifest file entries variable resolver.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html#ManifestFileVar--">ManifestFileVar()</a></span> - Constructor for class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars">ManifestFileVar</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ManifestFileVar.html#ManifestFileVar--">ManifestFileVar()</a></span> - Constructor for class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></dt>
 <dd>
 <div class="block">Constructor.</div>
 </dd>
@@ -19655,14 +19653,6 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogsResource.FileResource.html#name">name</a></span> - Variable in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogsResource.FileResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource.FileResource</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ArgsVar.html#NAME">NAME</a></span> - Static variable in class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a></dt>
-<dd>
-<div class="block">The name of this variable.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html#NAME">NAME</a></span> - Static variable in class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars">ManifestFileVar</a></dt>
-<dd>
-<div class="block">The name of this variable.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/remoteable/RemoteMethodArg.html#name">name</a></span> - Variable in class org.apache.juneau.remoteable.<a href="org/apache/juneau/remoteable/RemoteMethodArg.html" title="class in org.apache.juneau.remoteable">RemoteMethodArg</a></dt>
 <dd>
 <div class="block">The argument name.</div>
@@ -19731,6 +19721,10 @@
 <dd>
 <div class="block">The name of this variable.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ArgsVar.html#NAME">NAME</a></span> - Static variable in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></dt>
+<dd>
+<div class="block">The name of this variable.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/CoalesceVar.html#NAME">NAME</a></span> - Static variable in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars">CoalesceVar</a></dt>
 <dd>
 <div class="block">The name of this variable.</div>
@@ -19747,6 +19741,10 @@
 <dd>
 <div class="block">The name of this variable.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ManifestFileVar.html#NAME">NAME</a></span> - Static variable in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></dt>
+<dd>
+<div class="block">The name of this variable.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/NotEmptyVar.html#NAME">NAME</a></span> - Static variable in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars">NotEmptyVar</a></dt>
 <dd>
 <div class="block">The name of this variable.</div>
@@ -21294,10 +21292,6 @@
 <dd>
 <div class="block">Microservice Samples</div>
 </dd>
-<dt><a href="org/apache/juneau/microservice/vars/package-summary.html">org.apache.juneau.microservice.vars</a> - package org.apache.juneau.microservice.vars</dt>
-<dd>
-<div class="block">Predefined SVL Variables</div>
-</dd>
 <dt><a href="org/apache/juneau/msgpack/package-summary.html">org.apache.juneau.msgpack</a> - package org.apache.juneau.msgpack</dt>
 <dd>
 <div class="block">MessagePack Marshalling Support</div>
@@ -24053,10 +24047,6 @@
 <dd>
 <div class="block">If this schema is a reference to another schema (i.e.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ArgsVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars">ManifestFileVar</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestParam.html#resolve-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">resolve(RestRequest, RestResponse)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a></dt>
 <dd>
 <div class="block">Resolves the parameter object.</div>
@@ -24119,6 +24109,8 @@
 <dd>
 <div class="block">Convenience method for resolving variables in arbitrary objects.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ArgsVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/CoalesceVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars">CoalesceVar</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/EnvVariablesVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars">EnvVariablesVar</a></dt>
@@ -24127,6 +24119,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/LowerCaseVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars">LowerCaseVar</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/ManifestFileVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/NotEmptyVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String-">resolve(VarResolverSession, String)</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars">NotEmptyVar</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/svl/vars/PatternMatchVar.html#resolve-org.apache.juneau.svl.VarResolverSession-java.lang.String:A-">resolve(VarResolverSession, String[])</a></span> - Method in class org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars">PatternMatchVar</a></dt>
@@ -24194,12 +24188,6 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
-<dt><a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Resource</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
-<dd>
-<div class="block">Superclass for all REST resources.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Resource.html#Resource--">Resource()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="org/apache/juneau/rest/labels/ResourceDescription.html" title="class in org.apache.juneau.rest.labels"><span class="typeNameLink">ResourceDescription</span></a> - Class in <a href="org/apache/juneau/rest/labels/package-summary.html">org.apache.juneau.rest.labels</a></dt>
 <dd>
 <div class="block">Shortcut label for child resources.</div>
@@ -24212,24 +24200,6 @@
 <dd>
 <div class="block">No-arg constructor.</div>
 </dd>
-<dt><a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceGroup</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
-<dd>
-<div class="block">Superclass for all REST resource groups.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceGroup.html#ResourceGroup--">ResourceGroup()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceJena</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
-<dd>
-<div class="block">Superclass for all REST resources with RDF support.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceJena.html#ResourceJena--">ResourceJena()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice">ResourceJena</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceJenaGroup</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
-<dd>
-<div class="block">Superclass for all REST resource groups.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceJenaGroup.html#ResourceJenaGroup--">ResourceJenaGroup()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">ResourceJenaGroup</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContextBuilder.html#resourceResolver-java.lang.Class-">resourceResolver(Class&lt;? extends RestResourceResolver&gt;)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a></dt>
 <dd>
 <div class="block">REST resource resolver.</div>
@@ -24779,11 +24749,23 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
-<dt><a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroupDefault</span></a> - Class in <a href="org/apache/juneau/rest/package-summary.html">org.apache.juneau.rest</a></dt>
+<dt><a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroup</span></a> - Class in <a href="org/apache/juneau/rest/package-summary.html">org.apache.juneau.rest</a></dt>
 <dd>
 <div class="block">Specialized subclass of <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> for showing "group" pages.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServletGroupDefault.html#RestServletGroupDefault--">RestServletGroupDefault()</a></span> - Constructor for class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServletGroup.html#RestServletGroup--">RestServletGroup()</a></span> - Constructor for class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">RestServletJenaDefault</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
+<dd>
+<div class="block">Resource servlet with additional RDF support.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestServletJenaDefault.html#RestServletJenaDefault--">RestServletJenaDefault()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice">RestServletJenaDefault</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">RestServletJenaGroup</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
+<dd>
+<div class="block">Resource group with additional RDF support.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestServletJenaGroup.html#RestServletJenaGroup--">RestServletJenaGroup()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice">RestServletJenaGroup</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/juneau/rest/RestUtils.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestUtils</span></a> - Class in <a href="org/apache/juneau/rest/package-summary.html">org.apache.juneau.rest</a></dt>
 <dd>
@@ -25669,18 +25651,10 @@
 <dd>
 <div class="block">Default constructor.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ArgsVar.html#SESSION_args">SESSION_args</a></span> - Static variable in class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a></dt>
-<dd>
-<div class="block">The name of the session or context object that identifies the <a href="org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils"><code>Args</code></a> object.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/config/vars/ConfigVar.html#SESSION_config">SESSION_config</a></span> - Static variable in class org.apache.juneau.config.vars.<a href="org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars">ConfigVar</a></dt>
 <dd>
 <div class="block">The name of the session or context object that identifies the <a href="org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config"><code>Config</code></a> object.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html#SESSION_manifest">SESSION_manifest</a></span> - Static variable in class org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars">ManifestFileVar</a></dt>
-<dd>
-<div class="block">The name of the session or context object that identifies the <a href="org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils"><code>ManifestFile</code></a> object.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/vars/RequestAttributeVar.html#SESSION_req">SESSION_req</a></span> - Static variable in class org.apache.juneau.rest.vars.<a href="org/apache/juneau/rest/vars/RequestAttributeVar.html" title="class in org.apache.juneau.rest.vars">RequestAttributeVar</a></dt>
 <dd>
 <div class="block">The name of the session or context object that identifies the <a href="org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest"><code>RestRequest</code></a> object.</div>
@@ -26056,6 +26030,10 @@
 <dd>
 <div class="block">Bean property setter:  <property>anyOf</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setArgs-org.apache.juneau.utils.Args-">setArgs(Args)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></dt>
+<dd>
+<div class="block">Sets the arguments for this microservice.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/BeanPropertyMeta.html#setArray-java.lang.Object-java.util.List-">setArray(Object, List)</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a></dt>
 <dd>
 <div class="block">Sets an array field on this bean.</div>
@@ -26485,10 +26463,14 @@
 <dd>
 <div class="block">Bean property setter:  <property>license</property>.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">setManifest(Manifest)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setManifest-org.apache.juneau.utils.ManifestFile-">setManifest(ManifestFile)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></dt>
 <dd>
 <div class="block">Specifies the manifest file of the jar file this microservice is contained within.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">setManifest(Manifest)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></dt>
+<dd>
+<div class="block">Shortcut for calling <code>setManifest(<jk>new</jk> ManifestFile(mf))</code>.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setManifest-java.io.File-">setManifest(File)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></dt>
 <dd>
 <div class="block">Same as <a href="org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-"><code>Microservice.setManifest(Manifest)</code></a> except specified through a <a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io"><code>File</code></a> object.</div>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/Microservice.html b/content/site/apidocs/org/apache/juneau/microservice/Microservice.html
index fd55733..22aabdf 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/Microservice.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/Microservice.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/microservice/Microservice.html" target="_top">Frames</a></li>
@@ -346,56 +346,68 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 </td>
 </tr>
 <tr id="i19" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setArgs-org.apache.juneau.utils.Args-">setArgs</a></span>(<a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a>&nbsp;args)</code>
+<div class="block">Sets the arguments for this microservice.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setConfig-org.apache.juneau.config.Config-">setConfig</a></span>(<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;cf)</code>
 <div class="block">Specifies the config for this microservice.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setConfig-java.lang.String-boolean-">setConfig</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cfPath,
          boolean&nbsp;create)</code>
 <div class="block">Specifies the path of the config file for this microservice.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.lang.Class-">setManifest</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;c)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-"><code>setManifest(Manifest)</code></a> except finds and loads the manifest file of the jar file that the  
  specified class is contained within.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.io.File-">setManifest</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-"><code>setManifest(Manifest)</code></a> except specified through a <a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io"><code>File</code></a> object.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">setManifest</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/jar/Manifest.html?is-external=true" title="class or interface in java.util.jar">Manifest</a>&nbsp;mf)</code>
+<div class="block">Shortcut for calling <code>setManifest(<jk>new</jk> ManifestFile(mf))</code>.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-org.apache.juneau.utils.ManifestFile-">setManifest</a></span>(<a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a>&nbsp;mf)</code>
 <div class="block">Specifies the manifest file of the jar file this microservice is contained within.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifestContents-java.lang.String...-">setManifestContents</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;contents)</code>
 <div class="block">Convenience method for specifying the manifest contents directly.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#start--">start</a></span>()</code>
 <div class="block">Start this application.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#startConsole--">startConsole</a></span>()</code>
 <div class="block">Start the console for this application.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#stop--">stop</a></span>()</code>
 <div class="block">Stop this application.</div>
@@ -471,7 +483,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>setConfig</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.183">setConfig</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cfPath,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.184">setConfig</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cfPath,
                               boolean&nbsp;create)
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Specifies the path of the config file for this microservice.
@@ -504,7 +516,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>setConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.204">setConfig</a>(<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;cf)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.205">setConfig</a>(<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;cf)</pre>
 <div class="block">Specifies the config for this microservice.
  
  <p>
@@ -516,13 +528,13 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 </dl>
 </li>
 </ul>
-<a name="setManifest-java.util.jar.Manifest-">
+<a name="setManifest-org.apache.juneau.utils.ManifestFile-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.222">setManifest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/jar/Manifest.html?is-external=true" title="class or interface in java.util.jar">Manifest</a>&nbsp;mf)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.224">setManifest</a>(<a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a>&nbsp;mf)</pre>
 <div class="block">Specifies the manifest file of the jar file this microservice is contained within.
  
  <p>
@@ -536,6 +548,24 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>mf</code> - The manifest file of this microservice.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setManifest-java.util.jar.Manifest-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setManifest</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.236">setManifest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/jar/Manifest.html?is-external=true" title="class or interface in java.util.jar">Manifest</a>&nbsp;mf)</pre>
+<div class="block">Shortcut for calling <code>setManifest(<jk>new</jk> ManifestFile(mf))</code>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>mf</code> - The manifest file of this microservice.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
 </dl>
 </li>
 </ul>
@@ -545,7 +575,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifestContents</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.233">setManifestContents</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;contents)
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.247">setManifestContents</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;contents)
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Convenience method for specifying the manifest contents directly.</div>
 <dl>
@@ -564,12 +594,14 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.245">setManifest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f)
-                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.259">setManifest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f)
+                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-"><code>setManifest(Manifest)</code></a> except specified through a <a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io"><code>File</code></a> object.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>f</code> - The manifest file of this microservice.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If a problem occurred while trying to read the manifest file.</dd>
 </dl>
@@ -581,13 +613,15 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.256">setManifest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;c)
-                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.271">setManifest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;c)
+                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-"><code>setManifest(Manifest)</code></a> except finds and loads the manifest file of the jar file that the  
  specified class is contained within.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>c</code> - The class whose jar file contains the manifest to use for this microservice.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If a problem occurred while trying to read the manifest file.</dd>
 </dl>
@@ -599,20 +633,24 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>createVarResolver</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.309">createVarResolver</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.328">createVarResolver</a>()</pre>
 <div class="block">Creates the <a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl"><code>VarResolver</code></a> used to resolve variables in the config file returned by <a href="../../../../org/apache/juneau/microservice/Microservice.html#getConfig--"><code>getConfig()</code></a>.
  
  <p>
  The default implementation resolves the following variables:
- <ul>
-   <li><code>$S{key}</code>, <code>$S{key,default}</code> - System properties.
-   <li><code>$E{key}</code>, <code>$E{key,default}</code> - Environment variables.
-   <li><code>$C{key}</code>, <code>$C{key,default}</code> - Config file entries.
-   <li><code>$MF{key}</code>, <code>$MF{key,default}</code> - Manifest file entries.
-   <li><code>$ARG{key}</code>, <code>$ARG{key,default}</code> - Command-line arguments.
-   <li><code>$IF{boolArg,thenValue}</code>, <code>$IF{boolArg,thenValue,elseValue}</code> - If-block logic.
-   <li><code>$SW{stringArg,pattern,thenVal...}</code>, 
-      <code>$SW{stringArg,pattern,thenVal,elseVal...}</code>  - Switch-block logic.
+ <ul class='doctree'>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a> - <code>$S{key[,default]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a> - <code>$E{key[,default]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a> - <code>$A{key[,default]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a> - <code>$MF{key[,default]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a> - <code>$IF{arg,then[,else]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a> - <code>$SW{arg,pattern1:then1[,pattern2:then2...]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a> - <code>$CO{arg1[,arg2...]}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a> - <code>$PM{arg,pattern}</code> 
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a> - <code>$NE{arg}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a> - <code>$UC{arg}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a> - <code>$LC{arg}</code>
+   <li class='jc'><a href="../../../../org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars"><code>ConfigVar</code></a> - <code>$C{key[,default]}</code>
  </ul>
  
  <p>
@@ -657,7 +695,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getArgs</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.331">getArgs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.348">getArgs</a>()</pre>
 <div class="block">Returns the command-line arguments passed into the application.
  
  <p>
@@ -671,13 +709,29 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 </dl>
 </li>
 </ul>
+<a name="setArgs-org.apache.juneau.utils.Args-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setArgs</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.358">setArgs</a>(<a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a>&nbsp;args)</pre>
+<div class="block">Sets the arguments for this microservice.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>args</code> - The arguments for this microservice.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
 <a name="getConfig--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfig</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.428">getConfig</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.457">getConfig</a>()</pre>
 <div class="block">Returns the external INI-style configuration file that can be used to configure your microservice.
  
  <p>
@@ -739,16 +793,16 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
    <ck>sameAsAnInt</ck> = $C{MySection/anInt}
  
    <cc># A command-line argument in the form "myarg=foo"</cc>
-   <ck>myArg</ck> = $ARG{myarg}
+   <ck>myArg</ck> = $A{myarg}
  
    <cc># The first command-line argument</cc>
-   <ck>firstArg</ck> = $ARG{0}
+   <ck>firstArg</ck> = $A{0}
  
    <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> = $S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}}
+   <ck>nested</ck> = $S{mySystemProperty,$E{MY_ENV_VAR,$A{0}}}
  
    <cc># A POJO with embedded variables</cc>
-   <ck>aBean2</ck> = {foo:'$ARG{0}',baz:$C{MySection/anInt}}
+   <ck>aBean2</ck> = {foo:'$A{0}',baz:$C{MySection/anInt}}
  </p>
  
  <p class='bcode'>
@@ -779,7 +833,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getManifest</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.452">getManifest</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.481">getManifest</a>()</pre>
 <div class="block">Returns the main jar manifest file contents as a simple <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a>.
  
  <p>
@@ -808,7 +862,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getVarResolver</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.463">getVarResolver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.492">getVarResolver</a>()</pre>
 <div class="block">Returns the variable resolver for resolving variables in strings and files.
  <p>
  See the <a href="../../../../org/apache/juneau/microservice/Microservice.html#createVarResolver--"><code>createVarResolver()</code></a> method for the list of available resolution variables.</div>
@@ -824,7 +878,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogger</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html?is-external=true" title="class or interface in java.util.logging">Logger</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.472">getLogger</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html?is-external=true" title="class or interface in java.util.logging">Logger</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.501">getLogger</a>()</pre>
 <div class="block">Returns the logger for this microservice.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -838,7 +892,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.493">start</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.522">start</a>()
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start this application.
  
@@ -861,7 +915,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>startConsole</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.612">startConsole</a>()
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.641">startConsole</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start the console for this application.
  
@@ -881,7 +935,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>initLogging</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.731">initLogging</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.760">initLogging</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Initialize the logging for this microservice.
  
@@ -964,7 +1018,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>join</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.771">join</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.800">join</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Joins the application with the current thread.
  
@@ -984,7 +1038,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.786">stop</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.815">stop</a>()</pre>
 <div class="block">Stop this application.
  
  <p>
@@ -1004,7 +1058,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>kill</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.794">kill</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.823">kill</a>()</pre>
 <div class="block">Kill the JVM by calling <code>System.exit(2);</code>.</div>
 </li>
 </ul>
@@ -1014,7 +1068,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>onStart</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.811">onStart</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.840">onStart</a>()</pre>
 <div class="block">Called at the beginning of the <a href="../../../../org/apache/juneau/microservice/Microservice.html#start--"><code>start()</code></a> call.
  
  <p>
@@ -1027,7 +1081,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>onStop</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.819">onStop</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.848">onStop</a>()</pre>
 <div class="block">Called at the end of the <a href="../../../../org/apache/juneau/microservice/Microservice.html#stop--"><code>stop()</code></a> call.
  
  <p>
@@ -1040,7 +1094,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>onConfigChange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.830">onConfigChange</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/config/event/ConfigEvent.html" title="class in org.apache.juneau.config.event">ConfigEvent</a>&gt;&nbsp;events)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.859">onConfigChange</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/config/event/ConfigEvent.html" title="class in org.apache.juneau.config.event">ConfigEvent</a>&gt;&nbsp;events)</pre>
 <div class="block">Called if one or more changes occur in the config file.
  
  <p>
@@ -1059,7 +1113,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getConsoleCommands</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../org/apache/juneau/microservice/console/ConsoleCommand.html" title="class in org.apache.juneau.microservice.console">ConsoleCommand</a>&gt;&nbsp;<a href="../../../../src- [...]
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../org/apache/juneau/microservice/console/ConsoleCommand.html" title="class in org.apache.juneau.microservice.console">ConsoleCommand</a>&gt;&nbsp;<a href="../../../../src- [...]
 <div class="block">Returns the console commands associated with this microservice.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1073,7 +1127,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>createConsoleCommands</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/microservice/console/ConsoleCommand.html" title="class in org.apache.juneau.microservice.console">ConsoleCommand</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.859">createConsoleCommands</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/microservice/console/ConsoleCommand.html" title="class in org.apache.juneau.microservice.console">ConsoleCommand</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.888">createConsoleCommands</a>()
                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Constructs the list of available console commands.
  
@@ -1097,7 +1151,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getConsoleReader</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html?is-external=true" title="class or interface in java.util">Scanner</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.874">getConsoleReader</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html?is-external=true" title="class or interface in java.util">Scanner</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.903">getConsoleReader</a>()</pre>
 <div class="block">Returns the console reader.
  
  <p>
@@ -1114,7 +1168,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>getConsoleWriter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.886">getConsoleWriter</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.915">getConsoleWriter</a>()</pre>
 <div class="block">Returns the console writer.
  
  <p>
@@ -1131,7 +1185,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockList">
 <li class="blockList">
 <h4>out</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.900">out</a>(<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a>&nbsp;mb,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.929">out</a>(<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a>&nbsp;mb,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;messageKey,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;args)</pre>
 <div class="block">Prints a localized message to the console writer.
@@ -1152,7 +1206,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <ul class="blockListLast">
 <li class="blockList">
 <h4>err</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.915">err</a>(<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a>&nbsp;mb,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.944">err</a>(<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a>&nbsp;mb,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;messageKey,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;args)</pre>
 <div class="block">Prints a localized message to STDERR.
@@ -1195,7 +1249,7 @@ implements <a href="../../../../org/apache/juneau/config/event/ConfigEventListen
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/microservice/Microservice.html" target="_top">Frames</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html b/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html
index bee4de4..b918b75 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html
@@ -48,8 +48,8 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/microservice/RestMicroservice.html" target="_top">Frames</a></li>
@@ -343,7 +343,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></h3>
-<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#createConsoleCommands--">createConsoleCommands</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#createVarResolver--">createVarResolver</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#err-org.apache.juneau.utils.MessageBundle-java.lang.String-java.lang.Object...-">err</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getArgs--">getArgs</ [...]
+<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#createConsoleCommands--">createConsoleCommands</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#createVarResolver--">createVarResolver</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#err-org.apache.juneau.utils.MessageBundle-java.lang.String-java.lang.Object...-">err</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getArgs--">getArgs</ [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -901,8 +901,8 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/microservice/RestMicroservice.html" target="_top">Frames</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/package-frame.html b/content/site/apidocs/org/apache/juneau/microservice/package-frame.html
index fa09ed5..f027035 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-frame.html
@@ -15,11 +15,9 @@
 <ul title="Classes">
 <li><a href="JettyLogger.html" title="class in org.apache.juneau.microservice" target="classFrame">JettyLogger</a></li>
 <li><a href="Microservice.html" title="class in org.apache.juneau.microservice" target="classFrame">Microservice</a></li>
-<li><a href="Resource.html" title="class in org.apache.juneau.microservice" target="classFrame">Resource</a></li>
-<li><a href="ResourceGroup.html" title="class in org.apache.juneau.microservice" target="classFrame">ResourceGroup</a></li>
-<li><a href="ResourceJena.html" title="class in org.apache.juneau.microservice" target="classFrame">ResourceJena</a></li>
-<li><a href="ResourceJenaGroup.html" title="class in org.apache.juneau.microservice" target="classFrame">ResourceJenaGroup</a></li>
 <li><a href="RestMicroservice.html" title="class in org.apache.juneau.microservice" target="classFrame">RestMicroservice</a></li>
+<li><a href="RestServletJenaDefault.html" title="class in org.apache.juneau.microservice" target="classFrame">RestServletJenaDefault</a></li>
+<li><a href="RestServletJenaGroup.html" title="class in org.apache.juneau.microservice" target="classFrame">RestServletJenaGroup</a></li>
 </ul>
 </div>
 </body>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/package-summary.html b/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
index cd0f8d4..2688600 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
@@ -98,33 +98,21 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></td>
-<td class="colLast">
-<div class="block">Superclass for all REST resources.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></td>
-<td class="colLast">
-<div class="block">Superclass for all REST resource groups.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice">ResourceJena</a></td>
+<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></td>
 <td class="colLast">
-<div class="block">Superclass for all REST resources with RDF support.</div>
+<div class="block">Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">ResourceJenaGroup</a></td>
+<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice">RestServletJenaDefault</a></td>
 <td class="colLast">
-<div class="block">Superclass for all REST resource groups.</div>
+<div class="block">Resource servlet with additional RDF support.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></td>
+<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice">RestServletJenaGroup</a></td>
 <td class="colLast">
-<div class="block">Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.</div>
+<div class="block">Resource group with additional RDF support.</div>
 </td>
 </tr>
 </tbody>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/package-tree.html b/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
index 6be420b..6cde718 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
@@ -93,14 +93,12 @@
 <ul>
 <li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletDefault</span></a>
 <ul>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Resource</span></a></li>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceJena</span></a></li>
-<li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroupDefault</span></a>
+<li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroup</span></a>
 <ul>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceGroup</span></a></li>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceJenaGroup</span></a></li>
+<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">RestServletJenaGroup</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">RestServletJenaDefault</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
index 32a9516..fa8a693 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
@@ -111,9 +111,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.juneau.microservice.resources.ConfigResource</li>
 </ul>
 </li>
@@ -126,8 +123,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -141,8 +136,8 @@ var activeTableTab = "activeTableTab";
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#title--">title</a>="Configuration",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#description--">description</a>="Contents of configuration file.",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=)
-public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.44">ConfigResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.43">ConfigResource</a>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">Shows contents of the microservice configuration file.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -237,13 +232,6 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
 <!--   -->
 </a>
@@ -298,7 +286,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ConfigResource</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.44">ConfigResource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.43">ConfigResource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -318,7 +306,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="GET",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Show contents of config file.")
-public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.54">getConfig</a>()
+public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.53">getConfig</a>()
                                                                                                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[GET /] - Show contents of config file.</div>
 <dl>
@@ -338,7 +326,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="cla
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="GET",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/edit",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Edit config file.")
-public&nbsp;<a href="../../../../../org/apache/juneau/dto/html5/Form.html" title="class in org.apache.juneau.dto.html5">Form</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.66">getConfigEditForm</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
+public&nbsp;<a href="../../../../../org/apache/juneau/dto/html5/Form.html" title="class in org.apache.juneau.dto.html5">Form</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.65">getConfigEditForm</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
                                                                                                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[GET /edit] - Show config file edit page.</div>
 <dl>
@@ -361,7 +349,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/dto/html5/Form.html" title
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/{section}",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Show config file section.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.96">getConfigSection</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--">value</a>="section")
+public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.95">getConfigSection</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--">value</a>="section")
                                                                                                                                                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;section)
                                                                                                                                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[GET /{section}] - Show config file section.</div>
@@ -385,7 +373,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="cla
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/{section}/{key}",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Show config file entry.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.117">getConfigEntry</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--" [...]
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.116">getConfigEntry</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--" [...]
                                                                                                                                                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;section,
                                                                                                                                                                    <a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--">value</a>="key")
                                                                                                                                                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)
@@ -412,7 +400,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Sets contents of config file from a FORM post.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.136">setConfigContentsFormPost</a>(<a href="../../../../../org/apache/juneau/rest/annotation/FormData.html" title="annotation in org.apache.juneau.rest.annotation">@FormData</a>(<a href="../../../../../org/apache/juneau/rest/annotation/FormData.html#value--">value</a>= [...]
+public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.135">setConfigContentsFormPost</a>(<a href="../../../../../org/apache/juneau/rest/annotation/FormData.html" title="annotation in org.apache.juneau.rest.annotation">@FormData</a>(<a href="../../../../../org/apache/juneau/rest/annotation/FormData.html#value--">value</a>= [...]
                                                                                                                                                                                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;contents)
                                                                                                                                                                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[POST /] - Sets contents of config file from a FORM post.</div>
@@ -436,7 +424,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="cla
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Sets contents of config file.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.155">setConfigContents</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Body.html" title="annotation in org.apache.juneau.rest.annotation">@Body</a>
+public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.154">setConfigContents</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Body.html" title="annotation in org.apache.juneau.rest.annotation">@Body</a>
                                                                                                                                                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;contents)
                                                                                                                                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[PUT /] - Sets contents of config file.</div>
@@ -460,7 +448,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="cla
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/{section}",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Add or overwrite a config file section.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.176">setConfigSection</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--">value</a>="section")
+public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.175">setConfigSection</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--">value</a>="section")
                                                                                                                                                                                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;section,
                                                                                                                                                                                   <a href="../../../../../org/apache/juneau/rest/annotation/Body.html" title="annotation in org.apache.juneau.rest.annotation">@Body</a>
                                                                                                                                                                                   <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/jav [...]
@@ -487,7 +475,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/ObjectMap.html" title="cla
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/{section}/{key}",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Add or overwrite a config file entry.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.200">setConfigSection</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value- [...]
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/ConfigResource.html#line.199">setConfigSection</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value- [...]
                                                                                                                                                                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;section,
                                                                                                                                                                                    <a href="../../../../../org/apache/juneau/rest/annotation/Path.html" title="annotation in org.apache.juneau.rest.annotation">@Path</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Path.html#value--">value</a>="key")
                                                                                                                                                                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html
index 5d09ea4..fdff50f 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html
@@ -111,9 +111,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.juneau.microservice.resources.DebugResource</li>
 </ul>
 </li>
@@ -126,8 +123,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -143,7 +138,7 @@ var activeTableTab = "activeTableTab";
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=,
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowedMethodParams--">allowedMethodParams</a>="OPTIONS,POST")
 public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DebugResource.html#line.42">DebugResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">Microservice debug utilities.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -206,13 +201,6 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
 <!--   -->
 </a>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
index f073568..31123cc 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
@@ -112,7 +112,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.276">DirectoryResource.FileResource</a>
+<pre>public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.275">DirectoryResource.FileResource</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">File POJO</div>
 </li>
@@ -213,7 +213,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FileResource</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.286">FileResource</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.285">FileResource</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;url)</pre>
 <div class="block">Constructor.</div>
 <dl>
@@ -237,7 +237,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getUrl</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.296">getUrl</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.295">getUrl</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The URL of the file resource.</dd>
@@ -250,7 +250,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getType</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.303">getType</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.302">getType</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The file type.</dd>
@@ -263,7 +263,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getName</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.310">getName</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.309">getName</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The file name.</dd>
@@ -276,7 +276,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.317">getSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.316">getSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The file size.</dd>
@@ -290,7 +290,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>getLastModified</h4>
 <pre><a href="../../../../../org/apache/juneau/annotation/Swap.html" title="annotation in org.apache.juneau.annotation">@Swap</a>(<a href="../../../../../org/apache/juneau/annotation/Swap.html#value--">value</a>=<a href="../../../../../org/apache/juneau/transforms/DateSwap.ISO8601DTP.html" title="class in org.apache.juneau.transforms">DateSwap.ISO8601DTP.class</a>)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.325">getLastModified</a>()</pre>
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.324">getLastModified</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The file last modified timestamp.</dd>
@@ -303,7 +303,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getView</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.333">getView</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.332">getView</a>()
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -319,7 +319,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getDownload</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.343">getDownload</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.342">getDownload</a>()
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -335,7 +335,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getDelete</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.353">getDelete</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net">URL</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.352">getDelete</a>()
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
index 730a24e..4d5aba1 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
@@ -111,9 +111,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.juneau.microservice.resources.DirectoryResource</li>
 </ul>
 </li>
@@ -126,8 +123,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -138,8 +133,8 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation">@RestResource</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#title--">title</a>="File System Explorer",<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#description--">description</a>="Contents of $RA{path}",<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#messages--" [...]
-public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.77">DirectoryResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.76">DirectoryResource</a>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">REST resource that allows access to a file system directory.
  
  <p>
@@ -274,13 +269,6 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
 <!--   -->
 </a>
@@ -335,7 +323,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DirectoryResource</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.77">DirectoryResource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.76">DirectoryResource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -352,7 +340,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.88">init</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.87">init</a>()
           throws javax.servlet.ServletException</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -368,7 +356,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getRootDir</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.104">getRootDir</a>()</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.103">getRootDir</a>()</pre>
 <div class="block">Returns the root directory defined by the 'rootDir' init parameter.
  
  <p>
@@ -389,7 +377,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="On directories, returns a directory listing.\nOn files, returns information about the file.",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#converters--">converters</a>=<a href="../../../../../org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters">Queryable.class</a>)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.126">doGet</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.125">doGet</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
                                                                                                                                                                                                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[GET /*] - On directories, returns a directory listing.  On files, returns information about the file.</div>
 <dl>
@@ -412,7 +400,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.h
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="DELETE",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Delete a file on the file system.")
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.162">doDelete</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.161">doDelete</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
                                                                                                                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[DELETE /*] - Delete a file on the file system.</div>
 <dl>
@@ -434,7 +422,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.h
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="PUT",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Add or overwrite a file on the file system.")
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.183">doPut</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.182">doPut</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
                                                                                                                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[PUT /*] - Add or overwrite a file on the file system.</div>
 <dl>
@@ -456,7 +444,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.h
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="VIEW",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="View the contents of a file.\nApplies to files only.")
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.210">doView</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.209">doView</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
                                                                                                                                                      <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a>&nbsp;res)
                                                                                                                                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[VIEW /*] - View the contents of a file.  
@@ -483,7 +471,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.htm
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="DOWNLOAD",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Download the contents of a file.\nApplies to files only.")
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.239">doDownload</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.238">doDownload</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
                                                                                                                                                                  <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a>&nbsp;res)
                                                                                                                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[DOWNLOAD /*] - Download the contents of a file.
@@ -507,7 +495,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>checkAccess</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.263">checkAccess</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.262">checkAccess</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)</pre>
 <div class="block">Verify that the specified request is allowed.
  
  <p>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.FileResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
index 05a2db1..8317ac8 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
@@ -106,7 +106,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.291">LogsResource.FileResource</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.290">LogsResource.FileResource</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">File bean.</div>
 </li>
@@ -217,7 +217,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>type</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.293">type</a></pre>
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.292">type</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -226,7 +226,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.294">name</a></pre>
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.293">name</a></pre>
 </li>
 </ul>
 <a name="size">
@@ -235,7 +235,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.295">size</a></pre>
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.294">size</a></pre>
 </li>
 </ul>
 <a name="lastModified">
@@ -245,7 +245,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>lastModified</h4>
 <pre><a href="../../../../../org/apache/juneau/annotation/Swap.html" title="annotation in org.apache.juneau.annotation">@Swap</a>(<a href="../../../../../org/apache/juneau/annotation/Swap.html#value--">value</a>=<a href="../../../../../org/apache/juneau/transforms/DateSwap.DateTimeMedium.html" title="class in org.apache.juneau.transforms">DateSwap.DateTimeMedium.class</a>)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.296">lastModified</a></pre>
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.295">lastModified</a></pre>
 </li>
 </ul>
 <a name="view">
@@ -254,7 +254,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>view</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.297">view</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.296">view</a></pre>
 </li>
 </ul>
 <a name="highlighted">
@@ -263,7 +263,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>highlighted</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.297">highlighted</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.296">highlighted</a></pre>
 </li>
 </ul>
 <a name="parsed">
@@ -272,7 +272,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>parsed</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.297">parsed</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.296">parsed</a></pre>
 </li>
 </ul>
 <a name="download">
@@ -281,7 +281,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>download</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.297">download</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.296">download</a></pre>
 </li>
 </ul>
 <a name="delete">
@@ -290,7 +290,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.297">delete</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.296">delete</a></pre>
 </li>
 </ul>
 </li>
@@ -307,7 +307,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FileResource</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.299">FileResource</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.298">FileResource</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;f,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a>&nbsp;uri)
              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
index 3d77ded..b1547f3 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
@@ -111,9 +111,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.juneau.microservice.resources.LogsResource</li>
 </ul>
 </li>
@@ -126,8 +123,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -143,8 +138,8 @@ var activeTableTab = "activeTableTab";
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#properties--">properties</a>=<a href="../../../../../org/apache/juneau/rest/annotation/Property.html" title="annotation in org.apache.juneau.rest.annotation">@Property</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#name--">name</a>="HtmlSerializer.uriAnchorText.s",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="PROPERTY_NAME"),
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowedMethodParams--">allowedMethodParams</a>="*",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#pojoSwaps--">pojoSwaps</a>={<a href="../../../../../org/apache/juneau/transforms/IteratorSwap.html" title="class in org.apache.juneau.transforms">IteratorSwap.class</a>,<a href="../../../../../org/apache/juneau/transforms/DateSwap.ISO8601DT.html" title="class in org.apache.juneau.transforms">DateSwap.ISO8601DT.class</a>})
-public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.51">LogsResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.50">LogsResource</a>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">REST resource for viewing and accessing log files.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -263,13 +258,6 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
 <!--   -->
 </a>
@@ -324,7 +312,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LogsResource</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.51">LogsResource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.50">LogsResource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -342,7 +330,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 <li class="blockList">
 <h4>init</h4>
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation">@RestHook</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html#value--">value</a>=<a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#INIT">INIT</a>)
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.71">init</a>(<a href="../../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;builder)
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.70">init</a>(<a href="../../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;builder)
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Initializes the log directory and formatter.</div>
 <dl>
@@ -362,7 +350,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microse
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="GET",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.99">getFileOrDirectory</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.98">getFileOrDirectory</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
                                                                                                       <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a>&nbsp;res,
                                                                                                       <a href="../../../../../org/apache/juneau/rest/RequestProperties.html" title="class in org.apache.juneau.rest">RequestProperties</a>&nbsp;properties,
                                                                                                       <a href="../../../../../org/apache/juneau/rest/annotation/PathRemainder.html" title="annotation in org.apache.juneau.rest.annotation">@PathRemainder</a>
@@ -391,7 +379,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.h
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="VIEW",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.140">viewFile</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.139">viewFile</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
                                                                                            <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a>&nbsp;res,
                                                                                            <a href="../../../../../org/apache/juneau/rest/annotation/PathRemainder.html" title="annotation in org.apache.juneau.rest.annotation">@PathRemainder</a>
                                                                                            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
@@ -437,7 +425,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microse
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#converters--">converters</a>=<a href="../../../../../org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters">Queryable.class</a>,
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="../../../../../org/apache/juneau/microservice/resources/LogParser.html" title="class in org.apache.juneau.microservice.resources">LogParser</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.208">viewParsedEntries</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
+public&nbsp;<a href="../../../../../org/apache/juneau/microservice/resources/LogParser.html" title="class in org.apache.juneau.microservice.resources">LogParser</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.207">viewParsedEntries</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
                                                                                                                                                   <a href="../../../../../org/apache/juneau/rest/annotation/PathRemainder.html" title="annotation in org.apache.juneau.rest.annotation">@PathRemainder</a>
                                                                                                                                                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                                                                                                                                   <a href="../../../../../org/apache/juneau/rest/annotation/Query.html" title="annotation in org.apache.juneau.rest.annotation">@Query</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Query.html#value--">value</a>="start")
@@ -477,7 +465,7 @@ public&nbsp;<a href="../../../../../org/apache/juneau/microservice/resources/Log
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="DOWNLOAD",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.234">downloadFile</a>(<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a>&nbsp;res,
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.233">downloadFile</a>(<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a>&nbsp;res,
                                                                                                      <a href="../../../../../org/apache/juneau/rest/annotation/PathRemainder.html" title="annotation in org.apache.juneau.rest.annotation">@PathRemainder</a>
                                                                                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)
                                                                                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -502,7 +490,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.h
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="DELETE",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
             <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#swagger--">swagger</a>=)
-public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.260">deleteFile</a>(<a href="../../../../../org/apache/juneau/rest/annotation/PathRemainder.html" title="annotation in org.apache.juneau.rest.annotation">@PathRemainder</a>
+public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.259">deleteFile</a>(<a href="../../../../../org/apache/juneau/rest/annotation/PathRemainder.html" title="annotation in org.apache.juneau.rest.annotation">@PathRemainder</a>
                                                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)
                                                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">[DELETE /*] - Delete a file.</div>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
index 4ae7ccc..925b482 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
@@ -70,7 +70,7 @@
 <li>Nested&nbsp;|&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#methods.inherited.from.class.org.apache.juneau.microservice.ResourceGroup">Method</a></li>
+<li><a href="#methods.inherited.from.class.org.apache.juneau.rest.RestServletGroup">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
@@ -105,10 +105,7 @@
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletGroupDefault</a></li>
-<li>
-<ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.ResourceGroup</a></li>
+<li><a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletGroup</a></li>
 <li>
 <ul class="inheritance">
 <li>org.apache.juneau.microservice.resources.SampleRootResource</li>
@@ -125,8 +122,6 @@
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -141,7 +136,7 @@
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#description--">description</a>="This is a sample router page",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#children--">children</a>={<a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources">ConfigResource.class</a>,<a href="../../../../../org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource.class</a>})
 public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/SampleRootResource.html#line.27">SampleRootResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></pre>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></pre>
 <div class="block">Sample root REST resource.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -177,18 +172,11 @@ extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.htm
 </a>
 <h3>Method Summary</h3>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.ResourceGroup">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletGroupDefault">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletGroup">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></h3>
-<code><a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html#getChildren-org.apache.juneau.rest.RestRequest-">getChildren</a></code></li>
+<h3>Methods inherited from class&nbsp;org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></h3>
+<code><a href="../../../../../org/apache/juneau/rest/RestServletGroup.html#getChildren-org.apache.juneau.rest.RestRequest-">getChildren</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
@@ -303,7 +291,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.htm
 <li>Nested&nbsp;|&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#methods.inherited.from.class.org.apache.juneau.microservice.ResourceGroup">Method</a></li>
+<li><a href="#methods.inherited.from.class.org.apache.juneau.rest.RestServletGroup">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
index 7e9150e..68024ad 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
@@ -111,9 +111,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.juneau.microservice.resources.ShutdownResource</li>
 </ul>
 </li>
@@ -126,8 +123,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -140,7 +135,7 @@ var activeTableTab = "activeTableTab";
 <pre><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation">@RestResource</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#path--">path</a>="/shutdown",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#title--">title</a>="Shut down this resource")
 public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/ShutdownResource.html#line.27">ShutdownResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">Provides the capability to shut down this REST microservice through a REST call.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -189,13 +184,6 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
 <!--   -->
 </a>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/package-tree.html b/content/site/apidocs/org/apache/juneau/microservice/resources/package-tree.html
index 76f6e8f..e690902 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/package-tree.html
@@ -94,24 +94,16 @@
 <ul>
 <li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletDefault</span></a>
 <ul>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Resource</span></a>
-<ul>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">ConfigResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">DebugResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">DirectoryResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">LogsResource</span></a></li>
-<li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">ShutdownResource</span></a></li>
-</ul>
-</li>
-<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroupDefault</span></a>
-<ul>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceGroup</span></a>
+<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroup</span></a>
 <ul>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/SampleRootResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">SampleRootResource</span></a></li>
 </ul>
 </li>
-</ul>
-</li>
+<li type="circle">org.apache.juneau.microservice.resources.<a href="../../../../../org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">ShutdownResource</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/sample/HelloWorldResource.html b/content/site/apidocs/org/apache/juneau/microservice/sample/HelloWorldResource.html
index fb647af..7a17d2d 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/sample/HelloWorldResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/sample/HelloWorldResource.html
@@ -111,9 +111,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.juneau.microservice.sample.HelloWorldResource</li>
 </ul>
 </li>
@@ -126,8 +123,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -141,7 +136,7 @@ var activeTableTab = "activeTableTab";
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#path--">path</a>="/helloworld",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#description--">description</a>="Simplest possible REST resource")
 public class <a href="../../../../../src-html/org/apache/juneau/microservice/sample/HelloWorldResource.html#line.29">HelloWorldResource</a>
-extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">Sample REST resource that prints out a simple "Hello world!" message.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -190,13 +185,6 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
 <!--   -->
 </a>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/sample/RootResources.html b/content/site/apidocs/org/apache/juneau/microservice/sample/RootResources.html
index 5d73650..bd1ea91 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/sample/RootResources.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/sample/RootResources.html
@@ -70,7 +70,7 @@
 <li>Nested&nbsp;|&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#methods.inherited.from.class.org.apache.juneau.microservice.ResourceGroup">Method</a></li>
+<li><a href="#methods.inherited.from.class.org.apache.juneau.rest.RestServletGroup">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
@@ -105,10 +105,7 @@
 <li><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletDefault</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletGroupDefault</a></li>
-<li>
-<ul class="inheritance">
-<li><a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.ResourceGroup</a></li>
+<li><a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletGroup</a></li>
 <li>
 <ul class="inheritance">
 <li>org.apache.juneau.microservice.sample.RootResources</li>
@@ -125,8 +122,6 @@
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -142,7 +137,7 @@
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=,
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#children--">children</a>={<a href="../../../../../org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample">HelloWorldResource.class</a>,<a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources">ConfigResource.class</a>,<a href="../../../../../org/apache/j [...]
 public class <a href="../../../../../src-html/org/apache/juneau/microservice/sample/RootResources.html#line.45">RootResources</a>
-extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></pre>
+extends <a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></pre>
 <div class="block">Root microservice page.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -178,18 +173,11 @@ extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.htm
 </a>
 <h3>Method Summary</h3>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.ResourceGroup">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html#addConfigVars-org.apache.juneau.rest.RestContextBuilder-">addConfigVars</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletGroupDefault">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletGroup">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></h3>
-<code><a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html#getChildren-org.apache.juneau.rest.RestRequest-">getChildren</a></code></li>
+<h3>Methods inherited from class&nbsp;org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></h3>
+<code><a href="../../../../../org/apache/juneau/rest/RestServletGroup.html#getChildren-org.apache.juneau.rest.RestRequest-">getChildren</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
@@ -304,7 +292,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.htm
 <li>Nested&nbsp;|&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#methods.inherited.from.class.org.apache.juneau.microservice.ResourceGroup">Method</a></li>
+<li><a href="#methods.inherited.from.class.org.apache.juneau.rest.RestServletGroup">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/sample/package-summary.html b/content/site/apidocs/org/apache/juneau/microservice/sample/package-summary.html
index 0cf048a..1bba880 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/sample/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/sample/package-summary.html
@@ -43,7 +43,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/microservice/resources/package-summary.html">Prev&nbsp;Package</a></li>
-<li><a href="../../../../../org/apache/juneau/microservice/vars/package-summary.html">Next&nbsp;Package</a></li>
+<li><a href="../../../../../org/apache/juneau/msgpack/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/microservice/sample/package-summary.html" target="_top">Frames</a></li>
@@ -128,7 +128,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/microservice/resources/package-summary.html">Prev&nbsp;Package</a></li>
-<li><a href="../../../../../org/apache/juneau/microservice/vars/package-summary.html">Next&nbsp;Package</a></li>
+<li><a href="../../../../../org/apache/juneau/msgpack/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/microservice/sample/package-summary.html" target="_top">Frames</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/microservice/sample/package-tree.html b/content/site/apidocs/org/apache/juneau/microservice/sample/package-tree.html
index b888a3a..fe06d5b 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/sample/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/sample/package-tree.html
@@ -43,7 +43,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/microservice/resources/package-tree.html">Prev</a></li>
-<li><a href="../../../../../org/apache/juneau/microservice/vars/package-tree.html">Next</a></li>
+<li><a href="../../../../../org/apache/juneau/msgpack/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/microservice/sample/package-tree.html" target="_top">Frames</a></li>
@@ -88,14 +88,8 @@
 <ul>
 <li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletDefault</span></a>
 <ul>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Resource</span></a>
-<ul>
 <li type="circle">org.apache.juneau.microservice.sample.<a href="../../../../../org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample"><span class="typeNameLink">HelloWorldResource</span></a></li>
-</ul>
-</li>
-<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroupDefault</span></a>
-<ul>
-<li type="circle">org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceGroup</span></a>
+<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroup</span></a>
 <ul>
 <li type="circle">org.apache.juneau.microservice.sample.<a href="../../../../../org/apache/juneau/microservice/sample/RootResources.html" title="class in org.apache.juneau.microservice.sample"><span class="typeNameLink">RootResources</span></a></li>
 </ul>
@@ -111,8 +105,6 @@
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
@@ -135,7 +127,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/microservice/resources/package-tree.html">Prev</a></li>
-<li><a href="../../../../../org/apache/juneau/microservice/vars/package-tree.html">Next</a></li>
+<li><a href="../../../../../org/apache/juneau/msgpack/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/microservice/sample/package-tree.html" target="_top">Frames</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html b/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html
index 7dacd65..d118ce8 100644
--- a/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html
@@ -42,7 +42,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/microservice/vars/package-summary.html">Prev&nbsp;Package</a></li>
+<li><a href="../../../../org/apache/juneau/microservice/sample/package-summary.html">Prev&nbsp;Package</a></li>
 <li><a href="../../../../org/apache/juneau/parser/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
@@ -184,7 +184,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/microservice/vars/package-summary.html">Prev&nbsp;Package</a></li>
+<li><a href="../../../../org/apache/juneau/microservice/sample/package-summary.html">Prev&nbsp;Package</a></li>
 <li><a href="../../../../org/apache/juneau/parser/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
diff --git a/content/site/apidocs/org/apache/juneau/msgpack/package-tree.html b/content/site/apidocs/org/apache/juneau/msgpack/package-tree.html
index 1ab9830..8369385 100644
--- a/content/site/apidocs/org/apache/juneau/msgpack/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/msgpack/package-tree.html
@@ -42,7 +42,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/microservice/vars/package-tree.html">Prev</a></li>
+<li><a href="../../../../org/apache/juneau/microservice/sample/package-tree.html">Prev</a></li>
 <li><a href="../../../../org/apache/juneau/parser/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
@@ -184,7 +184,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/microservice/vars/package-tree.html">Prev</a></li>
+<li><a href="../../../../org/apache/juneau/microservice/sample/package-tree.html">Prev</a></li>
 <li><a href="../../../../org/apache/juneau/parser/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestContextBuilder.html b/content/site/apidocs/org/apache/juneau/rest/RestContextBuilder.html
index 80cb624..5b0cb39 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestContextBuilder.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestContextBuilder.html
@@ -1184,7 +1184,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>vars</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.336">vars</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;vars)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.330">vars</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;vars)</pre>
 <div class="block">Adds the specified <a href="../../../../org/apache/juneau/svl/Var.html" title="class in org.apache.juneau.svl"><code>Var</code></a> classes to this config.
  
  <p>
@@ -1207,7 +1207,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>varContextObject</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.361">varContextObject</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.355">varContextObject</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object)</pre>
 <div class="block">Adds a var context object to this config.
  
@@ -1238,7 +1238,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>config</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.377">config</a>(<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;config)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.371">config</a>(<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;config)</pre>
 <div class="block">Overwrites the default config file with a custom config file.
  
  <p>
@@ -1259,7 +1259,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlDocBuilder</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/HtmlDocBuilder.html" title="class in org.apache.juneau.rest">HtmlDocBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.387">getHtmlDocBuilder</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/HtmlDocBuilder.html" title="class in org.apache.juneau.rest">HtmlDocBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.381">getHtmlDocBuilder</a>()</pre>
 <div class="block">Returns an instance of an HTMLDOC builder for setting HTMLDOC-related properties.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1273,7 +1273,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createPropertyStore</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/PropertyStoreBuilder.html" title="class in org.apache.juneau">PropertyStoreBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.396">createPropertyStore</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/PropertyStoreBuilder.html" title="class in org.apache.juneau">PropertyStoreBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.390">createPropertyStore</a>()</pre>
 <div class="block">Creates a new <a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a> object initialized with the properties defined in this config.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1287,7 +1287,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfig</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.423">getConfig</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config">Config</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.417">getConfig</a>()</pre>
 <div class="block">Returns the external configuration file for this resource.
  
  <p>
@@ -1314,7 +1314,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextProperties.html" title="class in org.apache.juneau.rest">RestContextProperties</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.445">getProperties</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextProperties.html" title="class in org.apache.juneau.rest">RestContextProperties</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.439">getProperties</a>()</pre>
 <div class="block">Returns the configuration properties for this resource.
  
  <p>
@@ -1341,7 +1341,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getVarResolverBuilder</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.468">getVarResolverBuilder</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.462">getVarResolverBuilder</a>()</pre>
 <div class="block">Creates the variable resolver for this resource.
  
  <p>
@@ -1369,7 +1369,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>allowBodyParam</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.499">allowBodyParam</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.493">allowBodyParam</a>(boolean&nbsp;value)</pre>
 <div class="block">Configuration property:  Allow body URL parameter.
  
  <p>
@@ -1400,7 +1400,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>allowedMethodParams</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.526">allowedMethodParams</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.520">allowedMethodParams</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;value)</pre>
 <div class="block">Configuration property:  Allowed method parameters.
  
  <p>
@@ -1432,7 +1432,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>allowHeaderParams</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.552">allowHeaderParams</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.546">allowHeaderParams</a>(boolean&nbsp;value)</pre>
 <div class="block">Configuration property:  Allow header URL parameters.
  
  <p>
@@ -1463,7 +1463,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>callHandler</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.573">callHandler</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="interface  [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.567">callHandler</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="interface  [...]
 <div class="block">Configuration property:  REST call handler.
  
  <p>
@@ -1489,7 +1489,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>callHandler</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.593">callHandler</a>(<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="interface in org.apache.juneau.rest">RestCallHandler</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.587">callHandler</a>(<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="interface in org.apache.juneau.rest">RestCallHandler</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  REST call handler.
  
  <p>
@@ -1514,7 +1514,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>children</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.615">children</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.609">children</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Children.
  
  <p>
@@ -1542,7 +1542,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>children</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.633">children</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.627">children</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Children.
  
  <p>
@@ -1566,7 +1566,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>child</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.655">child</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.649">child</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;child)</pre>
 <div class="block">Configuration property:  Children.
  
@@ -1595,7 +1595,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>classpathResourceFinder</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.675">classpathResourceFinder</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/utils/ClasspathResourceFinder.ht [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.669">classpathResourceFinder</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/utils/ClasspathResourceFinder.ht [...]
 <div class="block">Configuration property:  Classpath resource finder. 
  
  <p>
@@ -1620,7 +1620,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>classpathResourceFinder</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.695">classpathResourceFinder</a>(<a href="../../../../org/apache/juneau/utils/ClasspathResourceFinder.html" title="interface in org.apache.juneau.utils">ClasspathResourceFinder</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.689">classpathResourceFinder</a>(<a href="../../../../org/apache/juneau/utils/ClasspathResourceFinder.html" title="interface in org.apache.juneau.utils">ClasspathResourceFinder</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Classpath resource finder. 
  
  <p>
@@ -1645,7 +1645,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>clientVersionHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.719">clientVersionHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.713">clientVersionHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Client version header.
  
  <p>
@@ -1674,7 +1674,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>contextPath</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.741">contextPath</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.735">contextPath</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Resource context path. 
  
  <p>
@@ -1702,7 +1702,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>converters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.761">converters</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.755">converters</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Class-level response converters.
  
  <p>
@@ -1726,7 +1726,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>converters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.779">converters</a>(<a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.773">converters</a>(<a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Response converters.
  
  <p>
@@ -1750,7 +1750,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultCharset</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.799">defaultCharset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.793">defaultCharset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Default character encoding.
  
  <p>
@@ -1775,7 +1775,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultCharset</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.819">defaultCharset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html?is-external=true" title="class or interface in java.nio.charset">Charset</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.813">defaultCharset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html?is-external=true" title="class or interface in java.nio.charset">Charset</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Default character encoding.
  
  <p>
@@ -1800,7 +1800,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultRequestHeaders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.838">defaultRequestHeaders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.832">defaultRequestHeaders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)
                                          throws <a href="../../../../org/apache/juneau/rest/RestServletException.html" title="class in org.apache.juneau.rest">RestServletException</a></pre>
 <div class="block">Configuration property:  Default request headers.
  
@@ -1827,7 +1827,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultRequestHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.863">defaultRequestHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.857">defaultRequestHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Default request headers.
  
@@ -1853,7 +1853,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultResponseHeaders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.882">defaultResponseHeaders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.876">defaultResponseHeaders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)
                                           throws <a href="../../../../org/apache/juneau/rest/RestServletException.html" title="class in org.apache.juneau.rest">RestServletException</a></pre>
 <div class="block">Configuration property:  Default response headers.
  
@@ -1880,7 +1880,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultResponseHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.907">defaultResponseHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.901">defaultResponseHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Default response headers.
  
@@ -1906,7 +1906,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>encoders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.925">encoders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.919">encoders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Compression encoders. 
  
  <p>
@@ -1930,7 +1930,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>encoders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.943">encoders</a>(<a href="../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders">Encoder</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.937">encoders</a>(<a href="../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders">Encoder</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Compression encoders. 
  
  <p>
@@ -1954,7 +1954,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>guards</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.961">guards</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.955">guards</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Class-level guards.
  
  <p>
@@ -1978,7 +1978,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>guards</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.979">guards</a>(<a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.973">guards</a>(<a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Class-level guards.
  
  <p>
@@ -2002,7 +2002,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>infoProvider</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.999">infoProvider</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="interfac [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.993">infoProvider</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="interfac [...]
 <div class="block">Configuration property:  REST info provider. 
  
  <p>
@@ -2027,7 +2027,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>infoProvider</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1019">infoProvider</a>(<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="interface in org.apache.juneau.rest">RestInfoProvider</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1013">infoProvider</a>(<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="interface in org.apache.juneau.rest">RestInfoProvider</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  REST info provider. 
  
  <p>
@@ -2052,7 +2052,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>logger</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1040">logger</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestLogger.html" title="interface in org.ap [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1034">logger</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestLogger.html" title="interface in org.ap [...]
 <div class="block">Configuration property:  REST logger.
  
  <p>
@@ -2078,7 +2078,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>logger</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1061">logger</a>(<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="interface in org.apache.juneau.rest">RestLogger</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1055">logger</a>(<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="interface in org.apache.juneau.rest">RestLogger</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  REST logger.
  
  <p>
@@ -2104,7 +2104,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>maxInput</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1082">maxInput</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1076">maxInput</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  The maximum allowed input size (in bytes) on HTTP requests.
  
  <p>
@@ -2130,7 +2130,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>messages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1100">messages</a>(<a href="../../../../org/apache/juneau/rest/MessageBundleLocation.html" title="class in org.apache.juneau.rest">MessageBundleLocation</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1094">messages</a>(<a href="../../../../org/apache/juneau/rest/MessageBundleLocation.html" title="class in org.apache.juneau.rest">MessageBundleLocation</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Messages. 
  
  <p>
@@ -2154,7 +2154,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>messages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1122">messages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;baseClass,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1116">messages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;baseClass,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bundlePath)</pre>
 <div class="block">Configuration property:  Messages. 
  
@@ -2182,7 +2182,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>messages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1140">messages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bundlePath)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1134">messages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bundlePath)</pre>
 <div class="block">Configuration property:  Messages. 
  
  <p>
@@ -2206,7 +2206,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mimeTypes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1158">mimeTypes</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1152">mimeTypes</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  MIME types. 
  
  <p>
@@ -2230,7 +2230,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>paramResolvers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1179">paramResolvers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1173">paramResolvers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org [...]
 <div class="block">Configuration property:  Java method parameter resolvers.
  
  <p>
@@ -2256,7 +2256,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>paramResolvers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1197">paramResolvers</a>(<a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1191">paramResolvers</a>(<a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Java method parameter resolvers.
  
  <p>
@@ -2280,7 +2280,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>parserListener</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1215">parserListener</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/parser/ParserListener.html" title="class [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1209">parserListener</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/parser/ParserListener.html" title="class [...]
 <div class="block">Configuration property:  Parser listener.
  
  <p>
@@ -2304,7 +2304,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>parsers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1233">parsers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1227">parsers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Parsers. 
  
  <p>
@@ -2328,7 +2328,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>parsers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1253">parsers</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1247">parsers</a>(boolean&nbsp;append,
                                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Parsers. 
  
@@ -2354,7 +2354,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>parsers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1275">parsers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1269">parsers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Parsers. 
  
  <p>
@@ -2382,7 +2382,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>partParser</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1295">partParser</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/httppart/HttpPartParser.html" title="interfa [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1289">partParser</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/httppart/HttpPartParser.html" title="interfa [...]
 <div class="block">Configuration property:  HTTP part parser. 
  
  <p>
@@ -2407,7 +2407,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>partParser</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1315">partParser</a>(<a href="../../../../org/apache/juneau/httppart/HttpPartParser.html" title="interface in org.apache.juneau.httppart">HttpPartParser</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1309">partParser</a>(<a href="../../../../org/apache/juneau/httppart/HttpPartParser.html" title="interface in org.apache.juneau.httppart">HttpPartParser</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  HTTP part parser. 
  
  <p>
@@ -2432,7 +2432,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>partSerializer</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1335">partSerializer</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/httppart/HttpPartSerializer.html" title= [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1329">partSerializer</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/httppart/HttpPartSerializer.html" title= [...]
 <div class="block">Configuration property:  HTTP part serializer. 
  
  <p>
@@ -2457,7 +2457,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>partSerializer</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1355">partSerializer</a>(<a href="../../../../org/apache/juneau/httppart/HttpPartSerializer.html" title="interface in org.apache.juneau.httppart">HttpPartSerializer</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1349">partSerializer</a>(<a href="../../../../org/apache/juneau/httppart/HttpPartSerializer.html" title="interface in org.apache.juneau.httppart">HttpPartSerializer</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  HTTP part serializer. 
  
  <p>
@@ -2482,7 +2482,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>path</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1373">path</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1367">path</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Resource path.   
  
  <p>
@@ -2506,7 +2506,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>renderResponseStackTraces</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1396">renderResponseStackTraces</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1390">renderResponseStackTraces</a>(boolean&nbsp;value)</pre>
 <div class="block">Configuration property:  Render response stack traces in responses.
  
  <p>
@@ -2531,7 +2531,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>renderResponseStackTraces</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1413">renderResponseStackTraces</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1407">renderResponseStackTraces</a>()</pre>
 <div class="block">Configuration property:  Render response stack traces in responses.
  
  <p>
@@ -2553,7 +2553,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>resourceResolver</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1436">resourceResolver</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title= [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1430">resourceResolver</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title= [...]
 <div class="block">REST resource resolver.
  
  <p>
@@ -2581,7 +2581,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>resourceResolver</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1456">resourceResolver</a>(<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1450">resourceResolver</a>(<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;value)</pre>
 <div class="block">REST resource resolver.
  
  <p>
@@ -2606,7 +2606,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>responseHandlers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1475">responseHandlers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1469">responseHandlers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Response handlers.
  
  <p>
@@ -2631,7 +2631,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>responseHandlers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1493">responseHandlers</a>(<a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1487">responseHandlers</a>(<a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Response handlers.
  
  <p>
@@ -2655,7 +2655,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serializerListener</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1511">serializerListener</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/serializer/SerializerListener.html"  [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1505">serializerListener</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/serializer/SerializerListener.html"  [...]
 <div class="block">Configuration property:  Serializer listener.
  
  <p>
@@ -2679,7 +2679,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serializers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1529">serializers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1523">serializers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block">Configuration property:  Serializers. 
  
  <p>
@@ -2703,7 +2703,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serializers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1549">serializers</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1543">serializers</a>(boolean&nbsp;append,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Serializers. 
  
@@ -2729,7 +2729,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serializers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1571">serializers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1565">serializers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Serializers. 
  
  <p>
@@ -2757,7 +2757,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFileResponseHeaders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1593">staticFileResponseHeaders</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1587">staticFileResponseHeaders</a>(boolean&nbsp;append,
                                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;headers)</pre>
 <div class="block">Configuration property:  Static file response headers. 
  
@@ -2784,7 +2784,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFileResponseHeaders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1613">staticFileResponseHeaders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1607">staticFileResponseHeaders</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)
                                              throws <a href="../../../../org/apache/juneau/rest/RestServletException.html" title="class in org.apache.juneau.rest">RestServletException</a></pre>
 <div class="block">Configuration property:  Static file response headers. 
  
@@ -2812,7 +2812,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFileResponseHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1638">staticFileResponseHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1632">staticFileResponseHeader</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block">Configuration property:  Static file response headers. 
  
@@ -2838,7 +2838,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFiles</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1656">staticFiles</a>(<a href="../../../../org/apache/juneau/rest/StaticFileMapping.html" title="class in org.apache.juneau.rest">StaticFileMapping</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1650">staticFiles</a>(<a href="../../../../org/apache/juneau/rest/StaticFileMapping.html" title="class in org.apache.juneau.rest">StaticFileMapping</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Static file mappings. 
  
  <p>
@@ -2862,7 +2862,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFiles</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1681">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;mappingString)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1675">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;mappingString)</pre>
 <div class="block">Configuration property:  Static file mappings. 
  
  <p>
@@ -2893,7 +2893,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFiles</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1709">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;baseClass,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1703">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;baseClass,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;mappingString)</pre>
 <div class="block">Configuration property:  Static file mappings. 
  
@@ -2927,7 +2927,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFiles</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1732">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1726">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;location)</pre>
 <div class="block">Configuration property:  Static file mappings. 
  
@@ -2955,7 +2955,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>staticFiles</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1758">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;baseClass,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1752">staticFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;baseClass,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;location)</pre>
 <div class="block">Configuration property:  Static file mappings. 
@@ -2986,7 +2986,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>produces</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1778">produces</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1772">produces</a>(boolean&nbsp;append,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Supported accept media types.
  
@@ -3012,7 +3012,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>produces</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1798">produces</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1792">produces</a>(boolean&nbsp;append,
                                    <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Supported accept media types.
  
@@ -3038,7 +3038,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>consumes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1818">consumes</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1812">consumes</a>(boolean&nbsp;append,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Supported content media types.
  
@@ -3064,7 +3064,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>consumes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1838">consumes</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1832">consumes</a>(boolean&nbsp;append,
                                    <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  Supported content media types.
  
@@ -3090,7 +3090,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>useClasspathResourceCaching</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1859">useClasspathResourceCaching</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1853">useClasspathResourceCaching</a>(boolean&nbsp;value)</pre>
 <div class="block">Configuration property:  Use classpath resource caching. 
  
  <p>
@@ -3116,7 +3116,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>useStackTraceHashes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1880">useStackTraceHashes</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1874">useStackTraceHashes</a>(boolean&nbsp;value)</pre>
 <div class="block">Configuration property:  Use stack trace hashes.
  
  <p>
@@ -3142,7 +3142,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>widgets</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1900">widgets</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.ap [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1894">widgets</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.ap [...]
 <div class="block">Configuration property:  HTML Widgets. 
  
  <p>
@@ -3167,7 +3167,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>widgets</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1918">widgets</a>(<a href="../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1912">widgets</a>(<a href="../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  HTML Widgets. 
  
  <p>
@@ -3191,7 +3191,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>widgets</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1939">widgets</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1933">widgets</a>(boolean&nbsp;append,
                                   <a href="../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a>...&nbsp;values)</pre>
 <div class="block">Configuration property:  HTML Widgets. 
  
@@ -3218,7 +3218,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireDefaultConstructor</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1944">beansRequireDefaultConstructor</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1938">beansRequireDefaultConstructor</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireDefaultConstructor-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require no-arg constructors.
  
@@ -3247,7 +3247,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireDefaultConstructor</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1950">beansRequireDefaultConstructor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1944">beansRequireDefaultConstructor</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireDefaultConstructor--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require no-arg constructors.
  
@@ -3272,7 +3272,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireSerializable</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1956">beansRequireSerializable</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1950">beansRequireSerializable</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSerializable-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require Serializable interface.
  
@@ -3301,7 +3301,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireSerializable</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1962">beansRequireSerializable</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1956">beansRequireSerializable</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSerializable--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require Serializable interface.
  
@@ -3326,7 +3326,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireSettersForGetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1968">beansRequireSettersForGetters</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1962">beansRequireSettersForGetters</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSettersForGetters-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require setters for getters.
  
@@ -3355,7 +3355,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireSettersForGetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1974">beansRequireSettersForGetters</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1968">beansRequireSettersForGetters</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSettersForGetters--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require setters for getters.
  
@@ -3380,7 +3380,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beansRequireSomeProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1980">beansRequireSomeProperties</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1974">beansRequireSomeProperties</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSomeProperties-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Beans require at least one property.
  
@@ -3409,7 +3409,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanMapPutReturnsOldValue</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1986">beanMapPutReturnsOldValue</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1980">beanMapPutReturnsOldValue</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanMapPutReturnsOldValue-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  BeanMap.put() returns old property value.
  
@@ -3439,7 +3439,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanMapPutReturnsOldValue</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1992">beanMapPutReturnsOldValue</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1986">beanMapPutReturnsOldValue</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanMapPutReturnsOldValue--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  BeanMap.put() returns old property value.
  
@@ -3464,7 +3464,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanConstructorVisibility</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1998">beanConstructorVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1992">beanConstructorVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanConstructorVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Minimum bean constructor visibility.
  
@@ -3492,7 +3492,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanClassVisibility</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2004">beanClassVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.1998">beanClassVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanClassVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Minimum bean class visibility.
  
@@ -3524,7 +3524,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanFieldVisibility</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2010">beanFieldVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2004">beanFieldVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFieldVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Minimum bean field visibility.
  
@@ -3552,7 +3552,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanMethodVisibility</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2016">beanMethodVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2010">beanMethodVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanMethodVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Minimum bean method visibility.
  
@@ -3580,7 +3580,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>useJavaBeanIntrospector</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2022">useJavaBeanIntrospector</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2016">useJavaBeanIntrospector</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#useJavaBeanIntrospector-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Use Java Introspector.
  
@@ -3613,7 +3613,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>useJavaBeanIntrospector</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2028">useJavaBeanIntrospector</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2022">useJavaBeanIntrospector</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#useJavaBeanIntrospector--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Use Java Introspector.
  
@@ -3638,7 +3638,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>useInterfaceProxies</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2034">useInterfaceProxies</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2028">useInterfaceProxies</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#useInterfaceProxies-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Use interface proxies.
  
@@ -3667,7 +3667,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreUnknownBeanProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2040">ignoreUnknownBeanProperties</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2034">ignoreUnknownBeanProperties</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore unknown properties.
  
@@ -3696,7 +3696,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreUnknownBeanProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2046">ignoreUnknownBeanProperties</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2040">ignoreUnknownBeanProperties</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore unknown properties.
  
@@ -3721,7 +3721,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreUnknownNullBeanProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2052">ignoreUnknownNullBeanProperties</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2046">ignoreUnknownNullBeanProperties</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownNullBeanProperties-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore unknown properties with null values.
  
@@ -3750,7 +3750,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignorePropertiesWithoutSetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2058">ignorePropertiesWithoutSetters</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2052">ignorePropertiesWithoutSetters</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignorePropertiesWithoutSetters-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore properties without setters.
  
@@ -3779,7 +3779,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreInvocationExceptionsOnGetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2064">ignoreInvocationExceptionsOnGetters</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2058">ignoreInvocationExceptionsOnGetters</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnGetters-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore invocation errors on getters.
  
@@ -3808,7 +3808,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreInvocationExceptionsOnGetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2070">ignoreInvocationExceptionsOnGetters</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2064">ignoreInvocationExceptionsOnGetters</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnGetters--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore invocation errors on getters.
  
@@ -3833,7 +3833,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreInvocationExceptionsOnSetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2076">ignoreInvocationExceptionsOnSetters</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2070">ignoreInvocationExceptionsOnSetters</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnSetters-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore invocation errors on setters.
  
@@ -3862,7 +3862,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreInvocationExceptionsOnSetters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2082">ignoreInvocationExceptionsOnSetters</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2076">ignoreInvocationExceptionsOnSetters</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnSetters--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Ignore invocation errors on setters.
  
@@ -3887,7 +3887,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sortProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2088">sortProperties</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2082">sortProperties</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#sortProperties-boolean-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Sort bean properties.
  
@@ -3916,7 +3916,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sortProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2094">sortProperties</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2088">sortProperties</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#sortProperties--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Sort bean properties.
  
@@ -3941,7 +3941,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanPackages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2100">notBeanPackages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2094">notBeanPackages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanPackages-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean package exclusions.
  
@@ -3970,7 +3970,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanPackages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2106">notBeanPackages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2100">notBeanPackages</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanPackages-java.lang.String...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean package exclusions.
  
@@ -3994,7 +3994,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanPackages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2112">notBeanPackages</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2106">notBeanPackages</a>(boolean&nbsp;append,
                                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanPackages-boolean-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean package exclusions.
@@ -4029,7 +4029,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanPackagesRemove</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2118">notBeanPackagesRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2112">notBeanPackagesRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanPackagesRemove-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean package exclusions.
  
@@ -4058,7 +4058,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanClasses</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2124">notBeanClasses</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2118">notBeanClasses</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanClasses-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean class exclusions.
  
@@ -4091,7 +4091,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanClasses</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2130">notBeanClasses</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2124">notBeanClasses</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanClasses-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean class exclusions.
  
@@ -4119,7 +4119,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanClasses</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2136">notBeanClasses</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2130">notBeanClasses</a>(boolean&nbsp;append,
                                          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanClasses-boolean-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean class exclusions.
@@ -4155,7 +4155,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>notBeanClassesRemove</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2142">notBeanClassesRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2136">notBeanClassesRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanClassesRemove-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean class exclusions.
  
@@ -4184,7 +4184,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanFilters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2148">beanFilters</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2142">beanFilters</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFilters-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean filters.
  
@@ -4220,7 +4220,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanFilters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2154">beanFilters</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2148">beanFilters</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFilters-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean filters.
  
@@ -4247,7 +4247,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanFilters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2160">beanFilters</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2154">beanFilters</a>(boolean&nbsp;append,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFilters-boolean-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean filters.
@@ -4283,7 +4283,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanFiltersRemove</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2166">beanFiltersRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2160">beanFiltersRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFiltersRemove-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean filters.
  
@@ -4317,7 +4317,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>pojoSwaps</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2172">pojoSwaps</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2166">pojoSwaps</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwaps-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  POJO swaps.
  
@@ -4347,7 +4347,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>pojoSwaps</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2178">pojoSwaps</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2172">pojoSwaps</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwaps-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  POJO swaps.
  
@@ -4371,7 +4371,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>pojoSwaps</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2184">pojoSwaps</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2178">pojoSwaps</a>(boolean&nbsp;append,
                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwaps-boolean-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  POJO swaps.
@@ -4410,7 +4410,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>pojoSwapsRemove</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2190">pojoSwapsRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2184">pojoSwapsRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwapsRemove-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  POJO swaps.
  
@@ -4440,7 +4440,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>implClasses</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2196">implClasses</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title= [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2190">implClasses</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title= [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#implClasses-java.util.Map-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Implementation classes.
  
@@ -4469,7 +4469,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>implClass</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2202">implClass</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;interfaceClass,
+<pre>public&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2196">implClass</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;interfaceClass,
                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends T&gt;&nbsp;implClass)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#implClass-java.lang.Class-java.lang.Class-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Implementation classes.
@@ -4497,7 +4497,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanDictionary</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2208">beanDictionary</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2202">beanDictionary</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionary-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean dictionary.
  
@@ -4524,7 +4524,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanDictionary</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2214">beanDictionary</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2208">beanDictionary</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionary-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean dictionary.
  
@@ -4551,7 +4551,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanDictionary</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2220">beanDictionary</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2214">beanDictionary</a>(boolean&nbsp;append,
                                          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionary-boolean-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean dictionary.
@@ -4580,7 +4580,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanDictionaryRemove</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2226">beanDictionaryRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2220">beanDictionaryRemove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionaryRemove-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean dictionary.
  
@@ -4607,7 +4607,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>beanTypePropertyName</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2232">beanTypePropertyName</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2226">beanTypePropertyName</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanTypePropertyName-java.lang.String-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Bean type property name.
  
@@ -4636,7 +4636,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>locale</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2238">locale</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2232">locale</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#locale-java.util.Locale-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Locale.
  
@@ -4663,7 +4663,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>timeZone</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2244">timeZone</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2238">timeZone</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#timeZone-java.util.TimeZone-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  TimeZone.
  
@@ -4687,7 +4687,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mediaType</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2250">mediaType</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2244">mediaType</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#mediaType-org.apache.juneau.http.MediaType-">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Media type.
  
@@ -4714,7 +4714,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>debug</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2256">debug</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2250">debug</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#debug--">BeanContextBuilder</a></code></span></div>
 <div class="block">Configuration property:  Debug mode.
  
@@ -4739,7 +4739,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2262">set</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2256">set</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
 <div class="block">Sets a configuration property on this object.</div>
@@ -4762,7 +4762,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2269">set</a>(boolean&nbsp;append,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2263">set</a>(boolean&nbsp;append,
                               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#set-boolean-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
@@ -4787,7 +4787,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2275">set</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class o [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2269">set</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class o [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.util.Map-">ContextBuilder</a></code></span></div>
 <div class="block">Sets multiple configuration properties on this object.</div>
 <dl>
@@ -4808,7 +4808,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2283">add</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class o [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2277">add</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class o [...]
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#add-java.util.Map-">ContextBuilder</a></code></span></div>
 <div class="block">Adds multiple configuration properties on this object.</div>
 <dl>
@@ -4829,7 +4829,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addTo</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2289">addTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2283">addTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#addTo-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
 <div class="block">Adds a value to a SET or LIST property.</div>
@@ -4850,7 +4850,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addTo</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2295">addTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2289">addTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#addTo-java.lang.String-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
@@ -4873,7 +4873,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>removeFrom</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2301">removeFrom</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2295">removeFrom</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#removeFrom-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
 <div class="block">Removes a value from a SET, LIST, or MAP property.</div>
@@ -4894,7 +4894,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>apply</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2307">apply</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;copyFrom)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest">RestContextBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2301">apply</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;copyFrom)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#apply-org.apache.juneau.PropertyStore-">ContextBuilder</a></code></span></div>
 <div class="block">Copies the settings from the specified property store into this builder.</div>
 <dl>
@@ -4913,7 +4913,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitParameter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2318">getInitParameter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2312">getInitParameter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getInitParameter</code>&nbsp;in interface&nbsp;<code>javax.servlet.ServletConfig</code></dd>
@@ -4926,7 +4926,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitParameterNames</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2323">getInitParameterNames</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2317">getInitParameterNames</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getInitParameterNames</code>&nbsp;in interface&nbsp;<code>javax.servlet.ServletConfig</code></dd>
@@ -4939,7 +4939,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServletContext</h4>
-<pre>public&nbsp;javax.servlet.ServletContext&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2328">getServletContext</a>()</pre>
+<pre>public&nbsp;javax.servlet.ServletContext&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2322">getServletContext</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getServletContext</code>&nbsp;in interface&nbsp;<code>javax.servlet.ServletConfig</code></dd>
@@ -4952,7 +4952,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServletName</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2333">getServletName</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2327">getServletName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getServletName</code>&nbsp;in interface&nbsp;<code>javax.servlet.ServletConfig</code></dd>
@@ -4965,7 +4965,7 @@ implements javax.servlet.ServletConfig</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>build</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau">BeanContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2338">build</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau">BeanContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContextBuilder.html#line.2332">build</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#build--">ContextBuilder</a></code></span></div>
 <div class="block">Build the object.</div>
 <dl>
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html b/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
index 81487d2..c825a8a 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../org/apache/juneau/rest/remoteable/RemoteableServlet.html" title="class in org.apache.juneau.rest.remoteable">RemoteableServlet</a>, <a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a>, <a href="../../../../org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice">ResourceJena</a>, <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.h [...]
+<dd><a href="../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources">ConfigResource</a>, <a href="../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a>, <a href="../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources">DirectoryResource</a>, < [...]
 </dl>
 <hr>
 <br>
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestServletException.html b/content/site/apidocs/org/apache/juneau/rest/RestServletException.html
index 7ac23fe..51b34cf 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestServletException.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestServletException.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/rest/RestServletException.html" target="_top">Frames</a></li>
@@ -284,7 +284,7 @@ extends javax.servlet.ServletException</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/rest/RestServletException.html" target="_top">Frames</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestUtils.html b/content/site/apidocs/org/apache/juneau/rest/RestUtils.html
index d255846..1e7bbff 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestUtils.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestUtils.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/juneau/rest/StaticFileMapping.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -340,7 +340,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/juneau/rest/StaticFileMapping.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/content/site/apidocs/org/apache/juneau/rest/package-frame.html b/content/site/apidocs/org/apache/juneau/rest/package-frame.html
index 6e5124d..24b8985 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-frame.html
@@ -59,7 +59,7 @@
 <li><a href="RestResponse.html" title="class in org.apache.juneau.rest" target="classFrame">RestResponse</a></li>
 <li><a href="RestServlet.html" title="class in org.apache.juneau.rest" target="classFrame">RestServlet</a></li>
 <li><a href="RestServletDefault.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletDefault</a></li>
-<li><a href="RestServletGroupDefault.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletGroupDefault</a></li>
+<li><a href="RestServletGroup.html" title="class in org.apache.juneau.rest" target="classFrame">RestServletGroup</a></li>
 <li><a href="RestUtils.html" title="class in org.apache.juneau.rest" target="classFrame">RestUtils</a></li>
 <li><a href="StaticFileMapping.html" title="class in org.apache.juneau.rest" target="classFrame">StaticFileMapping</a></li>
 <li><a href="StreamResource.html" title="class in org.apache.juneau.rest" target="classFrame">StreamResource</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/rest/package-summary.html b/content/site/apidocs/org/apache/juneau/rest/package-summary.html
index dffb0e5..066ba23 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-summary.html
@@ -357,7 +357,7 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></td>
+<td class="colFirst"><a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a></td>
 <td class="colLast">
 <div class="block">Specialized subclass of <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> for showing "group" pages.</div>
 </td>
diff --git a/content/site/apidocs/org/apache/juneau/rest/package-tree.html b/content/site/apidocs/org/apache/juneau/rest/package-tree.html
index a5bb813..e34490d 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-tree.html
@@ -137,7 +137,7 @@
 <ul>
 <li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletDefault</span></a>
 <ul>
-<li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroupDefault</span></a></li>
+<li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroup</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/content/site/apidocs/org/apache/juneau/svl/DefaultingVar.html b/content/site/apidocs/org/apache/juneau/svl/DefaultingVar.html
index 8adbbe3..9397d1e 100644
--- a/content/site/apidocs/org/apache/juneau/svl/DefaultingVar.html
+++ b/content/site/apidocs/org/apache/juneau/svl/DefaultingVar.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars">ArgsVar</a>, <a href="../../../../org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars">ConfigVar</a>, <a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars">EnvVariablesVar</a>, <a href="../../../../org/apache/juneau/rest/vars/FileVar.html" title="class in org.apac [...]
+<dd><a href="../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a>, <a href="../../../../org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars">ConfigVar</a>, <a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars">EnvVariablesVar</a>, <a href="../../../../org/apache/juneau/rest/vars/FileVar.html" title="class in org.apache.juneau.rest.var [...]
 </dl>
 <hr>
 <br>
diff --git a/content/site/apidocs/org/apache/juneau/svl/VarResolver.html b/content/site/apidocs/org/apache/juneau/svl/VarResolver.html
index 0c58f41..fea5e16 100644
--- a/content/site/apidocs/org/apache/juneau/svl/VarResolver.html
+++ b/content/site/apidocs/org/apache/juneau/svl/VarResolver.html
@@ -172,15 +172,17 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Default string variable resolver with support for system properties and environment variables:
  
  
-   <code>$S{key}</code>,<code>$S{key,default}</code> - <a href="../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
-   <code>$E{key}</code>,<code>$E{key,default}</code> - <a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
-   <code>$IF{booleanValue, thenValue[, elseValue]}</code> - <a href="../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
-   <code>$SW{stringValue, matchPattern:thenValue[, matchPattern:thenValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
-   <code>$CO{arg1[,arg2...]}</code> - <a href="../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
-   <code>$PM{stringValue,matchPattern}</code> - <a href="../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
-   <code>$UC{stringValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
-   <code>$LC{stringValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
-   <code>$NE{stringValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
+   <code>$S{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
+   <code>$E{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
+   <code>$A{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a>
+   <code>$MF{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a>
+   <code>$IF{arg,then[,else]}</code> - <a href="../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
+   <code>$SW{arg,pattern1:then1[,pattern2:then2...]}</code> - <a href="../../../../org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
+   <code>$CO{arg[,arg2...]}</code> - <a href="../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
+   <code>$PM{arg,pattern}</code> - <a href="../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
+   <code>$UC{arg}</code> - <a href="../../../../org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
+   <code>$LC{arg}</code> - <a href="../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
+   <code>$NE{arg}</code> - <a href="../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
  </div>
 </td>
 </tr>
@@ -270,19 +272,21 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEFAULT</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a> <a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.80">DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a> <a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.82">DEFAULT</a></pre>
 <div class="block">Default string variable resolver with support for system properties and environment variables:
  
  <ul>
-   <li><code>$S{key}</code>,<code>$S{key,default}</code> - <a href="../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
-   <li><code>$E{key}</code>,<code>$E{key,default}</code> - <a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
-   <li><code>$IF{booleanValue, thenValue[, elseValue]}</code> - <a href="../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
-   <li><code>$SW{stringValue, matchPattern:thenValue[, matchPattern:thenValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
-   <li><code>$CO{arg1[,arg2...]}</code> - <a href="../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
-   <li><code>$PM{stringValue,matchPattern}</code> - <a href="../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
-   <li><code>$UC{stringValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
-   <li><code>$LC{stringValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
-   <li><code>$NE{stringValue}</code> - <a href="../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
+   <li><code>$S{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
+   <li><code>$E{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
+   <li><code>$A{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a>
+   <li><code>$MF{key[,default]}</code> - <a href="../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a>
+   <li><code>$IF{arg,then[,else]}</code> - <a href="../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
+   <li><code>$SW{arg,pattern1:then1[,pattern2:then2...]}</code> - <a href="../../../../org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
+   <li><code>$CO{arg[,arg2...]}</code> - <a href="../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
+   <li><code>$PM{arg,pattern}</code> - <a href="../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
+   <li><code>$UC{arg}</code> - <a href="../../../../org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
+   <li><code>$LC{arg}</code> - <a href="../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
+   <li><code>$NE{arg}</code> - <a href="../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
  </ul></div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -305,7 +309,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.92">create</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.94">create</a>()</pre>
 <div class="block">Instantiates a new clean-slate <a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl"><code>VarResolverBuilder</code></a> object.
  
  <p>
@@ -322,7 +326,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>builder</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.111">builder</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.113">builder</a>()</pre>
 <div class="block">Returns a new builder object using the settings in this resolver as a base.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -336,7 +340,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getContext</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverContext.html" title="class in org.apache.juneau.svl">VarResolverContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.122">getContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverContext.html" title="class in org.apache.juneau.svl">VarResolverContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.124">getContext</a>()</pre>
 <div class="block">Returns the read-only properties on this variable resolver.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -350,7 +354,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createSession</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.135">createSession</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.137">createSession</a>()</pre>
 <div class="block">Creates a new resolver session with no session objects.
  
  <p>
@@ -368,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createSession</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.145">createSession</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.147">createSession</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or [...]
 <div class="block">Same as <a href="../../../../org/apache/juneau/svl/VarResolver.html#createSession--"><code>createSession()</code></a> except allows you to specify session objects as a map.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -384,7 +388,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>resolve</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.160">resolve</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.162">resolve</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
 <div class="block">Resolve variables in the specified string.
  
  <p>
@@ -405,7 +409,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>resolveTo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.176">resolveTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolver.html#line.178">resolveTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;w)
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Resolve variables in the specified string and sends the results to the specified writer.
diff --git a/content/site/apidocs/org/apache/juneau/svl/VarResolverBuilder.html b/content/site/apidocs/org/apache/juneau/svl/VarResolverBuilder.html
index 55f2b6f..9a24836 100644
--- a/content/site/apidocs/org/apache/juneau/svl/VarResolverBuilder.html
+++ b/content/site/apidocs/org/apache/juneau/svl/VarResolverBuilder.html
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultVars</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolverBuilder.html#line.79">defaultVars</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolverBuilder.html#line.81">defaultVars</a>()</pre>
 <div class="block">Adds the default variables to this builder.
  
  <p>
@@ -266,6 +266,8 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
  <ul>
    <li><a href="../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
    <li><a href="../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
+   <li><a href="../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a>
+   <li><a href="../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a>
    <li><a href="../../../../org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
    <li><a href="../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
    <li><a href="../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
@@ -286,7 +288,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>contextObject</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolverBuilder.html#line.94">contextObject</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolverBuilder.html#line.107">contextObject</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object)</pre>
 <div class="block">Associates a context object with this resolver.
  
@@ -308,7 +310,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>contextObjects</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolverBuilder.html#line.109">contextObjects</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title=" [...]
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/svl/VarResolverBuilder.html#line.122">contextObjects</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title=" [...]
 <div class="block">Associates multiple context objects with this resolver.
  
  <p>
diff --git a/content/site/apidocs/org/apache/juneau/svl/vars/CoalesceVar.html b/content/site/apidocs/org/apache/juneau/svl/vars/CoalesceVar.html
index 6020cb8..0de8ae3 100644
--- a/content/site/apidocs/org/apache/juneau/svl/vars/CoalesceVar.html
+++ b/content/site/apidocs/org/apache/juneau/svl/vars/CoalesceVar.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -334,7 +334,7 @@ extends <a href="../../../../../org/apache/juneau/svl/MultipartResolvingVar.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/content/site/apidocs/org/apache/juneau/svl/vars/LowerCaseVar.html b/content/site/apidocs/org/apache/juneau/svl/vars/LowerCaseVar.html
index bdb17af..a9e6c3e 100644
--- a/content/site/apidocs/org/apache/juneau/svl/vars/LowerCaseVar.html
+++ b/content/site/apidocs/org/apache/juneau/svl/vars/LowerCaseVar.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/svl/vars/LowerCaseVar.html" target="_top">Frames</a></li>
@@ -326,7 +326,7 @@ extends <a href="../../../../../org/apache/juneau/svl/SimpleVar.html" title="cla
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/svl/vars/LowerCaseVar.html" target="_top">Frames</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/svl/vars/NotEmptyVar.html b/content/site/apidocs/org/apache/juneau/svl/vars/NotEmptyVar.html
index 3f7c95d..26cebe1 100644
--- a/content/site/apidocs/org/apache/juneau/svl/vars/NotEmptyVar.html
+++ b/content/site/apidocs/org/apache/juneau/svl/vars/NotEmptyVar.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -325,7 +325,7 @@ extends <a href="../../../../../org/apache/juneau/svl/SimpleVar.html" title="cla
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/content/site/apidocs/org/apache/juneau/svl/vars/package-frame.html b/content/site/apidocs/org/apache/juneau/svl/vars/package-frame.html
index 290563c..9ff6059 100644
--- a/content/site/apidocs/org/apache/juneau/svl/vars/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/svl/vars/package-frame.html
@@ -13,10 +13,12 @@
 <div class="indexContainer">
 <h2 title="Classes">Classes</h2>
 <ul title="Classes">
+<li><a href="ArgsVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">ArgsVar</a></li>
 <li><a href="CoalesceVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">CoalesceVar</a></li>
 <li><a href="EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">EnvVariablesVar</a></li>
 <li><a href="IfVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">IfVar</a></li>
 <li><a href="LowerCaseVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">LowerCaseVar</a></li>
+<li><a href="ManifestFileVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">ManifestFileVar</a></li>
 <li><a href="NotEmptyVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">NotEmptyVar</a></li>
 <li><a href="PatternMatchVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">PatternMatchVar</a></li>
 <li><a href="SwitchVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">SwitchVar</a></li>
diff --git a/content/site/apidocs/org/apache/juneau/svl/vars/package-summary.html b/content/site/apidocs/org/apache/juneau/svl/vars/package-summary.html
index 085aba7..fd53371 100644
--- a/content/site/apidocs/org/apache/juneau/svl/vars/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/svl/vars/package-summary.html
@@ -86,29 +86,41 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars">ArgsVar</a></td>
+<td class="colLast">
+<div class="block">JVM args variable resolver.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars">CoalesceVar</a></td>
 <td class="colLast">
 <div class="block">A basic variable resolver that returns the first non-null value.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars">EnvVariablesVar</a></td>
 <td class="colLast">
 <div class="block">Environment variable variable resolver.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars">IfVar</a></td>
 <td class="colLast">
 <div class="block">A basic if-else logic variable resolver.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars">LowerCaseVar</a></td>
 <td class="colLast">
 <div class="block">Upper-case variable resolver.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars">ManifestFileVar</a></td>
+<td class="colLast">
+<div class="block">Manifest file entries variable resolver.</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars">NotEmptyVar</a></td>
 <td class="colLast">
diff --git a/content/site/apidocs/org/apache/juneau/svl/vars/package-tree.html b/content/site/apidocs/org/apache/juneau/svl/vars/package-tree.html
index 02dabd5..9b307a9 100644
--- a/content/site/apidocs/org/apache/juneau/svl/vars/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/svl/vars/package-tree.html
@@ -86,7 +86,9 @@
 <ul>
 <li type="circle">org.apache.juneau.svl.<a href="../../../../../org/apache/juneau/svl/DefaultingVar.html" title="class in org.apache.juneau.svl"><span class="typeNameLink">DefaultingVar</span></a>
 <ul>
+<li type="circle">org.apache.juneau.svl.vars.<a href="../../../../../org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">ArgsVar</span></a></li>
 <li type="circle">org.apache.juneau.svl.vars.<a href="../../../../../org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">EnvVariablesVar</span></a></li>
+<li type="circle">org.apache.juneau.svl.vars.<a href="../../../../../org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">ManifestFileVar</span></a></li>
 <li type="circle">org.apache.juneau.svl.<a href="../../../../../org/apache/juneau/svl/MapVar.html" title="class in org.apache.juneau.svl"><span class="typeNameLink">MapVar</span></a>
 <ul>
 <li type="circle">org.apache.juneau.svl.vars.<a href="../../../../../org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">SystemPropertiesVar</span></a></li>
diff --git a/content/site/apidocs/overview-frame.html b/content/site/apidocs/overview-frame.html
index 29b1268..9d89662 100644
--- a/content/site/apidocs/overview-frame.html
+++ b/content/site/apidocs/overview-frame.html
@@ -43,7 +43,6 @@
 <li><a href="org/apache/juneau/microservice/console/package-frame.html" target="packageFrame">org.apache.juneau.microservice.console</a></li>
 <li><a href="org/apache/juneau/microservice/resources/package-frame.html" target="packageFrame">org.apache.juneau.microservice.resources</a></li>
 <li><a href="org/apache/juneau/microservice/sample/package-frame.html" target="packageFrame">org.apache.juneau.microservice.sample</a></li>
-<li><a href="org/apache/juneau/microservice/vars/package-frame.html" target="packageFrame">org.apache.juneau.microservice.vars</a></li>
 <li><a href="org/apache/juneau/msgpack/package-frame.html" target="packageFrame">org.apache.juneau.msgpack</a></li>
 <li><a href="org/apache/juneau/parser/package-frame.html" target="packageFrame">org.apache.juneau.parser</a></li>
 <li><a href="org/apache/juneau/plaintext/package-frame.html" target="packageFrame">org.apache.juneau.plaintext</a></li>
diff --git a/content/site/apidocs/overview-summary.html b/content/site/apidocs/overview-summary.html
index c353c34..3ea2c5f 100644
--- a/content/site/apidocs/overview-summary.html
+++ b/content/site/apidocs/overview-summary.html
@@ -266,168 +266,162 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="org/apache/juneau/microservice/vars/package-summary.html">org.apache.juneau.microservice.vars</a></td>
-<td class="colLast">
-<div class="block">Predefined SVL Variables</div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/msgpack/package-summary.html">org.apache.juneau.msgpack</a></td>
 <td class="colLast">
 <div class="block">MessagePack Marshalling Support</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/parser/package-summary.html">org.apache.juneau.parser</a></td>
 <td class="colLast">
 <div class="block">Parser API</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/plaintext/package-summary.html">org.apache.juneau.plaintext</a></td>
 <td class="colLast">
 <div class="block">Plaintext Marshalling Support</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/remoteable/package-summary.html">org.apache.juneau.remoteable</a></td>
 <td class="colLast">
 <div class="block">Remoteable API</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/package-summary.html">org.apache.juneau.rest</a></td>
 <td class="colLast">
 <div class="block">REST Server API</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/annotation/package-summary.html">org.apache.juneau.rest.annotation</a></td>
 <td class="colLast">
 <div class="block">REST Annotations</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/client/package-summary.html">org.apache.juneau.rest.client</a></td>
 <td class="colLast">
 <div class="block">REST Client API</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/converters/package-summary.html">org.apache.juneau.rest.converters</a></td>
 <td class="colLast">
 <div class="block">REST Response Converters</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/jaxrs/package-summary.html">org.apache.juneau.rest.jaxrs</a></td>
 <td class="colLast">
 <div class="block">JAX-RS Integration</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/labels/package-summary.html">org.apache.juneau.rest.labels</a></td>
 <td class="colLast">
 <div class="block">REST Interface Label Classes</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/matchers/package-summary.html">org.apache.juneau.rest.matchers</a></td>
 <td class="colLast">
 <div class="block">Predefined Matchers</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/remoteable/package-summary.html">org.apache.juneau.rest.remoteable</a></td>
 <td class="colLast">
 <div class="block">Remoteable service API</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/response/package-summary.html">org.apache.juneau.rest.response</a></td>
 <td class="colLast">
 <div class="block">HTTP Response Handlers</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/vars/package-summary.html">org.apache.juneau.rest.vars</a></td>
 <td class="colLast">
 <div class="block">Predefined SVL Variables</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/rest/widget/package-summary.html">org.apache.juneau.rest.widget</a></td>
 <td class="colLast">
 <div class="block">HTML Widget API</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/serializer/package-summary.html">org.apache.juneau.serializer</a></td>
 <td class="colLast">
 <div class="block">Serializer API</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/soap/package-summary.html">org.apache.juneau.soap</a></td>
 <td class="colLast">
 <div class="block">SOAP/XML Marshalling Support</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/svl/package-summary.html">org.apache.juneau.svl</a></td>
 <td class="colLast">
 <div class="block">Simple Variable Language</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/svl/vars/package-summary.html">org.apache.juneau.svl.vars</a></td>
 <td class="colLast">
 <div class="block">Predefined SVL Variables</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/transform/package-summary.html">org.apache.juneau.transform</a></td>
 <td class="colLast">
 <div class="block">Transform API</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/transforms/package-summary.html">org.apache.juneau.transforms</a></td>
 <td class="colLast">
 <div class="block">Predefined Transforms</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/uon/package-summary.html">org.apache.juneau.uon</a></td>
 <td class="colLast">
 <div class="block">UON Marshalling Support</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/urlencoding/package-summary.html">org.apache.juneau.urlencoding</a></td>
 <td class="colLast">
 <div class="block">URL-Encoding Marshalling Support</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/urlencoding/annotation/package-summary.html">org.apache.juneau.urlencoding.annotation</a></td>
 <td class="colLast">
 <div class="block">URL-Encoding Marshalling Annotations</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/utils/package-summary.html">org.apache.juneau.utils</a></td>
 <td class="colLast">
 <div class="block">URL-Encoding Annotations</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/juneau/xml/package-summary.html">org.apache.juneau.xml</a></td>
 <td class="colLast">
 <div class="block">XML Marshalling Support</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/juneau/xml/annotation/package-summary.html">org.apache.juneau.xml.annotation</a></td>
 <td class="colLast">
 <div class="block">XML Marshalling Annotations</div>
@@ -471,12 +465,12 @@
 
 <a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
 <ol class='toc'>
-   <li><p><a class='doclink' href='#Intro'>Introduction</a></p>
+   <li><p class='toc2'><a class='doclink' href='#Intro'>Introduction</a></p>
    <ol>
       <li><p><a class='doclink' href='#Intro.Features'>Features</a></p>
       <li><p><a class='doclink' href='#Intro.Components'>Components</a></p>
    </ol>
-   <li><p><a class='doclink' href='#juneau-marshall'><i>juneau-marshall</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-marshall'><i>juneau-marshall</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-marshall.Serializers'>Serializers</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.Parsers'>Parsers</a></p>
@@ -524,21 +518,21 @@
          <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo.URLEncoding'>URL-Encoding</a></p>
       </ol>
    </ol>
-   <li><p><a class='doclink' href='#juneau-marshall-rdf'><i>juneau-marshall-rdf</i></a></p>
-   <li><p><a class='doclink' href='#juneau-dto'><i>juneau-dto</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-marshall-rdf'><i>juneau-marshall-rdf</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-dto'><i>juneau-dto</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-dto.HTML5'>HTML5</a></p>
       <li><p><a class='doclink' href='#juneau-dto.Atom'>Atom</a></p>
       <li><p><a class='doclink' href='#juneau-dto.Swagger'>Swagger</a></p>
    </ol>
-   <li><p><a class='doclink' href='#juneau-svl'><i>juneau-svl</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-svl'><i>juneau-svl</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-svl.SimpleVarLanguage'>Simple Variable Language</a></p>
       <li><p><a class='doclink' href='#juneau-svl.SvlVariables'>SVL Variables</a></p>
       <li><p><a class='doclink' href='#juneau-svl.VarResolvers'>VarResolvers and VarResolverSessions</a></p>
       <li><p><a class='doclink' href='#juneau-svl.OtherNotes'>Other Notes</a></p>
    </ol>
-   <li><p><a class='doclink' href='#juneau-config'><i>juneau-config</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-config'><i>juneau-config</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-config.Overview'>Overview</a></p>
       <ol>
@@ -573,11 +567,12 @@
          <li><p><a class='doclink' href='#juneau-config.ConfigMemoryStore'>ConfigMemoryStore</a></p>
          <li><p><a class='doclink' href='#juneau-config.ConfigFileStore'>ConfigFileStore</a></p>
          <li><p><a class='doclink' href='#juneau-config.CustomConfigStores"'>Custom ConfigStores</a></p>
+         <li><p><a class='doclink' href='#juneau-config.ConfigStoreListeners"'>ConfigStore Listeners</a></p>
       </ol>
       <li><p><a class='doclink' href='#juneau-config.ReadOnlyConfigs'>Read-only Configs</a></p>
       <li><p><a class='doclink' href='#juneau-config.ClosingConfigs'>Closing Configs</a></p>
    </ol>
-   <li><p><a class='doclink' href='#juneau-rest-server'><i>juneau-rest-server</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-rest-server'><i>juneau-rest-server</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-rest-server.HelloWorldExample'>Hello World Example</a></p>
       <li><p><a class='doclink' href='#juneau-rest-server.ClassHierarchy'>Class Hierarchy</a></p>
@@ -662,11 +657,11 @@
       <li><p><a class='doclink' href='#juneau-rest-server.PredefinedLabelBeans'>Predefined Label Beans</a></p>
       <li><p><a class='doclink' href='#juneau-rest-server.OtherNotes'>Other Notes</a></p>
    </ol>
-   <li><p><a class='doclink' href='#juneau-rest-server-jaxrs'><i>juneau-rest-server-jaxrs</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-rest-server-jaxrs'><i>juneau-rest-server-jaxrs</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-rest-server-jaxrs.BaseProvider'>Juneau JAX-RS Provider</a></p>
    </ol> 
-   <li><p><a class='doclink' href='#juneau-rest-client'><i>juneau-rest-client</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-rest-client'><i>juneau-rest-client</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-rest-client.3rdPartyProxies'>Interface Proxies Against 3rd-party REST Interfaces</a></p>
       <li><p><a class='doclink' href='#juneau-rest-client.SSL'>SSL Support</a></p>
@@ -687,7 +682,7 @@
       <li><p><a class='doclink' href='#juneau-rest-client.Remoteable'>Remoteable Proxies</a></p>
       <li><p><a class='doclink' href='#juneau-rest-client.Other'>Other Useful Methods</a></p>
    </ol>
-   <li><p><a class='doclink' href='#juneau-microservice-server'><i>juneau-microservice-server</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-microservice-server'><i>juneau-microservice-server</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-microservice-server.Introduction'>Microservice Introduction</a></p>
       <li><p><a class='doclink' href='#juneau-microservice-server.GettingStarted'>Getting Started</a></p>
@@ -711,8 +706,8 @@
          <li><p><a class='doclink' href='#juneau-microservice-server.ExtendingRestMicroservice'>Extending RestMicroservice</a></p>
       </ol>
    </ol>
-   <li><p><a class='doclink' href='#juneau-examples-core'><i>juneau-examples-core</i></a></p>
-   <li><p><a class='doclink' href='#juneau-examples-rest'><i>juneau-examples-rest</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-examples-core'><i>juneau-examples-core</i></a></p>
+   <li><p class='toc2'><a class='doclink' href='#juneau-examples-rest'><i>juneau-examples-rest</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-examples-rest.RootResources'>RootResources</a></p>
       <li><p><a class='doclink' href='#juneau-examples-rest.HelloWorldResource'>HelloWorldResource</a></p>
@@ -740,8 +735,8 @@
       <li><p><a class='doclink' href='#juneau-examples-rest.ConfigResource'>ConfigResource</a></p>
       <li><p><a class='doclink' href='#juneau-examples-rest.LogsResource'>LogsResource</a></p>
    </ol>
-   <li><p><a class='doclink' href='#Security'>Security Best-Practices</a></p>
-   <li><p><a class='doclink' href='#ReleaseNotes'>Release Notes</a></p>
+   <li><p class='toc2'><a class='doclink' href='#Security'>Security Best-Practices</a></p>
+   <li><p class='toc2'><a class='doclink' href='#ReleaseNotes'>Release Notes</a></p>
 </ol>
 
 <!-- =============================================================================================================== -->
@@ -789,18 +784,21 @@
    <h3 class='topic' onclick='toggle(this)'>1.1 - Features</h3>
    <div class='topic'>
       <ul class='spaced-list'>
-         <li>
-            KISS is our mantra!  No auto-wiring.  No code generation.  No dependency injection (but still compatible with).  
-            Just add it to your classpath and use it.  Extremely simple unit testing! 
-         <li>
-            Extensive and extensible support for a large variety of POJOs, including structured data (beans) and 
-            unstructured data (<code>Maps</code> and <code>Collections</code>).
-         <li>
-            Sophisticated configurable serializers and parsers. 
-            <br>For example, the JSON serializers and parsers can handle strict or lax syntax, comments, 
-            concatenated strings, etc...
+         <li>KISS is our mantra!  No auto-wiring.  No code generation.  No dependency injection.  Just add it to your classpath and use it.  Extremely simple unit testing!
+         <li>Enjoyable to use
          <li>Tiny - ~1MB
          <li>Exhaustively tested
+         <li>Lots of up-to-date documentation and examples
+         <li>Minimal library dependencies: 
+            <ul>
+               <li><b>juneau-marshall</b>, <b>juneau-dto</b>, <b>juneau-svl</b>, <b>juneau-config</b> - No external dependencies.  Entirely self-contained.
+               <li><b>juneau-marshall-rdf</b> - Optional RDF support.  Requires Apache Jena 2.7.1+.
+               <li><b>juneau-rest-server</b> - Any Servlet 3.1.0+ container.
+               <li><b>juneau-rest-client</b> - Apache HttpClient 4.5+.
+               <li><b>juneau-microservice</b> - Eclipse Jetty.
+            </ul>
+         <li>Built on top of Servlet and Apache HttpClient APIs that allow you to use the newest HTTP/2 features
+            such as request/response multiplexing and server push.
       </ul>
    </div>
       
@@ -1657,9 +1655,12 @@
       <p>
          Transforms are added to serializers and parsers (and REST clients) using the following configuration properties:
       </p> 
-      <ul>
-         <li class='jm'><a href="org/apache/juneau/BeanContext.html#BEAN_beanFilters"><code>BeanContext.BEAN_beanFilters</code></a>
-         <li class='jm'><a href="org/apache/juneau/BeanContext.html#BEAN_pojoSwaps"><code>BeanContext.BEAN_pojoSwaps</code></a>
+      <ul class='doctree'>
+         <li class='jc'><a href="org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a>
+         <ul>
+            <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanFilters"><code>BEAN_beanFilters</code></a>
+            <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_pojoSwaps"><code>BEAN_pojoSwaps</code></a>
+         </ul>
       </ul>
       <p>
          Annotations are also provided for specifying transforms directly on classes and methods (all described in later sections):
@@ -4779,17 +4780,21 @@
          <br>The <a href="org/apache/juneau/svl/VarResolver.html#DEFAULT"><code>VarResolver.DEFAULT</code></a> resolver is a reusable instance of this class 
          configured with the following basic variables:
       </p>
-      <ul>
-         <li><code>$S{key}</code>,<code>$S{key,default}</code> - System properties.
-         <li><code>$E{key}</code>,<code>$E{key,default}</code> - Environment variables.
+      <ul class='doctree'>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a> - <code>$S{key[,default]}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a> - <code>$E{key[,default]}</code>
       </ul>
       <p>
          The following logic variables are also provided:
       </p>
-      <ul>
-         <li><code>$IF{booleanValue,thenValue[,elseValue]}</code> - If-else patterns.
-         <li><code>$SW{test,matchPattern:thenValue[,matchPattern:thenValue...][,elseValue]}</code> - Switch patterns.
-         <li><code>$CO{arg1[,arg2...]}</code> - Coalesce variable.
+      <ul class='doctree'>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a> - <code>$IF{arg,then[,else]}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a> - <code>$SW{arg,pattern1:then1[,pattern2:then2...]}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a> - <code>$CO{arg1[,arg2...]}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a> - <code>$PM{arg,pattern}</code> 
+         <li class='jc'><a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a> - <code>$NE{arg}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a> - <code>$UC{arg}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a> - <code>$LC{arg}</code>
       </ul>
       <h5 class='figure'>Example:</h5>
       <p class='bcode'>
@@ -4870,39 +4875,63 @@
             <th>Module</th><th>Class</th><th>Pattern</th>
          </tr>
          <tr class='dark'>
-            <td rowspan="6" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-svl</td>
+            <td rowspan="9" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-svl</td>
             <td><a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a></td>
-            <td class='code'>$E{envVar[,defaultValue]}</td>
+            <td class='code'>$E{key[,default]}</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a></td>
-            <td class='code'>$S{systemProperty[,defaultValue]}</td>
+            <td class='code'>$S{key[,default]}</td>
          </tr>
          <tr class='dark'>
-            <td><a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a></td>
-            <td class='code'>$CO{arg1[,arg2...]}</td>
+            <td><a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a></td>
+            <td class='code'>$A{key[,default]}</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a></td>
+            <td class='code'>$MF{key[,default]}</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a></td>
-            <td class='code'>$IF{booleanArg ? thenValue}<br>$IF{booleanArg ? thenValue : elseValue}</td>
+            <td class='code'>$IF{arg,then[,else]}</td>
          </tr>
          <tr class='dark dd'>
             <td><a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a></td>
-            <td class='code'>$SW{stringArg ? pattern: value, pattern: value, ...}</td>
+            <td class='code'>$SW{arg,pattern1:then1[,pattern2:then2...]}</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a></td>
+            <td class='code'>$CO{arg1[,arg2...]}</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a></td>
+            <td class='code'>$PM{arg,pattern}</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a></td>
+            <td class='code'>$NE{arg}</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a></td>
+            <td class='code'>$UC{arg}</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a></td>
+            <td class='code'>$LC{arg}</td>
          </tr>
          <tr class='light dd'>
             <td rowspan="1" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-config</td>
             <td><a href="org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars"><code>ConfigVar</code></a></td>
-            <td class='code'>$C{key[,defaultValue]}</td>
+            <td class='code'>$C{key[,default]}</td>
          </tr>
          <tr class='dark'>
             <td rowspan="14" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-rest-server</td>
             <td><a href="org/apache/juneau/rest/vars/FileVar.html" title="class in org.apache.juneau.rest.vars"><code>FileVar</code></a></td>
-            <td class='code'>$F{path[,defaultValue]}}</td>
+            <td class='code'>$F{path[,default]}}</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/rest/vars/ServletInitParamVar.html" title="class in org.apache.juneau.rest.vars"><code>ServletInitParamVar</code></a></td>
-            <td class='code'>$I{name[,defaultValue]}</td>
+            <td class='code'>$I{name[,default]}</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/rest/vars/LocalizationVar.html" title="class in org.apache.juneau.rest.vars"><code>LocalizationVar</code></a></td>
@@ -4938,7 +4967,7 @@
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/rest/vars/SerializedRequestAttrVar.html" title="class in org.apache.juneau.rest.vars"><code>SerializedRequestAttrVar</code></a></td>
-            <td class='code'>$SA{contentType,key[,defaultValue]}</td>
+            <td class='code'>$SA{contentType,key[,default]}</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/rest/vars/UrlVar.html" title="class in org.apache.juneau.rest.vars"><code>UrlVar</code></a></td>
@@ -4950,16 +4979,7 @@
          </tr>
          <tr class='dark dd'>
             <td><a href="org/apache/juneau/rest/vars/WidgetVar.html" title="class in org.apache.juneau.rest.vars"><code>WidgetVar</code></a></td>
-            <td class='code'>$W{widgetName}</td>
-         </tr>
-         <tr class='light'>
-            <td rowspan="2" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-microservice-server</td>
-            <td><a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars"><code>ArgsVar</code></a></td>
-            <td class='code'>$ARG{key[,defaultValue]}</td>
-         </tr>
-         <tr class='light dd'>
-            <td><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars"><code>ManifestFileVar</code></a></td>
-            <td class='code'>$MF{key[,defaultValue]}</td>
+            <td class='code'>$W{name}</td>
          </tr>
       </table>
    </div>
@@ -5018,7 +5038,7 @@
       
       <h5 class='figure'>Example:</h5>
       <p class='bcode'>
-   <jc>// Create a resolver that copies the default resolver and adds $C and $ARG vars.</jc>
+   <jc>// Create a resolver that copies the default resolver and adds $C and $A vars.</jc>
    VarResolver myVarResolver = VarResolver.<jsf>DEFAULT</jsf>
       .builder()
       .vars(ConfigVar.<jk>class</jk>, ArgsVar.<jk>class</jk>)
@@ -5520,9 +5540,7 @@
             <li><code>getObject(<js>"..."</js>, HashMap.<jk>class</jk>, Integer.<jk>class</jk>, ArrayList.<jk>class</jk>, MyBean[].<jk>class</jk>)</code>
                <br>Produces: <code>LinkedHashMap&lt;Integer,ArrayList&lt;MyBean[]&gt;&gt;</code> 
          </ul>
-         <p>
-            For example:
-         </p>
+         <h5 class='figure'>Example:</h5>
          <p class='bcode'>
    <ck>addresses</ck> = 
       <cv>[
@@ -5652,10 +5670,10 @@
          By default, <code>Configs</code> use the <a href="org/apache/juneau/svl/VarResolver.html#DEFAULT"><code>VarResolver.DEFAULT</code></a> variable resolver
          which provides support for the following variables and constructs:
       </p>
-      <ul class='spaced-list'>
-         <li><code>$C{key}</code>, <code>$C{key,default}</code> - <a href="org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars"><code>ConfigVar</code></a>
-         <li><code>$S{key}</code>, <code>$S{key,default}</code> - <a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a>
-         <li><code>$E{key}</code>, <code>$E{key,default}</code> - <a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a>
+      <ul class='doctree'>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a> - <code>$S{key[,default]}</code>
+         <li class='jc'><a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a> - <code>$E{key[,default]}</code>
+         <li class='jc'><a href="org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars"><code>ConfigVar</code></a> - <code>$C{key[,default]}</code>
       </ul>
       <p>
          The variable resolver is controlled via the following setting:
@@ -5677,14 +5695,14 @@
          <p>
             The default variable resolver also provides the following logic variables for performing simple logical operations:
          </p>
-         <ul class='spaced-list'>
-            <li><code>$IF{booleanValue, thenValue[, elseValue]}</code> - <a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a>
-            <li><code>$SW{stringValue, matchPattern:thenValue[ ,matchPattern:thenValue...]}</code> - <a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a>
-            <li><code>$CO{arg1[, arg2...]}</code> - <a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a>
-            <li><code>$PM{stringValue, matchPattern}</code> - <a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a>
-            <li><code>$UC{stringValue}</code> - <a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
-            <li><code>$LC{stringValue}</code> - <a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
-            <li><code>$NE{stringValue}</code> - <a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a> - <code>$IF{arg,then[,else]}</code>
+            <li class='jc'><a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a> - <code>$SW{arg,pattern1:then1[,pattern2:then2...]}</code>
+            <li class='jc'><a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a> - <code>$CO{arg1[,arg2...]}</code>
+            <li class='jc'><a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a> - <code>$PM{arg,pattern}</code> 
+            <li class='jc'><a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a> - <code>$NE{arg}</code>
+            <li class='jc'><a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a> - <code>$UC{arg}</code>
+            <li class='jc'><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a> - <code>$LC{arg}</code>
          </ul>
          <p>
             The <code>$IF</code> variable can be used for simple if/else logic:
@@ -5854,9 +5872,9 @@
       <p class='bcode'>
    <jc>// Example bean</jc>
    <jk>public class</jk> Address {
-      public String street, city;
-      public StateEnum state;
-      public int zip;
+      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>;
+      <jk>public</jk> StateEnum <jf>state</jf>;
+      <jk>public int</jk> <jf>zip</jf>;
    }
 
    <jc>// Example usage</jc>
@@ -6181,13 +6199,17 @@
       <ul class='doctree'>
          <li class='jc'><a href="org/apache/juneau/config/Config.html" title="class in org.apache.juneau.config"><code>Config</code></a>
          <ul>
-            <li class='jm'><a href="org/apache/juneau/config/Config.html#writeTo-java.io.Writer-"><code>Config.writeTo(Writer)</code></a>
-            <li class='jm'><a href="org/apache/juneau/config/Config.html#toString--"><code>Config.toString()</code></a>
+            <li class='jm'><a href="org/apache/juneau/config/Config.html#writeTo-java.io.Writer-"><code>writeTo(Writer)</code></a>
+            <li class='jm'><a href="org/apache/juneau/config/Config.html#toString--"><code>toString()</code></a>
          </ul>
       </ul>
       <p>
          Both methods are thread safe.
       </p>
+      <p>
+         The <code>Config</code> class implements the <a href="org/apache/juneau/Writable.html" title="interface in org.apache.juneau"><code>Writable</code></a> which means it can be 
+         returned as-is by REST methods to be serialized as INI text.
+      </p>
    </div>
 
    <!-- ======================================================================================================== -->
@@ -6221,10 +6243,14 @@
       </p>
       <p class='bcode'>
    <jk>public</jk> String write(String name, String oldContents, String newContents) {
+   
       <jc>// If the old contents match the current stored contents, the new contents will get stored, 
-      // and the method returns null.
+      // and the method returns null indicating success.
+   
       // If the old contents DO NOT match the current stored contents (i.e. it was modified in some way), 
-      // the new contents are NOT stored, and the method returns the current stored contents.</jc>
+      // the new contents are NOT stored, and the method returns the current stored contents.
+   
+      // If the old contents are null, then just always write the new contents.</jc>
    }
       </p>
       <p>
@@ -6236,30 +6262,6 @@
    }
       </p>
       <p>
-         The <code>ConfigStore</code> class also has the following listener methods:
-      </p>
-      <ul class='doctree'>
-         <li class='jac'><a href="org/apache/juneau/config/store/ConfigStore.html" title="class in org.apache.juneau.config.store"><code>ConfigStore</code></a>
-         <ul>
-            <li class='jm'><a href="org/apache/juneau/config/store/ConfigStore.html#register-java.lang.String-org.apache.juneau.config.store.ConfigStoreListener-"><code>register(String,ConfigStoreListener)</code></a> - Register a listener on the specified config name.
-            <li class='jm'><a href="org/apache/juneau/config/store/ConfigStore.html#unregister-java.lang.String-org.apache.juneau.config.store.ConfigStoreListener-"><code>unregister(String,ConfigStoreListener)</code></a> - Unregister a listener on the specified config name.
-         </ul>
-      </ul>
-      <p>
-         Note that this is a different listener than <a href="org/apache/juneau/config/event/ConfigEventListener.html" title="interface in org.apache.juneau.config.event"><code>ConfigEventListener</code></a>.
-         <br>In this case, we're just listening for changed files:
-      </p>     
-      <ul class='doctree'>
-         <li class='jic'><a href="org/apache/juneau/config/store/ConfigStoreListener.html" title="interface in org.apache.juneau.config.store"><code>ConfigStoreListener</code></a>
-         <ul>
-            <li class='jm'><a href="org/apache/juneau/config/store/ConfigStoreListener.html#onChange-java.lang.String-"><code>ConfigStoreListener.onChange(String)</code></a> - Called when file changes.  New contents are passed in.
-         </ul>
-      </ul>
-      <p>
-         This listener is used by the <code>Config</code> class to listen for changes on the file system so that it can be
-         updated in real-time.
-      </p>
-      <p>
          Two configuration stores are provided by default:
       </p>
       <ul>
@@ -6375,7 +6377,7 @@
             The <code>ConfigStore</code> API has been written to allow easy development of custom configuration storage classes.
          </p>
          <p>
-            The example belows shows a starting point for an implementation based on a relational database.
+            The example below shows a starting point for an implementation based on polling a relational database.
             <br>Completing it is left as an exercise:
          </p>
          <h5 class='figure'>Example Store Class:</h5>
@@ -6386,13 +6388,14 @@
       <jk>static final</jk> String
          <jsf>CONFIGSQLSTORE_jdbcUrl</jsf> = <js>"ConfigSqlStore.jdbcUrl.s"</js>,
          <jsf>CONFIGSQLSTORE_tableName</jsf> = <js>"ConfigSqlStore.tableName.s"</js>,
-         <jsf>CONFIGSQLSTORE_nameColumn</jsf> = <js>"ConfigSqlStore.nameColumn.s"</js>;
-         <jsf>CONFIGSQLSTORE_valueColumn</jsf> = <js>"ConfigSqlStore.valueColumn.s"</js>;
+         <jsf>CONFIGSQLSTORE_nameColumn</jsf> = <js>"ConfigSqlStore.nameColumn.s"</js>,
+         <jsf>CONFIGSQLSTORE_valueColumn</jsf> = <js>"ConfigSqlStore.valueColumn.s"</js>,
+         <jsf>CONFIGSQLSTORE_pollInterval</jsf> = <js>"ConfigSqlStore.pollInterval.i"</js>;
 
       <jc>// Instance fields</jc>
       <jk>private final</jk> String <jf>jdbcUrl</jf>;
       <jk>private final</jk> String <jf>tableName</jf>, <jf>nameColumn</jf>, <jf>valueColumn</jf>;
-      <jk>private final</jk> Thread <jf>watcherThread</jf>;
+      <jk>private final</jk> Timer <jf>watcher</jf>;
       <jk>private final</jk> ConcurrentHashMap&lt;String,String&gt; <jf>cache</jf> = <jk>new</jk> ConcurrentHashMap&lt;&gt;();
 
    
@@ -6404,17 +6407,21 @@
          <jk>this</jk>.<jf>tableName</jf> = getStringProperty(<jsf>CONFIGSQLSTORE_tableName</jsf>);
          <jk>this</jk>.<jf>nameColumn</jf> = getStringProperty(<jsf>CONFIGSQLSTORE_nameColumn</jsf>);
          <jk>this</jk>.<jf>valueColumn</jf> = getStringProperty(<jsf>CONFIGSQLSTORE_valueColumn</jsf>);     
+
+         <jk>int</jk> pollInterval = getStringProperty(<jsf>CONFIGSQLSTORE_pollInterval</jsf>, 600);
          
-         <jk>this</jk>.watcherThread = <jk>new</jk> Thread() {
-            <ja>@Override</ja> <jc>/* Thread */</jc>
+         TimerTask timerTask = <jk>new</jk> TimerTask() {
+            <ja>@Override</ja>
             <jk>public void</jk> run() {
-               ConfigSqlStore.<jk>this</jk>.checkForUpdates();
+               ConfigSqlStore.<jk>this</jk>.poll();
             }
-         }; 
-         watcherThread.start();              
+         };
+
+         <jk>this</jk>.<jf>watcher</jf> = <jk>new</jk> Timer(<js>"MyTimer"</js>);
+         <jf>watcher</jf>.scheduleAtFixedRate(timerTask, 0, pollInterval * 10000);
       }
       
-      <jk>private synchronized void</jk> checkForUpdates() {
+      <jk>private synchronized void</jk> poll() {
       
          <jc>// Loop through all our entries and find the latest values.</jc>
          <jk>for</jk> (Map.Entry&lt;String,String&gt; e : cache.entrySet()) {
@@ -6438,7 +6445,7 @@
       <jk>public synchronized</jk> String read(String name) {
          String contents = <jf>cache</jf>.get(name);
          <jk>if</jk> (contents == <jk>null</jk>) {
-            contents = readDatabaseValue(name);
+            contents = getDatabaseValue(name);
             update(name, contents);
          }
          <jk>return</jk> contents;
@@ -6473,7 +6480,7 @@
       <ja>@Override</ja> <jc>/* Closeable */</jc>
       <jk>public synchronized void</jk> close() {
          <jk>if</jk> (watcher != <jk>null</jk>)
-            watcher.interrupt();
+            watcher.cancel();
       }
    }
          </p>
@@ -6513,13 +6520,47 @@
          <jk>return this</jk>;
       }
 
+      <jk>public</jk> ConfigSqlStoreBuilder pollInterval(<jk>int</jk> value) {
+         <jk>super</jk>.set(<jsf>CONFIGSQLSTORE_pollInterval</jsf>, value);
+         <jk>return this</jk>;
+      }
+
       <ja>@Override</ja> <jc>/* ContextBuilder */</jc>
       <jk>public</jk> ConfigFileStore build() {
          <jk>return new</jk> ConfigFileStore(getPropertyStore());
       }
    }
       </div>
-   
+      
+      <!-- ======================================================================================================== -->
+      <a id="juneau-config.ConfigStoreListeners"></a>
+      <h4 class='topic' onclick='toggle(this)'>6.11.4 - ConfigStore Listeners</h4>
+      <div class='topic'>
+         <p>
+            The <code>ConfigStore</code> class has the following listener methods:
+         </p>
+         <ul class='doctree'>
+            <li class='jac'><a href="org/apache/juneau/config/store/ConfigStore.html" title="class in org.apache.juneau.config.store"><code>ConfigStore</code></a>
+            <ul>
+               <li class='jm'><a href="org/apache/juneau/config/store/ConfigStore.html#register-java.lang.String-org.apache.juneau.config.store.ConfigStoreListener-"><code>register(String,ConfigStoreListener)</code></a> - Register a listener on the specified config name.
+               <li class='jm'><a href="org/apache/juneau/config/store/ConfigStore.html#unregister-java.lang.String-org.apache.juneau.config.store.ConfigStoreListener-"><code>unregister(String,ConfigStoreListener)</code></a> - Unregister a listener on the specified config name.
+            </ul>
+         </ul>
+         <p>
+            Note that this is a different listener than <a href="org/apache/juneau/config/event/ConfigEventListener.html" title="interface in org.apache.juneau.config.event"><code>ConfigEventListener</code></a>.
+            <br>In this case, we're just listening for changed files:
+         </p>     
+         <ul class='doctree'>
+            <li class='jic'><a href="org/apache/juneau/config/store/ConfigStoreListener.html" title="interface in org.apache.juneau.config.store"><code>ConfigStoreListener</code></a>
+            <ul>
+               <li class='jm'><a href="org/apache/juneau/config/store/ConfigStoreListener.html#onChange-java.lang.String-"><code>ConfigStoreListener.onChange(String)</code></a> - Called when file changes.  New contents are passed in.
+            </ul>
+         </ul>
+         <p>
+            This listener is used by the <code>Config</code> class to listen for changes on the file system so that it can be
+            updated in real-time.
+         </p>
+      </div>   
    </div>
 
    <!-- ======================================================================================================== -->
@@ -6550,6 +6591,7 @@
          In general, it's good practice to close Config if you're only creating them temporarily so that
          their listeners get unregistered from the underlying storage APIs.
       </p>
+      <h5 class='figure'>Example:</h5>
       <p class='bcode'>
    <jc>// Create a transient config.</jc>
    Config c = Config.<jsm>create</jsm>(<js>"MyConfig.cfg"</js>).build();
@@ -6710,9 +6752,7 @@
          Our servlet code is shown below:
       </p>
       <p class='bcode'>
-   <jd>/** 
-    * Sample REST resource that prints out a simple "Hello world!" message.
-    */</jd>
+   <jc>// Sample REST resource that prints out a simple "Hello world!" message.</jc>
    <ja>@RestResource</ja>(
       path=<js>"/helloWorld"</js>,
       title=<js>"Hello World"</js>,
@@ -6773,18 +6813,9 @@
                   <ul>
                      <li class='jac'><a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>org.apache.juneau.rest.RestServletDefault</code></a>
                         <br>Provides a default set of serializers, parsers, options page, stylesheet, and other common settings.
-                        <br><b>Developers will typically subclass this when creating REST resources in JEE environments.</b> 
                         <ul>
-                           <li class='jac'><a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>org.apache.juneau.microservice.Resource</code></a>
-                              <br>Identical to <l>RestServletDefault</l> but provides support for <code>$ARGS</code> and <code>$MF</code> variables.
-                              <br><b>Developers will typically subclass this when creating microservices.</b> 
-                           <li class='jac'><a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><code>org.apache.juneau.rest.RestServletGroupDefault</code></a>
+                           <li class='jac'><a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>org.apache.juneau.rest.RestServletGroup</code></a>
                               <br>A default implementation for "router" pages.
-                              <ul>
-                                 <li class='jac'><a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><code>org.apache.juneau.microservice.ResourceGroup</code></a>
-                                 <br>Identical to <l>RestServletGroupDefault</l> but provides support for <code>$ARGS</code> and <code>$MF</code> variables.
-                                 <br><b>Developers will typically subclass this when creating microservice groups.</b> 
-                              </ul>
                            </li>
                         </ul>
                      </li>
@@ -6815,14 +6846,24 @@
       <p>
          REST resources are deployed in one of two ways:
       </p>
-      <ul>
+      <ul class='spaced-list'>
          <li>Deployed in a J2EE container as a servlet.
          <li>Deployed as a child of another REST resource.
       </ul>
       <p>
          When deployed in a J2EE container, you MUST extend from one of the servlet classes.
-         <br>When deployed as a child of another resource, you MAY extend from one of the servlet classes but it's 
-         not necessary.
+      </p>
+      <p>
+         <b>When deployed as a child of another resource, you MAY extend from one of the servlet classes but it's 
+         not necessary.</b>
+         <br>The only requirement is that the class be annotated with <ja>@RestResource</ja> and have one of the following constructors:
+      </p>
+      <ul>
+         <li class='jm'><code><jk>public</jk> T()</code>
+         <li class='jm'><code><jk>public</jk> T(RestContextBuilder)</code>
+      </ul>
+      <p>
+         And even that restriction is relaxed if you implement your own REST resource resolver (described later).
       </p>
 
       <!-- ======================================================================================================== -->
@@ -6934,12 +6975,7 @@
    )
    <jk>public abstract class</jk> RestServletDefault <jk>extends</jk> RestServlet {
    
-      <jd>/**
-       * [OPTIONS /*] - Show resource options.
-       * 
-       * @param req The HTTP request.
-       * @return A bean containing the contents for the OPTIONS page.
-       */</jd>
+      <jc>// Show resource options.</jc>
       <ja>@RestMethod</ja>(name=<jsf>OPTIONS</jsf>, path=<js>"/*"</js>,
          htmldoc=<ja>@HtmlDoc</ja>(
             navlinks={
@@ -7011,7 +7047,7 @@
       <h4 class='topic' onclick='toggle(this)'>7.3.4 - Router Pages</h4>
       <div class='topic'>
          <p>
-            The <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><code>RestServletGroupDefault</code></a> class provides a default "router" page for 
+            The <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>RestServletGroup</code></a> class provides a default "router" page for 
             child resources when a parent resource is nothing more than a grouping of child resources.
          </p>     
          <p>
@@ -7046,7 +7082,7 @@
          ShutdownResource.<jk>class</jk>
       }
    )
-   <jk>public class</jk> RootResources <jk>extends</jk> RestServletGroupDefault {
+   <jk>public class</jk> RootResources <jk>extends</jk> RestServletGroup {
       <jc>// NO CODE!!!</jc>
    }
          </p>
@@ -7056,13 +7092,15 @@
          </p>
          <img class='bordered' src="doc-files/juneau-rest-server.RouterPages.1.png" style='width:800px;'/>
          <p> 
-            The <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><code>RestServletGroupDefault</code></a> class is nothing more than a subclass of 
+            The <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>RestServletGroup</code></a> class is nothing more than a subclass of 
             <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> with a <l>getChildren()</l> method mapped to the servlet 
             root path.
             <br>The method returns a POJO with is just a linked-list of beans with name/description properties.
          </p>  
          <p class='bcode'>
-   <jk>public class</jk> RestServletGroupDefault <jk>extends</jk> RestServletDefault {
+   <jc>// The entire contents of the RestServletGroup class.</jc>
+   
+   <jk>public class</jk> RestServletGroup <jk>extends</jk> RestServletDefault {
    
       <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/"</js>, description=<js>"Child resources"</js>)
       <jk>public</jk> ChildResourceDescriptions getChildren(RestRequest req) {
@@ -7080,11 +7118,11 @@
             to any class as long as it has one of the following constructors:
          </p>
          <ul>
-            <li><code><jk>public</jk> T(RestContextBuilder)</code>
-            <li><code><jk>public</jk> T()</code>
+            <li class='jm'><code><jk>public</jk> T()</code>
+            <li class='jm'><code><jk>public</jk> T(RestContextBuilder)</code>
          </ul>
             <p>
-            The former constructor can be used to get access to the <a href="org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest"><code>RestContextBuilder</code></a> object to make
+            The latter constructor can be used to get access to the <a href="org/apache/juneau/rest/RestContextBuilder.html" title="class in org.apache.juneau.rest"><code>RestContextBuilder</code></a> object to make
             any configurations to the resource before it's initialized.
          </p>
          <p>
@@ -8267,7 +8305,7 @@
    <ja>@RestResource</ja>(
       path=<js>"/urlEncodedForm"</js>
    )
-   <jk>public class</jk> UrlEncodedFormResource <jk>extends</jk> Resource {
+   <jk>public class</jk> UrlEncodedFormResource <jk>extends</jk> RestServletDefault {
 
       <jd>/** POST request handler */</jd>
       <ja>@RestMethod</ja>(name=<jsf>POST</jsf>, path=<js>"/"</js>)
@@ -8460,7 +8498,7 @@
    <h3 class='topic' onclick='toggle(this)'>7.10 - @Header</h3>
    <div class='topic'>
       <p>
-         The <a href="org/apache/juneau/rest/annotation/Header.html" title="annotation in org.apache.juneau.rest.annotation"><code>@Header</code></a> is used to retrieve request headers.
+         The <a href="org/apache/juneau/rest/annotation/Header.html" title="annotation in org.apache.juneau.rest.annotation"><code>@Header</code></a> annotation is used to retrieve request headers.
       </p>
       <h5 class='figure'>Example:</h5>
       <p class='bcode'>
@@ -9139,11 +9177,11 @@
       <p>
          There are two distinct groups of variables:
       </p>
-      <ul>
-         <li>Initialization-time variables.
+      <ul class='spaced-list'>
+         <li><l>Initialization-time variables</l>
             <br>These are variables that can be used in many of the annotations in <a href="org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestResource</code></a>. 
             <br>The <a href="org/apache/juneau/rest/RestContext.html#getVarResolver--"><code>RestContext.getVarResolver()</code></a> method returns initialization-time variables only.
-         <li>Request-time variables.
+         <li><l>Request-time variables</l>
             <br>These are variables that are available during HTTP-requests and can be used on annotation such as <a href="org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation"><code>@HtmlDoc</code></a>. 
             <br><a href="org/apache/juneau/rest/RestRequest.html#getVarResolverSession--"><code>RestRequest.getVarResolverSession()</code></a> method returns initialization and request-time variables.
       </ul>
@@ -9157,53 +9195,89 @@
             <th>Module</th><th>Class</th><th>Pattern</th><th>Initialization<br>time</th><th>Request<br>time</th>
          </tr>
          <tr class='dark'>
-            <td rowspan="6" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-svl</td>
+            <td rowspan="11" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-svl</td>
             <td><a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><code>EnvVariablesVar</code></a></td>
-            <td class='code'>$E{envVar[,defaultValue]}</td>
+            <td class='code'>$E{key[,default]}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><code>SystemPropertiesVar</code></a></td>
-            <td class='code'>$S{systemProperty[,defaultValue]}</td>
+            <td class='code'>$S{key[,default]}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='dark'>
-            <td><a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a></td>
-            <td class='code'>$CO{arg1[,arg2...]}</td>
+            <td><a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a></td>
+            <td class='code'>$A{key[,default]}</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a></td>
+            <td class='code'>$MF{key[,default]}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/svl/vars/IfVar.html" title="class in org.apache.juneau.svl.vars"><code>IfVar</code></a></td>
-            <td class='code'>$IF{booleanArg,thenValue[,elseValue]}</td>
+            <td class='code'>$IF{arg,then[,else]}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='dark dd'>
             <td><a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars"><code>SwitchVar</code></a></td>
-            <td class='code'>$SW{stringArg(,pattern,thenValue)+[,elseValue]}</td>
+            <td class='code'>$SW{arg,pattern1:then1[,pattern2:then2...]}</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/CoalesceVar.html" title="class in org.apache.juneau.svl.vars"><code>CoalesceVar</code></a></td>
+            <td class='code'>$CO{arg1[,arg2...]}</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/PatternMatchVar.html" title="class in org.apache.juneau.svl.vars"><code>PatternMatchVar</code></a></td>
+            <td class='code'>$PM{arg,pattern}</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/NotEmptyVar.html" title="class in org.apache.juneau.svl.vars"><code>NotEmptyVar</code></a></td>
+            <td class='code'>$NE{arg}</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a></td>
+            <td class='code'>$UC{arg}</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+            <td style='text-align:center;font-weight:bold'>yes</td>
+         </tr>
+         <tr class='dark'>
+            <td><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a></td>
+            <td class='code'>$LC{arg}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='light dd'>
             <td rowspan="1" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-config</td>
             <td><a href="org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars"><code>ConfigVar</code></a></td>
-            <td class='code'>$C{key[,defaultValue]}</td>
+            <td class='code'>$C{key[,default]}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='dark'>
             <td rowspan="14" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-rest-server</td>
             <td><a href="org/apache/juneau/rest/vars/FileVar.html" title="class in org.apache.juneau.rest.vars"><code>FileVar</code></a></td>
-            <td class='code'>$F{path[,defaultValue]}}</td>
+            <td class='code'>$F{path[,default]}}</td>
             <td style='text-align:center;font-weight:bold'>no</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/rest/vars/ServletInitParamVar.html" title="class in org.apache.juneau.rest.vars"><code>ServletInitParamVar</code></a></td>
-            <td class='code'>$I{name[,defaultValue]}</td>
+            <td class='code'>$I{name[,default]}</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
@@ -9257,7 +9331,7 @@
          </tr>
          <tr class='dark'>
             <td><a href="org/apache/juneau/rest/vars/SerializedRequestAttrVar.html" title="class in org.apache.juneau.rest.vars"><code>SerializedRequestAttrVar</code></a></td>
-            <td class='code'>$SA{contentType,key[,defaultValue]}</td>
+            <td class='code'>$SA{contentType,key[,default]}</td>
             <td style='text-align:center;font-weight:bold'>no</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
@@ -9275,27 +9349,11 @@
          </tr>
          <tr class='dark dd'>
             <td><a href="org/apache/juneau/rest/vars/WidgetVar.html" title="class in org.apache.juneau.rest.vars"><code>WidgetVar</code></a></td>
-            <td class='code'>$W{widgetName}</td>
+            <td class='code'>$W{name}</td>
             <td style='text-align:center;font-weight:bold'>no</td>
             <td style='text-align:center;font-weight:bold'>yes</td>
          </tr>
-         <tr class='light'>
-            <td rowspan="2" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-microservice-server</td>
-            <td><a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars"><code>ArgsVar</code></a></td>
-            <td class='code'>$ARG{key[,defaultValue]}</td>
-            <td style='text-align:center;font-weight:bold'>yes*</td>
-            <td style='text-align:center;font-weight:bold'>yes*</td>
-         </tr>
-         <tr class='light dd'>
-            <td><a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars"><code>ManifestFileVar</code></a></td>
-            <td class='code'>$MF{key[,defaultValue]}</td>
-            <td style='text-align:center;font-weight:bold'>yes*</td>
-            <td style='text-align:center;font-weight:bold'>yes*</td>
-         </tr>
       </table>
-      <p>
-         * = Only if extending from <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a>
-      <p>
    </div>
    
    <!-- ======================================================================================================== -->
@@ -9347,7 +9405,7 @@
       </p>
       <p>
          The annotation itself can contain string variables.  
-         <br>For example, the Microservice API <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a> class defines the 
+         <br>For example, the Microservice API <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> class defines the 
          location of the config file as a system property <l>"juneau.configFile"</l>:
       </p>
       <p class='bcode'>
@@ -10094,7 +10152,7 @@
       ),
       ...
    )
-   <jk>public class</jk> RootResources <jk>extends</jk> ResourceJenaGroup {...}
+   <jk>public class</jk> RootResources <jk>extends</jk> RestServletJenaGroup {...}
          </p>        
          <p>
             The widget definition is shown below:
@@ -10204,7 +10262,7 @@
             <js>"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"</js>
          },
    )
-   <jk>public class</jk> RootResources <jk>extends</jk> ResourceJenaGroup {...}
+   <jk>public class</jk> RootResources <jk>extends</jk> RestServletJenaGroup {...}
          </p>
          <p>
             The <l>StyleMenuItem</l> is a widget that extends from <a href="org/apache/juneau/rest/widget/MenuItemWidget.html" title="class in org.apache.juneau.rest.widget"><code>MenuItemWidget</code></a>, a
@@ -11218,7 +11276,7 @@
          ...
       }
    )
-   <jk>public class</jk> Root <jk>extends</jk> RestServletGroupDefault {
+   <jk>public class</jk> Root <jk>extends</jk> RestServletGroup {
       
       <jk>private final</jk> RestResourceResolver <jf>resolver</jf>;
       
@@ -11284,7 +11342,7 @@
          <br>The following examples is pulled from the REST examples:
       </p>
       <p class='bcode'>
-   <jk>public class</jk> PredefinedLabelsResource <jk>extends</jk> Resource {
+   <jk>public class</jk> PredefinedLabelsResource <jk>extends</jk> RestServletDefault {
    
       <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/"</js>)
       <jk>public</jk> ResourceDescription[] getChildMethods() {
@@ -12616,14 +12674,6 @@
                   <br>Starts up an externally-configured Jetty server, registers servlets, and sets up 
                   other features such as logging.  
             </ul>
-         <li class='jc'>
-            <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a> 
-            - A subclass of <code>RestServletDefault</code> with support for manfest-file and args variables
-            and configured to use the external INI file.
-         <li class='jc'>
-            <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><code>ResourceGroup</code></a> 
-            - A subclass of <code>RestServletGroupDefault</code> with support for manfest-file and args variables
-            and configured to use the external INI file.
       </ul>
    </div>
    
@@ -12684,7 +12734,7 @@
          LogsResource.<jk>class</jk>
       }
    )
-   <jk>public class</jk> RootResources <jk>extends</jk> ResourceGroup {
+   <jk>public class</jk> RootResources <jk>extends</jk> RestServletJenaGroup {
       <jc>// No code</jc>
    }
                </p>
@@ -13050,16 +13100,16 @@
    <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>
+   <ck>myArg</ck> = <cv>$A{myarg}</cv>
    
    <cc># The first command-line argument</cc>
-   <ck>firstArg</ck> = <cv>$ARG{0}</cv>
+   <ck>firstArg</ck> = <cv>$A{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>
+   <ck>nested</ck> = <cv>$S{mySystemProperty,$E{MY_ENV_VAR,$A{0}}}</cv>
 
    <cc># A POJO with embedded variables</cc>
-   <ck>aBean2</ck> = <cv>{foo:'$ARG{0}',baz:$C{MySection/anInt}}</cv>
+   <ck>aBean2</ck> = <cv>{foo:'$A{0}',baz:$C{MySection/anInt}}</cv>
    
    </p>
    <p class='bcode'>
@@ -13089,9 +13139,9 @@
          </p>
          <ul class='doctree'>
             <li class='jm'><a href="org/apache/juneau/microservice/Microservice.html#getConfig--"><code>Microservice.getConfig()</code></a> 
-               <br>Any <a class='doclink' href='#DefaultRestSvlVariables'>initialization-time variables</a> and <l>$ARG</l> and <l>$MF</l> variables can be used.
+               <br>Any <a class='doclink' href='#DefaultRestSvlVariables'>initialization-time variables</a> and <l>$A</l> and <l>$MF</l> variables can be used.
             <li class='jm'><a href="org/apache/juneau/rest/RestContext.html#getConfig--"><code>RestContext.getConfig()</code></a> 
-               <br>Any <a class='doclink' href='#DefaultRestSvlVariables'>initialization-time variables</a> and <l>$ARG</l> and <l>$MF</l> variables can be used.
+               <br>Any <a class='doclink' href='#DefaultRestSvlVariables'>initialization-time variables</a> and <l>$A</l> and <l>$MF</l> variables can be used.
                <h5 class='figure'>Example usage:</h5>
                <p class='bcode'>
    <cc>#-------------------------------</cc>
@@ -13102,7 +13152,7 @@
             </p>
             <p class='bcode'>
    <ja>@RestResource</ja>(...)
-   <jk>public class</jk> MyHelloResource <jk>extends</jk> Resource {
+   <jk>public class</jk> MyHelloResource <jk>extends</jk> RestServletDefault {
       <jc>// Access config file when initializing fields.</jc>
       <jk>private</jk> String greeting = getConfig().getString(<js>"MyHelloResource/greeting"</js>); 
       
@@ -13121,7 +13171,7 @@
             <li class='jm'>
                <a href="org/apache/juneau/rest/RestRequest.html#getConfig--"><code>RestRequest.getConfig()</code></a> 
                - An instance method to access it from inside a REST method.
-               <br>Any <a class='doclink' href='#DefaultRestSvlVariables'>initialization-time or request-time variables</a> and <l>$ARG</l> and <l>$MF</l> variables can be used.
+               <br>Any <a class='doclink' href='#DefaultRestSvlVariables'>initialization-time or request-time variables</a> and <l>$A</l> and <l>$MF</l> variables can be used.
                
                <h5 class='figure'>Example usage:</h5>
                <p class='bcode'>
@@ -13141,7 +13191,7 @@
       messages=<js>"nls/Messages"</js>,
       ...
    )
-   <jk>public class</jk> MyHelloResource <jk>extends</jk> Resource {
+   <jk>public class</jk> MyHelloResource <jk>extends</jk> RestServletDefault {
 
       <jd>/** Standard hello message. */</jd>
       <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/{person}"</js>)
@@ -13231,7 +13281,7 @@
          LogsResource.<jk>class</jk>
       }
    )
-   <jk>public class</jk> RootResources <jk>extends</jk> ResourceGroup {
+   <jk>public class</jk> RootResources <jk>extends</jk> RestServletJenaGroup {
       <jc>// No code! </jc>
    }
       </p>
@@ -13247,7 +13297,7 @@
          <li>
             The <l>children</l> annotation make up the list of child resources.
             <br>These child resources can be anything that extends from <l>Servlet</l>, although usually
-            they will be subclasses of <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a> or other resource groups.
+            they will be subclasses of <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> or other resource groups.
       </ul>
       <p>
          If you click the <l>helloWorld</l> link in your application, you'll get a simple hello world message:
@@ -13262,7 +13312,7 @@
       title=<js>"Hello World example"</js>,
       description=<js>"Simplest possible REST resource"</js>
    )
-   <jk>public class</jk> HelloWorldResource <jk>extends</jk> Resource {
+   <jk>public class</jk> HelloWorldResource <jk>extends</jk> RestServletDefault {
    
       <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>)
       <jk>public</jk> String sayHello() {
@@ -13270,11 +13320,6 @@
       }
    }     
       </p>
-      <p>
-         The <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a> and <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><code>ResourceGroup</code></a> 
-         classes are powerful servlets designed specifically for creating REST APIs using nothing more than serialized 
-         and parsed POJOs.
-      </p>
    </div>
 
    <!-- =========================================================================================================== -->
@@ -13480,18 +13525,8 @@
                   <br>Defines default serializers and parsers, and OPTIONs page logic.
                   <ul>
                      <li class='jac'>
-                        <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><code>org.apache.juneau.rest.RestServletGroupDefault</code></a>
+                        <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>org.apache.juneau.rest.RestServletGroup</code></a>
                         <br>Specialized subclass for grouping other resources
-                        <ul>
-                           <li class='jac'>
-                              <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><code>org.apache.juneau.microservice.ResourceGroup</code></a>
-                              <br>Specialized subclass when using the Microservice API.
-                              <ul>
-                                 <li class='jc'>
-                                    <code>org.apache.juneau.rest.samples.RootResources</code>
-                              </ul>
-                           </li>
-                        </ul>
                      </li>
                   </ul>
                </li>
@@ -13555,7 +13590,7 @@
          ShutdownResource.<jk>class</jk>     
       }
    )
-   <jk>public class</jk> RootResources <jk>extends</jk> ResourceGroup {
+   <jk>public class</jk> RootResources <jk>extends</jk> RestServletJenaGroup {
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
    }
       </p>
@@ -13590,7 +13625,7 @@
       <h5 class='figure'>HelloWorldResource.java</h5>
       <p class='bcode'>
    <ja>@RestResource</ja>(messages=<js>"nls/HelloWorldResource"</js>, path=<js>"/helloWorld"</js>)
-   <jk>public class</jk> HelloWorldResource <jk>extends</jk> Resource {
+   <jk>public class</jk> HelloWorldResource <jk>extends</jk> RestServletDefault {
       </p>
       <p>
          It should be noted that child resources do not need to be defined this way.  
@@ -13644,7 +13679,7 @@
          }
       )
    ) 
-   <jk>public class</jk> HelloWorldResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> HelloWorldResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jd>/** GET request handler */</jd> 
@@ -13675,15 +13710,6 @@
                <li class='jac'>
                   <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>org.apache.juneau.rest.RestServletDefault</code></a>
                   <br>Defines default serializers and parsers, and OPTIONs page logic.
-                  <ul>
-                     <li class='jac'>
-                        <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>org.apache.juneau.microservice.Resource</code></a>
-                        <br>Specialized subclass when using the Microservice API.
-                        <ul>
-                           <li class='jc'><code>org.apache.juneau.rest.samples.HelloWorldResource</code>
-                        </ul>
-                     </li>
-                  </ul>
                </li>
             </ul>
          </li>
@@ -13737,7 +13763,7 @@
          }
       )
    ) 
-   <jk>public class</jk> MethodExampleResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> MethodExampleResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jd>/** Example GET request that redirects to our example method */</jd> 
@@ -14042,7 +14068,7 @@
       path=<js>"/urlEncodedForm"</js>, 
       messages=<js>"nls/UrlEncodedFormResource"</js>
    ) 
-   <jk>public class</jk> UrlEncodedFormResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> UrlEncodedFormResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jd>/** GET request handler */</jd> 
@@ -14266,7 +14292,7 @@
          EnumerationSwap.<jk>class</jk>
       }
    )
-   <jk>public class</jk> RequestEchoResource <jk>extends</jk> Resource {
+   <jk>public class</jk> RequestEchoResource <jk>extends</jk> RestServletDefault {
    
       <jd>/** GET request handler */</jd>
       <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, converters={Queryable.<jk>class</jk>,Traversable.<jk>class</jk>})
@@ -14816,7 +14842,7 @@
          url:'http://juneau.apache.org'}}]"</js>,
       externalDocs=<js>"{description:'Home page',url:'http://juneau.apache.org'}"</js>
    ) 
-   <jk>public class</jk> AddressBookResource <jk>extends</jk> ResourceJena { 
+   <jk>public class</jk> AddressBookResource <jk>extends</jk> RestServletJenaDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jc>// The in-memory address book</jc> 
@@ -15739,7 +15765,7 @@
       }, 
       encoders=GzipEncoder.<jk>class</jk> 
    ) 
-   <jk>public class</jk> AtomFeedResource <jk>extends</jk> ResourceJena { 
+   <jk>public class</jk> AtomFeedResource <jk>extends</jk> RestServletJenaDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
    
       <jk>private</jk> Feed <jf>feed</jf>; <jc>// The root resource object</jc> 
@@ -15848,7 +15874,7 @@
          }
       )
    ) 
-   <jk>public class</jk> DockerRegistryResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> DockerRegistryResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jc>// Get registry URL from examples.cfg file.</jc>
@@ -15933,7 +15959,7 @@
          }
       )
    ) 
-   <jk>public class</jk> TumblrParserResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> TumblrParserResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
    
       <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/"</js>) 
@@ -16170,7 +16196,7 @@
          }
       )
    ) 
-   <jk>public class</jk> JsonSchemaResource <jk>extends</jk> ResourceJena { 
+   <jk>public class</jk> JsonSchemaResource <jk>extends</jk> RestServletJenaDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jk>private</jk> Schema schema; <jc>// The schema document</jc> 
@@ -16261,7 +16287,7 @@
          }
       )
    ) 
-   <jk>public class</jk> SqlQueryResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> SqlQueryResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jk>private</jk> Config <jf>cf</jf> = getConfig(); 
@@ -16456,7 +16482,7 @@
          }
       )
    ) 
-   <jk>public class</jk> ConfigResource <jk>extends</jk> Resource { 
+   <jk>public class</jk> ConfigResource <jk>extends</jk> RestServletDefault { 
       <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L; 
       
       <jd>/** 
@@ -16917,6 +16943,12 @@
                <li><a href="org/apache/juneau/svl/vars/UpperCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>UpperCaseVar</code></a>
                <li><a href="org/apache/juneau/svl/vars/LowerCaseVar.html" title="class in org.apache.juneau.svl.vars"><code>LowerCaseVar</code></a>
             </ul>
+         <li>
+            Variables moved from <l>juneau-microservice</l>:
+            <ul>
+               <li><a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><code>ArgsVar</code></a>
+               <li><a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><code>ManifestFileVar</code></a>
+            </ul>
       </ul>
       
       <h5 class='topic'>juneau-config</h5>
@@ -16926,6 +16958,23 @@
          <li>
             <code>Config.write(Reader,boolean)</code> method renamed to <a href="org/apache/juneau/config/Config.html#load-java.io.Reader-boolean-"><code>Config.load(Reader,boolean)</code></a>.
       </ul>
+
+      <h5 class='topic'>juneau-rest-server</h5>
+      <ul class='spaced-list'>
+         <li>
+            <code>RestServletGroupDefault</code> renamed to <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>RestServletGroup</code></a>.
+      </ul>
+
+      <h5 class='topic'>juneau-microservice</h5>
+      <ul class='spaced-list'>
+         <li>
+            <code>Resource</code> and <code>ResourceGroup</code> classes removed.
+            <br><a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> and <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>RestServletGroup</code></a> can be used instead.
+         <li>
+            <code>ResourceJena</code> and <code>ResourceJenaGroup</code> classes rename to
+            <a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><code>RestServletJenaDefault</code></a> and <a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice"><code>RestServletJenaGroup</code></a> can be used instead.
+            
+      </ul>
    </div>
    
    <!-- =========================================================================================================== -->
@@ -17308,7 +17357,7 @@
             instead of <code>close()</code> on the stream.
          <li>
             Added the following annotations to the <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> class
-            (which were previously defined on the <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a> class):
+            (which were previously defined on the <code><del>Resource</del></code> class):
             <p class='bcode'>
    <ja>@RestResource</ja>(
       htmldoc=<ja>@HtmlDoc</ja>(
@@ -19844,14 +19893,14 @@
             </ul>
          <li>Eliminated <code>org.apache.juneau.microservice.Main</code> class.  This is replaced by
             the microservice classes defined above.
-         <li><a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><code>Resource</code></a> and <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><code>ResourceGroup</code></a>
+         <li><code><del>Resource</del></code> and <code><del>ResourceGroup</del></code>
             classes now support the following new string variables:
             <ul>
-               <li><js>"$ARG{key,default}""</js> - Command line arguments.
+               <li><js>"$A{key,default}""</js> - Command line arguments.
                <li><js>"$MF{key,default}""</js> - Manifest file entries.
             </ul> 
          <li>CSS stylesheet now configurable through config file entry <js>"REST/stylesheet"</js>.
-         <li>New <a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice"><code>ResourceJena</code></a> class if you want your REST interface to support RDF.
+         <li>New <a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><code>RestServletJenaDefault</code></a> class if you want your REST interface to support RDF.
          <li>Eliminated the following classes:
             <ul>
                <li><code>org.apache.juneau.microservice.RootResource</code>
@@ -20137,7 +20186,7 @@
    <ja>@Property</ja>(name=<jsf>HTMLDOC_navlinks</jsf>, value=<js>"{back:'$R{servletURI}"</js>),
    <ja>@Property</ja>(name=<jsf>HTMLDOC_description</jsf>, value=<js>"Resource options"</js>)
             </p>
-         <li>New <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><code>RestServletGroupDefault</code></a> class.
+         <li>New <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><code>RestServletGroup</code></a> class.
          <li>Removed <code>RestServletProperties.REST_trimTrailingUriSlashes</code> and <code>RestServletProperties.REST_pathInfoBlankForNull</code>. 
          <li>New annotations for providing labels and descriptions.  Useful if you don't plan on having to support other languages, so you don't 
             want to provide labels in resource bundles.
diff --git a/content/site/apidocs/overview-tree.html b/content/site/apidocs/overview-tree.html
index 218b6cd..4c9fa96 100644
--- a/content/site/apidocs/overview-tree.html
+++ b/content/site/apidocs/overview-tree.html
@@ -102,7 +102,6 @@
 <li><a href="org/apache/juneau/microservice/console/package-tree.html">org.apache.juneau.microservice.console</a>, </li>
 <li><a href="org/apache/juneau/microservice/resources/package-tree.html">org.apache.juneau.microservice.resources</a>, </li>
 <li><a href="org/apache/juneau/microservice/sample/package-tree.html">org.apache.juneau.microservice.sample</a>, </li>
-<li><a href="org/apache/juneau/microservice/vars/package-tree.html">org.apache.juneau.microservice.vars</a>, </li>
 <li><a href="org/apache/juneau/msgpack/package-tree.html">org.apache.juneau.msgpack</a>, </li>
 <li><a href="org/apache/juneau/parser/package-tree.html">org.apache.juneau.parser</a>, </li>
 <li><a href="org/apache/juneau/plaintext/package-tree.html">org.apache.juneau.plaintext</a>, </li>
@@ -629,29 +628,21 @@
 <ul>
 <li type="circle">org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletDefault</span></a>
 <ul>
-<li type="circle">org.apache.juneau.rest.remoteable.<a href="org/apache/juneau/rest/remoteable/RemoteableServlet.html" title="class in org.apache.juneau.rest.remoteable"><span class="typeNameLink">RemoteableServlet</span></a></li>
-<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Resource</span></a>
-<ul>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">ConfigResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">DebugResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">DirectoryResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.sample.<a href="org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample"><span class="typeNameLink">HelloWorldResource</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">LogsResource</span></a></li>
-<li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">ShutdownResource</span></a></li>
-</ul>
-</li>
-<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceJena</span></a></li>
-<li type="circle">org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroupDefault</span></a>
-<ul>
-<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceGroup</span></a>
+<li type="circle">org.apache.juneau.rest.remoteable.<a href="org/apache/juneau/rest/remoteable/RemoteableServlet.html" title="class in org.apache.juneau.rest.remoteable"><span class="typeNameLink">RemoteableServlet</span></a></li>
+<li type="circle">org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServletGroup</span></a>
 <ul>
+<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">RestServletJenaGroup</span></a></li>
 <li type="circle">org.apache.juneau.microservice.sample.<a href="org/apache/juneau/microservice/sample/RootResources.html" title="class in org.apache.juneau.microservice.sample"><span class="typeNameLink">RootResources</span></a></li>
 <li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/SampleRootResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">SampleRootResource</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">ResourceJenaGroup</span></a></li>
-</ul>
-</li>
+<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">RestServletJenaDefault</span></a></li>
+<li type="circle">org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">ShutdownResource</span></a></li>
 </ul>
 </li>
 </ul>
@@ -1349,11 +1340,11 @@
 <ul>
 <li type="circle">org.apache.juneau.svl.<a href="org/apache/juneau/svl/DefaultingVar.html" title="class in org.apache.juneau.svl"><span class="typeNameLink">DefaultingVar</span></a>
 <ul>
-<li type="circle">org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ArgsVar.html" title="class in org.apache.juneau.microservice.vars"><span class="typeNameLink">ArgsVar</span></a></li>
+<li type="circle">org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ArgsVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">ArgsVar</span></a></li>
 <li type="circle">org.apache.juneau.config.vars.<a href="org/apache/juneau/config/vars/ConfigVar.html" title="class in org.apache.juneau.config.vars"><span class="typeNameLink">ConfigVar</span></a></li>
 <li type="circle">org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/EnvVariablesVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">EnvVariablesVar</span></a></li>
 <li type="circle">org.apache.juneau.rest.vars.<a href="org/apache/juneau/rest/vars/FileVar.html" title="class in org.apache.juneau.rest.vars"><span class="typeNameLink">FileVar</span></a></li>
-<li type="circle">org.apache.juneau.microservice.vars.<a href="org/apache/juneau/microservice/vars/ManifestFileVar.html" title="class in org.apache.juneau.microservice.vars"><span class="typeNameLink">ManifestFileVar</span></a></li>
+<li type="circle">org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/ManifestFileVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">ManifestFileVar</span></a></li>
 <li type="circle">org.apache.juneau.svl.<a href="org/apache/juneau/svl/MapVar.html" title="class in org.apache.juneau.svl"><span class="typeNameLink">MapVar</span></a>
 <ul>
 <li type="circle">org.apache.juneau.svl.vars.<a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars"><span class="typeNameLink">SystemPropertiesVar</span></a></li>
diff --git a/content/site/apidocs/package-list b/content/site/apidocs/package-list
index 1fe115f..6facabd 100644
--- a/content/site/apidocs/package-list
+++ b/content/site/apidocs/package-list
@@ -28,7 +28,6 @@ org.apache.juneau.microservice
 org.apache.juneau.microservice.console
 org.apache.juneau.microservice.resources
 org.apache.juneau.microservice.sample
-org.apache.juneau.microservice.vars
 org.apache.juneau.msgpack
 org.apache.juneau.parser
 org.apache.juneau.plaintext
diff --git a/content/site/apidocs/resources/juneau-doc.css b/content/site/apidocs/resources/juneau-doc.css
index 30572bd..260eec2 100644
--- a/content/site/apidocs/resources/juneau-doc.css
+++ b/content/site/apidocs/resources/juneau-doc.css
@@ -202,6 +202,11 @@ ul.toc div,
 	padding-left: 5px;
 }
 
+p.toc2 {
+    background-color: #dee3e950;
+    border-radius: 0px 15px 15px 0px;
+}
+
 /* Linear gradients */
 
 /* Light-colored background headers */
diff --git a/content/site/apidocs/serialized-form.html b/content/site/apidocs/serialized-form.html
index c2ffc4e..332d282 100644
--- a/content/site/apidocs/serialized-form.html
+++ b/content/site/apidocs/serialized-form.html
@@ -294,25 +294,15 @@
 <li class="blockList">
 <h2 title="Package">Package&nbsp;org.apache.juneau.microservice</h2>
 <ul class="blockList">
-<li class="blockList"><a name="org.apache.juneau.microservice.Resource">
+<li class="blockList"><a name="org.apache.juneau.microservice.RestServletJenaDefault">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.Resource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/RestServletJenaDefault.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.RestServletJenaDefault</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 </li>
-<li class="blockList"><a name="org.apache.juneau.microservice.ResourceGroup">
+<li class="blockList"><a name="org.apache.juneau.microservice.RestServletJenaGroup">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.ResourceGroup</a> extends <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a> implements Serializable</h3>
-</li>
-<li class="blockList"><a name="org.apache.juneau.microservice.ResourceJena">
-<!--   -->
-</a>
-<h3>Class <a href="org/apache/juneau/microservice/ResourceJena.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.ResourceJena</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
-</li>
-<li class="blockList"><a name="org.apache.juneau.microservice.ResourceJenaGroup">
-<!--   -->
-</a>
-<h3>Class <a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.ResourceJenaGroup</a> extends <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/RestServletJenaGroup.html" title="class in org.apache.juneau.microservice">org.apache.juneau.microservice.RestServletJenaGroup</a> extends <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a> implements Serializable</h3>
 </li>
 </ul>
 </li>
@@ -322,7 +312,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.ConfigResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.ConfigResource</a> extends <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.ConfigResource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -331,7 +321,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.DebugResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.DebugResource</a> extends <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.DebugResource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -340,7 +330,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.DirectoryResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.DirectoryResource</a> extends <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.DirectoryResource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -372,7 +362,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.LogsResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.LogsResource</a> extends <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.LogsResource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -400,7 +390,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.SampleRootResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/resources/SampleRootResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.SampleRootResource</a> extends <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/resources/SampleRootResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.SampleRootResource</a> extends <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -409,7 +399,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.ShutdownResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.ShutdownResource</a> extends <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources">org.apache.juneau.microservice.resources.ShutdownResource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -423,7 +413,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.sample.HelloWorldResource">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample">org.apache.juneau.microservice.sample.HelloWorldResource</a> extends <a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample">org.apache.juneau.microservice.sample.HelloWorldResource</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -432,7 +422,7 @@
 <li class="blockList"><a name="org.apache.juneau.microservice.sample.RootResources">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/microservice/sample/RootResources.html" title="class in org.apache.juneau.microservice.sample">org.apache.juneau.microservice.sample.RootResources</a> extends <a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/microservice/sample/RootResources.html" title="class in org.apache.juneau.microservice.sample">org.apache.juneau.microservice.sample.RootResources</a> extends <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">RestServletGroup</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
@@ -668,10 +658,10 @@
 <dd>1L</dd>
 </dl>
 </li>
-<li class="blockList"><a name="org.apache.juneau.rest.RestServletGroupDefault">
+<li class="blockList"><a name="org.apache.juneau.rest.RestServletGroup">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletGroupDefault</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
+<h3>Class <a href="org/apache/juneau/rest/RestServletGroup.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServletGroup</a> extends <a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a> implements Serializable</h3>
 <dl class="nameValue">
 <dt>serialVersionUID:</dt>
 <dd>1L</dd>
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/Microservice.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/Microservice.html
index fda35db..f3c55cb 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/Microservice.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/Microservice.html
@@ -39,9 +39,9 @@
 <span class="sourceLineNo">031</span>import org.apache.juneau.internal.*;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.juneau.microservice.console.*;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.juneau.microservice.resources.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.juneau.microservice.vars.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.juneau.svl.*;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.juneau.svl.vars.*;<a name="line.36"></a>
+<span class="sourceLineNo">034</span>import org.apache.juneau.svl.*;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.juneau.svl.vars.*;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.juneau.svl.vars.ManifestFileVar;<a name="line.36"></a>
 <span class="sourceLineNo">037</span>import org.apache.juneau.utils.*;<a name="line.37"></a>
 <span class="sourceLineNo">038</span><a name="line.38"></a>
 <span class="sourceLineNo">039</span>/**<a name="line.39"></a>
@@ -158,773 +158,802 @@
 <span class="sourceLineNo">150</span>      Console c = System.console();<a name="line.150"></a>
 <span class="sourceLineNo">151</span>      consoleReader = new Scanner(c == null ? new InputStreamReader(System.in) : c.reader());<a name="line.151"></a>
 <span class="sourceLineNo">152</span>      consoleWriter = c == null ? new PrintWriter(System.out, true) : c.writer();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.args = new Args(args);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   <a name="line.155"></a>
-<span class="sourceLineNo">156</span>   private static void setInstance(Microservice m) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      synchronized(Microservice.class) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>         INSTANCE = m;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">153</span>      setArgs(new Args(args));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      setManifest(this.getClass());<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   <a name="line.156"></a>
+<span class="sourceLineNo">157</span>   private static void setInstance(Microservice m) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      synchronized(Microservice.class) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>         INSTANCE = m;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   }<a name="line.161"></a>
 <span class="sourceLineNo">162</span><a name="line.162"></a>
-<span class="sourceLineNo">163</span>   /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    * Specifies the path of the config file for this microservice.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    * <a name="line.165"></a>
-<span class="sourceLineNo">166</span>    * &lt;p&gt;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    * If you do not specify the config file location, we attempt to resolve it through the following methods:<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    * &lt;ol&gt;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    *    &lt;li&gt;The first argument in the command line arguments passed in through the constructor.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    *    &lt;li&gt;The value of the &lt;code&gt;Main-Config&lt;/code&gt; entry in the manifest file.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    *    &lt;li&gt;A config file in the same location and with the same name as the executable jar file.<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    *       (e.g. &lt;js&gt;"java -jar myjar.jar"&lt;/js&gt; will look for &lt;js&gt;"myjar.cfg"&lt;/js&gt;).<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * &lt;/ol&gt;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    * <a name="line.174"></a>
-<span class="sourceLineNo">175</span>    * &lt;p&gt;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    * If this path does not exist, a {@link FileNotFoundException} will be thrown from the {@link #start()} command.<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * <a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * @param cfPath The absolute or relative path of the config file.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    * @param create Create the file if it doesn't exist.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    * @return This object (for method chaining).<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    * @throws IOException If config file does not exist at the specified location or could not be read or created.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   public Microservice setConfig(String cfPath, boolean create) throws IOException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      File f = new File(cfPath);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      if (! f.exists()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>         if (! create)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>            throw new FileNotFoundException("Could not locate config at '"+f.getAbsolutePath()+"'.");<a name="line.187"></a>
-<span class="sourceLineNo">188</span>         if (! f.createNewFile())<a name="line.188"></a>
-<span class="sourceLineNo">189</span>            throw new FileNotFoundException("Could not create config at '"+f.getAbsolutePath()+"'.");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      this.cfPath = cfPath;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      return this;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   }<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>   /**<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    * Specifies the config for this microservice.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    * <a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * &lt;p&gt;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * Note that if you use this method instead of {@link #setConfig(String,boolean)}, the config file will not use<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * the variable resolver constructed from {@link #createVarResolver()}.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    * <a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * @param cf The config file for this application, or &lt;jk&gt;null&lt;/jk&gt; if no config file is needed.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   public void setConfig(Config cf) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      this.cf = cf;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>   /**<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    * Specifies the manifest file of the jar file this microservice is contained within.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    * <a name="line.210"></a>
-<span class="sourceLineNo">211</span>    * &lt;p&gt;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    * If you do not specify the manifest file, we attempt to resolve it through the following methods:<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    * &lt;ol&gt;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    *    &lt;li&gt;Looking on the file system for a file at &lt;js&gt;"META-INF/MANIFEST.MF"&lt;/js&gt;.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    *       This is primarily to allow for running microservices from within eclipse workspaces where the manifest file<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    *       is located in the project root.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    *    &lt;li&gt;Using the class loader for this class to find the file at the URL &lt;js&gt;"META-INF/MANIFEST.MF"&lt;/js&gt;.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    * &lt;/ol&gt;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    * <a name="line.219"></a>
-<span class="sourceLineNo">220</span>    * @param mf The manifest file of this microservice.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   public void setManifest(Manifest mf) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      this.mf = new ManifestFile(mf);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   }<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>   /**<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    * Convenience method for specifying the manifest contents directly.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    * <a name="line.228"></a>
-<span class="sourceLineNo">229</span>    * @param contents The lines in the manifest file.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    * @return This object (for method chaining).<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    * @throws IOException<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   public Microservice setManifestContents(String...contents) throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      String s = StringUtils.join(contents, "\n") + "\n";<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      this.mf = new ManifestFile(new Manifest(new ByteArrayInputStream(s.getBytes("UTF-8"))));<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      return this;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>   }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>   /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * Same as {@link #setManifest(Manifest)} except specified through a {@link File} object.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    * <a name="line.241"></a>
-<span class="sourceLineNo">242</span>    * @param f The manifest file of this microservice.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   public void setManifest(File f) throws IOException {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      this.mf = new ManifestFile(f);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>   /**<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    * Same as {@link #setManifest(Manifest)} except finds and loads the manifest file of the jar file that the  <a name="line.250"></a>
-<span class="sourceLineNo">251</span>    * specified class is contained within.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    * <a name="line.252"></a>
-<span class="sourceLineNo">253</span>    * @param c The class whose jar file contains the manifest to use for this microservice.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   public void setManifest(Class&lt;?&gt; c) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.mf = new ManifestFile(c);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>   /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    * Creates the {@link VarResolver} used to resolve variables in the config file returned by {@link #getConfig()}.<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    * <a name="line.262"></a>
-<span class="sourceLineNo">263</span>    * &lt;p&gt;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * The default implementation resolves the following variables:<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    * &lt;ul&gt;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    *    &lt;li&gt;&lt;code&gt;$S{key}&lt;/code&gt;, &lt;code&gt;$S{key,default}&lt;/code&gt; - System properties.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    *    &lt;li&gt;&lt;code&gt;$E{key}&lt;/code&gt;, &lt;code&gt;$E{key,default}&lt;/code&gt; - Environment variables.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    *    &lt;li&gt;&lt;code&gt;$C{key}&lt;/code&gt;, &lt;code&gt;$C{key,default}&lt;/code&gt; - Config file entries.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    *    &lt;li&gt;&lt;code&gt;$MF{key}&lt;/code&gt;, &lt;code&gt;$MF{key,default}&lt;/code&gt; - Manifest file entries.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    *    &lt;li&gt;&lt;code&gt;$ARG{key}&lt;/code&gt;, &lt;code&gt;$ARG{key,default}&lt;/code&gt; - Command-line arguments.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    *    &lt;li&gt;&lt;code&gt;$IF{boolArg,thenValue}&lt;/code&gt;, &lt;code&gt;$IF{boolArg,thenValue,elseValue}&lt;/code&gt; - If-block logic.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    *    &lt;li&gt;&lt;code&gt;$SW{stringArg,pattern,thenVal...}&lt;/code&gt;, <a name="line.272"></a>
-<span class="sourceLineNo">273</span>    *       &lt;code&gt;$SW{stringArg,pattern,thenVal,elseVal...}&lt;/code&gt;  - Switch-block logic.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    * &lt;/ul&gt;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    * <a name="line.275"></a>
-<span class="sourceLineNo">276</span>    * &lt;p&gt;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    * Subclasses can override this method to provide their own variables.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    * <a name="line.278"></a>
-<span class="sourceLineNo">279</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    * &lt;p class='bcode'&gt;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    *    &lt;jd&gt;/**<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    *     * Augment default var resolver with a custom $B{...} variable that simply wraps strings inside square brackets.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    *     * /&lt;/jd&gt;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    *    &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// Microservice&lt;/jc&gt;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    *    &lt;jk&gt;protected&lt;/jk&gt; StringVarResolver createVarResolver() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    *       &lt;jk&gt;return super&lt;/jk&gt;.createVarResolver()<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    *          .addVar(&lt;js&gt;"B"&lt;/js&gt;,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    *             &lt;jk&gt;new&lt;/jk&gt; StringVarWithDefault() {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    *                &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// StringVar&lt;/jc&gt;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    *                &lt;jk&gt;public&lt;/jk&gt; String resolve(String varVal) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    *                   &lt;jk&gt;return&lt;/jk&gt; &lt;js&gt;'['&lt;/js&gt; + varVal + &lt;js&gt;']'&lt;/js&gt;;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    *                }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    *             }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    *          );<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    *    }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    * &lt;/p&gt;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * &lt;p class='bcode'&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    *    &lt;cc&gt;# Example config file&lt;/cc&gt;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    *    &lt;ck&gt;myEntry&lt;/ck&gt; = $B{foo}<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    * &lt;/p&gt;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    * &lt;p class='bcode'&gt;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    *    &lt;jc&gt;// Example java code&lt;/jc&gt;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    *    String myentry = getConfig().getString(&lt;js&gt;"MySection/myEntry"&lt;/js&gt;); &lt;jc&gt;// == "[foo]"&lt;/js&gt;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    * &lt;/p&gt;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    * <a name="line.306"></a>
-<span class="sourceLineNo">307</span>    * @return A new {@link VarResolver}.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   protected VarResolverBuilder createVarResolver() {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      VarResolverBuilder b = new VarResolverBuilder()<a name="line.310"></a>
-<span class="sourceLineNo">311</span>         .defaultVars()<a name="line.311"></a>
-<span class="sourceLineNo">312</span>         .vars(ConfigVar.class, ManifestFileVar.class, ArgsVar.class, SwitchVar.class, IfVar.class)<a name="line.312"></a>
-<span class="sourceLineNo">313</span>         .contextObject(ManifestFileVar.SESSION_manifest, mf)<a name="line.313"></a>
-<span class="sourceLineNo">314</span>         .contextObject(ArgsVar.SESSION_args, args);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      if (cf != null)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>         b.contextObject(ConfigVar.SESSION_config, cf);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return b;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>   /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    * Returns the command-line arguments passed into the application.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    * <a name="line.322"></a>
-<span class="sourceLineNo">323</span>    * &lt;p&gt;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    * This method can be called from the class constructor.<a name="line.324"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>   /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    * Specifies the path of the config file for this microservice.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    * <a name="line.166"></a>
+<span class="sourceLineNo">167</span>    * &lt;p&gt;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    * If you do not specify the config file location, we attempt to resolve it through the following methods:<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    * &lt;ol&gt;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    *    &lt;li&gt;The first argument in the command line arguments passed in through the constructor.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    *    &lt;li&gt;The value of the &lt;code&gt;Main-Config&lt;/code&gt; entry in the manifest file.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    *    &lt;li&gt;A config file in the same location and with the same name as the executable jar file.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    *       (e.g. &lt;js&gt;"java -jar myjar.jar"&lt;/js&gt; will look for &lt;js&gt;"myjar.cfg"&lt;/js&gt;).<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    * &lt;/ol&gt;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    * <a name="line.175"></a>
+<span class="sourceLineNo">176</span>    * &lt;p&gt;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    * If this path does not exist, a {@link FileNotFoundException} will be thrown from the {@link #start()} command.<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    * <a name="line.178"></a>
+<span class="sourceLineNo">179</span>    * @param cfPath The absolute or relative path of the config file.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    * @param create Create the file if it doesn't exist.<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    * @return This object (for method chaining).<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    * @throws IOException If config file does not exist at the specified location or could not be read or created.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    */<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   public Microservice setConfig(String cfPath, boolean create) throws IOException {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      File f = new File(cfPath);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (! f.exists()) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>         if (! create)<a name="line.187"></a>
+<span class="sourceLineNo">188</span>            throw new FileNotFoundException("Could not locate config at '"+f.getAbsolutePath()+"'.");<a name="line.188"></a>
+<span class="sourceLineNo">189</span>         if (! f.createNewFile())<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            throw new FileNotFoundException("Could not create config at '"+f.getAbsolutePath()+"'.");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      this.cfPath = cfPath;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      return this;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>   /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    * Specifies the config for this microservice.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    * <a name="line.198"></a>
+<span class="sourceLineNo">199</span>    * &lt;p&gt;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    * Note that if you use this method instead of {@link #setConfig(String,boolean)}, the config file will not use<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * the variable resolver constructed from {@link #createVarResolver()}.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * <a name="line.202"></a>
+<span class="sourceLineNo">203</span>    * @param cf The config file for this application, or &lt;jk&gt;null&lt;/jk&gt; if no config file is needed.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   public void setConfig(Config cf) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      this.cf = cf;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>   /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    * Specifies the manifest file of the jar file this microservice is contained within.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * <a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * &lt;p&gt;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    * If you do not specify the manifest file, we attempt to resolve it through the following methods:<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    * &lt;ol&gt;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    *    &lt;li&gt;Looking on the file system for a file at &lt;js&gt;"META-INF/MANIFEST.MF"&lt;/js&gt;.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    *       This is primarily to allow for running microservices from within eclipse workspaces where the manifest file<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    *       is located in the project root.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    *    &lt;li&gt;Using the class loader for this class to find the file at the URL &lt;js&gt;"META-INF/MANIFEST.MF"&lt;/js&gt;.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    * &lt;/ol&gt;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    * <a name="line.220"></a>
+<span class="sourceLineNo">221</span>    * @param mf The manifest file of this microservice.<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    * @return This object (for method chaining).<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   public Microservice setManifest(ManifestFile mf) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      this.mf = mf;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      ManifestFileVar.init(this.mf);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      return this;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>   /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    * Shortcut for calling &lt;code&gt;setManifest(&lt;jk&gt;new&lt;/jk&gt; ManifestFile(mf))&lt;/code&gt;.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    * <a name="line.232"></a>
+<span class="sourceLineNo">233</span>    * @param mf The manifest file of this microservice.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    * @return This object (for method chaining).<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   public Microservice setManifest(Manifest mf) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      return setManifest(new ManifestFile(mf));<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>   /**<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    * Convenience method for specifying the manifest contents directly.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    * <a name="line.242"></a>
+<span class="sourceLineNo">243</span>    * @param contents The lines in the manifest file.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    * @return This object (for method chaining).<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    * @throws IOException<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   public Microservice setManifestContents(String...contents) throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      String s = StringUtils.join(contents, "\n") + "\n";<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return setManifest(new ManifestFile(new Manifest(new ByteArrayInputStream(s.getBytes("UTF-8")))));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>   /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    * Same as {@link #setManifest(Manifest)} except specified through a {@link File} object.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    * <a name="line.254"></a>
+<span class="sourceLineNo">255</span>    * @param f The manifest file of this microservice.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    * @return This object (for method chaining).<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   public Microservice setManifest(File f) throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return setManifest(new ManifestFile(f));<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>   /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * Same as {@link #setManifest(Manifest)} except finds and loads the manifest file of the jar file that the  <a name="line.264"></a>
+<span class="sourceLineNo">265</span>    * specified class is contained within.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    * <a name="line.266"></a>
+<span class="sourceLineNo">267</span>    * @param c The class whose jar file contains the manifest to use for this microservice.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    * @return This object (for method chaining).<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   public Microservice setManifest(Class&lt;?&gt; c) throws IOException {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      return setManifest(new ManifestFile(c));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>   /**<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    * Creates the {@link VarResolver} used to resolve variables in the config file returned by {@link #getConfig()}.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    * <a name="line.277"></a>
+<span class="sourceLineNo">278</span>    * &lt;p&gt;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    * The default implementation resolves the following variables:<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    * &lt;ul class='doctree'&gt;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.SystemPropertiesVar} - &lt;code&gt;$S{key[,default]}&lt;/code&gt;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.EnvVariablesVar} - &lt;code&gt;$E{key[,default]}&lt;/code&gt;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.ArgsVar} - &lt;code&gt;$A{key[,default]}&lt;/code&gt;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.ManifestFileVar} - &lt;code&gt;$MF{key[,default]}&lt;/code&gt;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.IfVar} - &lt;code&gt;$IF{arg,then[,else]}&lt;/code&gt;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.SwitchVar} - &lt;code&gt;$SW{arg,pattern1:then1[,pattern2:then2...]}&lt;/code&gt;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.CoalesceVar} - &lt;code&gt;$CO{arg1[,arg2...]}&lt;/code&gt;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.PatternMatchVar} - &lt;code&gt;$PM{arg,pattern}&lt;/code&gt; <a name="line.288"></a>
+<span class="sourceLineNo">289</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.NotEmptyVar} - &lt;code&gt;$NE{arg}&lt;/code&gt;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.UpperCaseVar} - &lt;code&gt;$UC{arg}&lt;/code&gt;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.svl.vars.LowerCaseVar} - &lt;code&gt;$LC{arg}&lt;/code&gt;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    *    &lt;li class='jc'&gt;{@link org.apache.juneau.config.vars.ConfigVar} - &lt;code&gt;$C{key[,default]}&lt;/code&gt;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    * &lt;/ul&gt;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    * <a name="line.294"></a>
+<span class="sourceLineNo">295</span>    * &lt;p&gt;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    * Subclasses can override this method to provide their own variables.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    * <a name="line.297"></a>
+<span class="sourceLineNo">298</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    * &lt;p class='bcode'&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    *    &lt;jd&gt;/**<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    *     * Augment default var resolver with a custom $B{...} variable that simply wraps strings inside square brackets.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    *     * /&lt;/jd&gt;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    *    &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// Microservice&lt;/jc&gt;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    *    &lt;jk&gt;protected&lt;/jk&gt; StringVarResolver createVarResolver() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    *       &lt;jk&gt;return super&lt;/jk&gt;.createVarResolver()<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    *          .addVar(&lt;js&gt;"B"&lt;/js&gt;,<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    *             &lt;jk&gt;new&lt;/jk&gt; StringVarWithDefault() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    *                &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// StringVar&lt;/jc&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    *                &lt;jk&gt;public&lt;/jk&gt; String resolve(String varVal) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    *                   &lt;jk&gt;return&lt;/jk&gt; &lt;js&gt;'['&lt;/js&gt; + varVal + &lt;js&gt;']'&lt;/js&gt;;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    *                }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    *             }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    *          );<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    *    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    * &lt;/p&gt;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    * &lt;p class='bcode'&gt;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    *    &lt;cc&gt;# Example config file&lt;/cc&gt;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    *    &lt;ck&gt;myEntry&lt;/ck&gt; = $B{foo}<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    * &lt;/p&gt;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    * &lt;p class='bcode'&gt;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    *    &lt;jc&gt;// Example java code&lt;/jc&gt;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    *    String myentry = getConfig().getString(&lt;js&gt;"MySection/myEntry"&lt;/js&gt;); &lt;jc&gt;// == "[foo]"&lt;/js&gt;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    * &lt;/p&gt;<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    * <a name="line.325"></a>
-<span class="sourceLineNo">326</span>    * &lt;p&gt;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    * See {@link Args} for details on using this method.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    * <a name="line.328"></a>
-<span class="sourceLineNo">329</span>    * @return The command-line arguments passed into the application.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    */<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   public Args getArgs() {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      return args;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>   /**<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    * Returns the external INI-style configuration file that can be used to configure your microservice.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    * <a name="line.337"></a>
-<span class="sourceLineNo">338</span>    * &lt;p&gt;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    * The config location is determined in the following order:<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    * &lt;ol class='spaced-list'&gt;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    *    &lt;li&gt;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    *       The first argument passed to the microservice jar.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    *    &lt;li&gt;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    *       The &lt;code&gt;Main-Config&lt;/code&gt; entry in the microservice jar manifest file.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    *    &lt;li&gt;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    *       The name of the microservice jar with a &lt;js&gt;".cfg"&lt;/js&gt; suffix (e.g. <a name="line.346"></a>
-<span class="sourceLineNo">347</span>    *       &lt;js&gt;"mymicroservice.jar"&lt;/js&gt;-&amp;gt;&lt;js&gt;"mymicroservice.cfg"&lt;/js&gt;).<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    * &lt;/ol&gt;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    * <a name="line.349"></a>
-<span class="sourceLineNo">350</span>    * &lt;p&gt;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    * If all methods for locating the config fail, then this method returns &lt;jk&gt;null&lt;/jk&gt;.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * <a name="line.352"></a>
-<span class="sourceLineNo">353</span>    * &lt;p&gt;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    * Subclasses can set their own config file by calling the {@link #setConfig(Config)} method.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    * <a name="line.355"></a>
-<span class="sourceLineNo">356</span>    * &lt;p&gt;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    * String variables defined by {@link #createVarResolver()} are automatically resolved when using this method.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    * <a name="line.358"></a>
-<span class="sourceLineNo">359</span>    * &lt;p&gt;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    * This method can be called from the class constructor.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    * <a name="line.361"></a>
-<span class="sourceLineNo">362</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    * &lt;p class='bcode'&gt;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    *    &lt;cc&gt;# My section&lt;/cc&gt;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    * <a name="line.368"></a>
-<span class="sourceLineNo">369</span>    *    &lt;cc&gt;# An integer&lt;/cc&gt;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    *    &lt;ck&gt;anInt&lt;/ck&gt; = 1<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    * <a name="line.371"></a>
-<span class="sourceLineNo">372</span>    *    &lt;cc&gt;# A boolean&lt;/cc&gt;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    *    &lt;ck&gt;aBoolean&lt;/ck&gt; = true<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    * <a name="line.374"></a>
-<span class="sourceLineNo">375</span>    *    &lt;cc&gt;# An int array&lt;/cc&gt;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    *    &lt;ck&gt;anIntArray&lt;/ck&gt; = 1,2,3<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * <a name="line.377"></a>
-<span class="sourceLineNo">378</span>    *    &lt;cc&gt;# A POJO that can be converted from a String&lt;/cc&gt;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    *    &lt;ck&gt;aURL&lt;/ck&gt; = http://foo<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    * <a name="line.380"></a>
-<span class="sourceLineNo">381</span>    *    &lt;cc&gt;# A POJO that can be converted from JSON&lt;/cc&gt;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    *    &lt;ck&gt;aBean&lt;/ck&gt; = {foo:'bar',baz:123}<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    * <a name="line.383"></a>
-<span class="sourceLineNo">384</span>    *    &lt;cc&gt;# A system property&lt;/cc&gt;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    *    &lt;ck&gt;locale&lt;/ck&gt; = $S{java.locale, en_US}<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    * <a name="line.386"></a>
-<span class="sourceLineNo">387</span>    *    &lt;cc&gt;# An environment variable&lt;/cc&gt;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    *    &lt;ck&gt;path&lt;/ck&gt; = $E{PATH, unknown}<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    * <a name="line.389"></a>
-<span class="sourceLineNo">390</span>    *    &lt;cc&gt;# A manifest file entry&lt;/cc&gt;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    *    &lt;ck&gt;mainClass&lt;/ck&gt; = $MF{Main-Class}<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    * <a name="line.392"></a>
-<span class="sourceLineNo">393</span>    *    &lt;cc&gt;# Another value in this config file&lt;/cc&gt;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    *    &lt;ck&gt;sameAsAnInt&lt;/ck&gt; = $C{MySection/anInt}<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    * <a name="line.395"></a>
-<span class="sourceLineNo">396</span>    *    &lt;cc&gt;# A command-line argument in the form "myarg=foo"&lt;/cc&gt;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    *    &lt;ck&gt;myArg&lt;/ck&gt; = $ARG{myarg}<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    * <a name="line.398"></a>
-<span class="sourceLineNo">399</span>    *    &lt;cc&gt;# The first command-line argument&lt;/cc&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    *    &lt;ck&gt;firstArg&lt;/ck&gt; = $ARG{0}<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    * <a name="line.401"></a>
-<span class="sourceLineNo">402</span>    *    &lt;cc&gt;# Look for system property, or env var if that doesn't exist, or command-line arg if that doesn't exist.&lt;/cc&gt;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    *    &lt;ck&gt;nested&lt;/ck&gt; = $S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}}<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    * <a name="line.404"></a>
-<span class="sourceLineNo">405</span>    *    &lt;cc&gt;# A POJO with embedded variables&lt;/cc&gt;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    *    &lt;ck&gt;aBean2&lt;/ck&gt; = {foo:'$ARG{0}',baz:$C{MySection/anInt}}<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    * &lt;/p&gt;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    * <a name="line.408"></a>
-<span class="sourceLineNo">409</span>    * &lt;p class='bcode'&gt;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    *    &lt;jc&gt;// Java code for accessing config entries above.&lt;/jc&gt;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    *    Config cf = getConfig();<a name="line.411"></a>
+<span class="sourceLineNo">326</span>    * @return A new {@link VarResolver}.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   protected VarResolverBuilder createVarResolver() {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      VarResolverBuilder b = new VarResolverBuilder()<a name="line.329"></a>
+<span class="sourceLineNo">330</span>         .defaultVars()<a name="line.330"></a>
+<span class="sourceLineNo">331</span>         .vars(ConfigVar.class, SwitchVar.class, IfVar.class);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      if (cf != null)<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         b.contextObject(ConfigVar.SESSION_config, cf);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      return b;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>   /**<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    * Returns the command-line arguments passed into the application.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    * <a name="line.339"></a>
+<span class="sourceLineNo">340</span>    * &lt;p&gt;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    * This method can be called from the class constructor.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    * <a name="line.342"></a>
+<span class="sourceLineNo">343</span>    * &lt;p&gt;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    * See {@link Args} for details on using this method.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    * <a name="line.345"></a>
+<span class="sourceLineNo">346</span>    * @return The command-line arguments passed into the application.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   public Args getArgs() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return args;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>   /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    * Sets the arguments for this microservice.<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    * <a name="line.354"></a>
+<span class="sourceLineNo">355</span>    * @param args The arguments for this microservice.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    * @return This object (for method chaining).<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   public Microservice setArgs(Args args) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      this.args = args;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      ArgsVar.init(args);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      return this;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>   /**<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    * Returns the external INI-style configuration file that can be used to configure your microservice.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    * <a name="line.366"></a>
+<span class="sourceLineNo">367</span>    * &lt;p&gt;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    * The config location is determined in the following order:<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    * &lt;ol class='spaced-list'&gt;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    *    &lt;li&gt;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    *       The first argument passed to the microservice jar.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    *    &lt;li&gt;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    *       The &lt;code&gt;Main-Config&lt;/code&gt; entry in the microservice jar manifest file.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    *    &lt;li&gt;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    *       The name of the microservice jar with a &lt;js&gt;".cfg"&lt;/js&gt; suffix (e.g. <a name="line.375"></a>
+<span class="sourceLineNo">376</span>    *       &lt;js&gt;"mymicroservice.jar"&lt;/js&gt;-&amp;gt;&lt;js&gt;"mymicroservice.cfg"&lt;/js&gt;).<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    * &lt;/ol&gt;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    * <a name="line.378"></a>
+<span class="sourceLineNo">379</span>    * &lt;p&gt;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    * If all methods for locating the config fail, then this method returns &lt;jk&gt;null&lt;/jk&gt;.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    * <a name="line.381"></a>
+<span class="sourceLineNo">382</span>    * &lt;p&gt;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    * Subclasses can set their own config file by calling the {@link #setConfig(Config)} method.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    * <a name="line.384"></a>
+<span class="sourceLineNo">385</span>    * &lt;p&gt;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    * String variables defined by {@link #createVarResolver()} are automatically resolved when using this method.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    * <a name="line.387"></a>
+<span class="sourceLineNo">388</span>    * &lt;p&gt;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    * This method can be called from the class constructor.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    * <a name="line.390"></a>
+<span class="sourceLineNo">391</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    * &lt;p class='bcode'&gt;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    *    &lt;cc&gt;# My section&lt;/cc&gt;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    * <a name="line.397"></a>
+<span class="sourceLineNo">398</span>    *    &lt;cc&gt;# An integer&lt;/cc&gt;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    *    &lt;ck&gt;anInt&lt;/ck&gt; = 1<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    * <a name="line.400"></a>
+<span class="sourceLineNo">401</span>    *    &lt;cc&gt;# A boolean&lt;/cc&gt;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    *    &lt;ck&gt;aBoolean&lt;/ck&gt; = true<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    * <a name="line.403"></a>
+<span class="sourceLineNo">404</span>    *    &lt;cc&gt;# An int array&lt;/cc&gt;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    *    &lt;ck&gt;anIntArray&lt;/ck&gt; = 1,2,3<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    * <a name="line.406"></a>
+<span class="sourceLineNo">407</span>    *    &lt;cc&gt;# A POJO that can be converted from a String&lt;/cc&gt;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    *    &lt;ck&gt;aURL&lt;/ck&gt; = http://foo<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    * <a name="line.409"></a>
+<span class="sourceLineNo">410</span>    *    &lt;cc&gt;# A POJO that can be converted from JSON&lt;/cc&gt;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    *    &lt;ck&gt;aBean&lt;/ck&gt; = {foo:'bar',baz:123}<a name="line.411"></a>
 <span class="sourceLineNo">412</span>    * <a name="line.412"></a>
-<span class="sourceLineNo">413</span>    *    &lt;jk&gt;int&lt;/jk&gt; anInt = cf.getInt(&lt;js&gt;"MySection/anInt"&lt;/js&gt;);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    *    &lt;jk&gt;boolean&lt;/jk&gt; aBoolean = cf.getBoolean(&lt;js&gt;"MySection/aBoolean"&lt;/js&gt;);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    *    &lt;jk&gt;int&lt;/jk&gt;[] anIntArray = cf.getObject(&lt;jk&gt;int&lt;/jk&gt;[].&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/anIntArray"&lt;/js&gt;);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    *    URL aURL = cf.getObject(URL.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/aURL"&lt;/js&gt;);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    *    MyBean aBean = cf.getObject(MyBean.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/aBean"&lt;/js&gt;);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    *    Locale locale = cf.getObject(Locale.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/locale"&lt;/js&gt;);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    *    String path = cf.getString(&lt;js&gt;"MySection/path"&lt;/js&gt;);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    *    String mainClass = cf.getString(&lt;js&gt;"MySection/mainClass"&lt;/js&gt;);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    *    &lt;jk&gt;int&lt;/jk&gt; sameAsAnInt = cf.getInt(&lt;js&gt;"MySection/sameAsAnInt"&lt;/js&gt;);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    *    String myArg = cf.getString(&lt;js&gt;"MySection/myArg"&lt;/js&gt;);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    *    String firstArg = cf.getString(&lt;js&gt;"MySection/firstArg"&lt;/js&gt;);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    * &lt;/p&gt;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    * <a name="line.425"></a>
-<span class="sourceLineNo">426</span>    * @return The config file for this application, or &lt;jk&gt;null&lt;/jk&gt; if no config file is configured.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    */<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   public Config getConfig() {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return cf;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>   /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    * Returns the main jar manifest file contents as a simple {@link ObjectMap}.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    * <a name="line.434"></a>
-<span class="sourceLineNo">435</span>    * &lt;p&gt;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    * This map consists of the contents of {@link Manifest#getMainAttributes()} with the keys and entries converted to <a name="line.436"></a>
-<span class="sourceLineNo">437</span>    * simple strings.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    * &lt;p&gt;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    * This method can be called from the class constructor.<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    * <a name="line.440"></a>
-<span class="sourceLineNo">441</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    * &lt;p class='bcode'&gt;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    *    &lt;jc&gt;// Get Main-Class from manifest file.&lt;/jc&gt;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    *    String mainClass = Microservice.&lt;jsm&gt;getManifest&lt;/jsm&gt;().getString(&lt;js&gt;"Main-Class"&lt;/js&gt;, &lt;js&gt;"unknown"&lt;/js&gt;);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    * <a name="line.445"></a>
-<span class="sourceLineNo">446</span>    *    &lt;jc&gt;// Get Rest-Resources from manifest file.&lt;/jc&gt;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    *    String[] restResources = Microservice.&lt;jsm&gt;getManifest&lt;/jsm&gt;().getStringArray(&lt;js&gt;"Rest-Resources"&lt;/js&gt;);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    * &lt;/p&gt;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    * <a name="line.449"></a>
-<span class="sourceLineNo">450</span>    * @return The manifest file from the main jar, or &lt;jk&gt;null&lt;/jk&gt; if the manifest file could not be retrieved.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   public ManifestFile getManifest() {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      return mf;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   }<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>   /**<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    * Returns the variable resolver for resolving variables in strings and files.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    * &lt;p&gt;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    * See the {@link #createVarResolver()} method for the list of available resolution variables.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    * <a name="line.460"></a>
-<span class="sourceLineNo">461</span>    * @return The VarResolver used by this Microservice, or &lt;jk&gt;null&lt;/jk&gt; if it was never created.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   public VarResolver getVarResolver() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      return vr;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>   /**<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    * Returns the logger for this microservice.<a name="line.468"></a>
+<span class="sourceLineNo">413</span>    *    &lt;cc&gt;# A system property&lt;/cc&gt;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    *    &lt;ck&gt;locale&lt;/ck&gt; = $S{java.locale, en_US}<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    * <a name="line.415"></a>
+<span class="sourceLineNo">416</span>    *    &lt;cc&gt;# An environment variable&lt;/cc&gt;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    *    &lt;ck&gt;path&lt;/ck&gt; = $E{PATH, unknown}<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    * <a name="line.418"></a>
+<span class="sourceLineNo">419</span>    *    &lt;cc&gt;# A manifest file entry&lt;/cc&gt;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    *    &lt;ck&gt;mainClass&lt;/ck&gt; = $MF{Main-Class}<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    * <a name="line.421"></a>
+<span class="sourceLineNo">422</span>    *    &lt;cc&gt;# Another value in this config file&lt;/cc&gt;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    *    &lt;ck&gt;sameAsAnInt&lt;/ck&gt; = $C{MySection/anInt}<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    * <a name="line.424"></a>
+<span class="sourceLineNo">425</span>    *    &lt;cc&gt;# A command-line argument in the form "myarg=foo"&lt;/cc&gt;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    *    &lt;ck&gt;myArg&lt;/ck&gt; = $A{myarg}<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    * <a name="line.427"></a>
+<span class="sourceLineNo">428</span>    *    &lt;cc&gt;# The first command-line argument&lt;/cc&gt;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    *    &lt;ck&gt;firstArg&lt;/ck&gt; = $A{0}<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    * <a name="line.430"></a>
+<span class="sourceLineNo">431</span>    *    &lt;cc&gt;# Look for system property, or env var if that doesn't exist, or command-line arg if that doesn't exist.&lt;/cc&gt;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    *    &lt;ck&gt;nested&lt;/ck&gt; = $S{mySystemProperty,$E{MY_ENV_VAR,$A{0}}}<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    * <a name="line.433"></a>
+<span class="sourceLineNo">434</span>    *    &lt;cc&gt;# A POJO with embedded variables&lt;/cc&gt;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    *    &lt;ck&gt;aBean2&lt;/ck&gt; = {foo:'$A{0}',baz:$C{MySection/anInt}}<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    * &lt;/p&gt;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    * <a name="line.437"></a>
+<span class="sourceLineNo">438</span>    * &lt;p class='bcode'&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    *    &lt;jc&gt;// Java code for accessing config entries above.&lt;/jc&gt;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    *    Config cf = getConfig();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    * <a name="line.441"></a>
+<span class="sourceLineNo">442</span>    *    &lt;jk&gt;int&lt;/jk&gt; anInt = cf.getInt(&lt;js&gt;"MySection/anInt"&lt;/js&gt;);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    *    &lt;jk&gt;boolean&lt;/jk&gt; aBoolean = cf.getBoolean(&lt;js&gt;"MySection/aBoolean"&lt;/js&gt;);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    *    &lt;jk&gt;int&lt;/jk&gt;[] anIntArray = cf.getObject(&lt;jk&gt;int&lt;/jk&gt;[].&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/anIntArray"&lt;/js&gt;);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    *    URL aURL = cf.getObject(URL.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/aURL"&lt;/js&gt;);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    *    MyBean aBean = cf.getObject(MyBean.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/aBean"&lt;/js&gt;);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    *    Locale locale = cf.getObject(Locale.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/locale"&lt;/js&gt;);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    *    String path = cf.getString(&lt;js&gt;"MySection/path"&lt;/js&gt;);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    *    String mainClass = cf.getString(&lt;js&gt;"MySection/mainClass"&lt;/js&gt;);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    *    &lt;jk&gt;int&lt;/jk&gt; sameAsAnInt = cf.getInt(&lt;js&gt;"MySection/sameAsAnInt"&lt;/js&gt;);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    *    String myArg = cf.getString(&lt;js&gt;"MySection/myArg"&lt;/js&gt;);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    *    String firstArg = cf.getString(&lt;js&gt;"MySection/firstArg"&lt;/js&gt;);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    * &lt;/p&gt;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    * <a name="line.454"></a>
+<span class="sourceLineNo">455</span>    * @return The config file for this application, or &lt;jk&gt;null&lt;/jk&gt; if no config file is configured.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   public Config getConfig() {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      return cf;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>   /**<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    * Returns the main jar manifest file contents as a simple {@link ObjectMap}.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    * <a name="line.463"></a>
+<span class="sourceLineNo">464</span>    * &lt;p&gt;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    * This map consists of the contents of {@link Manifest#getMainAttributes()} with the keys and entries converted to <a name="line.465"></a>
+<span class="sourceLineNo">466</span>    * simple strings.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    * &lt;p&gt;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    * This method can be called from the class constructor.<a name="line.468"></a>
 <span class="sourceLineNo">469</span>    * <a name="line.469"></a>
-<span class="sourceLineNo">470</span>    * @return The logger for this microservice.<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   public Logger getLogger() {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return logger;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   <a name="line.475"></a>
-<span class="sourceLineNo">476</span>   //--------------------------------------------------------------------------------<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   // Abstract lifecycle methods.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   //--------------------------------------------------------------------------------<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>   /**<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    * Start this application.<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    * <a name="line.482"></a>
-<span class="sourceLineNo">483</span>    * &lt;p&gt;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    * Default implementation simply calls {@link #onStart()}.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    * <a name="line.485"></a>
-<span class="sourceLineNo">486</span>    * &lt;p&gt;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    * Overridden methods MUST call this method FIRST so that the {@link #onStart()} method is called.<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    * <a name="line.488"></a>
-<span class="sourceLineNo">489</span>    * @return This object (for method chaining).<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    * @throws Exception<a name="line.490"></a>
+<span class="sourceLineNo">470</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    * &lt;p class='bcode'&gt;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    *    &lt;jc&gt;// Get Main-Class from manifest file.&lt;/jc&gt;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    *    String mainClass = Microservice.&lt;jsm&gt;getManifest&lt;/jsm&gt;().getString(&lt;js&gt;"Main-Class"&lt;/js&gt;, &lt;js&gt;"unknown"&lt;/js&gt;);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    * <a name="line.474"></a>
+<span class="sourceLineNo">475</span>    *    &lt;jc&gt;// Get Rest-Resources from manifest file.&lt;/jc&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    *    String[] restResources = Microservice.&lt;jsm&gt;getManifest&lt;/jsm&gt;().getStringArray(&lt;js&gt;"Rest-Resources"&lt;/js&gt;);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    * &lt;/p&gt;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    * <a name="line.478"></a>
+<span class="sourceLineNo">479</span>    * @return The manifest file from the main jar, or &lt;jk&gt;null&lt;/jk&gt; if the manifest file could not be retrieved.<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    */<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   public ManifestFile getManifest() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      return mf;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   }<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>   /**<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    * Returns the variable resolver for resolving variables in strings and files.<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    * &lt;p&gt;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    * See the {@link #createVarResolver()} method for the list of available resolution variables.<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    * <a name="line.489"></a>
+<span class="sourceLineNo">490</span>    * @return The VarResolver used by this Microservice, or &lt;jk&gt;null&lt;/jk&gt; if it was never created.<a name="line.490"></a>
 <span class="sourceLineNo">491</span>    */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   @SuppressWarnings("resource")<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   public Microservice start() throws Exception {<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      // --------------------------------------------------------------------------------<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      // Try to get the manifest file if it wasn't already set.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      // --------------------------------------------------------------------------------<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      if (mf == null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>         Manifest m = new Manifest();<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>         // If running within an eclipse workspace, need to get it from the file system.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>         File f = new File("META-INF/MANIFEST.MF");<a name="line.502"></a>
-<span class="sourceLineNo">503</span>         if (f.exists()) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            try (FileInputStream fis = new FileInputStream(f)) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>               m.read(fis);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            } catch (IOException e) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>               throw new IOException("Problem detected in MANIFEST.MF.  Contents below:\n " + read(f), e);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>            }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>         } else {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>            // Otherwise, read from manifest file in the jar file containing the main class.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            URLClassLoader cl = (URLClassLoader)getClass().getClassLoader();<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            URL url = cl.findResource("META-INF/MANIFEST.MF");<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            if (url != null) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>               try {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>                  m.read(url.openStream());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>               } catch (IOException e) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>                  throw new IOException("Problem detected in MANIFEST.MF.  Contents below:\n " + read(url.openStream()), e);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>               }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>            }<a name="line.519"></a>
-<span class="sourceLineNo">520</span>         }<a name="line.520"></a>
-<span class="sourceLineNo">521</span>         mf = new ManifestFile(m);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      }<a name="line.522"></a>
+<span class="sourceLineNo">492</span>   public VarResolver getVarResolver() {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      return vr;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   }<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>   /**<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    * Returns the logger for this microservice.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    * <a name="line.498"></a>
+<span class="sourceLineNo">499</span>    * @return The logger for this microservice.<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   public Logger getLogger() {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      return logger;<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   <a name="line.504"></a>
+<span class="sourceLineNo">505</span>   //--------------------------------------------------------------------------------<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   // Abstract lifecycle methods.<a name="line.506"></a>
+<span class="sourceLineNo">507</span>   //--------------------------------------------------------------------------------<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>   /**<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    * Start this application.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    * <a name="line.511"></a>
+<span class="sourceLineNo">512</span>    * &lt;p&gt;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    * Default implementation simply calls {@link #onStart()}.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    * <a name="line.514"></a>
+<span class="sourceLineNo">515</span>    * &lt;p&gt;<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    * Overridden methods MUST call this method FIRST so that the {@link #onStart()} method is called.<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    * <a name="line.517"></a>
+<span class="sourceLineNo">518</span>    * @return This object (for method chaining).<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    * @throws Exception<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    */<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   @SuppressWarnings("resource")<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   public Microservice start() throws Exception {<a name="line.522"></a>
 <span class="sourceLineNo">523</span><a name="line.523"></a>
 <span class="sourceLineNo">524</span>      // --------------------------------------------------------------------------------<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      // Resolve the config file if the path was specified.<a name="line.525"></a>
+<span class="sourceLineNo">525</span>      // Try to get the manifest file if it wasn't already set.<a name="line.525"></a>
 <span class="sourceLineNo">526</span>      // --------------------------------------------------------------------------------<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      ConfigBuilder cfb = Config.create();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      if (cfPath != null)<a name="line.528"></a>
-<span class="sourceLineNo">529</span>         cf = cfb.name(cfPath).varResolver(createVarResolver().defaultVars().build()).build();<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>      <a name="line.531"></a>
-<span class="sourceLineNo">532</span>      // --------------------------------------------------------------------------------<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      // Find config file.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // Can either be passed in as first parameter, or we discover it using<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      // the 'sun.java.command' system property.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      // --------------------------------------------------------------------------------<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      if (cf == null) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>         if (args.hasArg(0))<a name="line.538"></a>
-<span class="sourceLineNo">539</span>            cfPath = args.getArg(0);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>         else if (mf.containsKey("Main-Config"))<a name="line.540"></a>
-<span class="sourceLineNo">541</span>            cfPath = mf.getString("Main-Config");<a name="line.541"></a>
-<span class="sourceLineNo">542</span>         else {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>            String cmd = System.getProperty("sun.java.command", "not_found").split("\\s+")[0];<a name="line.543"></a>
-<span class="sourceLineNo">544</span>            if (cmd.endsWith(".jar"))<a name="line.544"></a>
-<span class="sourceLineNo">545</span>               cfPath = cmd.replace(".jar", ".cfg");<a name="line.545"></a>
-<span class="sourceLineNo">546</span>         }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>         if (cfPath == null) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>            cf = cfb.build();<a name="line.549"></a>
-<span class="sourceLineNo">550</span>         } else {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            cf = cfb.name(cfPath).varResolver(createVarResolver().build()).build();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>         }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      }<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>      vr = createVarResolver().build();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      <a name="line.556"></a>
+<span class="sourceLineNo">527</span>      if (mf == null) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>         Manifest m = new Manifest();<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>         // If running within an eclipse workspace, need to get it from the file system.<a name="line.530"></a>
+<span class="sourceLineNo">531</span>         File f = new File("META-INF/MANIFEST.MF");<a name="line.531"></a>
+<span class="sourceLineNo">532</span>         if (f.exists()) {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>            try (FileInputStream fis = new FileInputStream(f)) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>               m.read(fis);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>            } catch (IOException e) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>               throw new IOException("Problem detected in MANIFEST.MF.  Contents below:\n " + read(f), e);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>            }<a name="line.537"></a>
+<span class="sourceLineNo">538</span>         } else {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>            // Otherwise, read from manifest file in the jar file containing the main class.<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            URLClassLoader cl = (URLClassLoader)getClass().getClassLoader();<a name="line.540"></a>
+<span class="sourceLineNo">541</span>            URL url = cl.findResource("META-INF/MANIFEST.MF");<a name="line.541"></a>
+<span class="sourceLineNo">542</span>            if (url != null) {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>               try {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>                  m.read(url.openStream());<a name="line.544"></a>
+<span class="sourceLineNo">545</span>               } catch (IOException e) {<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                  throw new IOException("Problem detected in MANIFEST.MF.  Contents below:\n " + read(url.openStream()), e);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>               }<a name="line.547"></a>
+<span class="sourceLineNo">548</span>            }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>         }<a name="line.549"></a>
+<span class="sourceLineNo">550</span>         mf = new ManifestFile(m);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      }<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>      // --------------------------------------------------------------------------------<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      // Resolve the config file if the path was specified.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      // --------------------------------------------------------------------------------<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      ConfigBuilder cfb = Config.create();<a name="line.556"></a>
 <span class="sourceLineNo">557</span>      if (cfPath != null)<a name="line.557"></a>
-<span class="sourceLineNo">558</span>         System.setProperty("juneau.configFile", cfPath);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      <a name="line.559"></a>
-<span class="sourceLineNo">560</span>      // --------------------------------------------------------------------------------<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      // Set system properties.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      // --------------------------------------------------------------------------------<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      Set&lt;String&gt; spKeys = cf.getKeys("SystemProperties");<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      if (spKeys != null)<a name="line.564"></a>
-<span class="sourceLineNo">565</span>         for (String key : spKeys)<a name="line.565"></a>
-<span class="sourceLineNo">566</span>            System.setProperty(key, cf.getString("SystemProperties/"+key));<a name="line.566"></a>
-<span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      // --------------------------------------------------------------------------------<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      // Initialize logging.<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      // --------------------------------------------------------------------------------<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      try {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>         initLogging();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      } catch (Exception e) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>         // If logging can be initialized, just print a stack trace and continue.<a name="line.574"></a>
-<span class="sourceLineNo">575</span>         e.printStackTrace();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      }<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // --------------------------------------------------------------------------------<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // Add a config file change listener.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      // --------------------------------------------------------------------------------<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      cf.addListener(this);<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>      consoleEnabled = cf.getBoolean("Console/enabled", true);<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>      if (cfPath == null) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>         err(mb, "RunningClassWithoutConfig", getClass().getSimpleName());<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      } else {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>         out(mb, "RunningClassWithConfig", getClass().getSimpleName(), cfPath);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>            <a name="line.590"></a>
-<span class="sourceLineNo">591</span>      Runtime.getRuntime().addShutdownHook(<a name="line.591"></a>
-<span class="sourceLineNo">592</span>         new Thread() {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>            @Override /* Thread */<a name="line.593"></a>
-<span class="sourceLineNo">594</span>            public void run() {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>               Microservice.this.stop();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>            }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>         }<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      );<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      onStart();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return this;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   }<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>   /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    * Start the console for this application.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    * <a name="line.605"></a>
-<span class="sourceLineNo">606</span>    * &lt;p&gt;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    * Note that this is typically started after all initialization has occurred so that the console output isn't polluted.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    * <a name="line.608"></a>
-<span class="sourceLineNo">609</span>    * @return This object (for method chaining).<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    * @throws Exception<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    */<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   protected Microservice startConsole() throws Exception {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      consoleCommands = new LinkedHashMap&lt;&gt;();<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      for (ConsoleCommand cc : createConsoleCommands())<a name="line.614"></a>
-<span class="sourceLineNo">615</span>         consoleCommands.put(cc.getName(), cc);<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      consoleCommands = unmodifiableMap(consoleCommands);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      <a name="line.617"></a>
-<span class="sourceLineNo">618</span>      final Map&lt;String,ConsoleCommand&gt; commands = consoleCommands;<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      final MessageBundle mb2 = mb;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      if (! consoleCommands.isEmpty()) {<a name="line.620"></a>
+<span class="sourceLineNo">558</span>         cf = cfb.name(cfPath).varResolver(createVarResolver().defaultVars().build()).build();<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>      <a name="line.560"></a>
+<span class="sourceLineNo">561</span>      // --------------------------------------------------------------------------------<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      // Find config file.<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      // Can either be passed in as first parameter, or we discover it using<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      // the 'sun.java.command' system property.<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      // --------------------------------------------------------------------------------<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (cf == null) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>         if (args.hasArg(0))<a name="line.567"></a>
+<span class="sourceLineNo">568</span>            cfPath = args.getArg(0);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>         else if (mf.containsKey("Main-Config"))<a name="line.569"></a>
+<span class="sourceLineNo">570</span>            cfPath = mf.getString("Main-Config");<a name="line.570"></a>
+<span class="sourceLineNo">571</span>         else {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>            String cmd = System.getProperty("sun.java.command", "not_found").split("\\s+")[0];<a name="line.572"></a>
+<span class="sourceLineNo">573</span>            if (cmd.endsWith(".jar"))<a name="line.573"></a>
+<span class="sourceLineNo">574</span>               cfPath = cmd.replace(".jar", ".cfg");<a name="line.574"></a>
+<span class="sourceLineNo">575</span>         }<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span>         if (cfPath == null) {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>            cf = cfb.build();<a name="line.578"></a>
+<span class="sourceLineNo">579</span>         } else {<a name="line.579"></a>
+<span class="sourceLineNo">580</span>            cf = cfb.name(cfPath).varResolver(createVarResolver().build()).build();<a name="line.580"></a>
+<span class="sourceLineNo">581</span>         }<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      }<a name="line.582"></a>
+<span class="sourceLineNo">583</span><a name="line.583"></a>
+<span class="sourceLineNo">584</span>      vr = createVarResolver().build();<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      <a name="line.585"></a>
+<span class="sourceLineNo">586</span>      if (cfPath != null)<a name="line.586"></a>
+<span class="sourceLineNo">587</span>         System.setProperty("juneau.configFile", cfPath);<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      <a name="line.588"></a>
+<span class="sourceLineNo">589</span>      // --------------------------------------------------------------------------------<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      // Set system properties.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      // --------------------------------------------------------------------------------<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      Set&lt;String&gt; spKeys = cf.getKeys("SystemProperties");<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      if (spKeys != null)<a name="line.593"></a>
+<span class="sourceLineNo">594</span>         for (String key : spKeys)<a name="line.594"></a>
+<span class="sourceLineNo">595</span>            System.setProperty(key, cf.getString("SystemProperties/"+key));<a name="line.595"></a>
+<span class="sourceLineNo">596</span><a name="line.596"></a>
+<span class="sourceLineNo">597</span>      // --------------------------------------------------------------------------------<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      // Initialize logging.<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      // --------------------------------------------------------------------------------<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      try {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>         initLogging();<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      } catch (Exception e) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>         // If logging can be initialized, just print a stack trace and continue.<a name="line.603"></a>
+<span class="sourceLineNo">604</span>         e.printStackTrace();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      }<a name="line.605"></a>
+<span class="sourceLineNo">606</span><a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // --------------------------------------------------------------------------------<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // Add a config file change listener.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      // --------------------------------------------------------------------------------<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      cf.addListener(this);<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>      consoleEnabled = cf.getBoolean("Console/enabled", true);<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>      if (cfPath == null) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>         err(mb, "RunningClassWithoutConfig", getClass().getSimpleName());<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      } else {<a name="line.616"></a>
+<span class="sourceLineNo">617</span>         out(mb, "RunningClassWithConfig", getClass().getSimpleName(), cfPath);<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>            <a name="line.619"></a>
+<span class="sourceLineNo">620</span>      Runtime.getRuntime().addShutdownHook(<a name="line.620"></a>
 <span class="sourceLineNo">621</span>         new Thread() {<a name="line.621"></a>
 <span class="sourceLineNo">622</span>            @Override /* Thread */<a name="line.622"></a>
-<span class="sourceLineNo">623</span>            @SuppressWarnings("resource")  // Must not close System.in!<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            public void run() {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>               Scanner in = getConsoleReader();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>               PrintWriter out = getConsoleWriter();<a name="line.626"></a>
-<span class="sourceLineNo">627</span>               <a name="line.627"></a>
-<span class="sourceLineNo">628</span>               out.println(mb2.getString("ListOfAvailableCommands"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>               for (ConsoleCommand cc : commands.values()) <a name="line.629"></a>
-<span class="sourceLineNo">630</span>                  out.append("\t").append(cc.getName()).append(" -- ").append(cc.getInfo()).println();<a name="line.630"></a>
-<span class="sourceLineNo">631</span>               out.println();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>               <a name="line.632"></a>
-<span class="sourceLineNo">633</span>               while (true) {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>                  String line = null;<a name="line.634"></a>
-<span class="sourceLineNo">635</span>                  out.append("&gt; ").flush();<a name="line.635"></a>
-<span class="sourceLineNo">636</span>                  line = in.nextLine();<a name="line.636"></a>
-<span class="sourceLineNo">637</span>                  Args args = new Args(line);<a name="line.637"></a>
-<span class="sourceLineNo">638</span>                  if (! args.isEmpty()) {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>                     ConsoleCommand cc = commands.get(args.getArg(0));<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                     if (cc == null) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>                        out.println(mb2.getString("UnknownCommand"));<a name="line.641"></a>
-<span class="sourceLineNo">642</span>                     } else {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>                        try {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>                           if (cc.execute(in, out, args))<a name="line.644"></a>
-<span class="sourceLineNo">645</span>                              break;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>                        } catch (Exception e) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>                           e.printStackTrace();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>                        }<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                     }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>               }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>         }.start();<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      return this;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   <a name="line.657"></a>
-<span class="sourceLineNo">658</span>   /**<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    * Initialize the logging for this microservice.<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    * <a name="line.660"></a>
-<span class="sourceLineNo">661</span>    * &lt;p&gt;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    * Subclasses can override this method to provide customized logging.<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    * <a name="line.663"></a>
-<span class="sourceLineNo">664</span>    * &lt;p&gt;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    * The default implementation uses the &lt;cs&gt;Logging&lt;/cs&gt; section in the config file to set up logging:<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    * &lt;p class='bcode'&gt;<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    *    &lt;cc&gt;#================================================================================<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    *    # Logger settings<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    *    # See FileHandler Java class for details.<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    *    #================================================================================&lt;/cc&gt;<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    *    &lt;cs&gt;[Logging]&lt;/cs&gt;<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    * <a name="line.672"></a>
-<span class="sourceLineNo">673</span>    *    &lt;cc&gt;# The directory where to create the log file.<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    *    # Default is ".".&lt;/cc&gt;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    *    &lt;ck&gt;logDir&lt;/ck&gt; = logs<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    * <a name="line.676"></a>
-<span class="sourceLineNo">677</span>    *    &lt;cc&gt;# The name of the log file to create for the main logger.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    *    # The logDir and logFile make up the pattern that's passed to the FileHandler<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    *    # constructor.<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    *    # If value is not specified, then logging to a file will not be set up.&lt;/cc&gt;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    *    &lt;ck&gt;logFile&lt;/ck&gt; = microservice.%g.log<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    * <a name="line.682"></a>
-<span class="sourceLineNo">683</span>    *    &lt;cc&gt;# Whether to append to the existing log file or create a new one.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    *    # Default is false.&lt;/cc&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    *    &lt;ck&gt;append&lt;/ck&gt; =<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    * <a name="line.686"></a>
-<span class="sourceLineNo">687</span>    *    &lt;cc&gt;# The SimpleDateFormat format to use for dates.<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    *    # Default is "yyyy.MM.dd hh:mm:ss".&lt;/cc&gt;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    *    &lt;ck&gt;dateFormat&lt;/ck&gt; =<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    * <a name="line.690"></a>
-<span class="sourceLineNo">691</span>    *    &lt;cc&gt;# The log message format.<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    *    # The value can contain any of the following variables:<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    *    #  {date} - The date, formatted per dateFormat.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    *    #  {class} - The class name.<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    *    #  {method} - The method name.<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    *    #  {logger} - The logger name.<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    *    #  {level} - The log level name.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    *    #  {msg} - The log message.<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    *    #  {threadid} - The thread ID.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    *    #  {exception} - The localized exception message.<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    *    # Default is "[{date} {level}] {msg}%n".&lt;/cc&gt;<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    *    &lt;ck&gt;format&lt;/ck&gt; =<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    * <a name="line.703"></a>
-<span class="sourceLineNo">704</span>    *    &lt;cc&gt;# The maximum log file size.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    *    # Suffixes available for numbers.<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    *    # See Config.getInt(String,int) for details.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    *    # Default is 1M.&lt;/cc&gt;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    *    &lt;ck&gt;limit&lt;/ck&gt; = 10M<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    * <a name="line.709"></a>
-<span class="sourceLineNo">710</span>    *    &lt;cc&gt;# Max number of log files.<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    *    # Default is 1.&lt;/cc&gt;<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    *    &lt;ck&gt;count&lt;/ck&gt; = 5<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    * <a name="line.713"></a>
-<span class="sourceLineNo">714</span>    *    &lt;cc&gt;# Default log levels.<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    *    # Keys are logger names.<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    *    # Values are serialized Level POJOs.&lt;/cc&gt;<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    *    &lt;ck&gt;levels&lt;/ck&gt; = { org.apache.juneau:'INFO' }<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    * <a name="line.718"></a>
-<span class="sourceLineNo">719</span>    *    &lt;cc&gt;# Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    *    # Useful for preventing log files from filling up with duplicate stack traces.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    *    # Default is false.&lt;/cc&gt;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    *    &lt;ck&gt;useStackTraceHashes&lt;/ck&gt; = true<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    * <a name="line.723"></a>
-<span class="sourceLineNo">724</span>    *    &lt;cc&gt;# The default level for the console logger.<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    *    # Default is WARNING.&lt;/cc&gt;<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    *    &lt;ck&gt;consoleLevel&lt;/ck&gt; = WARNING<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    * &lt;/p&gt;<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    * <a name="line.728"></a>
-<span class="sourceLineNo">729</span>    * @throws Exception<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    */<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   protected void initLogging() throws Exception {<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      Config cf = getConfig();<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      logger = Logger.getLogger("");<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      String logFile = cf.getString("Logging/logFile");<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      if (! isEmpty(logFile)) {<a name="line.735"></a>
-<span class="sourceLineNo">736</span>         LogManager.getLogManager().reset();<a name="line.736"></a>
-<span class="sourceLineNo">737</span>         String logDir = cf.getString("Logging/logDir", ".");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>         mkdirs(new File(logDir), false);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>         boolean append = cf.getBoolean("Logging/append");<a name="line.739"></a>
-<span class="sourceLineNo">740</span>         int limit = cf.getInt("Logging/limit", 1024*1024);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>         int count = cf.getInt("Logging/count", 1);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>         FileHandler fh = new FileHandler(logDir + '/' + logFile, limit, count, append);<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>         boolean useStackTraceHashes = cf.getBoolean("Logging/useStackTraceHashes");<a name="line.744"></a>
-<span class="sourceLineNo">745</span>         String format = cf.getString("Logging/format", "[{date} {level}] {msg}%n");<a name="line.745"></a>
-<span class="sourceLineNo">746</span>         String dateFormat = cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>         fh.setFormatter(new LogEntryFormatter(format, dateFormat, useStackTraceHashes));<a name="line.747"></a>
-<span class="sourceLineNo">748</span>         fh.setLevel(cf.getObjectWithDefault("Logging/fileLevel", Level.INFO, Level.class));<a name="line.748"></a>
-<span class="sourceLineNo">749</span>         logger.addHandler(fh);<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>         ConsoleHandler ch = new ConsoleHandler();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>         ch.setLevel(cf.getObjectWithDefault("Logging/consoleLevel", Level.WARNING, Level.class));<a name="line.752"></a>
-<span class="sourceLineNo">753</span>         ch.setFormatter(new LogEntryFormatter(format, dateFormat, false));<a name="line.753"></a>
-<span class="sourceLineNo">754</span>         logger.addHandler(ch);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>      }<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      ObjectMap loggerLevels = cf.getObject("Logging/levels", ObjectMap.class);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>      if (loggerLevels != null)<a name="line.757"></a>
-<span class="sourceLineNo">758</span>         for (String l : loggerLevels.keySet())<a name="line.758"></a>
-<span class="sourceLineNo">759</span>            Logger.getLogger(l).setLevel(loggerLevels.get(l, Level.class));<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   }<a name="line.760"></a>
-<span class="sourceLineNo">761</span><a name="line.761"></a>
-<span class="sourceLineNo">762</span>   /**<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    * Joins the application with the current thread.<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    * <a name="line.764"></a>
-<span class="sourceLineNo">765</span>    * &lt;p&gt;<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    * Default implementation is a no-op.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    * <a name="line.767"></a>
-<span class="sourceLineNo">768</span>    * @return This object (for method chaining).<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    * @throws Exception<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    */<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   public Microservice join() throws Exception {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      return this;<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   }<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>   /**<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    * Stop this application.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    * <a name="line.777"></a>
-<span class="sourceLineNo">778</span>    * &lt;p&gt;<a name="line.778"></a>
-<span class="sourceLineNo">779</span>    * Default implementation simply calls {@link #onStop()}.<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    * <a name="line.780"></a>
-<span class="sourceLineNo">781</span>    * &lt;p&gt;<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    * Overridden methods MUST call this method LAST so that the {@link #onStop()} method is called.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    * <a name="line.783"></a>
-<span class="sourceLineNo">784</span>    * @return This object (for method chaining).<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    */<a name="line.785"></a>
-<span class="sourceLineNo">786</span>   public Microservice stop() {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      onStop();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      return this;<a name="line.788"></a>
+<span class="sourceLineNo">623</span>            public void run() {<a name="line.623"></a>
+<span class="sourceLineNo">624</span>               Microservice.this.stop();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>            }<a name="line.625"></a>
+<span class="sourceLineNo">626</span>         }<a name="line.626"></a>
+<span class="sourceLineNo">627</span>      );<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      onStart();<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return this;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   }<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span>   /**<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    * Start the console for this application.<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    * <a name="line.634"></a>
+<span class="sourceLineNo">635</span>    * &lt;p&gt;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    * Note that this is typically started after all initialization has occurred so that the console output isn't polluted.<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    * <a name="line.637"></a>
+<span class="sourceLineNo">638</span>    * @return This object (for method chaining).<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    * @throws Exception<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    */<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   protected Microservice startConsole() throws Exception {<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      consoleCommands = new LinkedHashMap&lt;&gt;();<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      for (ConsoleCommand cc : createConsoleCommands())<a name="line.643"></a>
+<span class="sourceLineNo">644</span>         consoleCommands.put(cc.getName(), cc);<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      consoleCommands = unmodifiableMap(consoleCommands);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      <a name="line.646"></a>
+<span class="sourceLineNo">647</span>      final Map&lt;String,ConsoleCommand&gt; commands = consoleCommands;<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      final MessageBundle mb2 = mb;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      if (! consoleCommands.isEmpty()) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>         new Thread() {<a name="line.650"></a>
+<span class="sourceLineNo">651</span>            @Override /* Thread */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>            @SuppressWarnings("resource")  // Must not close System.in!<a name="line.652"></a>
+<span class="sourceLineNo">653</span>            public void run() {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>               Scanner in = getConsoleReader();<a name="line.654"></a>
+<span class="sourceLineNo">655</span>               PrintWriter out = getConsoleWriter();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>               <a name="line.656"></a>
+<span class="sourceLineNo">657</span>               out.println(mb2.getString("ListOfAvailableCommands"));<a name="line.657"></a>
+<span class="sourceLineNo">658</span>               for (ConsoleCommand cc : commands.values()) <a name="line.658"></a>
+<span class="sourceLineNo">659</span>                  out.append("\t").append(cc.getName()).append(" -- ").append(cc.getInfo()).println();<a name="line.659"></a>
+<span class="sourceLineNo">660</span>               out.println();<a name="line.660"></a>
+<span class="sourceLineNo">661</span>               <a name="line.661"></a>
+<span class="sourceLineNo">662</span>               while (true) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>                  String line = null;<a name="line.663"></a>
+<span class="sourceLineNo">664</span>                  out.append("&gt; ").flush();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>                  line = in.nextLine();<a name="line.665"></a>
+<span class="sourceLineNo">666</span>                  Args args = new Args(line);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>                  if (! args.isEmpty()) {<a name="line.667"></a>
+<span class="sourceLineNo">668</span>                     ConsoleCommand cc = commands.get(args.getArg(0));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>                     if (cc == null) {<a name="line.669"></a>
+<span class="sourceLineNo">670</span>                        out.println(mb2.getString("UnknownCommand"));<a name="line.670"></a>
+<span class="sourceLineNo">671</span>                     } else {<a name="line.671"></a>
+<span class="sourceLineNo">672</span>                        try {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>                           if (cc.execute(in, out, args))<a name="line.673"></a>
+<span class="sourceLineNo">674</span>                              break;<a name="line.674"></a>
+<span class="sourceLineNo">675</span>                        } catch (Exception e) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>                           e.printStackTrace();<a name="line.676"></a>
+<span class="sourceLineNo">677</span>                        }<a name="line.677"></a>
+<span class="sourceLineNo">678</span>                     }<a name="line.678"></a>
+<span class="sourceLineNo">679</span>                  }<a name="line.679"></a>
+<span class="sourceLineNo">680</span>               }<a name="line.680"></a>
+<span class="sourceLineNo">681</span>            }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>         }.start();<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      return this;<a name="line.684"></a>
+<span class="sourceLineNo">685</span>   }<a name="line.685"></a>
+<span class="sourceLineNo">686</span>   <a name="line.686"></a>
+<span class="sourceLineNo">687</span>   /**<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    * Initialize the logging for this microservice.<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    * <a name="line.689"></a>
+<span class="sourceLineNo">690</span>    * &lt;p&gt;<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    * Subclasses can override this method to provide customized logging.<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    * <a name="line.692"></a>
+<span class="sourceLineNo">693</span>    * &lt;p&gt;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    * The default implementation uses the &lt;cs&gt;Logging&lt;/cs&gt; section in the config file to set up logging:<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    * &lt;p class='bcode'&gt;<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    *    &lt;cc&gt;#================================================================================<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    *    # Logger settings<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    *    # See FileHandler Java class for details.<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    *    #================================================================================&lt;/cc&gt;<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    *    &lt;cs&gt;[Logging]&lt;/cs&gt;<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    * <a name="line.701"></a>
+<span class="sourceLineNo">702</span>    *    &lt;cc&gt;# The directory where to create the log file.<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    *    # Default is ".".&lt;/cc&gt;<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    *    &lt;ck&gt;logDir&lt;/ck&gt; = logs<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    * <a name="line.705"></a>
+<span class="sourceLineNo">706</span>    *    &lt;cc&gt;# The name of the log file to create for the main logger.<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    *    # The logDir and logFile make up the pattern that's passed to the FileHandler<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    *    # constructor.<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    *    # If value is not specified, then logging to a file will not be set up.&lt;/cc&gt;<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    *    &lt;ck&gt;logFile&lt;/ck&gt; = microservice.%g.log<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    * <a name="line.711"></a>
+<span class="sourceLineNo">712</span>    *    &lt;cc&gt;# Whether to append to the existing log file or create a new one.<a name="line.712"></a>
+<span class="sourceLineNo">713</span>    *    # Default is false.&lt;/cc&gt;<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    *    &lt;ck&gt;append&lt;/ck&gt; =<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    * <a name="line.715"></a>
+<span class="sourceLineNo">716</span>    *    &lt;cc&gt;# The SimpleDateFormat format to use for dates.<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    *    # Default is "yyyy.MM.dd hh:mm:ss".&lt;/cc&gt;<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    *    &lt;ck&gt;dateFormat&lt;/ck&gt; =<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    * <a name="line.719"></a>
+<span class="sourceLineNo">720</span>    *    &lt;cc&gt;# The log message format.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    *    # The value can contain any of the following variables:<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    *    #  {date} - The date, formatted per dateFormat.<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    *    #  {class} - The class name.<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    *    #  {method} - The method name.<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    *    #  {logger} - The logger name.<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    *    #  {level} - The log level name.<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    *    #  {msg} - The log message.<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    *    #  {threadid} - The thread ID.<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    *    #  {exception} - The localized exception message.<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    *    # Default is "[{date} {level}] {msg}%n".&lt;/cc&gt;<a name="line.730"></a>
+<span class="sourceLineNo">731</span>    *    &lt;ck&gt;format&lt;/ck&gt; =<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    * <a name="line.732"></a>
+<span class="sourceLineNo">733</span>    *    &lt;cc&gt;# The maximum log file size.<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    *    # Suffixes available for numbers.<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    *    # See Config.getInt(String,int) for details.<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    *    # Default is 1M.&lt;/cc&gt;<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    *    &lt;ck&gt;limit&lt;/ck&gt; = 10M<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    * <a name="line.738"></a>
+<span class="sourceLineNo">739</span>    *    &lt;cc&gt;# Max number of log files.<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    *    # Default is 1.&lt;/cc&gt;<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    *    &lt;ck&gt;count&lt;/ck&gt; = 5<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    * <a name="line.742"></a>
+<span class="sourceLineNo">743</span>    *    &lt;cc&gt;# Default log levels.<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    *    # Keys are logger names.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    *    # Values are serialized Level POJOs.&lt;/cc&gt;<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    *    &lt;ck&gt;levels&lt;/ck&gt; = { org.apache.juneau:'INFO' }<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    * <a name="line.747"></a>
+<span class="sourceLineNo">748</span>    *    &lt;cc&gt;# Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    *    # Useful for preventing log files from filling up with duplicate stack traces.<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    *    # Default is false.&lt;/cc&gt;<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    *    &lt;ck&gt;useStackTraceHashes&lt;/ck&gt; = true<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    * <a name="line.752"></a>
+<span class="sourceLineNo">753</span>    *    &lt;cc&gt;# The default level for the console logger.<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    *    # Default is WARNING.&lt;/cc&gt;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    *    &lt;ck&gt;consoleLevel&lt;/ck&gt; = WARNING<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    * &lt;/p&gt;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    * <a name="line.757"></a>
+<span class="sourceLineNo">758</span>    * @throws Exception<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    */<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   protected void initLogging() throws Exception {<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      Config cf = getConfig();<a name="line.761"></a>
+<span class="sourceLineNo">762</span>      logger = Logger.getLogger("");<a name="line.762"></a>
+<span class="sourceLineNo">763</span>      String logFile = cf.getString("Logging/logFile");<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      if (! isEmpty(logFile)) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>         LogManager.getLogManager().reset();<a name="line.765"></a>
+<span class="sourceLineNo">766</span>         String logDir = cf.getString("Logging/logDir", ".");<a name="line.766"></a>
+<span class="sourceLineNo">767</span>         mkdirs(new File(logDir), false);<a name="line.767"></a>
+<span class="sourceLineNo">768</span>         boolean append = cf.getBoolean("Logging/append");<a name="line.768"></a>
+<span class="sourceLineNo">769</span>         int limit = cf.getInt("Logging/limit", 1024*1024);<a name="line.769"></a>
+<span class="sourceLineNo">770</span>         int count = cf.getInt("Logging/count", 1);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>         FileHandler fh = new FileHandler(logDir + '/' + logFile, limit, count, append);<a name="line.771"></a>
+<span class="sourceLineNo">772</span><a name="line.772"></a>
+<span class="sourceLineNo">773</span>         boolean useStackTraceHashes = cf.getBoolean("Logging/useStackTraceHashes");<a name="line.773"></a>
+<span class="sourceLineNo">774</span>         String format = cf.getString("Logging/format", "[{date} {level}] {msg}%n");<a name="line.774"></a>
+<span class="sourceLineNo">775</span>         String dateFormat = cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss");<a name="line.775"></a>
+<span class="sourceLineNo">776</span>         fh.setFormatter(new LogEntryFormatter(format, dateFormat, useStackTraceHashes));<a name="line.776"></a>
+<span class="sourceLineNo">777</span>         fh.setLevel(cf.getObjectWithDefault("Logging/fileLevel", Level.INFO, Level.class));<a name="line.777"></a>
+<span class="sourceLineNo">778</span>         logger.addHandler(fh);<a name="line.778"></a>
+<span class="sourceLineNo">779</span><a name="line.779"></a>
+<span class="sourceLineNo">780</span>         ConsoleHandler ch = new ConsoleHandler();<a name="line.780"></a>
+<span class="sourceLineNo">781</span>         ch.setLevel(cf.getObjectWithDefault("Logging/consoleLevel", Level.WARNING, Level.class));<a name="line.781"></a>
+<span class="sourceLineNo">782</span>         ch.setFormatter(new LogEntryFormatter(format, dateFormat, false));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>         logger.addHandler(ch);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>      }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>      ObjectMap loggerLevels = cf.getObject("Logging/levels", ObjectMap.class);<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      if (loggerLevels != null)<a name="line.786"></a>
+<span class="sourceLineNo">787</span>         for (String l : loggerLevels.keySet())<a name="line.787"></a>
+<span class="sourceLineNo">788</span>            Logger.getLogger(l).setLevel(loggerLevels.get(l, Level.class));<a name="line.788"></a>
 <span class="sourceLineNo">789</span>   }<a name="line.789"></a>
 <span class="sourceLineNo">790</span><a name="line.790"></a>
 <span class="sourceLineNo">791</span>   /**<a name="line.791"></a>
-<span class="sourceLineNo">792</span>    * Kill the JVM by calling &lt;code&gt;System.exit(2);&lt;/code&gt;.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    */<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   public void kill() {<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      // This triggers the shutdown hook.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      System.exit(2);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span><a name="line.799"></a>
-<span class="sourceLineNo">800</span>   //--------------------------------------------------------------------------------<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   // Lifecycle listener methods.<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   // Subclasses can override these methods to run code on certain events.<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   //--------------------------------------------------------------------------------<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>   /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    * Called at the beginning of the {@link #start()} call.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    * <a name="line.807"></a>
-<span class="sourceLineNo">808</span>    * &lt;p&gt;<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   protected void onStart() {}<a name="line.811"></a>
-<span class="sourceLineNo">812</span><a name="line.812"></a>
-<span class="sourceLineNo">813</span>   /**<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    * Called at the end of the {@link #stop()} call.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    * <a name="line.815"></a>
-<span class="sourceLineNo">816</span>    * &lt;p&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    */<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   protected void onStop() {}<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>   /**<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    * Called if one or more changes occur in the config file.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    * <a name="line.823"></a>
-<span class="sourceLineNo">824</span>    * &lt;p&gt;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    * Subclasses can override this method to listen for config file changes.<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    * <a name="line.826"></a>
-<span class="sourceLineNo">827</span>    * @param events The list of changes in the config file.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    */<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   @Override /* ConfigEventListener */<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   public void onConfigChange(List&lt;ConfigEvent&gt; events) {}<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>   <a name="line.832"></a>
-<span class="sourceLineNo">833</span>   //--------------------------------------------------------------------------------<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   // Other methods.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   //--------------------------------------------------------------------------------<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   <a name="line.836"></a>
-<span class="sourceLineNo">837</span>   /**<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    * Returns the console commands associated with this microservice.<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    * <a name="line.839"></a>
-<span class="sourceLineNo">840</span>    * @return The console commands associated with this microservice as an unmodifiable map.<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    */<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   public final Map&lt;String,ConsoleCommand&gt; getConsoleCommands() {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>      return consoleCommands;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   <a name="line.845"></a>
-<span class="sourceLineNo">846</span>   /**<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    * Constructs the list of available console commands.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    * <a name="line.848"></a>
-<span class="sourceLineNo">849</span>    * &lt;p&gt;<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    * By default, uses the &lt;js&gt;"Console/commands"&lt;/js&gt; list in the config file.<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    * Subclasses can override this method and modify or augment this list to provide their own console commands.<a name="line.851"></a>
+<span class="sourceLineNo">792</span>    * Joins the application with the current thread.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    * <a name="line.793"></a>
+<span class="sourceLineNo">794</span>    * &lt;p&gt;<a name="line.794"></a>
+<span class="sourceLineNo">795</span>    * Default implementation is a no-op.<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    * <a name="line.796"></a>
+<span class="sourceLineNo">797</span>    * @return This object (for method chaining).<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    * @throws Exception<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    */<a name="line.799"></a>
+<span class="sourceLineNo">800</span>   public Microservice join() throws Exception {<a name="line.800"></a>
+<span class="sourceLineNo">801</span>      return this;<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   }<a name="line.802"></a>
+<span class="sourceLineNo">803</span><a name="line.803"></a>
+<span class="sourceLineNo">804</span>   /**<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    * Stop this application.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    * <a name="line.806"></a>
+<span class="sourceLineNo">807</span>    * &lt;p&gt;<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    * Default implementation simply calls {@link #onStop()}.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    * <a name="line.809"></a>
+<span class="sourceLineNo">810</span>    * &lt;p&gt;<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    * Overridden methods MUST call this method LAST so that the {@link #onStop()} method is called.<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    * <a name="line.812"></a>
+<span class="sourceLineNo">813</span>    * @return This object (for method chaining).<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    */<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   public Microservice stop() {<a name="line.815"></a>
+<span class="sourceLineNo">816</span>      onStop();<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      return this;<a name="line.817"></a>
+<span class="sourceLineNo">818</span>   }<a name="line.818"></a>
+<span class="sourceLineNo">819</span><a name="line.819"></a>
+<span class="sourceLineNo">820</span>   /**<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    * Kill the JVM by calling &lt;code&gt;System.exit(2);&lt;/code&gt;.<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    */<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   public void kill() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>      // This triggers the shutdown hook.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>      System.exit(2);<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   }<a name="line.826"></a>
+<span class="sourceLineNo">827</span><a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>   //--------------------------------------------------------------------------------<a name="line.829"></a>
+<span class="sourceLineNo">830</span>   // Lifecycle listener methods.<a name="line.830"></a>
+<span class="sourceLineNo">831</span>   // Subclasses can override these methods to run code on certain events.<a name="line.831"></a>
+<span class="sourceLineNo">832</span>   //--------------------------------------------------------------------------------<a name="line.832"></a>
+<span class="sourceLineNo">833</span><a name="line.833"></a>
+<span class="sourceLineNo">834</span>   /**<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    * Called at the beginning of the {@link #start()} call.<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    * <a name="line.836"></a>
+<span class="sourceLineNo">837</span>    * &lt;p&gt;<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>    */<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   protected void onStart() {}<a name="line.840"></a>
+<span class="sourceLineNo">841</span><a name="line.841"></a>
+<span class="sourceLineNo">842</span>   /**<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    * Called at the end of the {@link #stop()} call.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    * <a name="line.844"></a>
+<span class="sourceLineNo">845</span>    * &lt;p&gt;<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    */<a name="line.847"></a>
+<span class="sourceLineNo">848</span>   protected void onStop() {}<a name="line.848"></a>
+<span class="sourceLineNo">849</span><a name="line.849"></a>
+<span class="sourceLineNo">850</span>   /**<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    * Called if one or more changes occur in the config file.<a name="line.851"></a>
 <span class="sourceLineNo">852</span>    * <a name="line.852"></a>
 <span class="sourceLineNo">853</span>    * &lt;p&gt;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    * The order of the commands returned by this method is the order they will be listed <a name="line.854"></a>
+<span class="sourceLineNo">854</span>    * Subclasses can override this method to listen for config file changes.<a name="line.854"></a>
 <span class="sourceLineNo">855</span>    * <a name="line.855"></a>
-<span class="sourceLineNo">856</span>    * @return A mutable list of console command instances.<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    * @throws Exception<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    */<a name="line.858"></a>
-<span class="sourceLineNo">859</span>   public List&lt;ConsoleCommand&gt; createConsoleCommands() throws Exception {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      ArrayList&lt;ConsoleCommand&gt; l = new ArrayList&lt;&gt;();<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      for (String s : cf.getStringArray("Console/commands"))<a name="line.861"></a>
-<span class="sourceLineNo">862</span>         l.add((ConsoleCommand)Class.forName(s).newInstance());<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      return l;<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   }<a name="line.864"></a>
+<span class="sourceLineNo">856</span>    * @param events The list of changes in the config file.<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    */<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   @Override /* ConfigEventListener */<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   public void onConfigChange(List&lt;ConfigEvent&gt; events) {}<a name="line.859"></a>
+<span class="sourceLineNo">860</span><a name="line.860"></a>
+<span class="sourceLineNo">861</span>   <a name="line.861"></a>
+<span class="sourceLineNo">862</span>   //--------------------------------------------------------------------------------<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   // Other methods.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   //--------------------------------------------------------------------------------<a name="line.864"></a>
 <span class="sourceLineNo">865</span>   <a name="line.865"></a>
 <span class="sourceLineNo">866</span>   /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    * Returns the console reader.<a name="line.867"></a>
+<span class="sourceLineNo">867</span>    * Returns the console commands associated with this microservice.<a name="line.867"></a>
 <span class="sourceLineNo">868</span>    * <a name="line.868"></a>
-<span class="sourceLineNo">869</span>    * &lt;p&gt;<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    * Subclasses can override this method to provide their own console input.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    * <a name="line.871"></a>
-<span class="sourceLineNo">872</span>    * @return The console reader.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>   public Scanner getConsoleReader() {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      return consoleReader;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>   }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>   <a name="line.877"></a>
-<span class="sourceLineNo">878</span>   /**<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    * Returns the console writer.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    * <a name="line.880"></a>
-<span class="sourceLineNo">881</span>    * &lt;p&gt;<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    * Subclasses can override this method to provide their own console output.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    * <a name="line.883"></a>
-<span class="sourceLineNo">884</span>    * @return The console writer.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    */<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   public PrintWriter getConsoleWriter() {<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      return consoleWriter;<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   }<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   <a name="line.889"></a>
-<span class="sourceLineNo">890</span>   /**<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    * Prints a localized message to the console writer.<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    * <a name="line.892"></a>
-<span class="sourceLineNo">893</span>    * &lt;p&gt;<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    * Ignored if &lt;js&gt;"Console/enabled"&lt;/js&gt; is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    * <a name="line.895"></a>
-<span class="sourceLineNo">896</span>    * @param mb The message bundle containing the message.<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    * @param messageKey The message key.<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.898"></a>
-<span class="sourceLineNo">899</span>    */<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   protected void out(MessageBundle mb, String messageKey, Object...args) {<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      if (consoleEnabled)<a name="line.901"></a>
-<span class="sourceLineNo">902</span>         getConsoleWriter().println(mb.getString(messageKey, args));<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   }<a name="line.903"></a>
-<span class="sourceLineNo">904</span><a name="line.904"></a>
-<span class="sourceLineNo">905</span>   /**<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    * Prints a localized message to STDERR.<a name="line.906"></a>
-<span class="sourceLineNo">907</span>    * <a name="line.907"></a>
-<span class="sourceLineNo">908</span>    * &lt;p&gt;<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    * Ignored if &lt;js&gt;"Console/enabled"&lt;/js&gt; is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    * <a name="line.910"></a>
-<span class="sourceLineNo">911</span>    * @param mb The message bundle containing the message.<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    * @param messageKey The message key.<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.913"></a>
+<span class="sourceLineNo">869</span>    * @return The console commands associated with this microservice as an unmodifiable map.<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    */<a name="line.870"></a>
+<span class="sourceLineNo">871</span>   public final Map&lt;String,ConsoleCommand&gt; getConsoleCommands() {<a name="line.871"></a>
+<span class="sourceLineNo">872</span>      return consoleCommands;<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   }<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   <a name="line.874"></a>
+<span class="sourceLineNo">875</span>   /**<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    * Constructs the list of available console commands.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    * <a name="line.877"></a>
+<span class="sourceLineNo">878</span>    * &lt;p&gt;<a name="line.878"></a>
+<span class="sourceLineNo">879</span>    * By default, uses the &lt;js&gt;"Console/commands"&lt;/js&gt; list in the config file.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    * Subclasses can override this method and modify or augment this list to provide their own console commands.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    * <a name="line.881"></a>
+<span class="sourceLineNo">882</span>    * &lt;p&gt;<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    * The order of the commands returned by this method is the order they will be listed <a name="line.883"></a>
+<span class="sourceLineNo">884</span>    * <a name="line.884"></a>
+<span class="sourceLineNo">885</span>    * @return A mutable list of console command instances.<a name="line.885"></a>
+<span class="sourceLineNo">886</span>    * @throws Exception<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    */<a name="line.887"></a>
+<span class="sourceLineNo">888</span>   public List&lt;ConsoleCommand&gt; createConsoleCommands() throws Exception {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>      ArrayList&lt;ConsoleCommand&gt; l = new ArrayList&lt;&gt;();<a name="line.889"></a>
+<span class="sourceLineNo">890</span>      for (String s : cf.getStringArray("Console/commands"))<a name="line.890"></a>
+<span class="sourceLineNo">891</span>         l.add((ConsoleCommand)Class.forName(s).newInstance());<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      return l;<a name="line.892"></a>
+<span class="sourceLineNo">893</span>   }<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   <a name="line.894"></a>
+<span class="sourceLineNo">895</span>   /**<a name="line.895"></a>
+<span class="sourceLineNo">896</span>    * Returns the console reader.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    * <a name="line.897"></a>
+<span class="sourceLineNo">898</span>    * &lt;p&gt;<a name="line.898"></a>
+<span class="sourceLineNo">899</span>    * Subclasses can override this method to provide their own console input.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>    * <a name="line.900"></a>
+<span class="sourceLineNo">901</span>    * @return The console reader.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.901"></a>
+<span class="sourceLineNo">902</span>    */<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   public Scanner getConsoleReader() {<a name="line.903"></a>
+<span class="sourceLineNo">904</span>      return consoleReader;<a name="line.904"></a>
+<span class="sourceLineNo">905</span>   }<a name="line.905"></a>
+<span class="sourceLineNo">906</span>   <a name="line.906"></a>
+<span class="sourceLineNo">907</span>   /**<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    * Returns the console writer.<a name="line.908"></a>
+<span class="sourceLineNo">909</span>    * <a name="line.909"></a>
+<span class="sourceLineNo">910</span>    * &lt;p&gt;<a name="line.910"></a>
+<span class="sourceLineNo">911</span>    * Subclasses can override this method to provide their own console output.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    * <a name="line.912"></a>
+<span class="sourceLineNo">913</span>    * @return The console writer.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.913"></a>
 <span class="sourceLineNo">914</span>    */<a name="line.914"></a>
-<span class="sourceLineNo">915</span>   protected void err(MessageBundle mb, String messageKey, Object...args) {<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      if (consoleEnabled)<a name="line.916"></a>
-<span class="sourceLineNo">917</span>         System.err.println(mb.getString(messageKey, args));  // NOT DEBUG<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   }<a name="line.918"></a>
-<span class="sourceLineNo">919</span>}<a name="line.919"></a>
+<span class="sourceLineNo">915</span>   public PrintWriter getConsoleWriter() {<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      return consoleWriter;<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   }<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   <a name="line.918"></a>
+<span class="sourceLineNo">919</span>   /**<a name="line.919"></a>
+<span class="sourceLineNo">920</span>    * Prints a localized message to the console writer.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>    * <a name="line.921"></a>
+<span class="sourceLineNo">922</span>    * &lt;p&gt;<a name="line.922"></a>
+<span class="sourceLineNo">923</span>    * Ignored if &lt;js&gt;"Console/enabled"&lt;/js&gt; is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.923"></a>
+<span class="sourceLineNo">924</span>    * <a name="line.924"></a>
+<span class="sourceLineNo">925</span>    * @param mb The message bundle containing the message.<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    * @param messageKey The message key.<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    */<a name="line.928"></a>
+<span class="sourceLineNo">929</span>   protected void out(MessageBundle mb, String messageKey, Object...args) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>      if (consoleEnabled)<a name="line.930"></a>
+<span class="sourceLineNo">931</span>         getConsoleWriter().println(mb.getString(messageKey, args));<a name="line.931"></a>
+<span class="sourceLineNo">932</span>   }<a name="line.932"></a>
+<span class="sourceLineNo">933</span><a name="line.933"></a>
+<span class="sourceLineNo">934</span>   /**<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    * Prints a localized message to STDERR.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    * <a name="line.936"></a>
+<span class="sourceLineNo">937</span>    * &lt;p&gt;<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    * Ignored if &lt;js&gt;"Console/enabled"&lt;/js&gt; is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.938"></a>
+<span class="sourceLineNo">939</span>    * <a name="line.939"></a>
+<span class="sourceLineNo">940</span>    * @param mb The message bundle containing the message.<a name="line.940"></a>
+<span class="sourceLineNo">941</span>    * @param messageKey The message key.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.942"></a>
+<span class="sourceLineNo">943</span>    */<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   protected void err(MessageBundle mb, String messageKey, Object...args) {<a name="line.944"></a>
+<span class="sourceLineNo">945</span>      if (consoleEnabled)<a name="line.945"></a>
+<span class="sourceLineNo">946</span>         System.err.println(mb.getString(messageKey, args));  // NOT DEBUG<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   }<a name="line.947"></a>
+<span class="sourceLineNo">948</span>}<a name="line.948"></a>
 
 
 
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/ConfigResource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/ConfigResource.html
index 221e7a2..4b1ebc4 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/ConfigResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/ConfigResource.html
@@ -29,194 +29,193 @@
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import org.apache.juneau.*;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.juneau.dto.html5.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.juneau.microservice.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.juneau.rest.*;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.juneau.rest.annotation.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.juneau.rest.annotation.Body;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * Shows contents of the microservice configuration file.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> */<a name="line.31"></a>
-<span class="sourceLineNo">032</span>@RestResource(<a name="line.32"></a>
-<span class="sourceLineNo">033</span>   path="/config",<a name="line.33"></a>
-<span class="sourceLineNo">034</span>   title="Configuration",<a name="line.34"></a>
-<span class="sourceLineNo">035</span>   description="Contents of configuration file.",<a name="line.35"></a>
-<span class="sourceLineNo">036</span>   htmldoc=@HtmlDoc(<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      navlinks={<a name="line.37"></a>
-<span class="sourceLineNo">038</span>         "up: request:/..",<a name="line.38"></a>
-<span class="sourceLineNo">039</span>         "options: servlet:/?method=OPTIONS",<a name="line.39"></a>
-<span class="sourceLineNo">040</span>         "edit: servlet:/edit"<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      }<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   )<a name="line.42"></a>
-<span class="sourceLineNo">043</span>)<a name="line.43"></a>
-<span class="sourceLineNo">044</span>public class ConfigResource extends Resource {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   private static final long serialVersionUID = 1L;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>   /**<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    * [GET /] - Show contents of config file.<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    * <a name="line.49"></a>
-<span class="sourceLineNo">050</span>    * @return The config file.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    * @throws Exception<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   @RestMethod(name=GET, path="/", description="Show contents of config file.")<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   public ObjectMap getConfig() throws Exception {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      return getServletConfig().getConfig().asMap();<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   }<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>   /**<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    * [GET /edit] - Show config file edit page.<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    * <a name="line.60"></a>
-<span class="sourceLineNo">061</span>    * @param req The HTTP request.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    * @return The config file as a reader resource.<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    * @throws Exception<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   @RestMethod(name=GET, path="/edit", description="Edit config file.")<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   public Form getConfigEditForm(RestRequest req) throws Exception {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      return form().id("form").action("servlet:/").method("POST").enctype("application/x-www-form-urlencoded").children(<a name="line.67"></a>
-<span class="sourceLineNo">068</span>         div()._class("data").children(<a name="line.68"></a>
-<span class="sourceLineNo">069</span>            table(<a name="line.69"></a>
-<span class="sourceLineNo">070</span>               tr(td().style("text-align:right").children(button("submit","Submit"),button("reset","Reset"))),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>               tr(th().child("Contents")),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>               tr(th().child(<a name="line.72"></a>
-<span class="sourceLineNo">073</span>                  textarea().name("contents").rows(40).cols(120).style("white-space:pre;word-wrap:normal;overflow-x:scroll;font-family:monospace;")<a name="line.73"></a>
-<span class="sourceLineNo">074</span>                     .text(getServletConfig().getConfig().toString()))<a name="line.74"></a>
-<span class="sourceLineNo">075</span>               )<a name="line.75"></a>
-<span class="sourceLineNo">076</span>            )<a name="line.76"></a>
-<span class="sourceLineNo">077</span>         )<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      );<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>   /**<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    * [GET /{section}] - Show config file section.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    * <a name="line.83"></a>
-<span class="sourceLineNo">084</span>    * @param section The section name.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    * @return The config file section.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * @throws Exception<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   @RestMethod(name=GET, path="/{section}",<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      description="Show config file section.",<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      swagger=@MethodSwagger(<a name="line.90"></a>
-<span class="sourceLineNo">091</span>         parameters={<a name="line.91"></a>
-<span class="sourceLineNo">092</span>            @Parameter(in="path", name="section", description="Section name.")<a name="line.92"></a>
-<span class="sourceLineNo">093</span>         }<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      )<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   )<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   public ObjectMap getConfigSection(@Path("section") String section) throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return getSection(section);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>   /**<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * [GET /{section}/{key}] - Show config file entry.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * <a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * @param section The section name.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    * @param key The section key.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    * @return The value of the config file entry.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    * @throws Exception<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   @RestMethod(name=GET, path="/{section}/{key}",<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      description="Show config file entry.",<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      swagger=@MethodSwagger(<a name="line.110"></a>
-<span class="sourceLineNo">111</span>         parameters={<a name="line.111"></a>
-<span class="sourceLineNo">112</span>            @Parameter(in="path", name="section", description="Section name."),<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            @Parameter(in="path", name="key", description="Entry name.")<a name="line.113"></a>
-<span class="sourceLineNo">114</span>         }<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      )<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   )<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   public String getConfigEntry(@Path("section") String section, @Path("key") String key) throws Exception {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      return getSection(section).getString(key);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   }<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>   /**<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    * [POST /] - Sets contents of config file from a FORM post.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    * <a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * @param contents The new contents of the config file.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * @return The new config file contents.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    * @throws Exception<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   @RestMethod(name=POST, path="/",<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      description="Sets contents of config file from a FORM post.",<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      swagger=@MethodSwagger(<a name="line.130"></a>
-<span class="sourceLineNo">131</span>         parameters={<a name="line.131"></a>
-<span class="sourceLineNo">132</span>            @Parameter(in="formData", name="contents", description="New contents in INI file format.")<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      )<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   )<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   public ObjectMap setConfigContentsFormPost(@FormData("contents") String contents) throws Exception {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return setConfigContents(new StringReader(contents));<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>   /**<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    * [PUT /] - Sets contents of config file.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    * <a name="line.142"></a>
-<span class="sourceLineNo">143</span>    * @param contents The new contents of the config file.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    * @return The new config file contents.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    * @throws Exception<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    */<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   @RestMethod(name=PUT, path="/",<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      description="Sets contents of config file.",<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      swagger=@MethodSwagger(<a name="line.149"></a>
-<span class="sourceLineNo">150</span>         parameters={<a name="line.150"></a>
-<span class="sourceLineNo">151</span>            @Parameter(in="body", description="New contents in INI file format.")<a name="line.151"></a>
-<span class="sourceLineNo">152</span>         }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      )<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   )<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   public ObjectMap setConfigContents(@Body Reader contents) throws Exception {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      return getServletConfig().getConfig().load(contents, true).asMap();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>   /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    * [PUT /{section}] - Add or overwrite a config file section.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    * <a name="line.161"></a>
-<span class="sourceLineNo">162</span>    * @param section The section name.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    * @param contents The new contents of the config file section.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    * @return The new section.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    * @throws Exception<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   @RestMethod(name=PUT, path="/{section}",<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      description="Add or overwrite a config file section.",<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      swagger=@MethodSwagger(<a name="line.169"></a>
-<span class="sourceLineNo">170</span>         parameters={<a name="line.170"></a>
-<span class="sourceLineNo">171</span>            @Parameter(in="path", name="section", description="Section name."),<a name="line.171"></a>
-<span class="sourceLineNo">172</span>            @Parameter(in="body", description="New contents for section as a simple map with string keys and values.")<a name="line.172"></a>
-<span class="sourceLineNo">173</span>         }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      )<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   )<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   public ObjectMap setConfigSection(@Path("section") String section, @Body Map&lt;String,Object&gt; contents) throws Exception {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      getServletConfig().getConfig().setSection(section, null, contents);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return getSection(section);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>   /**<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    * [PUT /{section}/{key}] - Add or overwrite a config file entry.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    * <a name="line.183"></a>
-<span class="sourceLineNo">184</span>    * @param section The section name.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    * @param key The section key.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    * @param value The new value.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    * @return The new value.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    * @throws Exception<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   @RestMethod(name=PUT, path="/{section}/{key}",<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      description="Add or overwrite a config file entry.",<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      swagger=@MethodSwagger(<a name="line.192"></a>
-<span class="sourceLineNo">193</span>         parameters={<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            @Parameter(in="path", name="section", description="Section name."),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>            @Parameter(in="path", name="key", description="Entry name."),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>            @Parameter(in="body", description="New value as a string.")<a name="line.196"></a>
-<span class="sourceLineNo">197</span>         }<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      )<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   )<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   public String setConfigSection(@Path("section") String section, @Path("key") String key, @Body String value) throws Exception {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      getServletConfig().getConfig().set(section + '/' + key, value);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      return getSection(section).getString(key);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   }<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>   private ObjectMap getSection(String name) throws Exception {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      ObjectMap m = getServletConfig().getConfig().getSectionAsMap(name);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      if (m == null)<a name="line.207"></a>
-<span class="sourceLineNo">208</span>         throw new RestException(SC_NOT_FOUND, "Section not found.");<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return m;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>}<a name="line.211"></a>
+<span class="sourceLineNo">024</span>import org.apache.juneau.rest.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.rest.annotation.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.rest.annotation.Body;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Shows contents of the microservice configuration file.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>@RestResource(<a name="line.31"></a>
+<span class="sourceLineNo">032</span>   path="/config",<a name="line.32"></a>
+<span class="sourceLineNo">033</span>   title="Configuration",<a name="line.33"></a>
+<span class="sourceLineNo">034</span>   description="Contents of configuration file.",<a name="line.34"></a>
+<span class="sourceLineNo">035</span>   htmldoc=@HtmlDoc(<a name="line.35"></a>
+<span class="sourceLineNo">036</span>      navlinks={<a name="line.36"></a>
+<span class="sourceLineNo">037</span>         "up: request:/..",<a name="line.37"></a>
+<span class="sourceLineNo">038</span>         "options: servlet:/?method=OPTIONS",<a name="line.38"></a>
+<span class="sourceLineNo">039</span>         "edit: servlet:/edit"<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      }<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   )<a name="line.41"></a>
+<span class="sourceLineNo">042</span>)<a name="line.42"></a>
+<span class="sourceLineNo">043</span>public class ConfigResource extends RestServletDefault {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   private static final long serialVersionUID = 1L;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>   /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    * [GET /] - Show contents of config file.<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    * <a name="line.48"></a>
+<span class="sourceLineNo">049</span>    * @return The config file.<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    * @throws Exception<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   @RestMethod(name=GET, path="/", description="Show contents of config file.")<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   public ObjectMap getConfig() throws Exception {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      return getServletConfig().getConfig().asMap();<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>   /**<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    * [GET /edit] - Show config file edit page.<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    * <a name="line.59"></a>
+<span class="sourceLineNo">060</span>    * @param req The HTTP request.<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    * @return The config file as a reader resource.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    * @throws Exception<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   @RestMethod(name=GET, path="/edit", description="Edit config file.")<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   public Form getConfigEditForm(RestRequest req) throws Exception {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      return form().id("form").action("servlet:/").method("POST").enctype("application/x-www-form-urlencoded").children(<a name="line.66"></a>
+<span class="sourceLineNo">067</span>         div()._class("data").children(<a name="line.67"></a>
+<span class="sourceLineNo">068</span>            table(<a name="line.68"></a>
+<span class="sourceLineNo">069</span>               tr(td().style("text-align:right").children(button("submit","Submit"),button("reset","Reset"))),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>               tr(th().child("Contents")),<a name="line.70"></a>
+<span class="sourceLineNo">071</span>               tr(th().child(<a name="line.71"></a>
+<span class="sourceLineNo">072</span>                  textarea().name("contents").rows(40).cols(120).style("white-space:pre;word-wrap:normal;overflow-x:scroll;font-family:monospace;")<a name="line.72"></a>
+<span class="sourceLineNo">073</span>                     .text(getServletConfig().getConfig().toString()))<a name="line.73"></a>
+<span class="sourceLineNo">074</span>               )<a name="line.74"></a>
+<span class="sourceLineNo">075</span>            )<a name="line.75"></a>
+<span class="sourceLineNo">076</span>         )<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      );<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>   /**<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    * [GET /{section}] - Show config file section.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    * <a name="line.82"></a>
+<span class="sourceLineNo">083</span>    * @param section The section name.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    * @return The config file section.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    * @throws Exception<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   @RestMethod(name=GET, path="/{section}",<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      description="Show config file section.",<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      swagger=@MethodSwagger(<a name="line.89"></a>
+<span class="sourceLineNo">090</span>         parameters={<a name="line.90"></a>
+<span class="sourceLineNo">091</span>            @Parameter(in="path", name="section", description="Section name.")<a name="line.91"></a>
+<span class="sourceLineNo">092</span>         }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      )<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   )<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   public ObjectMap getConfigSection(@Path("section") String section) throws Exception {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      return getSection(section);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   }<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>   /**<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    * [GET /{section}/{key}] - Show config file entry.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    * <a name="line.101"></a>
+<span class="sourceLineNo">102</span>    * @param section The section name.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    * @param key The section key.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    * @return The value of the config file entry.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    * @throws Exception<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   @RestMethod(name=GET, path="/{section}/{key}",<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      description="Show config file entry.",<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      swagger=@MethodSwagger(<a name="line.109"></a>
+<span class="sourceLineNo">110</span>         parameters={<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            @Parameter(in="path", name="section", description="Section name."),<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            @Parameter(in="path", name="key", description="Entry name.")<a name="line.112"></a>
+<span class="sourceLineNo">113</span>         }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      )<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   )<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   public String getConfigEntry(@Path("section") String section, @Path("key") String key) throws Exception {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      return getSection(section).getString(key);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>   /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    * [POST /] - Sets contents of config file from a FORM post.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    * <a name="line.122"></a>
+<span class="sourceLineNo">123</span>    * @param contents The new contents of the config file.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    * @return The new config file contents.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    * @throws Exception<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   @RestMethod(name=POST, path="/",<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      description="Sets contents of config file from a FORM post.",<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      swagger=@MethodSwagger(<a name="line.129"></a>
+<span class="sourceLineNo">130</span>         parameters={<a name="line.130"></a>
+<span class="sourceLineNo">131</span>            @Parameter(in="formData", name="contents", description="New contents in INI file format.")<a name="line.131"></a>
+<span class="sourceLineNo">132</span>         }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      )<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   )<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   public ObjectMap setConfigContentsFormPost(@FormData("contents") String contents) throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return setConfigContents(new StringReader(contents));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>   /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    * [PUT /] - Sets contents of config file.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    * <a name="line.141"></a>
+<span class="sourceLineNo">142</span>    * @param contents The new contents of the config file.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    * @return The new config file contents.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    * @throws Exception<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   @RestMethod(name=PUT, path="/",<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      description="Sets contents of config file.",<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      swagger=@MethodSwagger(<a name="line.148"></a>
+<span class="sourceLineNo">149</span>         parameters={<a name="line.149"></a>
+<span class="sourceLineNo">150</span>            @Parameter(in="body", description="New contents in INI file format.")<a name="line.150"></a>
+<span class="sourceLineNo">151</span>         }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      )<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   )<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   public ObjectMap setConfigContents(@Body Reader contents) throws Exception {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      return getServletConfig().getConfig().load(contents, true).asMap();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>   /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    * [PUT /{section}] - Add or overwrite a config file section.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    * <a name="line.160"></a>
+<span class="sourceLineNo">161</span>    * @param section The section name.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    * @param contents The new contents of the config file section.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    * @return The new section.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    * @throws Exception<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    */<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   @RestMethod(name=PUT, path="/{section}",<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      description="Add or overwrite a config file section.",<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      swagger=@MethodSwagger(<a name="line.168"></a>
+<span class="sourceLineNo">169</span>         parameters={<a name="line.169"></a>
+<span class="sourceLineNo">170</span>            @Parameter(in="path", name="section", description="Section name."),<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            @Parameter(in="body", description="New contents for section as a simple map with string keys and values.")<a name="line.171"></a>
+<span class="sourceLineNo">172</span>         }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      )<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   )<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   public ObjectMap setConfigSection(@Path("section") String section, @Body Map&lt;String,Object&gt; contents) throws Exception {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      getServletConfig().getConfig().setSection(section, null, contents);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return getSection(section);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>   /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    * [PUT /{section}/{key}] - Add or overwrite a config file entry.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    * <a name="line.182"></a>
+<span class="sourceLineNo">183</span>    * @param section The section name.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    * @param key The section key.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    * @param value The new value.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    * @return The new value.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    * @throws Exception<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    */<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   @RestMethod(name=PUT, path="/{section}/{key}",<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      description="Add or overwrite a config file entry.",<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      swagger=@MethodSwagger(<a name="line.191"></a>
+<span class="sourceLineNo">192</span>         parameters={<a name="line.192"></a>
+<span class="sourceLineNo">193</span>            @Parameter(in="path", name="section", description="Section name."),<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            @Parameter(in="path", name="key", description="Entry name."),<a name="line.194"></a>
+<span class="sourceLineNo">195</span>            @Parameter(in="body", description="New value as a string.")<a name="line.195"></a>
+<span class="sourceLineNo">196</span>         }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      )<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   )<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   public String setConfigSection(@Path("section") String section, @Path("key") String key, @Body String value) throws Exception {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      getServletConfig().getConfig().set(section + '/' + key, value);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return getSection(section).getString(key);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>   private ObjectMap getSection(String name) throws Exception {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      ObjectMap m = getServletConfig().getConfig().getSectionAsMap(name);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      if (m == null)<a name="line.206"></a>
+<span class="sourceLineNo">207</span>         throw new RestException(SC_NOT_FOUND, "Section not found.");<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      return m;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>}<a name="line.210"></a>
 
 
 
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DebugResource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DebugResource.html
index 4a24f12..675cb71 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DebugResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DebugResource.html
@@ -47,7 +47,7 @@
 <span class="sourceLineNo">039</span>   allowedMethodParams="OPTIONS,POST"<a name="line.39"></a>
 <span class="sourceLineNo">040</span>)<a name="line.40"></a>
 <span class="sourceLineNo">041</span>@SuppressWarnings("javadoc")<a name="line.41"></a>
-<span class="sourceLineNo">042</span>public class DebugResource extends Resource {<a name="line.42"></a>
+<span class="sourceLineNo">042</span>public class DebugResource extends RestServletDefault {<a name="line.42"></a>
 <span class="sourceLineNo">043</span>   private static final long serialVersionUID = 1L;<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
 <span class="sourceLineNo">045</span>   /**<a name="line.45"></a>
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
index 3b36c39..917aa62 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
@@ -33,354 +33,353 @@
 <span class="sourceLineNo">025</span>import javax.servlet.*;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.juneau.annotation.*;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.juneau.microservice.*;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.rest.*;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.rest.annotation.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.rest.converters.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.transforms.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.utils.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * REST resource that allows access to a file system directory.<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * <a name="line.37"></a>
-<span class="sourceLineNo">038</span> * &lt;p&gt;<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * The root directory is specified in one of two ways:<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * &lt;ul class='spaced-list'&gt;<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *    &lt;li&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *       Specifying the location via a &lt;l&gt;DirectoryResource.rootDir&lt;/l&gt; property.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *    &lt;li&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *       Overriding the {@link #getRootDir()} method.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * &lt;/ul&gt;<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * <a name="line.46"></a>
-<span class="sourceLineNo">047</span> * &lt;p&gt;<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * Read/write access control is handled through the following properties:<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * &lt;ul class='spaced-list'&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> *    &lt;li&gt;<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *       &lt;l&gt;DirectoryResource.allowViews&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows view and download access to files.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> *    &lt;li&gt;<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *       &lt;l&gt;DirectoryResource.allowPuts&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be created or overwritten.<a name="line.53"></a>
-<span class="sourceLineNo">054</span> *    &lt;li&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *       &lt;l&gt;DirectoryResource.allowDeletes&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be deleted.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * &lt;/ul&gt;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * <a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;p&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * Access can also be controlled by overriding the {@link #checkAccess(RestRequest)} method.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@RestResource(<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   title="File System Explorer",<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   description="Contents of $RA{path}",<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   messages="nls/DirectoryResource",<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   htmldoc=@HtmlDoc(<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      navlinks={<a name="line.66"></a>
-<span class="sourceLineNo">067</span>         "up: request:/..",<a name="line.67"></a>
-<span class="sourceLineNo">068</span>         "options: servlet:/?method=OPTIONS"<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      }<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   ),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   allowedMethodParams="*",<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   properties={<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      @Property(name="DirectoryResource.rootDir", value="")<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   }<a name="line.75"></a>
-<span class="sourceLineNo">076</span>)<a name="line.76"></a>
-<span class="sourceLineNo">077</span>public class DirectoryResource extends Resource {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   private static final long serialVersionUID = 1L;<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>   private File rootDir;     // The root directory<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>   // Settings enabled through servlet init parameters<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   boolean allowDeletes, allowPuts, allowViews;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>   private static Logger logger = Logger.getLogger(DirectoryResource.class.getName());<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>   @Override /* Servlet */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   public void init() throws ServletException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      RestContextProperties p = getProperties();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      rootDir = new File(p.getString("DirectoryResource.rootDir"));<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      allowViews = p.getBoolean("DirectoryResource.allowViews", false);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      allowDeletes = p.getBoolean("DirectoryResource.allowDeletes", false);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      allowPuts = p.getBoolean("DirectoryResource.allowPuts", false);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>   /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    * Returns the root directory defined by the 'rootDir' init parameter.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    * <a name="line.98"></a>
-<span class="sourceLineNo">099</span>    * &lt;p&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    * Subclasses can override this method to provide their own root directory.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * <a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * @return The root directory.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    */<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   protected File getRootDir() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (rootDir == null) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>         rootDir = new File(getProperties().getString("rootDir"));<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         if (! rootDir.exists())<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            if (! rootDir.mkdirs())<a name="line.108"></a>
-<span class="sourceLineNo">109</span>               throw new RuntimeException("Could not create root dir");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      return rootDir;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>   /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    * [GET /*] - On directories, returns a directory listing.  On files, returns information about the file.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    * <a name="line.116"></a>
-<span class="sourceLineNo">117</span>    * @param req The HTTP request.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    * @return Either a FileResource or list of FileResources depending on whether it's a<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    *    file or directory.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   @RestMethod(name=GET, path="/*",<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      description="On directories, returns a directory listing.\nOn files, returns information about the file.",<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      converters={Queryable.class}<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   )<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   public Object doGet(RestRequest req) throws Exception {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      checkAccess(req);<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>      String pathInfo = req.getPathInfo();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      File f = pathInfo == null ? rootDir : new File(rootDir.getAbsolutePath() + pathInfo);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (!f.exists())<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>      req.setAttribute("path", f.getAbsolutePath());<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>      if (f.isDirectory()) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>         List&lt;FileResource&gt; l = new LinkedList&lt;&gt;();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>         File[] files = f.listFiles();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>         if (files != null) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>            for (File fc : files) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>               URL fUrl = new URL(req.getRequestURL().append("/").append(fc.getName()).toString());<a name="line.142"></a>
-<span class="sourceLineNo">143</span>               l.add(new FileResource(fc, fUrl));<a name="line.143"></a>
-<span class="sourceLineNo">144</span>            }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>         }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>         return l;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return new FileResource(f, new URL(req.getRequestURL().toString()));<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>   /**<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    * [DELETE /*] - Delete a file on the file system.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    * <a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * @param req The HTTP request.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * @return The message &lt;js&gt;"File deleted"&lt;/js&gt; if successful.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   @RestMethod(name=DELETE, path="/*",<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      description="Delete a file on the file system."<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   )<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   public Object doDelete(RestRequest req) throws Exception {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      checkAccess(req);<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      deleteFile(f);<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>      if (req.getHeader("Accept").contains("text/html"))<a name="line.168"></a>
-<span class="sourceLineNo">169</span>         return new Redirect();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      return "File deleted";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>   /**<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    * [PUT /*] - Add or overwrite a file on the file system.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    * <a name="line.175"></a>
-<span class="sourceLineNo">176</span>    * @param req The HTTP request.<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * @return The message &lt;js&gt;"File added"&lt;/js&gt; if successful.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   @RestMethod(name=PUT, path="/*",<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      description="Add or overwrite a file on the file system."<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   )<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   public Object doPut(RestRequest req) throws Exception {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      checkAccess(req);<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      try (InputStream is = req.getInputStream(); OutputStream os = new BufferedOutputStream(new FileOutputStream(f))) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>         IOPipe.create(is, os).run();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      if (req.getContentType().contains("html"))<a name="line.191"></a>
-<span class="sourceLineNo">192</span>         return new Redirect(parentSubPath);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return "File added";<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>   /**<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    * [VIEW /*] - View the contents of a file.  <a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * <a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * &lt;p&gt;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * Applies to files only.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    * <a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * @param req The HTTP request.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * @param res The HTTP response.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    * @return A Reader containing the contents of the file.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   @RestMethod(name="VIEW", path="/*",<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      description="View the contents of a file.\nApplies to files only."<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   )<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   public Reader doView(RestRequest req, RestResponse res) throws Exception {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      checkAccess(req);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>      if (!f.exists())<a name="line.215"></a>
-<span class="sourceLineNo">216</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      if (f.isDirectory())<a name="line.218"></a>
-<span class="sourceLineNo">219</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not available on directories");<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>      res.setContentType("text/plain");<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return new FileReader(f);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>   /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    * [DOWNLOAD /*] - Download the contents of a file.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    * <a name="line.227"></a>
-<span class="sourceLineNo">228</span>    * &lt;p&gt;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    * Applies to files only.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    * <a name="line.230"></a>
-<span class="sourceLineNo">231</span>    * @param req The HTTP request.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    * @param res The HTTP response.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    * @return A Reader containing the contents of the file.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   @RestMethod(name="DOWNLOAD", path="/*",<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      description="Download the contents of a file.\nApplies to files only."<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   )<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   public Reader doDownload(RestRequest req, RestResponse res) throws Exception {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      checkAccess(req);<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>      if (!f.exists())<a name="line.244"></a>
-<span class="sourceLineNo">245</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>      if (f.isDirectory())<a name="line.247"></a>
-<span class="sourceLineNo">248</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not available on directories");<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>      res.setContentType("application");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      return new FileReader(f);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   }<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>   /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    * Verify that the specified request is allowed.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    * <a name="line.256"></a>
-<span class="sourceLineNo">257</span>    * &lt;p&gt;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    * Subclasses can override this method to provide customized behavior.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    * Method should throw a {@link RestException} if the request should be disallowed.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    * <a name="line.260"></a>
-<span class="sourceLineNo">261</span>    * @param req The HTTP request.<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   protected void checkAccess(RestRequest req) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String method = req.getMethod();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      if (method.equals("VIEW") &amp;&amp; ! allowViews)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not enabled");<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (method.equals("PUT") &amp;&amp; ! allowPuts)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "PUT not enabled");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      if (method.equals("DELETE") &amp;&amp; ! allowDeletes)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DELETE not enabled");<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (method.equals("DOWNLOAD") &amp;&amp; ! allowViews)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not enabled");<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>   /** File POJO */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   public class FileResource {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      private File f;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      private URL url;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>       * Constructor.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>       * <a name="line.282"></a>
-<span class="sourceLineNo">283</span>       * @param f The file.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>       * @param url The URL of the file resource.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>       */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      public FileResource(File f, URL url) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>         this.f = f;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>         this.url = url;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>      // Bean property getters<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>      /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>       * @return The URL of the file resource.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>       */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      public URL getUrl() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>         return url;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>      /**<a name="line.300"></a>
-<span class="sourceLineNo">301</span>       * @return The file type.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>       */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      public String getType() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>         return (f.isDirectory() ? "dir" : "file");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>      /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>       * @return The file name.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>       */<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      public String getName() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>         return f.getName();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>       * @return The file size.<a name="line.315"></a>
-<span class="sourceLineNo">316</span>       */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      public long getSize() {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>         return f.length();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>      /**<a name="line.321"></a>
-<span class="sourceLineNo">322</span>       * @return The file last modified timestamp.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>       */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      @Swap(DateSwap.ISO8601DTP.class)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      public Date getLastModified() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>         return new Date(f.lastModified());<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>       * @return A hyperlink to view the contents of the file.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>       * @throws Exception If access is not allowed.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>       */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      public URL getView() throws Exception {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.334"></a>
-<span class="sourceLineNo">335</span>            return new URL(url + "?method=VIEW");<a name="line.335"></a>
-<span class="sourceLineNo">336</span>         return null;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>      /**<a name="line.339"></a>
-<span class="sourceLineNo">340</span>       * @return A hyperlink to download the contents of the file.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>       * @throws Exception If access is not allowed.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>       */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      public URL getDownload() throws Exception {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.344"></a>
-<span class="sourceLineNo">345</span>            return new URL(url + "?method=DOWNLOAD");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>         return null;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>       * @return A hyperlink to delete the file.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>       * @throws Exception If access is not allowed.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>       */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      public URL getDelete() throws Exception {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>         if (allowDeletes &amp;&amp; f.canWrite())<a name="line.354"></a>
-<span class="sourceLineNo">355</span>            return new URL(url + "?method=DELETE");<a name="line.355"></a>
-<span class="sourceLineNo">356</span>         return null;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>   /** Utility method */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   private void deleteFile(File f) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      try {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>         if (f.isDirectory()) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>            File[] files = f.listFiles();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>            if (files != null) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>               for (File fc : files)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>                  deleteFile(fc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>            }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>         }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>         f.delete();<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      } catch (Exception e) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>         logger.log(WARNING, "Cannot delete file '" + f.getAbsolutePath() + "'", e);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>}<a name="line.375"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.rest.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.juneau.rest.annotation.*;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.juneau.rest.converters.*;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.juneau.transforms.*;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.juneau.utils.*;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * REST resource that allows access to a file system directory.<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * <a name="line.36"></a>
+<span class="sourceLineNo">037</span> * &lt;p&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * The root directory is specified in one of two ways:<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * &lt;ul class='spaced-list'&gt;<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *    &lt;li&gt;<a name="line.40"></a>
+<span class="sourceLineNo">041</span> *       Specifying the location via a &lt;l&gt;DirectoryResource.rootDir&lt;/l&gt; property.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *    &lt;li&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *       Overriding the {@link #getRootDir()} method.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * &lt;/ul&gt;<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * <a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;p&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * Read/write access control is handled through the following properties:<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * &lt;ul class='spaced-list'&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span> *    &lt;li&gt;<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *       &lt;l&gt;DirectoryResource.allowViews&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows view and download access to files.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *    &lt;li&gt;<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *       &lt;l&gt;DirectoryResource.allowPuts&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be created or overwritten.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *    &lt;li&gt;<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *       &lt;l&gt;DirectoryResource.allowDeletes&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be deleted.<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * &lt;/ul&gt;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * <a name="line.56"></a>
+<span class="sourceLineNo">057</span> * &lt;p&gt;<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * Access can also be controlled by overriding the {@link #checkAccess(RestRequest)} method.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>@RestResource(<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   title="File System Explorer",<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   description="Contents of $RA{path}",<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   messages="nls/DirectoryResource",<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   htmldoc=@HtmlDoc(<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      navlinks={<a name="line.65"></a>
+<span class="sourceLineNo">066</span>         "up: request:/..",<a name="line.66"></a>
+<span class="sourceLineNo">067</span>         "options: servlet:/?method=OPTIONS"<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      }<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   ),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   allowedMethodParams="*",<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   properties={<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      @Property(name="DirectoryResource.rootDir", value="")<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   }<a name="line.74"></a>
+<span class="sourceLineNo">075</span>)<a name="line.75"></a>
+<span class="sourceLineNo">076</span>public class DirectoryResource extends RestServletDefault {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   private static final long serialVersionUID = 1L;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>   private File rootDir;     // The root directory<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>   // Settings enabled through servlet init parameters<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   boolean allowDeletes, allowPuts, allowViews;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>   private static Logger logger = Logger.getLogger(DirectoryResource.class.getName());<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>   @Override /* Servlet */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   public void init() throws ServletException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      RestContextProperties p = getProperties();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      rootDir = new File(p.getString("DirectoryResource.rootDir"));<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      allowViews = p.getBoolean("DirectoryResource.allowViews", false);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      allowDeletes = p.getBoolean("DirectoryResource.allowDeletes", false);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      allowPuts = p.getBoolean("DirectoryResource.allowPuts", false);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>   /**<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    * Returns the root directory defined by the 'rootDir' init parameter.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    * <a name="line.97"></a>
+<span class="sourceLineNo">098</span>    * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    * Subclasses can override this method to provide their own root directory.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    * <a name="line.100"></a>
+<span class="sourceLineNo">101</span>    * @return The root directory.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   protected File getRootDir() {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      if (rootDir == null) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>         rootDir = new File(getProperties().getString("rootDir"));<a name="line.105"></a>
+<span class="sourceLineNo">106</span>         if (! rootDir.exists())<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            if (! rootDir.mkdirs())<a name="line.107"></a>
+<span class="sourceLineNo">108</span>               throw new RuntimeException("Could not create root dir");<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      }<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      return rootDir;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>   /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    * [GET /*] - On directories, returns a directory listing.  On files, returns information about the file.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    * <a name="line.115"></a>
+<span class="sourceLineNo">116</span>    * @param req The HTTP request.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    * @return Either a FileResource or list of FileResources depending on whether it's a<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    *    file or directory.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    */<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   @RestMethod(name=GET, path="/*",<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      description="On directories, returns a directory listing.\nOn files, returns information about the file.",<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      converters={Queryable.class}<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   )<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   public Object doGet(RestRequest req) throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      checkAccess(req);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>      String pathInfo = req.getPathInfo();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      File f = pathInfo == null ? rootDir : new File(rootDir.getAbsolutePath() + pathInfo);<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>      if (!f.exists())<a name="line.131"></a>
+<span class="sourceLineNo">132</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>      req.setAttribute("path", f.getAbsolutePath());<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>      if (f.isDirectory()) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>         List&lt;FileResource&gt; l = new LinkedList&lt;&gt;();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>         File[] files = f.listFiles();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>         if (files != null) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            for (File fc : files) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>               URL fUrl = new URL(req.getRequestURL().append("/").append(fc.getName()).toString());<a name="line.141"></a>
+<span class="sourceLineNo">142</span>               l.add(new FileResource(fc, fUrl));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>            }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>         }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>         return l;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>      return new FileResource(f, new URL(req.getRequestURL().toString()));<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   }<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>   /**<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    * [DELETE /*] - Delete a file on the file system.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    * <a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * @param req The HTTP request.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    * @return The message &lt;js&gt;"File deleted"&lt;/js&gt; if successful.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   @RestMethod(name=DELETE, path="/*",<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      description="Delete a file on the file system."<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   )<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   public Object doDelete(RestRequest req) throws Exception {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      checkAccess(req);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      deleteFile(f);<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (req.getHeader("Accept").contains("text/html"))<a name="line.167"></a>
+<span class="sourceLineNo">168</span>         return new Redirect();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return "File deleted";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>   /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    * [PUT /*] - Add or overwrite a file on the file system.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    * <a name="line.174"></a>
+<span class="sourceLineNo">175</span>    * @param req The HTTP request.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    * @return The message &lt;js&gt;"File added"&lt;/js&gt; if successful.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   @RestMethod(name=PUT, path="/*",<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      description="Add or overwrite a file on the file system."<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   )<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   public Object doPut(RestRequest req) throws Exception {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      checkAccess(req);<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      try (InputStream is = req.getInputStream(); OutputStream os = new BufferedOutputStream(new FileOutputStream(f))) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>         IOPipe.create(is, os).run();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (req.getContentType().contains("html"))<a name="line.190"></a>
+<span class="sourceLineNo">191</span>         return new Redirect(parentSubPath);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      return "File added";<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>   /**<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    * [VIEW /*] - View the contents of a file.  <a name="line.196"></a>
+<span class="sourceLineNo">197</span>    * <a name="line.197"></a>
+<span class="sourceLineNo">198</span>    * &lt;p&gt;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    * Applies to files only.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    * <a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * @param req The HTTP request.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * @param res The HTTP response.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    * @return A Reader containing the contents of the file.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    */<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   @RestMethod(name="VIEW", path="/*",<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      description="View the contents of a file.\nApplies to files only."<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   )<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   public Reader doView(RestRequest req, RestResponse res) throws Exception {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      checkAccess(req);<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      if (!f.exists())<a name="line.214"></a>
+<span class="sourceLineNo">215</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>      if (f.isDirectory())<a name="line.217"></a>
+<span class="sourceLineNo">218</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not available on directories");<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>      res.setContentType("text/plain");<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      return new FileReader(f);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>   /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    * [DOWNLOAD /*] - Download the contents of a file.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    * <a name="line.226"></a>
+<span class="sourceLineNo">227</span>    * &lt;p&gt;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    * Applies to files only.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    * <a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * @param req The HTTP request.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    * @param res The HTTP response.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    * @return A Reader containing the contents of the file.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   @RestMethod(name="DOWNLOAD", path="/*",<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      description="Download the contents of a file.\nApplies to files only."<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   )<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   public Reader doDownload(RestRequest req, RestResponse res) throws Exception {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      checkAccess(req);<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      if (!f.exists())<a name="line.243"></a>
+<span class="sourceLineNo">244</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (f.isDirectory())<a name="line.246"></a>
+<span class="sourceLineNo">247</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not available on directories");<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>      res.setContentType("application");<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return new FileReader(f);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>   /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    * Verify that the specified request is allowed.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    * <a name="line.255"></a>
+<span class="sourceLineNo">256</span>    * &lt;p&gt;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    * Subclasses can override this method to provide customized behavior.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    * Method should throw a {@link RestException} if the request should be disallowed.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * <a name="line.259"></a>
+<span class="sourceLineNo">260</span>    * @param req The HTTP request.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   protected void checkAccess(RestRequest req) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      String method = req.getMethod();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (method.equals("VIEW") &amp;&amp; ! allowViews)<a name="line.264"></a>
+<span class="sourceLineNo">265</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not enabled");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      if (method.equals("PUT") &amp;&amp; ! allowPuts)<a name="line.266"></a>
+<span class="sourceLineNo">267</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "PUT not enabled");<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      if (method.equals("DELETE") &amp;&amp; ! allowDeletes)<a name="line.268"></a>
+<span class="sourceLineNo">269</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DELETE not enabled");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (method.equals("DOWNLOAD") &amp;&amp; ! allowViews)<a name="line.270"></a>
+<span class="sourceLineNo">271</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not enabled");<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>   /** File POJO */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   public class FileResource {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      private File f;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      private URL url;<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>      /**<a name="line.279"></a>
+<span class="sourceLineNo">280</span>       * Constructor.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>       * <a name="line.281"></a>
+<span class="sourceLineNo">282</span>       * @param f The file.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>       * @param url The URL of the file resource.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>       */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      public FileResource(File f, URL url) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>         this.f = f;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>         this.url = url;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // Bean property getters<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>      /**<a name="line.292"></a>
+<span class="sourceLineNo">293</span>       * @return The URL of the file resource.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>       */<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      public URL getUrl() {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>         return url;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>      /**<a name="line.299"></a>
+<span class="sourceLineNo">300</span>       * @return The file type.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>       */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      public String getType() {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>         return (f.isDirectory() ? "dir" : "file");<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      /**<a name="line.306"></a>
+<span class="sourceLineNo">307</span>       * @return The file name.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>       */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      public String getName() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>         return f.getName();<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>      /**<a name="line.313"></a>
+<span class="sourceLineNo">314</span>       * @return The file size.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>       */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      public long getSize() {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>         return f.length();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>      /**<a name="line.320"></a>
+<span class="sourceLineNo">321</span>       * @return The file last modified timestamp.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>       */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      @Swap(DateSwap.ISO8601DTP.class)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      public Date getLastModified() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>         return new Date(f.lastModified());<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      /**<a name="line.328"></a>
+<span class="sourceLineNo">329</span>       * @return A hyperlink to view the contents of the file.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>       * @throws Exception If access is not allowed.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>       */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      public URL getView() throws Exception {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            return new URL(url + "?method=VIEW");<a name="line.334"></a>
+<span class="sourceLineNo">335</span>         return null;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      /**<a name="line.338"></a>
+<span class="sourceLineNo">339</span>       * @return A hyperlink to download the contents of the file.<a name="line.339"></a>
+<span class="sourceLineNo">340</span>       * @throws Exception If access is not allowed.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>       */<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      public URL getDownload() throws Exception {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            return new URL(url + "?method=DOWNLOAD");<a name="line.344"></a>
+<span class="sourceLineNo">345</span>         return null;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>      /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>       * @return A hyperlink to delete the file.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>       * @throws Exception If access is not allowed.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>       */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      public URL getDelete() throws Exception {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>         if (allowDeletes &amp;&amp; f.canWrite())<a name="line.353"></a>
+<span class="sourceLineNo">354</span>            return new URL(url + "?method=DELETE");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>         return null;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>   /** Utility method */<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   private void deleteFile(File f) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      try {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>         if (f.isDirectory()) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>            File[] files = f.listFiles();<a name="line.363"></a>
+<span class="sourceLineNo">364</span>            if (files != null) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>               for (File fc : files)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>                  deleteFile(fc);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>            }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>         }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>         f.delete();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      } catch (Exception e) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>         logger.log(WARNING, "Cannot delete file '" + f.getAbsolutePath() + "'", e);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>}<a name="line.374"></a>
 
 
 
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.html
index 3b36c39..917aa62 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.html
@@ -33,354 +33,353 @@
 <span class="sourceLineNo">025</span>import javax.servlet.*;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.juneau.annotation.*;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.juneau.microservice.*;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.rest.*;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.rest.annotation.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.rest.converters.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.transforms.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.utils.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * REST resource that allows access to a file system directory.<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * <a name="line.37"></a>
-<span class="sourceLineNo">038</span> * &lt;p&gt;<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * The root directory is specified in one of two ways:<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * &lt;ul class='spaced-list'&gt;<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *    &lt;li&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *       Specifying the location via a &lt;l&gt;DirectoryResource.rootDir&lt;/l&gt; property.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *    &lt;li&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *       Overriding the {@link #getRootDir()} method.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * &lt;/ul&gt;<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * <a name="line.46"></a>
-<span class="sourceLineNo">047</span> * &lt;p&gt;<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * Read/write access control is handled through the following properties:<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * &lt;ul class='spaced-list'&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> *    &lt;li&gt;<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *       &lt;l&gt;DirectoryResource.allowViews&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows view and download access to files.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> *    &lt;li&gt;<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *       &lt;l&gt;DirectoryResource.allowPuts&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be created or overwritten.<a name="line.53"></a>
-<span class="sourceLineNo">054</span> *    &lt;li&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *       &lt;l&gt;DirectoryResource.allowDeletes&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be deleted.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * &lt;/ul&gt;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * <a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;p&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * Access can also be controlled by overriding the {@link #checkAccess(RestRequest)} method.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@RestResource(<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   title="File System Explorer",<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   description="Contents of $RA{path}",<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   messages="nls/DirectoryResource",<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   htmldoc=@HtmlDoc(<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      navlinks={<a name="line.66"></a>
-<span class="sourceLineNo">067</span>         "up: request:/..",<a name="line.67"></a>
-<span class="sourceLineNo">068</span>         "options: servlet:/?method=OPTIONS"<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      }<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   ),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   allowedMethodParams="*",<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   properties={<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      @Property(name="DirectoryResource.rootDir", value="")<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   }<a name="line.75"></a>
-<span class="sourceLineNo">076</span>)<a name="line.76"></a>
-<span class="sourceLineNo">077</span>public class DirectoryResource extends Resource {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   private static final long serialVersionUID = 1L;<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>   private File rootDir;     // The root directory<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>   // Settings enabled through servlet init parameters<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   boolean allowDeletes, allowPuts, allowViews;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>   private static Logger logger = Logger.getLogger(DirectoryResource.class.getName());<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>   @Override /* Servlet */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   public void init() throws ServletException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      RestContextProperties p = getProperties();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      rootDir = new File(p.getString("DirectoryResource.rootDir"));<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      allowViews = p.getBoolean("DirectoryResource.allowViews", false);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      allowDeletes = p.getBoolean("DirectoryResource.allowDeletes", false);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      allowPuts = p.getBoolean("DirectoryResource.allowPuts", false);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>   /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    * Returns the root directory defined by the 'rootDir' init parameter.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    * <a name="line.98"></a>
-<span class="sourceLineNo">099</span>    * &lt;p&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    * Subclasses can override this method to provide their own root directory.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * <a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * @return The root directory.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    */<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   protected File getRootDir() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (rootDir == null) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>         rootDir = new File(getProperties().getString("rootDir"));<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         if (! rootDir.exists())<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            if (! rootDir.mkdirs())<a name="line.108"></a>
-<span class="sourceLineNo">109</span>               throw new RuntimeException("Could not create root dir");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      return rootDir;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>   /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    * [GET /*] - On directories, returns a directory listing.  On files, returns information about the file.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    * <a name="line.116"></a>
-<span class="sourceLineNo">117</span>    * @param req The HTTP request.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    * @return Either a FileResource or list of FileResources depending on whether it's a<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    *    file or directory.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   @RestMethod(name=GET, path="/*",<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      description="On directories, returns a directory listing.\nOn files, returns information about the file.",<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      converters={Queryable.class}<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   )<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   public Object doGet(RestRequest req) throws Exception {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      checkAccess(req);<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>      String pathInfo = req.getPathInfo();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      File f = pathInfo == null ? rootDir : new File(rootDir.getAbsolutePath() + pathInfo);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (!f.exists())<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>      req.setAttribute("path", f.getAbsolutePath());<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>      if (f.isDirectory()) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>         List&lt;FileResource&gt; l = new LinkedList&lt;&gt;();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>         File[] files = f.listFiles();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>         if (files != null) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>            for (File fc : files) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>               URL fUrl = new URL(req.getRequestURL().append("/").append(fc.getName()).toString());<a name="line.142"></a>
-<span class="sourceLineNo">143</span>               l.add(new FileResource(fc, fUrl));<a name="line.143"></a>
-<span class="sourceLineNo">144</span>            }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>         }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>         return l;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return new FileResource(f, new URL(req.getRequestURL().toString()));<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>   /**<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    * [DELETE /*] - Delete a file on the file system.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    * <a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * @param req The HTTP request.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * @return The message &lt;js&gt;"File deleted"&lt;/js&gt; if successful.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   @RestMethod(name=DELETE, path="/*",<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      description="Delete a file on the file system."<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   )<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   public Object doDelete(RestRequest req) throws Exception {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      checkAccess(req);<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      deleteFile(f);<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>      if (req.getHeader("Accept").contains("text/html"))<a name="line.168"></a>
-<span class="sourceLineNo">169</span>         return new Redirect();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      return "File deleted";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>   /**<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    * [PUT /*] - Add or overwrite a file on the file system.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    * <a name="line.175"></a>
-<span class="sourceLineNo">176</span>    * @param req The HTTP request.<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * @return The message &lt;js&gt;"File added"&lt;/js&gt; if successful.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   @RestMethod(name=PUT, path="/*",<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      description="Add or overwrite a file on the file system."<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   )<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   public Object doPut(RestRequest req) throws Exception {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      checkAccess(req);<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      try (InputStream is = req.getInputStream(); OutputStream os = new BufferedOutputStream(new FileOutputStream(f))) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>         IOPipe.create(is, os).run();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      if (req.getContentType().contains("html"))<a name="line.191"></a>
-<span class="sourceLineNo">192</span>         return new Redirect(parentSubPath);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return "File added";<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>   /**<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    * [VIEW /*] - View the contents of a file.  <a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * <a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * &lt;p&gt;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * Applies to files only.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    * <a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * @param req The HTTP request.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * @param res The HTTP response.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    * @return A Reader containing the contents of the file.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   @RestMethod(name="VIEW", path="/*",<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      description="View the contents of a file.\nApplies to files only."<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   )<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   public Reader doView(RestRequest req, RestResponse res) throws Exception {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      checkAccess(req);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>      if (!f.exists())<a name="line.215"></a>
-<span class="sourceLineNo">216</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      if (f.isDirectory())<a name="line.218"></a>
-<span class="sourceLineNo">219</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not available on directories");<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>      res.setContentType("text/plain");<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return new FileReader(f);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>   /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    * [DOWNLOAD /*] - Download the contents of a file.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    * <a name="line.227"></a>
-<span class="sourceLineNo">228</span>    * &lt;p&gt;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    * Applies to files only.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    * <a name="line.230"></a>
-<span class="sourceLineNo">231</span>    * @param req The HTTP request.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    * @param res The HTTP response.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    * @return A Reader containing the contents of the file.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   @RestMethod(name="DOWNLOAD", path="/*",<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      description="Download the contents of a file.\nApplies to files only."<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   )<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   public Reader doDownload(RestRequest req, RestResponse res) throws Exception {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      checkAccess(req);<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>      if (!f.exists())<a name="line.244"></a>
-<span class="sourceLineNo">245</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>      if (f.isDirectory())<a name="line.247"></a>
-<span class="sourceLineNo">248</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not available on directories");<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>      res.setContentType("application");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      return new FileReader(f);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   }<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>   /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    * Verify that the specified request is allowed.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    * <a name="line.256"></a>
-<span class="sourceLineNo">257</span>    * &lt;p&gt;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    * Subclasses can override this method to provide customized behavior.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    * Method should throw a {@link RestException} if the request should be disallowed.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    * <a name="line.260"></a>
-<span class="sourceLineNo">261</span>    * @param req The HTTP request.<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   protected void checkAccess(RestRequest req) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String method = req.getMethod();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      if (method.equals("VIEW") &amp;&amp; ! allowViews)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not enabled");<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (method.equals("PUT") &amp;&amp; ! allowPuts)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "PUT not enabled");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      if (method.equals("DELETE") &amp;&amp; ! allowDeletes)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DELETE not enabled");<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (method.equals("DOWNLOAD") &amp;&amp; ! allowViews)<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not enabled");<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>   /** File POJO */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   public class FileResource {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      private File f;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      private URL url;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>       * Constructor.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>       * <a name="line.282"></a>
-<span class="sourceLineNo">283</span>       * @param f The file.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>       * @param url The URL of the file resource.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>       */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      public FileResource(File f, URL url) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>         this.f = f;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>         this.url = url;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>      // Bean property getters<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>      /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>       * @return The URL of the file resource.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>       */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      public URL getUrl() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>         return url;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>      /**<a name="line.300"></a>
-<span class="sourceLineNo">301</span>       * @return The file type.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>       */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      public String getType() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>         return (f.isDirectory() ? "dir" : "file");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>      /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>       * @return The file name.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>       */<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      public String getName() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>         return f.getName();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>       * @return The file size.<a name="line.315"></a>
-<span class="sourceLineNo">316</span>       */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      public long getSize() {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>         return f.length();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>      /**<a name="line.321"></a>
-<span class="sourceLineNo">322</span>       * @return The file last modified timestamp.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>       */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      @Swap(DateSwap.ISO8601DTP.class)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      public Date getLastModified() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>         return new Date(f.lastModified());<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>      /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>       * @return A hyperlink to view the contents of the file.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>       * @throws Exception If access is not allowed.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>       */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      public URL getView() throws Exception {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.334"></a>
-<span class="sourceLineNo">335</span>            return new URL(url + "?method=VIEW");<a name="line.335"></a>
-<span class="sourceLineNo">336</span>         return null;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>      /**<a name="line.339"></a>
-<span class="sourceLineNo">340</span>       * @return A hyperlink to download the contents of the file.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>       * @throws Exception If access is not allowed.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>       */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      public URL getDownload() throws Exception {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.344"></a>
-<span class="sourceLineNo">345</span>            return new URL(url + "?method=DOWNLOAD");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>         return null;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>       * @return A hyperlink to delete the file.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>       * @throws Exception If access is not allowed.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>       */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      public URL getDelete() throws Exception {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>         if (allowDeletes &amp;&amp; f.canWrite())<a name="line.354"></a>
-<span class="sourceLineNo">355</span>            return new URL(url + "?method=DELETE");<a name="line.355"></a>
-<span class="sourceLineNo">356</span>         return null;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>   /** Utility method */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   private void deleteFile(File f) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      try {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>         if (f.isDirectory()) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>            File[] files = f.listFiles();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>            if (files != null) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>               for (File fc : files)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>                  deleteFile(fc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>            }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>         }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>         f.delete();<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      } catch (Exception e) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>         logger.log(WARNING, "Cannot delete file '" + f.getAbsolutePath() + "'", e);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>}<a name="line.375"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.rest.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.juneau.rest.annotation.*;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.juneau.rest.converters.*;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.juneau.transforms.*;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.juneau.utils.*;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * REST resource that allows access to a file system directory.<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * <a name="line.36"></a>
+<span class="sourceLineNo">037</span> * &lt;p&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * The root directory is specified in one of two ways:<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * &lt;ul class='spaced-list'&gt;<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *    &lt;li&gt;<a name="line.40"></a>
+<span class="sourceLineNo">041</span> *       Specifying the location via a &lt;l&gt;DirectoryResource.rootDir&lt;/l&gt; property.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *    &lt;li&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *       Overriding the {@link #getRootDir()} method.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * &lt;/ul&gt;<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * <a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;p&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * Read/write access control is handled through the following properties:<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * &lt;ul class='spaced-list'&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span> *    &lt;li&gt;<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *       &lt;l&gt;DirectoryResource.allowViews&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows view and download access to files.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *    &lt;li&gt;<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *       &lt;l&gt;DirectoryResource.allowPuts&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be created or overwritten.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *    &lt;li&gt;<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *       &lt;l&gt;DirectoryResource.allowDeletes&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be deleted.<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * &lt;/ul&gt;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * <a name="line.56"></a>
+<span class="sourceLineNo">057</span> * &lt;p&gt;<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * Access can also be controlled by overriding the {@link #checkAccess(RestRequest)} method.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>@RestResource(<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   title="File System Explorer",<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   description="Contents of $RA{path}",<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   messages="nls/DirectoryResource",<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   htmldoc=@HtmlDoc(<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      navlinks={<a name="line.65"></a>
+<span class="sourceLineNo">066</span>         "up: request:/..",<a name="line.66"></a>
+<span class="sourceLineNo">067</span>         "options: servlet:/?method=OPTIONS"<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      }<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   ),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   allowedMethodParams="*",<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   properties={<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      @Property(name="DirectoryResource.rootDir", value="")<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   }<a name="line.74"></a>
+<span class="sourceLineNo">075</span>)<a name="line.75"></a>
+<span class="sourceLineNo">076</span>public class DirectoryResource extends RestServletDefault {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   private static final long serialVersionUID = 1L;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>   private File rootDir;     // The root directory<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>   // Settings enabled through servlet init parameters<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   boolean allowDeletes, allowPuts, allowViews;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>   private static Logger logger = Logger.getLogger(DirectoryResource.class.getName());<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>   @Override /* Servlet */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   public void init() throws ServletException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      RestContextProperties p = getProperties();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      rootDir = new File(p.getString("DirectoryResource.rootDir"));<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      allowViews = p.getBoolean("DirectoryResource.allowViews", false);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      allowDeletes = p.getBoolean("DirectoryResource.allowDeletes", false);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      allowPuts = p.getBoolean("DirectoryResource.allowPuts", false);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>   /**<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    * Returns the root directory defined by the 'rootDir' init parameter.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    * <a name="line.97"></a>
+<span class="sourceLineNo">098</span>    * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    * Subclasses can override this method to provide their own root directory.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    * <a name="line.100"></a>
+<span class="sourceLineNo">101</span>    * @return The root directory.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   protected File getRootDir() {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      if (rootDir == null) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>         rootDir = new File(getProperties().getString("rootDir"));<a name="line.105"></a>
+<span class="sourceLineNo">106</span>         if (! rootDir.exists())<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            if (! rootDir.mkdirs())<a name="line.107"></a>
+<span class="sourceLineNo">108</span>               throw new RuntimeException("Could not create root dir");<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      }<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      return rootDir;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>   /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    * [GET /*] - On directories, returns a directory listing.  On files, returns information about the file.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    * <a name="line.115"></a>
+<span class="sourceLineNo">116</span>    * @param req The HTTP request.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    * @return Either a FileResource or list of FileResources depending on whether it's a<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    *    file or directory.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    */<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   @RestMethod(name=GET, path="/*",<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      description="On directories, returns a directory listing.\nOn files, returns information about the file.",<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      converters={Queryable.class}<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   )<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   public Object doGet(RestRequest req) throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      checkAccess(req);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>      String pathInfo = req.getPathInfo();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      File f = pathInfo == null ? rootDir : new File(rootDir.getAbsolutePath() + pathInfo);<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>      if (!f.exists())<a name="line.131"></a>
+<span class="sourceLineNo">132</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>      req.setAttribute("path", f.getAbsolutePath());<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>      if (f.isDirectory()) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>         List&lt;FileResource&gt; l = new LinkedList&lt;&gt;();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>         File[] files = f.listFiles();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>         if (files != null) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            for (File fc : files) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>               URL fUrl = new URL(req.getRequestURL().append("/").append(fc.getName()).toString());<a name="line.141"></a>
+<span class="sourceLineNo">142</span>               l.add(new FileResource(fc, fUrl));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>            }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>         }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>         return l;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>      return new FileResource(f, new URL(req.getRequestURL().toString()));<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   }<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>   /**<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    * [DELETE /*] - Delete a file on the file system.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    * <a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * @param req The HTTP request.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    * @return The message &lt;js&gt;"File deleted"&lt;/js&gt; if successful.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   @RestMethod(name=DELETE, path="/*",<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      description="Delete a file on the file system."<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   )<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   public Object doDelete(RestRequest req) throws Exception {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      checkAccess(req);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      deleteFile(f);<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (req.getHeader("Accept").contains("text/html"))<a name="line.167"></a>
+<span class="sourceLineNo">168</span>         return new Redirect();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return "File deleted";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>   /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    * [PUT /*] - Add or overwrite a file on the file system.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    * <a name="line.174"></a>
+<span class="sourceLineNo">175</span>    * @param req The HTTP request.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    * @return The message &lt;js&gt;"File added"&lt;/js&gt; if successful.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   @RestMethod(name=PUT, path="/*",<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      description="Add or overwrite a file on the file system."<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   )<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   public Object doPut(RestRequest req) throws Exception {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      checkAccess(req);<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      try (InputStream is = req.getInputStream(); OutputStream os = new BufferedOutputStream(new FileOutputStream(f))) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>         IOPipe.create(is, os).run();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (req.getContentType().contains("html"))<a name="line.190"></a>
+<span class="sourceLineNo">191</span>         return new Redirect(parentSubPath);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      return "File added";<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>   /**<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    * [VIEW /*] - View the contents of a file.  <a name="line.196"></a>
+<span class="sourceLineNo">197</span>    * <a name="line.197"></a>
+<span class="sourceLineNo">198</span>    * &lt;p&gt;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    * Applies to files only.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    * <a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * @param req The HTTP request.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * @param res The HTTP response.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    * @return A Reader containing the contents of the file.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    */<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   @RestMethod(name="VIEW", path="/*",<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      description="View the contents of a file.\nApplies to files only."<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   )<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   public Reader doView(RestRequest req, RestResponse res) throws Exception {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      checkAccess(req);<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      if (!f.exists())<a name="line.214"></a>
+<span class="sourceLineNo">215</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>      if (f.isDirectory())<a name="line.217"></a>
+<span class="sourceLineNo">218</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not available on directories");<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>      res.setContentType("text/plain");<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      return new FileReader(f);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>   /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    * [DOWNLOAD /*] - Download the contents of a file.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    * <a name="line.226"></a>
+<span class="sourceLineNo">227</span>    * &lt;p&gt;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    * Applies to files only.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    * <a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * @param req The HTTP request.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    * @param res The HTTP response.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    * @return A Reader containing the contents of the file.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   @RestMethod(name="DOWNLOAD", path="/*",<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      description="Download the contents of a file.\nApplies to files only."<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   )<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   public Reader doDownload(RestRequest req, RestResponse res) throws Exception {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      checkAccess(req);<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      if (!f.exists())<a name="line.243"></a>
+<span class="sourceLineNo">244</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (f.isDirectory())<a name="line.246"></a>
+<span class="sourceLineNo">247</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not available on directories");<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>      res.setContentType("application");<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return new FileReader(f);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>   /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    * Verify that the specified request is allowed.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    * <a name="line.255"></a>
+<span class="sourceLineNo">256</span>    * &lt;p&gt;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    * Subclasses can override this method to provide customized behavior.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    * Method should throw a {@link RestException} if the request should be disallowed.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * <a name="line.259"></a>
+<span class="sourceLineNo">260</span>    * @param req The HTTP request.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   protected void checkAccess(RestRequest req) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      String method = req.getMethod();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (method.equals("VIEW") &amp;&amp; ! allowViews)<a name="line.264"></a>
+<span class="sourceLineNo">265</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "VIEW not enabled");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      if (method.equals("PUT") &amp;&amp; ! allowPuts)<a name="line.266"></a>
+<span class="sourceLineNo">267</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "PUT not enabled");<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      if (method.equals("DELETE") &amp;&amp; ! allowDeletes)<a name="line.268"></a>
+<span class="sourceLineNo">269</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DELETE not enabled");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (method.equals("DOWNLOAD") &amp;&amp; ! allowViews)<a name="line.270"></a>
+<span class="sourceLineNo">271</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "DOWNLOAD not enabled");<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>   /** File POJO */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   public class FileResource {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      private File f;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      private URL url;<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>      /**<a name="line.279"></a>
+<span class="sourceLineNo">280</span>       * Constructor.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>       * <a name="line.281"></a>
+<span class="sourceLineNo">282</span>       * @param f The file.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>       * @param url The URL of the file resource.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>       */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      public FileResource(File f, URL url) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>         this.f = f;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>         this.url = url;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // Bean property getters<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>      /**<a name="line.292"></a>
+<span class="sourceLineNo">293</span>       * @return The URL of the file resource.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>       */<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      public URL getUrl() {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>         return url;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>      /**<a name="line.299"></a>
+<span class="sourceLineNo">300</span>       * @return The file type.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>       */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      public String getType() {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>         return (f.isDirectory() ? "dir" : "file");<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      /**<a name="line.306"></a>
+<span class="sourceLineNo">307</span>       * @return The file name.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>       */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      public String getName() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>         return f.getName();<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>      /**<a name="line.313"></a>
+<span class="sourceLineNo">314</span>       * @return The file size.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>       */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      public long getSize() {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>         return f.length();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>      /**<a name="line.320"></a>
+<span class="sourceLineNo">321</span>       * @return The file last modified timestamp.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>       */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      @Swap(DateSwap.ISO8601DTP.class)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      public Date getLastModified() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>         return new Date(f.lastModified());<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      /**<a name="line.328"></a>
+<span class="sourceLineNo">329</span>       * @return A hyperlink to view the contents of the file.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>       * @throws Exception If access is not allowed.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>       */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      public URL getView() throws Exception {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            return new URL(url + "?method=VIEW");<a name="line.334"></a>
+<span class="sourceLineNo">335</span>         return null;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      /**<a name="line.338"></a>
+<span class="sourceLineNo">339</span>       * @return A hyperlink to download the contents of the file.<a name="line.339"></a>
+<span class="sourceLineNo">340</span>       * @throws Exception If access is not allowed.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>       */<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      public URL getDownload() throws Exception {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>         if (allowViews &amp;&amp; f.canRead() &amp;&amp; ! f.isDirectory())<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            return new URL(url + "?method=DOWNLOAD");<a name="line.344"></a>
+<span class="sourceLineNo">345</span>         return null;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>      /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>       * @return A hyperlink to delete the file.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>       * @throws Exception If access is not allowed.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>       */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      public URL getDelete() throws Exception {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>         if (allowDeletes &amp;&amp; f.canWrite())<a name="line.353"></a>
+<span class="sourceLineNo">354</span>            return new URL(url + "?method=DELETE");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>         return null;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>   /** Utility method */<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   private void deleteFile(File f) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      try {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>         if (f.isDirectory()) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>            File[] files = f.listFiles();<a name="line.363"></a>
+<span class="sourceLineNo">364</span>            if (files != null) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>               for (File fc : files)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>                  deleteFile(fc);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>            }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>         }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>         f.delete();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      } catch (Exception e) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>         logger.log(WARNING, "Cannot delete file '" + f.getAbsolutePath() + "'", e);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>}<a name="line.374"></a>
 
 
 
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
index b2a3c1c..4cc1ad6 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
@@ -34,311 +34,310 @@
 <span class="sourceLineNo">026</span>import org.apache.juneau.annotation.*;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.juneau.config.*;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.juneau.dto.LinkString;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.microservice.*;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.rest.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.rest.annotation.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.rest.converters.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.transforms.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * REST resource for viewing and accessing log files.<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>@RestResource(<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   path="/logs",<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   title="Log files",<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   description="Log files from this service",<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   properties={<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   },<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   allowedMethodParams="*",<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   pojoSwaps={<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      IteratorSwap.class,       // Allows Iterators and Iterables to be serialized.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>      DateSwap.ISO8601DT.class  // Serialize Date objects as ISO8601 strings.<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   }<a name="line.49"></a>
-<span class="sourceLineNo">050</span>)<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class LogsResource extends Resource {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   private static final long serialVersionUID = 1L;<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>   private File logDir;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   private LogEntryFormatter leFormatter;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>   private final FileFilter filter = new FileFilter() {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      @Override /* FileFilter */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      public boolean accept(File f) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>         return f.isDirectory() || f.getName().endsWith(".log");<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      }<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   };<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>   /**<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    * Initializes the log directory and formatter.<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    * <a name="line.66"></a>
-<span class="sourceLineNo">067</span>    * @param builder The resource config.<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    * @throws Exception<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    */<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   @RestHook(INIT) <a name="line.70"></a>
-<span class="sourceLineNo">071</span>   public void init(RestContextBuilder builder) throws Exception {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      Config c = builder.getConfig();<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>      logDir = new File(c.getString("Logging/logDir", "."));<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      leFormatter = new LogEntryFormatter(<a name="line.75"></a>
-<span class="sourceLineNo">076</span>         c.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.76"></a>
-<span class="sourceLineNo">077</span>         c.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.77"></a>
-<span class="sourceLineNo">078</span>         c.getBoolean("Logging/useStackTraceHashes")<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      );<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   }<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>   /**<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    * [GET /*] - Get file details or directory listing.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    * <a name="line.84"></a>
-<span class="sourceLineNo">085</span>    * @param req The HTTP request<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * @param res The HTTP response<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    * @param properties The writable properties for setting the descriptions.<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    * @param path The log file path.<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    * @return The log file.<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    * @throws Exception<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   @RestMethod(<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      name=GET,<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      path="/*",<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      swagger=@MethodSwagger(<a name="line.95"></a>
-<span class="sourceLineNo">096</span>         responses={@Response(200),@Response(404)}<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      )<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   )<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   public Object getFileOrDirectory(RestRequest req, RestResponse res, RequestProperties properties, @PathRemainder String path) throws Exception {<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>      File f = getFile(path);<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>      if (f.isDirectory()) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>         Set&lt;FileResource&gt; l = new TreeSet&lt;&gt;(new FileResourceComparator());<a name="line.104"></a>
-<span class="sourceLineNo">105</span>         File[] files = f.listFiles(filter);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>         if (files != null) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            for (File fc : files) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>               URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.108"></a>
-<span class="sourceLineNo">109</span>               l.add(new FileResource(fc, fUrl));<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>         }<a name="line.111"></a>
-<span class="sourceLineNo">112</span>         return l;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      }<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return new FileResource(f, new URI("servlet:/"));<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>   /**<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    * [VIEW /*] - Retrieve the contents of a log file.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    * <a name="line.120"></a>
-<span class="sourceLineNo">121</span>    * @param req The HTTP request.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    * @param res The HTTP response.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    * @param path The log file path.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * @param properties The writable properties for setting the descriptions.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * @param highlight If &lt;code&gt;true&lt;/code&gt;, add color highlighting based on severity.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    * @param start Optional start timestamp.  Don't print lines logged before the specified timestamp.  Example:  "&amp;amp;start=2014-01-23 11:25:47".<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    * @param end Optional end timestamp.  Don't print lines logged after the specified timestamp.  Example:  "&amp;amp;end=2014-01-23 11:25:47".<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    * @param thread Optional thread name filter.  Only show log entries with the specified thread name.  Example: "&amp;amp;thread=pool-33-thread-1".<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    * @param loggers Optional logger filter.  Only show log entries if they were produced by one of the specified loggers (simple class name).  Example: "&amp;amp;loggers=(LinkIndexService,LinkIndexRestService)".<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    * @throws Exception<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   @RestMethod(<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      name="VIEW",<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      path="/*",<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      swagger=@MethodSwagger(<a name="line.136"></a>
-<span class="sourceLineNo">137</span>         responses={@Response(200),@Response(404)}<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      )<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   )<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   public void viewFile(RestRequest req, RestResponse res, @PathRemainder String path, RequestProperties properties, @Query("highlight") boolean highlight, @Query("start") String start, @Query("end") String end, @Query("thread") String thread, @Query("loggers") String[] loggers, @Query("severity") String[] severity) throws Exception {<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>      File f = getFile(path);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      if (f.isDirectory())<a name="line.143"></a>
-<span class="sourceLineNo">144</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>      if (! highlight) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>         Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>         res.setContentType("text/plain");<a name="line.150"></a>
-<span class="sourceLineNo">151</span>         if (o instanceof Reader)<a name="line.151"></a>
-<span class="sourceLineNo">152</span>            res.setOutput(o);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>         else {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            try (LogParser p = (LogParser)o; Writer w = res.getNegotiatedWriter()) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>               p.writeTo(w);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>         }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>         return;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>      res.setContentType("text/html");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      try (PrintWriter w = res.getNegotiatedWriter()) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>         w.println("&lt;html&gt;&lt;body style='font-family:monospace;font-size:8pt;white-space:pre;'&gt;");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>         try (LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity)) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>            if (! lp.hasNext())<a name="line.165"></a>
-<span class="sourceLineNo">166</span>               w.append("&lt;span style='color:gray'&gt;[EMPTY]&lt;/span&gt;");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>            else for (LogParser.Entry le : lp) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>               char s = le.severity.charAt(0);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>               String color = "black";<a name="line.169"></a>
-<span class="sourceLineNo">170</span>               //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.170"></a>
-<span class="sourceLineNo">171</span>               if (s == 'I')<a name="line.171"></a>
-<span class="sourceLineNo">172</span>                  color = "#006400";<a name="line.172"></a>
-<span class="sourceLineNo">173</span>               else if (s == 'W')<a name="line.173"></a>
-<span class="sourceLineNo">174</span>                  color = "#CC8400";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>               else if (s == 'E' || s == 'S')<a name="line.175"></a>
-<span class="sourceLineNo">176</span>                  color = "#DD0000";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>               else if (s == 'D' || s == 'F' || s == 'T')<a name="line.177"></a>
-<span class="sourceLineNo">178</span>                  color = "#000064";<a name="line.178"></a>
-<span class="sourceLineNo">179</span>               w.append("&lt;span style='color:").append(color).append("'&gt;");<a name="line.179"></a>
-<span class="sourceLineNo">180</span>               le.appendHtml(w).append("&lt;/span&gt;");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            w.append("&lt;/body&gt;&lt;/html&gt;");<a name="line.182"></a>
-<span class="sourceLineNo">183</span>         }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>   /**<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    * <a name="line.189"></a>
-<span class="sourceLineNo">190</span>    * @param req The HTTP request.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    * @param path The log file path.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    * @param start Optional start timestamp.  Don't print lines logged before the specified timestamp.  Example:  "&amp;amp;start=2014-01-23 11:25:47".<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    * @param end Optional end timestamp.  Don't print lines logged after the specified timestamp.  Example:  "&amp;amp;end=2014-01-23 11:25:47".<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    * @param thread Optional thread name filter.  Only show log entries with the specified thread name.  Example: "&amp;amp;thread=pool-33-thread-1".<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    * @param loggers Optional logger filter.  Only show log entries if they were produced by one of the specified loggers (simple class name).  Example: "&amp;amp;loggers=(LinkIndexService,LinkIndexRestService)".<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    * @return The parsed contents of the log file.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * @throws Exception<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    */<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   @RestMethod(<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      name="PARSE",<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      path="/*",<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      converters=Queryable.class,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      swagger=@MethodSwagger(<a name="line.204"></a>
-<span class="sourceLineNo">205</span>         responses={@Response(200),@Response(404)}<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      )<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   )<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   public LogParser viewParsedEntries(RestRequest req, @PathRemainder String path, @Query("start") String start, @Query("end") String end, @Query("thread") String thread, @Query("loggers") String[] loggers, @Query("severity") String[] severity) throws Exception {<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>      File f = getFile(path);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (f.isDirectory())<a name="line.213"></a>
-<span class="sourceLineNo">214</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>      return getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>   /**<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    * [DOWNLOAD /*] - Download file.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    * <a name="line.221"></a>
-<span class="sourceLineNo">222</span>    * @param res The HTTP response.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    * @param path The log file path.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    * @return The contents of the log file.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    * @throws Exception<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   @RestMethod(<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      name="DOWNLOAD",<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      path="/*",<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      swagger=@MethodSwagger(<a name="line.230"></a>
-<span class="sourceLineNo">231</span>         responses={@Response(200),@Response(404)}<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      )<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   )<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      File f = getFile(path);<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>      if (f.isDirectory())<a name="line.238"></a>
-<span class="sourceLineNo">239</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "Download not available on directories");<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>      res.setContentType("application/octet-stream");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      res.setContentLength((int)f.length());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return new FileInputStream(f);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>   /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    * [DELETE /*] -