You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/09/24 20:08:41 UTC

[01/22] incubator-juneau-website git commit: Update javadocs.

Repository: incubator-juneau-website
Updated Branches:
  refs/heads/asf-site 24ee4a726 -> eb2492a56


http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestResource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestResource.html b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestResource.html
index 5cba008..9503d85 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestResource.html
@@ -636,139 +636,277 @@
 <span class="sourceLineNo">628</span>    * &lt;p&gt;<a name="line.628"></a>
 <span class="sourceLineNo">629</span>    * The programmatic equivalent to this annotation are the {@link RestConfig#setResourceResolver(Class)}/<a name="line.629"></a>
 <span class="sourceLineNo">630</span>    * {@link RestConfig#setResourceResolver(RestResourceResolver)} methods.<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    * &lt;br&gt;The value (class or instance) can also be set via the servlet context attribute<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    * * {@link RestContext#REST_resourceResolver}.<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    */<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   Class&lt;? extends RestResourceResolver&gt; resourceResolver() default RestResourceResolverSimple.class;<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>   /**<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    * Specifies the logger class to use for logging.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    *<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    * &lt;p&gt;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    * The default logger performs basic error logging to the Java logger.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    * Subclasses can be used to customize logging behavior on the resource.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    *<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    * &lt;p&gt;<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    * The programmatic equivalent to this annotation are the<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    * {@link RestConfig#setLogger(Class)}/{@link RestConfig#setLogger(RestLogger)} methods.<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    */<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   Class&lt;? extends RestLogger&gt; logger() default RestLogger.Normal.class;<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>    * Specifies the REST call handler class.<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    *<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    * &lt;p&gt;<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    * This class handles the basic lifecycle of an HTTP REST call.<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    * Subclasses can be used to customize how these HTTP calls are handled.<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    *<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    * &lt;p&gt;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    * The programmatic equivalent to this annotation are the<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    * {@link RestConfig#setCallHandler(Class)}/{@link RestConfig#setCallHandler(RestCallHandler)} methods.<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    */<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   Class&lt;? extends RestCallHandler&gt; callHandler() default RestCallHandler.class;<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>   /**<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    * Specifies the class used to retrieve title/description/swagger information about a resource.<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    *<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    * &lt;p&gt;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    * Subclasses can be used to customize the documentation on a resource.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    *<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    * &lt;p&gt;<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    * The programmatic equivalent to this annotation are the<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    * {@link RestConfig#setInfoProvider(Class)}/{@link RestConfig#setInfoProvider(RestInfoProvider)} methods.<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    */<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   Class&lt;? extends RestInfoProvider&gt; infoProvider() default RestInfoProvider.class;<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>   /**<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    * Specifies the serializer listener class to use for listening for non-fatal errors.<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    */<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   Class&lt;? extends SerializerListener&gt; serializerListener() default SerializerListener.class;<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>    * Specifies the parser listener class to use for listening for non-fatal errors.<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    */<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   Class&lt;? extends ParserListener&gt; parserListener() default ParserListener.class;<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>   /**<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    * Provides swagger-specific metadata on this resource.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    *<a name="line.686"></a>
-<span class="sourceLineNo">687</span>    * &lt;p&gt;<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    * Used to populate the auto-generated OPTIONS swagger documentation.<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    *<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    * &lt;p class='bcode'&gt;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    *       path=&lt;js&gt;"/addressBook"&lt;/js&gt;,<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    *<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    *       &lt;jc&gt;// Swagger info.&lt;/jc&gt;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    *       swagger=&lt;ja&gt;@ResourceSwagger&lt;/ja&gt;(<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    *          contact=&lt;js&gt;"{name:'John Smith',email:'john@smith.com'}"&lt;/js&gt;,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    *          license=&lt;js&gt;"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"&lt;/js&gt;,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    *          version=&lt;js&gt;"2.0"&lt;/js&gt;,<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    *          termsOfService=&lt;js&gt;"You're on your own."&lt;/js&gt;,<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    *          tags=&lt;js&gt;"[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]"&lt;/js&gt;,<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    *          externalDocs=&lt;js&gt;"{description:'Home page',url:'http://juneau.apache.org'}"&lt;/js&gt;<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    *       )<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    *    )<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    * &lt;/p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   ResourceSwagger swagger() default @ResourceSwagger;<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>   /**<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    * Provides HTML-doc-specific metadata on this method.<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    *<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    * &lt;p&gt;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    * Used to customize the output from the HTML Doc serializer.<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    * &lt;p class='bcode'&gt;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    *       path=&lt;js&gt;"/addressBook"&lt;/js&gt;,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    *<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    *       &lt;jc&gt;// Links on the HTML rendition page.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    *       // "request:/..." URIs are relative to the request URI.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    *       // "servlet:/..." URIs are relative to the servlet URI.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    *       // "$C{...}" variables are pulled from the config file.&lt;/jc&gt;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    *          &lt;jc&gt;// Widgets for $W variables.&lt;/jc&gt;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    *          widgets={<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    *             PoweredByJuneau.&lt;jk&gt;class&lt;/jk&gt;,<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    *             ContentTypeLinks.&lt;jk&gt;class&lt;/jk&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    *          }<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    *          links={<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    *             &lt;js&gt;"up: request:/.."&lt;/js&gt;,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    *             &lt;js&gt;"options: servlet:/?method=OPTIONS"&lt;/js&gt;,<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    *             &lt;js&gt;"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"&lt;/js&gt;,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    *          },<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    *          aside={<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    *             &lt;js&gt;"&amp;lt;div style='max-width:400px;min-width:200px'&amp;gt;"&lt;/js&gt;,<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    *             &lt;js&gt;" &amp;lt;p&amp;gt;Proof-of-concept resource that shows off the capabilities of working with POJO resources.&amp;lt;/p&amp;gt;"&lt;/js&gt;,<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    *             &lt;js&gt;" &amp;lt;p&amp;gt;Provides examples of: &amp;lt;/p&amp;gt;"&lt;/js&gt;,<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    *             &lt;js&gt;"    &amp;lt;ul&amp;gt;"&lt;/js&gt;,<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    *             &lt;js&gt;"       &amp;lt;li&amp;gt;XML and RDF namespaces"&lt;/js&gt;,<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    *             &lt;js&gt;"       &amp;lt;li&amp;gt;Swagger documentation"&lt;/js&gt;,<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    *             &lt;js&gt;"       &amp;lt;li&amp;gt;Widgets"&lt;/js&gt;,<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    *             &lt;js&gt;"    &amp;lt;/ul&amp;gt;"&lt;/js&gt;,<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    *             &lt;js&gt;" &amp;lt;p style='text-weight:bold;text-decoration:underline;'&amp;gt;Available Content Types&amp;lt;/p&amp;gt;"&lt;/js&gt;,<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    *             &lt;js&gt;" $W{ContentTypeLinks}"&lt;/js&gt;,<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    *             &lt;js&gt;"&amp;lt;/div&amp;gt;"&lt;/js&gt;<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    *          },<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    *          footer=&lt;js&gt;"$W{PoweredByJuneau}"&lt;/js&gt;<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    *       )<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    *    )<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    * &lt;/p&gt;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    */<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   HtmlDoc htmldoc() default @HtmlDoc;<a name="line.751"></a>
-<span class="sourceLineNo">752</span><a name="line.752"></a>
-<span class="sourceLineNo">753</span>   /**<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    * Overrides the context path value for this resource and any child resources.<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    *<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    * &lt;p&gt;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    * This setting is useful if you want to use &lt;js&gt;"context:/child/path"&lt;/js&gt; URLs in child resource POJOs but<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    * the context path is not actually specified on the servlet container.<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    * The net effect is that the {@link RestRequest#getContextPath()} and {@link RestRequest#getServletPath()} methods<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    * will return this value instead of the actual context path of the web app.<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    */<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   String contextPath() default "";<a name="line.762"></a>
-<span class="sourceLineNo">763</span>}<a name="line.763"></a>
+<span class="sourceLineNo">631</span>    */<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   Class&lt;? extends RestResourceResolver&gt; resourceResolver() default RestResourceResolverSimple.class;<a name="line.632"></a>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>   /**<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    * Specifies the logger class to use for logging.<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    *<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    * &lt;p&gt;<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    * The default logger performs basic error logging to the Java logger.<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    * Subclasses can be used to customize logging behavior on the resource.<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    *<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    * &lt;p&gt;<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    * The programmatic equivalent to this annotation are the<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    * {@link RestConfig#setLogger(Class)}/{@link RestConfig#setLogger(RestLogger)} methods.<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    */<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   Class&lt;? extends RestLogger&gt; logger() default RestLogger.Normal.class;<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>   /**<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    * Specifies the REST call handler class.<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    *<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    * &lt;p&gt;<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    * This class handles the basic lifecycle of an HTTP REST call.<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    * Subclasses can be used to customize how these HTTP calls are handled.<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    *<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    * &lt;p&gt;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    * The programmatic equivalent to this annotation are the<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    * {@link RestConfig#setCallHandler(Class)}/{@link RestConfig#setCallHandler(RestCallHandler)} methods.<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    */<a name="line.657"></a>
+<span class="sourceLineNo">658</span>   Class&lt;? extends RestCallHandler&gt; callHandler() default RestCallHandler.class;<a name="line.658"></a>
+<span class="sourceLineNo">659</span><a name="line.659"></a>
+<span class="sourceLineNo">660</span>   /**<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    * Specifies the class used to retrieve title/description/swagger information about a resource.<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    *<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    * &lt;p&gt;<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    * Subclasses can be used to customize the documentation on a resource.<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    *<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    * &lt;p&gt;<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    * The programmatic equivalent to this annotation are the<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    * {@link RestConfig#setInfoProvider(Class)}/{@link RestConfig#setInfoProvider(RestInfoProvider)} methods.<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    */<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   Class&lt;? extends RestInfoProvider&gt; infoProvider() default RestInfoProvider.class;<a name="line.670"></a>
+<span class="sourceLineNo">671</span><a name="line.671"></a>
+<span class="sourceLineNo">672</span>   /**<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    * Specifies the serializer listener class to use for listening for non-fatal errors.<a name="line.673"></a>
+<span class="sourceLineNo">674</span>    */<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   Class&lt;? extends SerializerListener&gt; serializerListener() default SerializerListener.class;<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>   /**<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    * Specifies the parser listener class to use for listening for non-fatal errors.<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    */<a name="line.679"></a>
+<span class="sourceLineNo">680</span>   Class&lt;? extends ParserListener&gt; parserListener() default ParserListener.class;<a name="line.680"></a>
+<span class="sourceLineNo">681</span><a name="line.681"></a>
+<span class="sourceLineNo">682</span>   /**<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    * Provides swagger-specific metadata on this resource.<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    *<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    * &lt;p&gt;<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    * Used to populate the auto-generated OPTIONS swagger documentation.<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    *<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    * &lt;p class='bcode'&gt;<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    *       path=&lt;js&gt;"/addressBook"&lt;/js&gt;,<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    *<a name="line.692"></a>
+<span class="sourceLineNo">693</span>    *       &lt;jc&gt;// Swagger info.&lt;/jc&gt;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    *       swagger=&lt;ja&gt;@ResourceSwagger&lt;/ja&gt;(<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    *          contact=&lt;js&gt;"{name:'John Smith',email:'john@smith.com'}"&lt;/js&gt;,<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    *          license=&lt;js&gt;"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"&lt;/js&gt;,<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    *          version=&lt;js&gt;"2.0"&lt;/js&gt;,<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    *          termsOfService=&lt;js&gt;"You're on your own."&lt;/js&gt;,<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    *          tags=&lt;js&gt;"[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]"&lt;/js&gt;,<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    *          externalDocs=&lt;js&gt;"{description:'Home page',url:'http://juneau.apache.org'}"&lt;/js&gt;<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    *       )<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    *    )<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    * &lt;/p&gt;<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    */<a name="line.704"></a>
+<span class="sourceLineNo">705</span>   ResourceSwagger swagger() default @ResourceSwagger;<a name="line.705"></a>
+<span class="sourceLineNo">706</span><a name="line.706"></a>
+<span class="sourceLineNo">707</span>   /**<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    * Provides HTML-doc-specific metadata on this method.<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    *<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    * &lt;p&gt;<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    * Used to customize the output from the HTML Doc serializer.<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    * &lt;p class='bcode'&gt;<a name="line.712"></a>
+<span class="sourceLineNo">713</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    *       path=&lt;js&gt;"/addressBook"&lt;/js&gt;,<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    *<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    *       &lt;jc&gt;// Links on the HTML rendition page.<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    *       // "request:/..." URIs are relative to the request URI.<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    *       // "servlet:/..." URIs are relative to the servlet URI.<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    *       // "$C{...}" variables are pulled from the config file.&lt;/jc&gt;<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    *          &lt;jc&gt;// Widgets for $W variables.&lt;/jc&gt;<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    *          widgets={<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    *             PoweredByJuneau.&lt;jk&gt;class&lt;/jk&gt;,<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    *             ContentTypeLinks.&lt;jk&gt;class&lt;/jk&gt;<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    *          }<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    *          links={<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    *             &lt;js&gt;"up: request:/.."&lt;/js&gt;,<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    *             &lt;js&gt;"options: servlet:/?method=OPTIONS"&lt;/js&gt;,<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    *             &lt;js&gt;"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"&lt;/js&gt;,<a name="line.729"></a>
+<span class="sourceLineNo">730</span>    *          },<a name="line.730"></a>
+<span class="sourceLineNo">731</span>    *          aside={<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    *             &lt;js&gt;"&amp;lt;div style='max-width:400px;min-width:200px'&amp;gt;"&lt;/js&gt;,<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    *             &lt;js&gt;" &amp;lt;p&amp;gt;Proof-of-concept resource that shows off the capabilities of working with POJO resources.&amp;lt;/p&amp;gt;"&lt;/js&gt;,<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    *             &lt;js&gt;" &amp;lt;p&amp;gt;Provides examples of: &amp;lt;/p&amp;gt;"&lt;/js&gt;,<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    *             &lt;js&gt;"    &amp;lt;ul&amp;gt;"&lt;/js&gt;,<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    *             &lt;js&gt;"       &amp;lt;li&amp;gt;XML and RDF namespaces"&lt;/js&gt;,<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    *             &lt;js&gt;"       &amp;lt;li&amp;gt;Swagger documentation"&lt;/js&gt;,<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    *             &lt;js&gt;"       &amp;lt;li&amp;gt;Widgets"&lt;/js&gt;,<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    *             &lt;js&gt;"    &amp;lt;/ul&amp;gt;"&lt;/js&gt;,<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    *             &lt;js&gt;" &amp;lt;p style='text-weight:bold;text-decoration:underline;'&amp;gt;Available Content Types&amp;lt;/p&amp;gt;"&lt;/js&gt;,<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    *             &lt;js&gt;" $W{ContentTypeLinks}"&lt;/js&gt;,<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    *             &lt;js&gt;"&amp;lt;/div&amp;gt;"&lt;/js&gt;<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    *          },<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    *          footer=&lt;js&gt;"$W{PoweredByJuneau}"&lt;/js&gt;<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    *       )<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    *    )<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    * &lt;/p&gt;<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    */<a name="line.748"></a>
+<span class="sourceLineNo">749</span>   HtmlDoc htmldoc() default @HtmlDoc;<a name="line.749"></a>
+<span class="sourceLineNo">750</span><a name="line.750"></a>
+<span class="sourceLineNo">751</span>   /**<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    * Overrides the context path value for this resource and any child resources.<a name="line.752"></a>
+<span class="sourceLineNo">753</span>    *<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    * &lt;p&gt;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    * This setting is useful if you want to use &lt;js&gt;"context:/child/path"&lt;/js&gt; URLs in child resource POJOs but<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    * the context path is not actually specified on the servlet container.<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    * The net effect is that the {@link RestRequest#getContextPath()} and {@link RestRequest#getServletPath()} methods<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    * will return this value instead of the actual context path of the web app.<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    */<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   String contextPath() default "";<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>    * Enable header URL parameters.<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>    * When enabled, headers such as &lt;js&gt;"Accept"&lt;/js&gt; and &lt;js&gt;"Content-Type"&lt;/js&gt; to be passed in as URL query<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    * parameters.<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    * For example:  &lt;js&gt;"?Accept=text/json&amp;amp;Content-Type=text/json"&lt;/js&gt;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    *<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    * &lt;ul&gt;<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    *    &lt;li&gt;Boolean value.<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.allowHeaderParams"&lt;/js&gt;, or &lt;js&gt;"true"&lt;/js&gt; if not specified.<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    *    &lt;li&gt;Can contain variables.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>    *    &lt;li&gt;Parameter names are case-insensitive.<a name="line.774"></a>
+<span class="sourceLineNo">775</span>    *    &lt;li&gt;Useful for debugging REST interface using only a browser.<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    * &lt;/ul&gt;<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    */<a name="line.777"></a>
+<span class="sourceLineNo">778</span>   String allowHeaderParams() default "";<a name="line.778"></a>
+<span class="sourceLineNo">779</span><a name="line.779"></a>
+<span class="sourceLineNo">780</span>   /**<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    * Enable &lt;js&gt;"method"&lt;/js&gt; URL parameter for specific HTTP methods.<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    *<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    * &lt;p&gt;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    * When specified, the HTTP method can be overridden by passing in a &lt;js&gt;"method"&lt;/js&gt; URL parameter on a regular<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    * GET request.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    * For example:  &lt;js&gt;"?method=OPTIONS"&lt;/js&gt;<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    *<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    * &lt;p&gt;<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    * Example: &lt;js&gt;"HEAD,OPTIONS"&lt;/js&gt;<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    *<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    * &lt;ul&gt;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    *    &lt;li&gt;Format is a comma-delimited list of HTTP method names that can be passed in as a method parameter.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.allowMethodParam"&lt;/js&gt;, or &lt;js&gt;"HEAD,OPTIONS"&lt;/js&gt; if not specified.<a name="line.793"></a>
+<span class="sourceLineNo">794</span>    *    &lt;li&gt;Can contain variables.<a name="line.794"></a>
+<span class="sourceLineNo">795</span>    *    &lt;li&gt;Parameter name is case-insensitive.<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    *    &lt;li&gt;Use "*" to represent all methods.<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    *    &lt;li&gt;For backwards compatibility, "true" also means "*".<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    * &lt;/ul&gt;<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    *<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    * &lt;p&gt;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    * Note that per the &lt;a class="doclink"<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"&gt;HTTP specification&lt;/a&gt;, special care should<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    * be taken when allowing non-safe (POST, PUT, DELETE) methods to be invoked through GET requests.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    */<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   String allowMethodParam() default "";<a name="line.805"></a>
+<span class="sourceLineNo">806</span><a name="line.806"></a>
+<span class="sourceLineNo">807</span>   /**<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    * Enable &lt;js&gt;"body"&lt;/js&gt; URL parameter.<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>    * When enabled, the HTTP body content on PUT and POST requests can be passed in as text using the &lt;js&gt;"body"&lt;/js&gt;<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    * URL parameter.<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    * For example:  &lt;js&gt;"?body={name:'John%20Smith',age:45}"&lt;/js&gt;<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    *<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    * &lt;ul&gt;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    *    &lt;li&gt;Boolean value.<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.allowBodyParam"&lt;/js&gt;, or &lt;js&gt;"true"&lt;/js&gt; if not specified.<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    *    &lt;li&gt;Can contain variables.<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    *    &lt;li&gt;Parameter name is case-insensitive.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    *    &lt;li&gt;Useful for debugging PUT and POST methods using only a browser.<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    * &lt;/ul&gt;<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    */<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   String allowBodyParam() default "";<a name="line.823"></a>
+<span class="sourceLineNo">824</span><a name="line.824"></a>
+<span class="sourceLineNo">825</span>   /**<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    * Render stack traces.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>    *<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    * &lt;p&gt;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>    * Render stack traces in HTTP response bodies when errors occur.<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    *<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    * &lt;ul&gt;<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    *    &lt;li&gt;Boolean value.<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.renderResponseStackTraces"&lt;/js&gt;, or &lt;js&gt;"false"&lt;/js&gt; if not specified.<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    *    &lt;li&gt;Can contain variables.<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    *    &lt;li&gt;Useful for debugging, although allowing stack traces to be rendered may cause security concerns.<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    * &lt;/ul&gt;<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    */<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   String renderResponseStackTraces() default "";<a name="line.838"></a>
+<span class="sourceLineNo">839</span><a name="line.839"></a>
+<span class="sourceLineNo">840</span>   /**<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    * Use stack trace hashes.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    *<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    * &lt;p&gt;<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    * When enabled, the number of times an exception has occurred will be determined based on stack trace hashsums,<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    * made available through the {@link RestException#getOccurrence()} method.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    *<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    * &lt;ul&gt;<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    *    &lt;li&gt;Boolean value.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.useStackTraceHashes"&lt;/js&gt;, or &lt;js&gt;"true"&lt;/js&gt; if not specified.<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    *    &lt;li&gt;Can contain variables.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    * &lt;/ul&gt;<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    */<a name="line.852"></a>
+<span class="sourceLineNo">853</span>   String useStackTraceHashes() default "";<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>   /**<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    * Default character encoding.<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    *<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    * &lt;p&gt;<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    * The default character encoding for the request and response if not specified on the request.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    *<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    * &lt;ul&gt;<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    *    &lt;li&gt;String value.<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.defaultCharset"&lt;/js&gt;, or &lt;js&gt;"utf-8"&lt;/js&gt; if not specified.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    *    &lt;li&gt;Can contain variables.<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    *    &lt;li&gt;Can be overridden at the method level using {@link RestMethod#defaultCharset() @RestMethod.defaultCharset()}.<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    * &lt;/ul&gt;<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    */<a name="line.867"></a>
+<span class="sourceLineNo">868</span>   String defaultCharset() default "";<a name="line.868"></a>
+<span class="sourceLineNo">869</span><a name="line.869"></a>
+<span class="sourceLineNo">870</span>   /**<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    * Expected format of request parameters.<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    *<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    * Possible values:<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    * &lt;ul class='spaced-list'&gt;<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    *    &lt;li&gt;<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    *       &lt;js&gt;"UON"&lt;/js&gt; - URL-Encoded Object Notation.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    *       &lt;br&gt;This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    *    &lt;li&gt;<a name="line.878"></a>
+<span class="sourceLineNo">879</span>    *       &lt;js&gt;"PLAIN"&lt;/js&gt; - Plain text.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    *       &lt;br&gt;This treats request parameters as plain text.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    *       &lt;br&gt;Only POJOs directly convertible from &lt;l&gt;Strings&lt;/l&gt; can be represented in parameters when using this<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    *       mode.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    * &lt;/ul&gt;<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    *<a name="line.884"></a>
+<span class="sourceLineNo">885</span>    * &lt;p&gt;<a name="line.885"></a>
+<span class="sourceLineNo">886</span>    * Note that the parameter value &lt;js&gt;"(foo)"&lt;/js&gt; is interpreted as &lt;js&gt;"(foo)"&lt;/js&gt; when using plain mode, but<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    * &lt;js&gt;"foo"&lt;/js&gt; when using UON mode.<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    *<a name="line.888"></a>
+<span class="sourceLineNo">889</span>    * &lt;p&gt;<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    * The format can also be specified per-parameter using the {@link FormData#format() @FormData.format()} and<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    * {@link Query#format() @Query.format()} annotations.<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    *<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    * &lt;ul&gt;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    *    &lt;li&gt;String value.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.paramFormat"&lt;/js&gt;, or &lt;js&gt;"UON"&lt;/js&gt; if not specified.<a name="line.895"></a>
+<span class="sourceLineNo">896</span>    *    &lt;li&gt;Can contain variables.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    *    &lt;li&gt;Can be overridden at the method level using {@link RestMethod#paramFormat() @RestMethod.paramFormat()}.<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    * &lt;/ul&gt;<a name="line.898"></a>
+<span class="sourceLineNo">899</span>    */<a name="line.899"></a>
+<span class="sourceLineNo">900</span>   String paramFormat() default "";<a name="line.900"></a>
+<span class="sourceLineNo">901</span>}<a name="line.901"></a>
 
 
 



[11/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/Microservice.html
----------------------------------------------------------------------
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 e482aef..8c43f86 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
@@ -20,623 +20,788 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.microservice;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static org.apache.juneau.internal.IOUtils.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span><a name="line.16"></a>
-<span class="sourceLineNo">017</span>import java.io.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import java.net.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import java.util.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import java.util.jar.*;<a name="line.20"></a>
-<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.ini.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.juneau.internal.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.juneau.svl.*;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.juneau.svl.vars.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.juneau.utils.*;<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> * Parent class for all microservices.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * <a name="line.31"></a>
-<span class="sourceLineNo">032</span> * &lt;p&gt;<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * A microservice defines a simple API for starting and stopping simple Java services contained in executable jars.<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * <a name="line.34"></a>
-<span class="sourceLineNo">035</span> * &lt;p&gt;<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * The general command for invoking these services is...<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * &lt;p class='bcode'&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *    java -jar mymicroservice.jar [mymicroservice.cfg]<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * &lt;/p&gt;<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <a name="line.40"></a>
-<span class="sourceLineNo">041</span> * &lt;p&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * Your microservice class must be specified as the &lt;jk&gt;Main-Class&lt;/jk&gt; entry in the manifest file of your microservice <a name="line.42"></a>
-<span class="sourceLineNo">043</span> * jar file.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * &lt;h6 class='topic'&gt;Microservice Configuration&lt;/h6&gt;<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class defines the following method for accessing configuration for your microservice:<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> *       {@link #getArgs()} - The command-line arguments passed to the jar file.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *    &lt;li&gt;<a name="line.51"></a>
-<span class="sourceLineNo">052</span> *       {@link #getConfig()} - An external INI-style configuration file.<a name="line.52"></a>
+<span class="sourceLineNo">015</span>import static org.apache.juneau.internal.FileUtils.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import static org.apache.juneau.internal.IOUtils.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import java.io.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.net.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.*;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.jar.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.logging.*;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.ini.*;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.juneau.internal.*;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.microservice.resources.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.juneau.svl.*;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.juneau.svl.vars.*;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.juneau.utils.*;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>/**<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * Parent class for all microservices.<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * <a name="line.35"></a>
+<span class="sourceLineNo">036</span> * &lt;p&gt;<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * A microservice defines a simple API for starting and stopping simple Java services contained in executable jars.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * <a name="line.38"></a>
+<span class="sourceLineNo">039</span> * &lt;p&gt;<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * The general command for invoking these services is...<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * &lt;p class='bcode'&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *    java -jar mymicroservice.jar [mymicroservice.cfg]<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;/p&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * <a name="line.44"></a>
+<span class="sourceLineNo">045</span> * &lt;p&gt;<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * Your microservice class must be specified as the &lt;jk&gt;Main-Class&lt;/jk&gt; entry in the manifest file of your microservice <a name="line.46"></a>
+<span class="sourceLineNo">047</span> * jar file.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * &lt;h6 class='topic'&gt;Microservice Configuration&lt;/h6&gt;<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * This class defines the following method for accessing configuration for your microservice:<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * &lt;ul class='spaced-list'&gt;<a name="line.52"></a>
 <span class="sourceLineNo">053</span> *    &lt;li&gt;<a name="line.53"></a>
-<span class="sourceLineNo">054</span> *       {@link #getManifest()} - The manifest file for the main jar file.<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;h6 class='topic'&gt;Entry point Method&lt;/h6&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> *<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * Subclasses must implement a static void main method as the entry point for the microservice.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Typically, this method will simply consist of the following...<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * &lt;p class='bcode'&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *    &lt;jk&gt;public static void&lt;/jk&gt; main(String[] args) &lt;jk&gt;throws&lt;/jk&gt; Exception {<a name="line.62"></a>
-<span class="sourceLineNo">063</span> *       &lt;jk&gt;new&lt;/jk&gt; MyMicroservice(args).start();<a name="line.63"></a>
-<span class="sourceLineNo">064</span> *    }<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * &lt;/p&gt;<a name="line.65"></a>
-<span class="sourceLineNo">066</span> *<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * &lt;h6 class='topic'&gt;Lifecycle Methods&lt;/h6&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * Subclasses must implement the following lifecycle methods:<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * &lt;ul class='spaced-list'&gt;<a name="line.70"></a>
-<span class="sourceLineNo">071</span> *    &lt;li&gt;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> *       {@link #start()} - Gets executed during startup.<a name="line.72"></a>
-<span class="sourceLineNo">073</span> *    &lt;li&gt;<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *       {@link #stop()} - Gets executed when 'exit' is typed in the console or an external shutdown signal is received.<a name="line.74"></a>
+<span class="sourceLineNo">054</span> *       {@link #getArgs()} - The command-line arguments passed to the jar file.<a name="line.54"></a>
+<span class="sourceLineNo">055</span> *    &lt;li&gt;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> *       {@link #getConfig()} - An external INI-style configuration file.<a name="line.56"></a>
+<span class="sourceLineNo">057</span> *    &lt;li&gt;<a name="line.57"></a>
+<span class="sourceLineNo">058</span> *       {@link #getManifest()} - The manifest file for the main jar file.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * &lt;/ul&gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * &lt;h6 class='topic'&gt;Entry point Method&lt;/h6&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * Subclasses must implement a static void main method as the entry point for the microservice.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * Typically, this method will simply consist of the following...<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * &lt;p class='bcode'&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> *    &lt;jk&gt;public static void&lt;/jk&gt; main(String[] args) &lt;jk&gt;throws&lt;/jk&gt; Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span> *       &lt;jk&gt;new&lt;/jk&gt; MyMicroservice(args).start();<a name="line.67"></a>
+<span class="sourceLineNo">068</span> *    }<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * &lt;/p&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> *<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * &lt;h6 class='topic'&gt;Lifecycle Methods&lt;/h6&gt;<a name="line.71"></a>
+<span class="sourceLineNo">072</span> *<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * Subclasses must implement the following lifecycle methods:<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * &lt;ul class='spaced-list'&gt;<a name="line.74"></a>
 <span class="sourceLineNo">075</span> *    &lt;li&gt;<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *       {@link #kill()} - Can be used to forcibly shut down the service.  Doesn't get called during normal operation.<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * &lt;/ul&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> *<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;h6 class='topic'&gt;Lifecycle Listener Methods&lt;/h6&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * Subclasses can optionally implement the following event listener methods:<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;ul class='spaced-list'&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> *    &lt;li&gt;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *       {@link #onStart()} - Gets executed before {@link #start()}.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> *    &lt;li&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> *       {@link #onStop()} - Gets executed before {@link #stop()}.<a name="line.86"></a>
+<span class="sourceLineNo">076</span> *       {@link #start()} - Gets executed during startup.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *    &lt;li&gt;<a name="line.77"></a>
+<span class="sourceLineNo">078</span> *       {@link #stop()} - Gets executed when 'exit' is typed in the console or an external shutdown signal is received.<a name="line.78"></a>
+<span class="sourceLineNo">079</span> *    &lt;li&gt;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *       {@link #kill()} - Can be used to forcibly shut down the service.  Doesn't get called during normal operation.<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * &lt;/ul&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span> *<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * &lt;h6 class='topic'&gt;Lifecycle Listener Methods&lt;/h6&gt;<a name="line.83"></a>
+<span class="sourceLineNo">084</span> *<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Subclasses can optionally implement the following event listener methods:<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;ul class='spaced-list'&gt;<a name="line.86"></a>
 <span class="sourceLineNo">087</span> *    &lt;li&gt;<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *       {@link #onConfigSave(ConfigFile)} - Gets executed after a config file has been saved.<a name="line.88"></a>
+<span class="sourceLineNo">088</span> *       {@link #onStart()} - Gets executed before {@link #start()}.<a name="line.88"></a>
 <span class="sourceLineNo">089</span> *    &lt;li&gt;<a name="line.89"></a>
-<span class="sourceLineNo">090</span> *       {@link #onConfigChange(ConfigFile, Set)} - Gets executed after a config file has been modified.<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;/ul&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> *<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * &lt;h6 class='topic'&gt;Other Methods&lt;/h6&gt;<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * Subclasses can optionally override the following methods to provide customized behavior:<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;ul class='spaced-list'&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> *    &lt;li&gt;<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *       {@link #createVarResolver()} - Creates the {@link VarResolver} used to resolve variables in the config file <a name="line.98"></a>
-<span class="sourceLineNo">099</span> *       returned by {@link #getConfig()}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * &lt;/ul&gt;<a name="line.100"></a>
-<span class="sourceLineNo">101</span> */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>public abstract class Microservice {<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>   private static Args args;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   private static ConfigFile cf;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   private static ManifestFile mf;<a name="line.106"></a>
+<span class="sourceLineNo">090</span> *       {@link #onStop()} - Gets executed before {@link #stop()}.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *    &lt;li&gt;<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *       {@link #onConfigSave(ConfigFile)} - Gets executed after a config file has been saved.<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *    &lt;li&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> *       {@link #onConfigChange(ConfigFile, Set)} - Gets executed after a config file has been modified.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * &lt;/ul&gt;<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;h6 class='topic'&gt;Other Methods&lt;/h6&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> *<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Subclasses can optionally override the following methods to provide customized behavior:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * &lt;ul class='spaced-list'&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> *    &lt;li&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> *       {@link #createVarResolver()} - Creates the {@link VarResolver} used to resolve variables in the config file <a name="line.102"></a>
+<span class="sourceLineNo">103</span> *       returned by {@link #getConfig()}.<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * &lt;/ul&gt;<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>public abstract class Microservice {<a name="line.106"></a>
 <span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>   private String cfPath;<a name="line.108"></a>
+<span class="sourceLineNo">108</span>   private static volatile Microservice INSTANCE;<a name="line.108"></a>
 <span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>   /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    * Constructor.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    *<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    * @param args Command line arguments.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    * @throws Exception<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   protected Microservice(String...args) throws Exception {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Microservice.args = new Args(args);<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>    * Specifies the path of the config file for this microservice.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    * <a name="line.122"></a>
-<span class="sourceLineNo">123</span>    * &lt;p&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * If you do not specify the config file location, we attempt to resolve it through the following methods:<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * &lt;ol&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    *    &lt;li&gt;The first argument in the command line arguments passed in through the constructor.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    *    &lt;li&gt;The value of the &lt;code&gt;Main-ConfigFile&lt;/code&gt; entry in the manifest file.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    *    &lt;li&gt;A config file in the same location and with the same name as the executable jar file.<a name="line.128"></a>
-<span class="sourceLineNo">129</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.129"></a>
-<span class="sourceLineNo">130</span>    * &lt;/ol&gt;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    * <a name="line.131"></a>
-<span class="sourceLineNo">132</span>    * &lt;p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    * If this path does not exist, a {@link FileNotFoundException} will be thrown from the {@link #start()} command.<a name="line.133"></a>
+<span class="sourceLineNo">110</span>   private Logger logger;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   private Args args;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   private ConfigFile cf;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   private ManifestFile mf;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   private VarResolver vr;<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>   private String cfPath;<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>    * Returns the Microservice instance.  <a name="line.119"></a>
+<span class="sourceLineNo">120</span>    * &lt;p&gt;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    * This method only works if there's only one Microservice instance in a JVM.  <a name="line.121"></a>
+<span class="sourceLineNo">122</span>    * Otherwise, it's just overwritten by the last call to {@link #Microservice(String...)}.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    * <a name="line.123"></a>
+<span class="sourceLineNo">124</span>    * @return The Microservice instance, or &lt;jk&gt;null&lt;/jk&gt; if there isn't one.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    */<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   public static Microservice getInstance() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      synchronized(Microservice.class) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>         return INSTANCE;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   <a name="line.131"></a>
+<span class="sourceLineNo">132</span>   /**<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    * Constructor.<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    *<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    * @param cfPath The absolute or relative path of the config file.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    * @param create Create the file if it doesn't exist.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    * @return This object (for method chaining).<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    * @throws IOException If config file does not exist at the specified location or could not be read or created.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   public Microservice setConfig(String cfPath, boolean create) throws IOException {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      File f = new File(cfPath);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (! f.exists()) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>         if (! create)<a name="line.143"></a>
-<span class="sourceLineNo">144</span>            throw new FileNotFoundException("Could not locate config file at '"+f.getAbsolutePath()+"'");<a name="line.144"></a>
-<span class="sourceLineNo">145</span>         if (! f.createNewFile())<a name="line.145"></a>
-<span class="sourceLineNo">146</span>            throw new FileNotFoundException("Could not create config file at '"+f.getAbsolutePath()+"'");<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.cfPath = cfPath;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return this;<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>    * Specifies the config file for this microservice.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    * <a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * &lt;p&gt;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * Note that if you use this method instead of {@link #setConfig(String,boolean)}, the config file will not use<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * the variable resolver constructed from {@link #createVarResolver()}.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    *<a name="line.158"></a>
-<span class="sourceLineNo">159</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.159"></a>
-<span class="sourceLineNo">160</span>    */<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   public static void setConfig(ConfigFile cf) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      Microservice.cf = cf;<a name="line.162"></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>   /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    * Specifies the manifest file of the jar file this microservice is contained within.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    * <a name="line.167"></a>
-<span class="sourceLineNo">168</span>    * &lt;p&gt;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    * If you do not specify the manifest file, we attempt to resolve it through the following methods:<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    * &lt;ol&gt;<a name="line.170"></a>
-<span class="sourceLineNo">171</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.171"></a>
-<span class="sourceLineNo">172</span>    *       This is primarily to allow for running microservices from within eclipse workspaces where the manifest file<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    *       is located in the project root.<a name="line.173"></a>
-<span class="sourceLineNo">174</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.174"></a>
-<span class="sourceLineNo">175</span>    * &lt;/ol&gt;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * @param mf The manifest file of this microservice.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    */<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   public static void setManifest(Manifest mf) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      Microservice.mf = new ManifestFile(mf);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>   /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    * Convenience method for specifying the manifest contents directly.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    *<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    * @param contents The lines in the manifest file.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    * @return This object (for method chaining).<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    * @throws IOException<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   public Microservice setManifestContents(String...contents) throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      String s = StringUtils.join(contents, "\n") + "\n";<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      Microservice.mf = new ManifestFile(new Manifest(new ByteArrayInputStream(s.getBytes("UTF-8"))));<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>    * Same as {@link #setManifest(Manifest)} except specified through a {@link File} object.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    *<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * @param f The manifest file of this microservice.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   public static void setManifest(File f) throws IOException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      Microservice.mf = new ManifestFile(f);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>   /**<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    * Same as {@link #setManifest(Manifest)} except finds and loads the manifest file of the jar file that the  <a name="line.207"></a>
-<span class="sourceLineNo">208</span>    * specified class is contained within.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    *<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    * @param c The class whose jar file contains the manifest to use for this microservice.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   public static void setManifest(Class&lt;?&gt; c) throws IOException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      Microservice.mf = new ManifestFile(c);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>   /**<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    * Creates the {@link VarResolver} used to resolve variables in the config file returned by {@link #getConfig()}.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    * <a name="line.219"></a>
-<span class="sourceLineNo">220</span>    * &lt;p&gt;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    * The default implementation resolves the following variables:<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    * &lt;ul&gt;<a name="line.222"></a>
-<span class="sourceLineNo">223</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.223"></a>
-<span class="sourceLineNo">224</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.224"></a>
-<span class="sourceLineNo">225</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.225"></a>
-<span class="sourceLineNo">226</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.226"></a>
-<span class="sourceLineNo">227</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.227"></a>
-<span class="sourceLineNo">228</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.228"></a>
-<span class="sourceLineNo">229</span>    *    &lt;li&gt;&lt;code&gt;$SW{stringArg,pattern,thenVal...}&lt;/code&gt;, <a name="line.229"></a>
-<span class="sourceLineNo">230</span>    *       &lt;code&gt;$SW{stringArg,pattern,thenVal,elseVal...}&lt;/code&gt;  - Switch-block logic.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    * &lt;/ul&gt;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    * <a name="line.232"></a>
-<span class="sourceLineNo">233</span>    * &lt;p&gt;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    * Subclasses can override this method to provide their own variables.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    *<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    * &lt;p class='bcode'&gt;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    *    &lt;jd&gt;/**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    *     * Augment default var resolver with a custom $B{...} variable that simply wraps strings inside square brackets.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    *     * /&lt;/jd&gt;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    *    &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// Microservice&lt;/jc&gt;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    *    &lt;jk&gt;protected&lt;/jk&gt; StringVarResolver createVarResolver() {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    *       &lt;jk&gt;return super&lt;/jk&gt;.createVarResolver()<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    *          .addVar(&lt;js&gt;"B"&lt;/js&gt;,<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    *             &lt;jk&gt;new&lt;/jk&gt; StringVarWithDefault() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    *                &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// StringVar&lt;/jc&gt;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    *                &lt;jk&gt;public&lt;/jk&gt; String resolve(String varVal) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    *                   &lt;jk&gt;return&lt;/jk&gt; &lt;js&gt;'['&lt;/js&gt; + varVal + &lt;js&gt;']'&lt;/js&gt;;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    *                }<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>    * &lt;/p&gt;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    * &lt;p class='bcode'&gt;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    *    &lt;cc&gt;# Example config file&lt;/cc&gt;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    *    &lt;ck&gt;myEntry&lt;/ck&gt; = $B{foo}<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    * &lt;/p&gt;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    * &lt;p class='bcode'&gt;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    *    &lt;jc&gt;// Example java code&lt;/jc&gt;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    *    String myentry = getConfig().getString(&lt;js&gt;"MySection/myEntry"&lt;/js&gt;); &lt;jc&gt;// == "[foo]"&lt;/js&gt;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    * &lt;/p&gt;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * @return A new {@link VarResolver}.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   protected VarResolverBuilder createVarResolver() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      VarResolverBuilder b = new VarResolverBuilder()<a name="line.267"></a>
-<span class="sourceLineNo">268</span>         .defaultVars()<a name="line.268"></a>
-<span class="sourceLineNo">269</span>         .vars(ConfigFileVar.class, ManifestFileVar.class, ArgsVar.class, SwitchVar.class, IfVar.class)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>         .contextObject(ManifestFileVar.SESSION_manifest, mf)<a name="line.270"></a>
-<span class="sourceLineNo">271</span>         .contextObject(ArgsVar.SESSION_args, args);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      if (cf != null)<a name="line.272"></a>
-<span class="sourceLineNo">273</span>         b.contextObject(ConfigFileVar.SESSION_config, cf);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return b;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>   /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    * Returns the command-line arguments passed into the application.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    * <a name="line.279"></a>
-<span class="sourceLineNo">280</span>    * &lt;p&gt;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    * This method can be called from the class constructor.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    * <a name="line.282"></a>
-<span class="sourceLineNo">283</span>    * &lt;p&gt;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    * See {@link Args} for details on using this method.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    *<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    * @return The command-line arguments passed into the application.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   protected static Args getArgs() {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      return args;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   }<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>    * Returns the external INI-style configuration file that can be used to configure your microservice.<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>    * The config file location is determined in the following order:<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * &lt;ol class='spaced-list'&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    *    &lt;li&gt;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    *       The first argument passed to the microservice jar.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    *    &lt;li&gt;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    *       The &lt;code&gt;Main-ConfigFile&lt;/code&gt; entry in the microservice jar manifest file.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    *    &lt;li&gt;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    *       The name of the microservice jar with a &lt;js&gt;".cfg"&lt;/js&gt; suffix (e.g. <a name="line.303"></a>
-<span class="sourceLineNo">304</span>    *       &lt;js&gt;"mymicroservice.jar"&lt;/js&gt;-&amp;gt;&lt;js&gt;"mymicroservice.cfg"&lt;/js&gt;).<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    * &lt;/ol&gt;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    * <a name="line.306"></a>
-<span class="sourceLineNo">307</span>    * &lt;p&gt;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    * If all methods for locating the config file fail, then this method returns &lt;jk&gt;null&lt;/jk&gt;.<a name="line.308"></a>
+<span class="sourceLineNo">135</span>    * @param args Command line arguments.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    * @throws Exception<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    */<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   protected Microservice(String...args) throws Exception {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      setInstance(this);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      this.args = new Args(args);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   <a name="line.142"></a>
+<span class="sourceLineNo">143</span>   private static void setInstance(Microservice m) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      synchronized(Microservice.class) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>         INSTANCE = m;<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><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>    * Specifies the path of the config file for this microservice.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    * <a name="line.152"></a>
+<span class="sourceLineNo">153</span>    * &lt;p&gt;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * If you do not specify the config file location, we attempt to resolve it through the following methods:<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    * &lt;ol&gt;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    *    &lt;li&gt;The first argument in the command line arguments passed in through the constructor.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    *    &lt;li&gt;The value of the &lt;code&gt;Main-ConfigFile&lt;/code&gt; entry in the manifest file.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    *    &lt;li&gt;A config file in the same location and with the same name as the executable jar file.<a name="line.158"></a>
+<span class="sourceLineNo">159</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.159"></a>
+<span class="sourceLineNo">160</span>    * &lt;/ol&gt;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    * <a name="line.161"></a>
+<span class="sourceLineNo">162</span>    * &lt;p&gt;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    * If this path does not exist, a {@link FileNotFoundException} will be thrown from the {@link #start()} command.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    *<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    * @param cfPath The absolute or relative path of the config file.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    * @param create Create the file if it doesn't exist.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    * @return This object (for method chaining).<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    * @throws IOException If config file does not exist at the specified location or could not be read or created.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   public Microservice setConfig(String cfPath, boolean create) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      File f = new File(cfPath);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      if (! f.exists()) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>         if (! create)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>            throw new FileNotFoundException("Could not locate config file at '"+f.getAbsolutePath()+"'");<a name="line.174"></a>
+<span class="sourceLineNo">175</span>         if (! f.createNewFile())<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            throw new FileNotFoundException("Could not create config file at '"+f.getAbsolutePath()+"'");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      this.cfPath = cfPath;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return this;<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>   /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    * Specifies the config file for this microservice.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    * <a name="line.184"></a>
+<span class="sourceLineNo">185</span>    * &lt;p&gt;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    * Note that if you use this method instead of {@link #setConfig(String,boolean)}, the config file will not use<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    * the variable resolver constructed from {@link #createVarResolver()}.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    *<a name="line.188"></a>
+<span class="sourceLineNo">189</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.189"></a>
+<span class="sourceLineNo">190</span>    */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   public void setConfig(ConfigFile cf) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      this.cf = cf;<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 manifest file of the jar file this microservice is contained within.<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>    * If you do not specify the manifest file, we attempt to resolve it through the following methods:<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    * &lt;ol&gt;<a name="line.200"></a>
+<span class="sourceLineNo">201</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.201"></a>
+<span class="sourceLineNo">202</span>    *       This is primarily to allow for running microservices from within eclipse workspaces where the manifest file<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    *       is located in the project root.<a name="line.203"></a>
+<span class="sourceLineNo">204</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.204"></a>
+<span class="sourceLineNo">205</span>    * &lt;/ol&gt;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    *<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    * @param mf The manifest file of this microservice.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   public void setManifest(Manifest mf) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      this.mf = new ManifestFile(mf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>   /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    * Convenience method for specifying the manifest contents directly.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    *<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    * @param contents The lines in the manifest file.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    * @return This object (for method chaining).<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    * @throws IOException<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   public Microservice setManifestContents(String...contents) throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      String s = StringUtils.join(contents, "\n") + "\n";<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      this.mf = new ManifestFile(new Manifest(new ByteArrayInputStream(s.getBytes("UTF-8"))));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      return this;<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>    * Same as {@link #setManifest(Manifest)} except specified through a {@link File} object.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    *<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    * @param f The manifest file of this microservice.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   public void setManifest(File f) throws IOException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      this.mf = new ManifestFile(f);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>   /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * Same as {@link #setManifest(Manifest)} except finds and loads the manifest file of the jar file that the  <a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * specified class is contained within.<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    *<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    * @param c The class whose jar file contains the manifest to use for this microservice.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    * @throws IOException If a problem occurred while trying to read the manifest file.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   public void setManifest(Class&lt;?&gt; c) throws IOException {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      this.mf = new ManifestFile(c);<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>   /**<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    * Creates the {@link VarResolver} used to resolve variables in the config file returned by {@link #getConfig()}.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    * <a name="line.249"></a>
+<span class="sourceLineNo">250</span>    * &lt;p&gt;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    * The default implementation resolves the following variables:<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    * &lt;ul&gt;<a name="line.252"></a>
+<span class="sourceLineNo">253</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.253"></a>
+<span class="sourceLineNo">254</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.254"></a>
+<span class="sourceLineNo">255</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.255"></a>
+<span class="sourceLineNo">256</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.256"></a>
+<span class="sourceLineNo">257</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.257"></a>
+<span class="sourceLineNo">258</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.258"></a>
+<span class="sourceLineNo">259</span>    *    &lt;li&gt;&lt;code&gt;$SW{stringArg,pattern,thenVal...}&lt;/code&gt;, <a name="line.259"></a>
+<span class="sourceLineNo">260</span>    *       &lt;code&gt;$SW{stringArg,pattern,thenVal,elseVal...}&lt;/code&gt;  - Switch-block logic.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    * &lt;/ul&gt;<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>    * Subclasses can override this method to provide their own variables.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    *<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    * &lt;p class='bcode'&gt;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    *    &lt;jd&gt;/**<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    *     * Augment default var resolver with a custom $B{...} variable that simply wraps strings inside square brackets.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    *     * /&lt;/jd&gt;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    *    &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// Microservice&lt;/jc&gt;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    *    &lt;jk&gt;protected&lt;/jk&gt; StringVarResolver createVarResolver() {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    *       &lt;jk&gt;return super&lt;/jk&gt;.createVarResolver()<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    *          .addVar(&lt;js&gt;"B"&lt;/js&gt;,<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    *             &lt;jk&gt;new&lt;/jk&gt; StringVarWithDefault() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    *                &lt;ja&gt;@Override&lt;/ja&gt; &lt;jc&gt;// StringVar&lt;/jc&gt;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    *                &lt;jk&gt;public&lt;/jk&gt; String resolve(String varVal) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    *                   &lt;jk&gt;return&lt;/jk&gt; &lt;js&gt;'['&lt;/js&gt; + varVal + &lt;js&gt;']'&lt;/js&gt;;<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>    *          );<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    *    }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    * &lt;/p&gt;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    * &lt;p class='bcode'&gt;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    *    &lt;cc&gt;# Example config file&lt;/cc&gt;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    *    &lt;ck&gt;myEntry&lt;/ck&gt; = $B{foo}<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    * &lt;/p&gt;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    * &lt;p class='bcode'&gt;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    *    &lt;jc&gt;// Example java code&lt;/jc&gt;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    *    String myentry = getConfig().getString(&lt;js&gt;"MySection/myEntry"&lt;/js&gt;); &lt;jc&gt;// == "[foo]"&lt;/js&gt;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    * &lt;/p&gt;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    *<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    * @return A new {@link VarResolver}.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   protected VarResolverBuilder createVarResolver() {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      VarResolverBuilder b = new VarResolverBuilder()<a name="line.297"></a>
+<span class="sourceLineNo">298</span>         .defaultVars()<a name="line.298"></a>
+<span class="sourceLineNo">299</span>         .vars(ConfigFileVar.class, ManifestFileVar.class, ArgsVar.class, SwitchVar.class, IfVar.class)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>         .contextObject(ManifestFileVar.SESSION_manifest, mf)<a name="line.300"></a>
+<span class="sourceLineNo">301</span>         .contextObject(ArgsVar.SESSION_args, args);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      if (cf != null)<a name="line.302"></a>
+<span class="sourceLineNo">303</span>         b.contextObject(ConfigFileVar.SESSION_config, cf);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      return b;<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>    * Returns the command-line arguments passed into the application.<a name="line.308"></a>
 <span class="sourceLineNo">309</span>    * <a name="line.309"></a>
 <span class="sourceLineNo">310</span>    * &lt;p&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    * Subclasses can set their own config file by calling the {@link #setConfig(ConfigFile)} method.<a name="line.311"></a>
+<span class="sourceLineNo">311</span>    * This method can be called from the class constructor.<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    * <a name="line.312"></a>
 <span class="sourceLineNo">313</span>    * &lt;p&gt;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    * String variables defined by {@link #createVarResolver()} are automatically resolved when using this method.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    * <a name="line.315"></a>
-<span class="sourceLineNo">316</span>    * &lt;p&gt;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    * This method can be called from the class constructor.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    * &lt;p class='bcode'&gt;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    *    &lt;cc&gt;# My section&lt;/cc&gt;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    *<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    *    &lt;cc&gt;# An integer&lt;/cc&gt;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    *    &lt;ck&gt;anInt&lt;/ck&gt; = 1<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    *<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    *    &lt;cc&gt;# A boolean&lt;/cc&gt;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    *    &lt;ck&gt;aBoolean&lt;/ck&gt; = true<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    *<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    *    &lt;cc&gt;# An int array&lt;/cc&gt;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    *    &lt;ck&gt;anIntArray&lt;/ck&gt; = 1,2,3<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    *<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    *    &lt;cc&gt;# A POJO that can be converted from a String&lt;/cc&gt;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    *    &lt;ck&gt;aURL&lt;/ck&gt; = http://foo<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    *<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    *    &lt;cc&gt;# A POJO that can be converted from JSON&lt;/cc&gt;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    *    &lt;ck&gt;aBean&lt;/ck&gt; = {foo:'bar',baz:123}<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    *<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    *    &lt;cc&gt;# A system property&lt;/cc&gt;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    *    &lt;ck&gt;locale&lt;/ck&gt; = $S{java.locale, en_US}<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    *    &lt;cc&gt;# An environment variable&lt;/cc&gt;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    *    &lt;ck&gt;path&lt;/ck&gt; = $E{PATH, unknown}<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    *<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    *    &lt;cc&gt;# A manifest file entry&lt;/cc&gt;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    *    &lt;ck&gt;mainClass&lt;/ck&gt; = $MF{Main-Class}<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    *<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    *    &lt;cc&gt;# Another value in this config file&lt;/cc&gt;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    *    &lt;ck&gt;sameAsAnInt&lt;/ck&gt; = $C{MySection/anInt}<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    *<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    *    &lt;cc&gt;# A command-line argument in the form "myarg=foo"&lt;/cc&gt;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    *    &lt;ck&gt;myArg&lt;/ck&gt; = $ARG{myarg}<a name="line.354"></a>
+<span class="sourceLineNo">314</span>    * See {@link Args} for details on using this method.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    *<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    * @return The command-line arguments passed into the application.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    */<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   public Args getArgs() {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      return args;<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>   /**<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    * Returns the external INI-style configuration file that can be used to configure your microservice.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    * <a name="line.324"></a>
+<span class="sourceLineNo">325</span>    * &lt;p&gt;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    * The config file location is determined in the following order:<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    * &lt;ol class='spaced-list'&gt;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    *    &lt;li&gt;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    *       The first argument passed to the microservice jar.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    *    &lt;li&gt;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    *       The &lt;code&gt;Main-ConfigFile&lt;/code&gt; entry in the microservice jar manifest file.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    *    &lt;li&gt;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    *       The name of the microservice jar with a &lt;js&gt;".cfg"&lt;/js&gt; suffix (e.g. <a name="line.333"></a>
+<span class="sourceLineNo">334</span>    *       &lt;js&gt;"mymicroservice.jar"&lt;/js&gt;-&amp;gt;&lt;js&gt;"mymicroservice.cfg"&lt;/js&gt;).<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    * &lt;/ol&gt;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * <a name="line.336"></a>
+<span class="sourceLineNo">337</span>    * &lt;p&gt;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    * If all methods for locating the config file fail, then this method returns &lt;jk&gt;null&lt;/jk&gt;.<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>    * Subclasses can set their own config file by calling the {@link #setConfig(ConfigFile)} method.<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>    * String variables defined by {@link #createVarResolver()} are automatically resolved when using this method.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    * <a name="line.345"></a>
+<span class="sourceLineNo">346</span>    * &lt;p&gt;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    * This method can be called from the class constructor.<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    *<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    * &lt;p class='bcode'&gt;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    *    &lt;cc&gt;# My section&lt;/cc&gt;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    *    &lt;cc&gt;#--------------------------&lt;/cc&gt;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    *    &lt;cs&gt;[MySection]&lt;/cs&gt;<a name="line.354"></a>
 <span class="sourceLineNo">355</span>    *<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    *    &lt;cc&gt;# The first command-line argument&lt;/cc&gt;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    *    &lt;ck&gt;firstArg&lt;/ck&gt; = $ARG{0}<a name="line.357"></a>
+<span class="sourceLineNo">356</span>    *    &lt;cc&gt;# An integer&lt;/cc&gt;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    *    &lt;ck&gt;anInt&lt;/ck&gt; = 1<a name="line.357"></a>
 <span class="sourceLineNo">358</span>    *<a name="line.358"></a>
-<span class="sourceLineNo">359</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.359"></a>
-<span class="sourceLineNo">360</span>    *    &lt;ck&gt;nested&lt;/ck&gt; = $S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}}<a name="line.360"></a>
+<span class="sourceLineNo">359</span>    *    &lt;cc&gt;# A boolean&lt;/cc&gt;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    *    &lt;ck&gt;aBoolean&lt;/ck&gt; = true<a name="line.360"></a>
 <span class="sourceLineNo">361</span>    *<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    *    &lt;cc&gt;# A POJO with embedded variables&lt;/cc&gt;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    *    &lt;ck&gt;aBean2&lt;/ck&gt; = {foo:'$ARG{0}',baz:$C{MySection/anInt}}<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    * &lt;/p&gt;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    * <a name="line.365"></a>
-<span class="sourceLineNo">366</span>    * &lt;p class='bcode'&gt;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    *    &lt;jc&gt;// Java code for accessing config entries above.&lt;/jc&gt;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    *    ConfigFile cf = getConfig();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    *<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    *    &lt;jk&gt;int&lt;/jk&gt; anInt = cf.getInt(&lt;js&gt;"MySection/anInt"&lt;/js&gt;);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    *    &lt;jk&gt;boolean&lt;/jk&gt; aBoolean = cf.getBoolean(&lt;js&gt;"MySection/aBoolean"&lt;/js&gt;);<a name="line.371"></a>
-<span class="sourceLineNo">372</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.372"></a>
-<span class="sourceLineNo">373</span>    *    URL aURL = cf.getObject(URL.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/aURL"&lt;/js&gt;);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    *    MyBean aBean = cf.getObject(MyBean.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/aBean"&lt;/js&gt;);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    *    Locale locale = cf.getObject(Locale.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"MySection/locale"&lt;/js&gt;);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    *    String path = cf.getString(&lt;js&gt;"MySection/path"&lt;/js&gt;);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    *    String mainClass = cf.getString(&lt;js&gt;"MySection/mainClass"&lt;/js&gt;);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    *    &lt;jk&gt;int&lt;/jk&gt; sameAsAnInt = cf.getInt(&lt;js&gt;"MySection/sameAsAnInt"&lt;/js&gt;);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    *    String myArg = cf.getString(&lt;js&gt;"MySection/myArg"&lt;/js&gt;);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    *    String firstArg = cf.getString(&lt;js&gt;"MySection/firstArg"&lt;/js&gt;);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    * &lt;/p&gt;<a name="line.381"></a>
+<span class="sourceLineNo">362</span>    *    &lt;cc&gt;# An int array&lt;/cc&gt;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    *    &lt;ck&gt;anIntArray&lt;/ck&gt; = 1,2,3<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    *<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    *    &lt;cc&gt;# A POJO that can be converted from a String&lt;/cc&gt;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    *    &lt;ck&gt;aURL&lt;/ck&gt; = http://foo<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    *<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    *    &lt;cc&gt;# A POJO that can be converted from JSON&lt;/cc&gt;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    *    &lt;ck&gt;aBean&lt;/ck&gt; = {foo:'bar',baz:123}<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    *<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    *    &lt;cc&gt;# A system property&lt;/cc&gt;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    *    &lt;ck&gt;locale&lt;/ck&gt; = $S{java.locale, en_US}<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    *<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    *    &lt;cc&gt;# An environment variable&lt;/cc&gt;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    *    &lt;ck&gt;path&lt;/ck&gt; = $E{PATH, unknown}<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    *<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    *    &lt;cc&gt;# A manifest file entry&lt;/cc&gt;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    *    &lt;ck&gt;mainClass&lt;/ck&gt; = $MF{Main-Class}<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    *<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    *    &lt;cc&gt;# Another value in this config file&lt;/cc&gt;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    *    &lt;ck&gt;sameAsAnInt&lt;/ck&gt; = $C{MySection/anInt}<a name="line.381"></a>
 <span class="sourceLineNo">382</span>    *<a name="line.382"></a>
-<span class="sourceLineNo">383</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.383"></a>
-<span class="sourceLineNo">384</span>    */<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   protected static ConfigFile getConfig() {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      return cf;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>   /**<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    * Returns the main jar manifest file contents as a simple {@link ObjectMap}.<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    * <a name="line.391"></a>
-<span class="sourceLineNo">392</span>    * &lt;p&gt;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    * This map consists of the contents of {@link Manifest#getMainAttributes()} with the keys and entries converted to <a name="line.393"></a>
-<span class="sourceLineNo">394</span>    * simple strings.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    * &lt;p&gt;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    * This method can be called from the class constructor.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    *<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    * &lt;p class='bcode'&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    *    &lt;jc&gt;// Get Main-Class from manifest file.&lt;/jc&gt;<a name="line.400"></a>
-<span class="sourceLineNo">401</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.401"></a>
-<span class="sourceLineNo">402</span>    *<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    *    &lt;jc&gt;// Get Rest-Resources from manifest file.&lt;/jc&gt;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    *    String[] restResources = Microservice.&lt;jsm&gt;getManifest&lt;/jsm&gt;().getStringArray(&lt;js&gt;"Rest-Resources"&lt;/js&gt;);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    * &lt;/p&gt;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    *<a name="line.406"></a>
-<span class="sourceLineNo">407</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.407"></a>
-<span class="sourceLineNo">408</span>    */<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   protected static ManifestFile getManifest() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      return mf;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>   //--------------------------------------------------------------------------------<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   // Abstract lifecycle methods.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   //--------------------------------------------------------------------------------<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>   /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    * Start this application.<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    * <a name="line.420"></a>
-<span class="sourceLineNo">421</span>    * &lt;p&gt;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    * Default implementation simply calls {@link #onStart()}.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    * <a name="line.423"></a>
-<span class="sourceLineNo">424</span>    * &lt;p&gt;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    * Overridden methods MUST call this method FIRST so that the {@link #onStart()} method is called.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    *<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    * @return This object (for method chaining).<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    * @throws Exception<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   public Microservice start() throws Exception {<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>      // Try to get the manifest file if it wasn't already set.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // --------------------------------------------------------------------------------<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      if (mf == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>         Manifest m = new Manifest();<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>         // If running within an eclipse workspace, need to get it from the file system.<a name="line.438"></a>
-<span class="sourceLineNo">439</span>         File f = new File("META-INF/MANIFEST.MF");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>         if (f.exists()) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>            try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>               m.read(new FileInputStream(f));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            } catch (IOException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>               System.err.println("Problem detected in MANIFEST.MF.  Contents below:\n" + read(f));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>               throw e;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>            }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>         } else {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            // Otherwise, read from manifest file in the jar file containing the main class.<a name="line.448"></a>
-<span class="sourceLineNo">449</span>            URLClassLoader cl = (URLClassLoader)getClass().getClassLoader();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>            URL url = cl.findResource("META-INF/MANIFEST.MF");<a name="line.450"></a>
-<span class="sourceLineNo">451</span>            if (url != null) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>               try {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>                  m.read(url.openStream());<a name="line.453"></a>
-<span class="sourceLineNo">454</span>               } catch (IOException e) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>                  System.err.println("Problem detected in MANIFEST.MF.  Contents below:\n" + read(url.openStream()));<a name="line.455"></a>
-<span class="sourceLineNo">456</span>                  throw e;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>               }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>            }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>         }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>         mf = new ManifestFile(m);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>      // --------------------------------------------------------------------------------<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      // Resolve the config file if the path was specified.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      // --------------------------------------------------------------------------------<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      ConfigFileBuilder cfb = new ConfigFileBuilder();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      if (cfPath != null)<a name="line.467"></a>
-<span class="sourceLineNo">468</span>         cf = cfb.build(cfPath).getResolving(createVarResolver().build());<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>      // --------------------------------------------------------------------------------<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      // Find config file.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      // Can either be passed in as first parameter, or we discover it using<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // the 'sun.java.command' system property.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      // --------------------------------------------------------------------------------<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      if (cf == null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>         if (args.hasArg(0))<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            cfPath = args.getArg(0);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>         else if (mf.containsKey("Main-ConfigFile"))<a name="line.478"></a>
-<span class="sourceLineNo">479</span>            cfPath = mf.getString("Main-ConfigFile");<a name="line.479"></a>
-<span class="sourceLineNo">480</span>         else {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>            String cmd = System.getProperty("sun.java.command", "not_found").split("\\s+")[0];<a name="line.481"></a>
-<span class="sourceLineNo">482</span>            if (cmd.endsWith(".jar"))<a name="line.482"></a>
-<span class="sourceLineNo">483</span>               cfPath = cmd.replace(".jar", ".cfg");<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>         if (cfPath == null) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>            System.err.println("Running class ["+getClass().getSimpleName()+"] without a config file.");<a name="line.487"></a>
-<span class="sourceLineNo">488</span>            cf = cfb.build();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>         } else {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>            System.out.println("Running class ["+getClass().getSimpleName()+"] using config file ["+cfPath+"]");<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            cf = cfb.build(cfPath).getResolving(createVarResolver().build());<a name="line.491"></a>
-<span class="sourceLineNo">492</span>         }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      }<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (cfPath != null)<a name="line.495"></a>
-<span class="sourceLineNo">496</span>         System.setProperty("juneau.configFile", cfPath);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // --------------------------------------------------------------------------------<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // Set system properties.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      // --------------------------------------------------------------------------------<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      Set&lt;String&gt; spKeys = cf.getSectionKeys("SystemProperties");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      if (spKeys != null)<a name="line.502"></a>
-<span class="sourceLineNo">503</span>         for (String key : spKeys)<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            System.setProperty(key, cf.get("SystemProperties", key));<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // --------------------------------------------------------------------------------<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // Add a config file change listener.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      // --------------------------------------------------------------------------------<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      cf.addListener(new ConfigFileListener() {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>         @Override /* ConfigFileListener */<a name="line.510"></a>
-<span class="sourceLineNo">511</span>         public void onSave(ConfigFile cf) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            onConfigSave(cf);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>         }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>         @Override /* ConfigFileListener */<a name="line.514"></a>
-<span class="sourceLineNo">515</span>         public void onChange(ConfigFile cf, Set&lt;String&gt; changes) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            onConfigChange(cf, changes);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>         }<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>    

<TRUNCATED>


[15/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/RestException.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestException.html b/content/site/apidocs/org/apache/juneau/rest/RestException.html
index c488632..276ea14 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestException.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestException.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.29">RestException</a>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.30">RestException</a>
 extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" title="class in org.apache.juneau">FormattedRuntimeException</a></pre>
 <div class="block">Exception thrown to trigger an error HTTP status.
 
@@ -257,7 +257,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>RestException</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.43">RestException</a>(int&nbsp;status,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.44">RestException</a>(int&nbsp;status,
                      <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;msg,
                      <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">Constructor.</div>
@@ -275,7 +275,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RestException</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.54">RestException</a>(int&nbsp;status,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.55">RestException</a>(int&nbsp;status,
                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)</pre>
 <div class="block">Constructor.</div>
 <dl>
@@ -299,7 +299,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>initCause</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.67">initCause</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.68">initCause</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)</pre>
 <div class="block">Sets the inner cause for this exception.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -317,7 +317,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getRootCause</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.84">getRootCause</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.85">getRootCause</a>()</pre>
 <div class="block">Returns the root cause of this exception.
 
  <p>
@@ -338,7 +338,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getFullStackMessage</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/RestException.html#line.105">getFullStackMessage</a>(boolean&nbsp;scrubForXssVulnerabilities)</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/RestException.html#line.106">getFullStackMessage</a>(boolean&nbsp;scrubForXssVulnerabilities)</pre>
 <div class="block">Returns all error messages from all errors in this stack.
 
  <p>
@@ -358,7 +358,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.129">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.130">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><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></code></dd>
@@ -371,14 +371,14 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getOccurrence</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.153">getOccurrence</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.154">getOccurrence</a>()</pre>
 <div class="block">Returns the number of times this exception occurred on this servlet.
 
  <p>
- This only gets set if <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_useStackTraceHashes"><code>RestContext.REST_useStackTraceHashes</code></a> is enabled on the servlet.</div>
+ This only gets set if <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#useStackTraceHashes--"><code>RestResource.useStackTraceHashes()</code></a> is enabled on the servlet.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The occurrence number if <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_useStackTraceHashes"><code>RestContext.REST_useStackTraceHashes</code></a> is enabled, or <code>0</code> otherwise.</dd>
+<dd>The occurrence number if <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#useStackTraceHashes--"><code>RestResource.useStackTraceHashes()</code></a> is enabled, or <code>0</code> otherwise.</dd>
 </dl>
 </li>
 </ul>
@@ -388,7 +388,7 @@ extends <a href="../../../../org/apache/juneau/FormattedRuntimeException.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStatus</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.162">getStatus</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.163">getStatus</a>()</pre>
 <div class="block">Returns the HTTP status code.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/RestResourceResolver.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestResourceResolver.html b/content/site/apidocs/org/apache/juneau/rest/RestResourceResolver.html
index ba15479..115b947 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestResourceResolver.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestResourceResolver.html
@@ -121,7 +121,7 @@ var activeTableTab = "activeTableTab";
 
  <p>
  An instance of this class can also be passed in through the servlet context as the context attribute
- <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_resourceResolver"><code>RestContext.REST_resourceResolver</code></a>.</div>
+ <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#resourceResolver--"><code>RestResource.resourceResolver()</code></a>.</div>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html b/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
index 02d6735..879f7ec 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
@@ -133,11 +133,11 @@ var activeTableTab = "activeTableTab";
 <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#serializers--">serializers</a>={<a href="../../../../org/apache/juneau/html/HtmlDocSerializer.html" title="class in org.apache.juneau.html">HtmlDocSerializer.class</a>,<a href="../../../../org/apache/juneau/html/HtmlStrippedDocSerializer.html" title="class in org.apache.juneau.html">HtmlStrippedDocSerializer.class</a>,<a href="../../../../org/apache/juneau/html/HtmlSchemaDocSerializer.html" title="class in org.apache.juneau.html">HtmlSchemaDocSerializer.class</a>,<a href="../../../../org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json">JsonSerializer.class</a>,<a href="../../../../org/apache/juneau/json/JsonSerializer.Simple.html" title="class in org.apache.juneau.json">JsonSerializer.Simple.class</a>,<a href="../../../../org/apac
 he/juneau/json/JsonSchemaSerializer.html" title="class in org.apache.juneau.json">JsonSchemaSerializer.class</a>,<a href="../../../../org/apache/juneau/xml/XmlDocSerializer.html" title="class in org.apache.juneau.xml">XmlDocSerializer.class</a>,<a href="../../../../org/apache/juneau/xml/XmlSchemaDocSerializer.html" title="class in org.apache.juneau.xml">XmlSchemaDocSerializer.class</a>,<a href="../../../../org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon">UonSerializer.class</a>,<a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializer.class</a>,<a href="../../../../org/apache/juneau/msgpack/MsgPackSerializer.html" title="class in org.apache.juneau.msgpack">MsgPackSerializer.class</a>,<a href="../../../../org/apache/juneau/soap/SoapXmlSerializer.html" title="class in org.apache.juneau.soap">SoapXmlSerializer.class</a>,<a href="../../../../org/apache/juneau/plainte
 xt/PlainTextSerializer.html" title="class in org.apache.juneau.plaintext">PlainTextSerializer.class</a>},
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#parsers--">parsers</a>={<a href="../../../../org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json">JsonParser.class</a>,<a href="../../../../org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml">XmlParser.class</a>,<a href="../../../../org/apache/juneau/html/HtmlParser.html" title="class in org.apache.juneau.html">HtmlParser.class</a>,<a href="../../../../org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon">UonParser.class</a>,<a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding">UrlEncodingParser.class</a>,<a href="../../../../org/apache/juneau/msgpack/MsgPackParser.html" title="class in org.apache.juneau.msgpack">MsgPackParser.class</a>,<a href="../../../../org/apache/juneau/plaintext/PlainTextParser.html" title="class in org.apache.juneau.plaintext">PlainT
 extParser.class</a>},
-              <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>="RestServlet.allowMethodParam",<a href="../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="OPTIONS"),
+              <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--">allowMethodParam</a>="OPTIONS",
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=,
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#favicon--">favicon</a>="htdocs/juneau.png",
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#staticFiles--">staticFiles</a>="{htdocs:\'htdocs\',styles:\'styles\'}")
-public abstract class <a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.207">RestServletDefault</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.202">RestServletDefault</a>
 extends <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></pre>
 <div class="block">Subclass of <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> with default serializers and parsers defined.
 
@@ -365,7 +365,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="cla
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RestServletDefault</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.207">RestServletDefault</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.202">RestServletDefault</a>()</pre>
 </li>
 </ul>
 </li>
@@ -387,7 +387,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="cla
             <a href="../../../../org/apache/juneau/rest/annotation/RestMethod.html#htmldoc--">htmldoc</a>=,
             <a href="../../../../org/apache/juneau/rest/annotation/RestMethod.html#summary--">summary</a>="Swagger documentation",
             <a href="../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Auto-generated swagger documentation for this resource")
-public&nbsp;<a href="../../../../org/apache/juneau/dto/swagger/Swagger.html" title="class in org.apache.juneau.dto.swagger">Swagger</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.227">getOptions</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)</pre>
+public&nbsp;<a href="../../../../org/apache/juneau/dto/swagger/Swagger.html" title="class in org.apache.juneau.dto.swagger">Swagger</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.222">getOptions</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)</pre>
 <div class="block">[OPTIONS /*] - Show resource options.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/annotation/FormData.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/FormData.html b/content/site/apidocs/org/apache/juneau/rest/annotation/FormData.html
index 6a70e58..6de2462 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/FormData.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/FormData.html
@@ -276,7 +276,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
       <br>This treats request parameters as plain text.
       <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this mode.
    <li>
-      <js>"INHERIT"</js> (default) - Inherit from the <a href="../../../../../org/apache/juneau/rest/RestContext.html#REST_paramFormat"><code>RestContext.REST_paramFormat</code></a> property on the
+      <js>"INHERIT"</js> (default) - Inherit from the <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> property on the
       servlet method or class.
  </ul>
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/annotation/Query.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/Query.html b/content/site/apidocs/org/apache/juneau/rest/annotation/Query.html
index b9a26e1..5d3e339 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/Query.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/Query.html
@@ -272,7 +272,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
       <br>This treats request parameters as plain text.
       <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this mode.
    <li>
-      <js>"INHERIT"</js> (default) - Inherit from the <a href="../../../../../org/apache/juneau/rest/RestContext.html#REST_paramFormat"><code>RestContext.REST_paramFormat</code></a> property on the
+      <js>"INHERIT"</js> (default) - Inherit from the <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> property on the
       servlet method or class.
  </ul>
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html b/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html
index 0fa1404..afc8ad7 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html
@@ -149,71 +149,83 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#defaultCharset--">defaultCharset</a></span></code>
+<div class="block">Default character encoding.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#defaultFormData--">defaultFormData</a></span></code>
 <div class="block">Specifies default values for form-data parameters.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#defaultQuery--">defaultQuery</a></span></code>
 <div class="block">Specifies default values for query parameters.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#defaultRequestHeaders--">defaultRequestHeaders</a></span></code>
 <div class="block">Specifies default values for request headers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a></span></code>
 <div class="block">Optional description for the exposed API.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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/encoders/Encoder.html" title="class in org.apache.juneau.encoders">Encoder</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#encoders--">encoders</a></span></code>
 <div class="block">Appends to the list of <a href="../../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders"><code>encoders</code></a> specified on the servlet.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#flags--">flags</a></span></code>
 <div class="block">Shortcut for setting <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#properties--"><code>properties()</code></a> of simple boolean types.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#guards--">guards</a></span></code>
 <div class="block">Method guards.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#htmldoc--">htmldoc</a></span></code>
 <div class="block">Provides HTML-doc-specific metadata on this method.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#inheritEncoders--">inheritEncoders</a></span></code>
 <div class="block">Specifies whether the method should inherit encoders from the servlet.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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/RestMatcher.html" title="class in org.apache.juneau.rest">RestMatcher</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#matchers--">matchers</a></span></code>
 <div class="block">Method matchers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a></span></code>
 <div class="block">REST method name.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#paramFormat--">paramFormat</a></span></code>
+<div class="block">Expected format of request parameters.</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code><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/Parser.html" title="class in org.apache.juneau.parser">Parser</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#parsers--">parsers</a></span></code>
@@ -1182,7 +1194,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <li class="blockList"><a name="htmldoc--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>htmldoc</h4>
 <pre>public abstract&nbsp;<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestMethod.html#line.632">htmldoc</a></pre>
@@ -1198,6 +1210,77 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 </ul>
 </li>
 </ul>
+<ul class="blockList">
+<li class="blockList"><a name="defaultCharset--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>defaultCharset</h4>
+<pre>public abstract&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/annotation/RestMethod.html#line.647">defaultCharset</a></pre>
+<div class="block">Default character encoding.
+
+ <p>
+ The default character encoding for the request and response if not specified on the request.
+
+ <ul>
+   <li>String value.
+   <li>Defaults to system property <js>"juneau.defaultCharset"</js>, or <js>"utf-8"</js> if not specified.
+   <li>Can contain variables.
+   <li>Overrides the value at the class level via <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>@RestResource.defaultCharset()</code></a>.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="paramFormat--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>paramFormat</h4>
+<pre>public abstract&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/annotation/RestMethod.html#line.679">paramFormat</a></pre>
+<div class="block">Expected format of request parameters.
+
+ Possible values:
+ <ul class='spaced-list'>
+   <li>
+      <js>"UON"</js> - URL-Encoded Object Notation.
+      <br>This notation allows for request parameters to contain arbitrarily complex POJOs.
+   <li>
+      <js>"PLAIN"</js> - Plain text.
+      <br>This treats request parameters as plain text.
+      <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this
+      mode.
+ </ul>
+
+ <p>
+ Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but
+ <js>"foo"</js> when using UON mode.
+
+ <p>
+ The format can also be specified per-parameter using the <a href="../../../../../org/apache/juneau/rest/annotation/FormData.html#format--"><code>@FormData.format()</code></a> and
+ <a href="../../../../../org/apache/juneau/rest/annotation/Query.html#format--"><code>@Query.format()</code></a> annotations.
+
+ <ul>
+   <li>String value.
+   <li>Defaults to system property <js>"juneau.paramFormat"</js>, or <js>"UON"</js> if not specified.
+   <li>Can contain variables.
+   <li>Overrides the value at the class level via <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>@RestResource.paramFormat()</code></a>.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/annotation/RestResource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/RestResource.html b/content/site/apidocs/org/apache/juneau/rest/annotation/RestResource.html
index cef4af7..d7334a9 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/RestResource.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/RestResource.html
@@ -124,47 +124,71 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <th class="colLast" scope="col">Optional Element and Description</th>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--">allowBodyParam</a></span></code>
+<div class="block">Enable <js>"body"</js> URL parameter.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--">allowHeaderParams</a></span></code>
+<div class="block">Enable header URL parameters.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--">allowMethodParam</a></span></code>
+<div class="block">Enable <js>"method"</js> URL parameter for specific HTTP methods.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code><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;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#beanFilters--">beanFilters</a></span></code>
 <div class="block">Class-level bean filters.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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="class in org.apache.juneau.rest">RestCallHandler</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#callHandler--">callHandler</a></span></code>
 <div class="block">Specifies the REST call handler class.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#children--">children</a></span></code>
 <div class="block">Defines children of this resource.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#clientVersionHeader--">clientVersionHeader</a></span></code>
 <div class="block">Specifies the HTTP header name used to identify the client version.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#config--">config</a></span></code>
 <div class="block">Optional location of configuration file for this servlet.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#contextPath--">contextPath</a></span></code>
 <div class="block">Overrides the context path value for this resource and any child resources.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#converters--">converters</a></span></code>
 <div class="block">Class-level converters.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--">defaultCharset</a></span></code>
+<div class="block">Default character encoding.</div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultRequestHeaders--">defaultRequestHeaders</a></span></code>
@@ -232,41 +256,53 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--">paramFormat</a></span></code>
+<div class="block">Expected format of request parameters.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code><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.apache.juneau.rest">RestParam</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#paramResolvers--">paramResolvers</a></span></code>
 <div class="block">Class-level Java method parameter resolvers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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 in org.apache.juneau.parser">ParserListener</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#parserListener--">parserListener</a></span></code>
 <div class="block">Specifies the parser listener class to use for listening for non-fatal errors.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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/Parser.html" title="class in org.apache.juneau.parser">Parser</a>&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#parsers--">parsers</a></span></code>
 <div class="block">Specifies a list of <a href="../../../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser"><code>Parser</code></a> classes to add to the list of parsers available for this servlet.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#path--">path</a></span></code>
 <div class="block">Identifies the URL subpath relative to the parent resource.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#pojoSwaps--">pojoSwaps</a></span></code>
 <div class="block">Class-level POJO swaps.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/juneau/rest/annotation/Property.html" title="annotation in org.apache.juneau.rest.annotation">Property</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#properties--">properties</a></span></code>
 <div class="block">Class-level properties.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--">renderResponseStackTraces</a></span></code>
+<div class="block">Render stack traces.</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code><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="interface in org.apache.juneau.rest">RestResourceResolver</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#resourceResolver--">resourceResolver</a></span></code>
@@ -316,6 +352,12 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <div class="block">Optional servlet title.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#useStackTraceHashes--">useStackTraceHashes</a></span></code>
+<div class="block">Use stack trace hashes.</div>
+</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -1164,7 +1206,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>resourceResolver</h4>
-<pre>public abstract&nbsp;<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="interface in org.apache.juneau.rest">RestResourceResolver</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.634">resourceResolver</a></pre>
+<pre>public abstract&nbsp;<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="interface in org.apache.juneau.rest">RestResourceResolver</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.632">resourceResolver</a></pre>
 <div class="block">Specifies the resolver class to use for resolving child resources by class name.
 
  <p>
@@ -1194,9 +1236,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 
  <p>
  The programmatic equivalent to this annotation are the <a href="../../../../../org/apache/juneau/rest/RestConfig.html#setResourceResolver-java.lang.Class-"><code>RestConfig.setResourceResolver(Class)</code></a>/
- <a href="../../../../../org/apache/juneau/rest/RestConfig.html#setResourceResolver-org.apache.juneau.rest.RestResourceResolver-"><code>RestConfig.setResourceResolver(RestResourceResolver)</code></a> methods.
- <br>The value (class or instance) can also be set via the servlet context attribute
- * <a href="../../../../../org/apache/juneau/rest/RestContext.html#REST_resourceResolver"><code>RestContext.REST_resourceResolver</code></a>.</div>
+ <a href="../../../../../org/apache/juneau/rest/RestConfig.html#setResourceResolver-org.apache.juneau.rest.RestResourceResolver-"><code>RestConfig.setResourceResolver(RestResourceResolver)</code></a> methods.</div>
 <dl>
 <dt>Default:</dt>
 <dd>org.apache.juneau.rest.RestResourceResolverSimple.class</dd>
@@ -1212,7 +1252,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>logger</h4>
-<pre>public abstract&nbsp;<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="class in org.apache.juneau.rest">RestLogger</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.647">logger</a></pre>
+<pre>public abstract&nbsp;<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="class in org.apache.juneau.rest">RestLogger</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.645">logger</a></pre>
 <div class="block">Specifies the logger class to use for logging.
 
  <p>
@@ -1237,7 +1277,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>callHandler</h4>
-<pre>public abstract&nbsp;<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="class in org.apache.juneau.rest">RestCallHandler</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.660">callHandler</a></pre>
+<pre>public abstract&nbsp;<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="class in org.apache.juneau.rest">RestCallHandler</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.658">callHandler</a></pre>
 <div class="block">Specifies the REST call handler class.
 
  <p>
@@ -1262,7 +1302,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>infoProvider</h4>
-<pre>public abstract&nbsp;<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="class in org.apache.juneau.rest">RestInfoProvider</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.672">infoProvider</a></pre>
+<pre>public abstract&nbsp;<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="class in org.apache.juneau.rest">RestInfoProvider</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.670">infoProvider</a></pre>
 <div class="block">Specifies the class used to retrieve title/description/swagger information about a resource.
 
  <p>
@@ -1286,7 +1326,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>serializerListener</h4>
-<pre>public abstract&nbsp;<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" title="class in org.apache.juneau.serializer">SerializerListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.677">serializerListener</a></pre>
+<pre>public abstract&nbsp;<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" title="class in org.apache.juneau.serializer">SerializerListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.675">serializerListener</a></pre>
 <div class="block">Specifies the serializer listener class to use for listening for non-fatal errors.</div>
 <dl>
 <dt>Default:</dt>
@@ -1303,7 +1343,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>parserListener</h4>
-<pre>public abstract&nbsp;<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 in org.apache.juneau.parser">ParserListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.682">parserListener</a></pre>
+<pre>public abstract&nbsp;<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 in org.apache.juneau.parser">ParserListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.680">parserListener</a></pre>
 <div class="block">Specifies the parser listener class to use for listening for non-fatal errors.</div>
 <dl>
 <dt>Default:</dt>
@@ -1320,7 +1360,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>swagger</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation">ResourceSwagger</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.707">swagger</a></pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation">ResourceSwagger</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.705">swagger</a></pre>
 <div class="block">Provides swagger-specific metadata on this resource.
 
  <p>
@@ -1357,7 +1397,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <ul class="blockList">
 <li class="blockList">
 <h4>htmldoc</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.751">htmldoc</a></pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.749">htmldoc</a></pre>
 <div class="block">Provides HTML-doc-specific metadata on this method.
 
  <p>
@@ -1410,10 +1450,10 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 <li class="blockList"><a name="contextPath--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>contextPath</h4>
-<pre>public abstract&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/annotation/RestResource.html#line.762">contextPath</a></pre>
+<pre>public abstract&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/annotation/RestResource.html#line.760">contextPath</a></pre>
 <div class="block">Overrides the context path value for this resource and any child resources.
 
  <p>
@@ -1429,6 +1469,230 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
 </ul>
 </li>
 </ul>
+<ul class="blockList">
+<li class="blockList"><a name="allowHeaderParams--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>allowHeaderParams</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.778">allowHeaderParams</a></pre>
+<div class="block">Enable header URL parameters.
+
+ <p>
+ When enabled, headers such as <js>"Accept"</js> and <js>"Content-Type"</js> to be passed in as URL query
+ parameters.
+ For example:  <js>"?Accept=text/json&amp;Content-Type=text/json"</js>
+
+ <ul>
+   <li>Boolean value.
+   <li>Defaults to system property <js>"juneau.allowHeaderParams"</js>, or <js>"true"</js> if not specified.
+   <li>Can contain variables.
+      <li>Parameter names are case-insensitive.
+   <li>Useful for debugging REST interface using only a browser.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="allowMethodParam--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>allowMethodParam</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.805">allowMethodParam</a></pre>
+<div class="block">Enable <js>"method"</js> URL parameter for specific HTTP methods.
+
+ <p>
+ When specified, the HTTP method can be overridden by passing in a <js>"method"</js> URL parameter on a regular
+ GET request.
+ For example:  <js>"?method=OPTIONS"</js>
+
+ <p>
+ Example: <js>"HEAD,OPTIONS"</js>
+
+ <ul>
+   <li>Format is a comma-delimited list of HTTP method names that can be passed in as a method parameter.
+   <li>Defaults to system property <js>"juneau.allowMethodParam"</js>, or <js>"HEAD,OPTIONS"</js> if not specified.
+   <li>Can contain variables.
+   <li>Parameter name is case-insensitive.
+   <li>Use "*" to represent all methods.
+   <li>For backwards compatibility, "true" also means "*".
+ </ul>
+
+ <p>
+ Note that per the <a class="doclink"
+ href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, special care should
+ be taken when allowing non-safe (POST, PUT, DELETE) methods to be invoked through GET requests.</div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="allowBodyParam--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>allowBodyParam</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.823">allowBodyParam</a></pre>
+<div class="block">Enable <js>"body"</js> URL parameter.
+
+ <p>
+ When enabled, the HTTP body content on PUT and POST requests can be passed in as text using the <js>"body"</js>
+ URL parameter.
+ For example:  <js>"?body={name:'John%20Smith',age:45}"</js>
+
+ <ul>
+   <li>Boolean value.
+   <li>Defaults to system property <js>"juneau.allowBodyParam"</js>, or <js>"true"</js> if not specified.
+   <li>Can contain variables.
+   <li>Parameter name is case-insensitive.
+   <li>Useful for debugging PUT and POST methods using only a browser.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="renderResponseStackTraces--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>renderResponseStackTraces</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.838">renderResponseStackTraces</a></pre>
+<div class="block">Render stack traces.
+
+ <p>
+ Render stack traces in HTTP response bodies when errors occur.
+
+ <ul>
+   <li>Boolean value.
+   <li>Defaults to system property <js>"juneau.renderResponseStackTraces"</js>, or <js>"false"</js> if not specified.
+   <li>Can contain variables.
+   <li>Useful for debugging, although allowing stack traces to be rendered may cause security concerns.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="useStackTraceHashes--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>useStackTraceHashes</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.853">useStackTraceHashes</a></pre>
+<div class="block">Use stack trace hashes.
+
+ <p>
+ When enabled, the number of times an exception has occurred will be determined based on stack trace hashsums,
+ made available through the <a href="../../../../../org/apache/juneau/rest/RestException.html#getOccurrence--"><code>RestException.getOccurrence()</code></a> method.
+
+ <ul>
+   <li>Boolean value.
+   <li>Defaults to system property <js>"juneau.useStackTraceHashes"</js>, or <js>"true"</js> if not specified.
+   <li>Can contain variables.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="defaultCharset--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>defaultCharset</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.868">defaultCharset</a></pre>
+<div class="block">Default character encoding.
+
+ <p>
+ The default character encoding for the request and response if not specified on the request.
+
+ <ul>
+   <li>String value.
+   <li>Defaults to system property <js>"juneau.defaultCharset"</js>, or <js>"utf-8"</js> if not specified.
+   <li>Can contain variables.
+   <li>Can be overridden at the method level using <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#defaultCharset--"><code>@RestMethod.defaultCharset()</code></a>.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="paramFormat--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>paramFormat</h4>
+<pre>public abstract&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/annotation/RestResource.html#line.900">paramFormat</a></pre>
+<div class="block">Expected format of request parameters.
+
+ Possible values:
+ <ul class='spaced-list'>
+   <li>
+      <js>"UON"</js> - URL-Encoded Object Notation.
+      <br>This notation allows for request parameters to contain arbitrarily complex POJOs.
+   <li>
+      <js>"PLAIN"</js> - Plain text.
+      <br>This treats request parameters as plain text.
+      <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this
+      mode.
+ </ul>
+
+ <p>
+ Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but
+ <js>"foo"</js> when using UON mode.
+
+ <p>
+ The format can also be specified per-parameter using the <a href="../../../../../org/apache/juneau/rest/annotation/FormData.html#format--"><code>@FormData.format()</code></a> and
+ <a href="../../../../../org/apache/juneau/rest/annotation/Query.html#format--"><code>@Query.format()</code></a> annotations.
+
+ <ul>
+   <li>String value.
+   <li>Defaults to system property <js>"juneau.paramFormat"</js>, or <js>"UON"</js> if not specified.
+   <li>Can contain variables.
+   <li>Can be overridden at the method level using <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#paramFormat--"><code>@RestMethod.paramFormat()</code></a>.
+ </ul></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/package-summary.html
----------------------------------------------------------------------
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 208d237..95123d7 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-summary.html
@@ -3382,15 +3382,13 @@
    }
       </p>
       <p>
-         To support overloaded methods, the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowMethodParam"><code>RestContext.REST_allowMethodParam</code></a> property
-         must be set on your servlet.
+         To support overloaded methods, the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--"><code>RestResource.allowMethodParam()</code></a> 
+         setting must be enabled on your servlet.
       </p>
       <p class='bcode'>
    <ja>@RestResource</ja>(
-      properties={
-         <jc>// Allow &amp;method parameter on BAR requests</jc>
-         <ja>@Property</ja>(name=<jsf>REST_allowMethodParam</jsf>, value=<js>"BAR"</js>)
-      },
+      <jc>// Allow &amp;method parameter on BAR requests</jc>
+      allowMethodParam=<js>"BAR"</js>
    )
       </p>
    </div>
@@ -3433,21 +3431,21 @@
             <td class='code'>&amp;method=X</td>
             <td>
                Overload the HTTP method as a GET parameter (e.g <l>"POST"</l>).
-               <br>Must be enabled via <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowMethodParam"><code>RestContext.REST_allowMethodParam</code></a> property.
+               <br>Must be enabled via <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--"><code>RestResource.allowMethodParam()</code></a> setting.
             </td>
          </tr>
          <tr>
             <td class='code'>&amp;X=headerValue</td>
             <td>
                Specify a header value as a GET parameter.
-               <br>Must be enabled via <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams"><code>RestContext.REST_allowHeaderParams</code></a> property.
+               <br>Must be enabled via <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>RestResource.allowHeaderParams()</code></a> setting.
             </td>
          </tr>
          <tr>
             <td class='code'>&amp;content=X</td>
             <td>
                Pass in the HTTP body content on PUT and POST methods as a UON-encoded GET parameter.
-               <br>Must be enabled via <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowBodyParam"><code>RestContext.REST_allowBodyParam</code></a> property.
+               <br>Must be enabled via <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>RestResource.allowBodyParam()</code></a> setting.
             </td>
          </tr>
       </table>
@@ -3798,12 +3796,12 @@
          stylesheet=<js>"servlet:/styles/devops.css"</js>,
       ),
 
+      <jc>// Allow INIT as a method parameter.</jc>
+      allowMethodParam=<js>"*"</js>,
+   
       <jc>// Properties that get applied to all serializers and parsers.</jc>
       properties={
          
-         <jc>// Allow INIT as a method parameter.</jc>
-         <ja>@Property</ja>(name=<jsf>REST_allowMethodParam</jsf>, value=<js>"*"</js>),
-   
          <jc>// Use single quotes.</jc>
          <ja>@Property</ja>(name=<jsf>SERIALIZER_quoteChar</jsf>, value=<js>"'"</js>),
          

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/overview-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-summary.html b/content/site/apidocs/overview-summary.html
index 62bdac2..6d1e816 100644
--- a/content/site/apidocs/overview-summary.html
+++ b/content/site/apidocs/overview-summary.html
@@ -412,7 +412,7 @@
 <ul class='spaced-list'>
    <li>A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework.
    <li>A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply deployed as 
-      one or more top-level servlets in any Servlet 3.1.0+ container.
+      one or more top-level servlets in any Servlet 3.1 or above container.
    <li>A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy interfaces.
    <li>A sophisticated configuration file API.
    <li>A REST microservice API that combines all the features above with a simple configurable Jetty server for 
@@ -530,7 +530,7 @@
    <ul class='spaced-list'>
       <li>A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework.
       <li>A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply 
-         deployed as one or more top-level servlets in any Servlet 3.1.0+ container.
+         deployed as one or more top-level servlets in any Servlet 3.1 or above container.
       <li>A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy 
          interfaces.
       <li>A sophisticated configuration file API.
@@ -698,7 +698,7 @@
             <td>
                <ul style='margin:0px 10px;'>
                   <li>Java 6
-                  <li>Apache HttpClient 4.5
+                  <li>Apache HttpClient 4.5.3
                </ul>
             </td>
          </tr>
@@ -801,21 +801,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-marshall&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-marshall<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-marshall-6.4.0-incubating.jar 
       </p>  
       
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.marshall_6.4.0-incubating.jar 
       </p>  
 
@@ -2535,21 +2535,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-marshall-rdf&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-marshall-rdf<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-marshall-rdf-6.4.0-incubating.jar 
       </p>  
    
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.marshall.rdf_6.4.0-incubating.jar 
       </p>  
    
@@ -2618,21 +2618,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-dto&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-dto<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-dto-6.4.0-incubating.jar 
       </p>  
    
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.dto_6.4.0-incubating.jar 
       </p>  
    
@@ -3037,21 +3037,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-svl&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-svl<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-svl-6.4.0-incubating.jar 
       </p>  
    
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.svl_6.4.0-incubating.jar 
       </p>  
    
@@ -3097,21 +3097,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-config&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-config<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-config-6.4.0-incubating.jar 
       </p>  
    
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.config_6.4.0-incubating.jar 
       </p>  
    
@@ -3386,21 +3386,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-rest-server&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-rest-server<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-rest-server-6.4.0-incubating.jar 
       </p>  
    
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.rest.server_6.4.0-incubating.jar 
       </p>  
    
@@ -4012,21 +4012,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-rest-server-jaxrs&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-rest-server-jaxrs<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-rest-server-jaxrs-6.4.0-incubating.jar 
       </p>  
       
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.rest.server_6.4.0-incubating.jar 
       </p>  
       
@@ -4049,21 +4049,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-rest-client&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-rest-client<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-rest-client-6.4.0-incubating.jar 
       </p>  
    
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.rest.client_6.4.0-incubating.jar 
       </p>  
    
@@ -4265,21 +4265,21 @@
    <div class='topic'>
    
       <h6 class='figure'>Maven Dependency</h6>
-      <p class='bcode'>
-   &lt;<xt>dependency</xt>&gt;
-      &lt;<xt>groupId</xt>&gt;org.apache.juneau&lt;<xt>/groupId</xt>&gt;
-      &lt;<xt>artifactId</xt>&gt;juneau-microservice-server&lt;<xt>/artifactId</xt>&gt;
-      &lt;<xt>version</xt>&gt;6.4.0-incubating&lt;<xt>/version</xt>&gt;
-   &lt;<xt>/dependency</xt>&gt;
+      <p class='bcode' style='width:500px;'>
+   <xt>&lt;dependency&gt;</xt>
+      <xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+      <xt>&lt;artifactId&gt;</xt>juneau-microservice-server<xt>&lt;/artifactId&gt;</xt>
+      <xt>&lt;version&gt;</xt>6.4.0-incubating<xt>&lt;/version&gt;</xt>
+   <xt>&lt;/dependency&gt;</xt>
       </p>  
       
       <h6 class='figure'>Java Library</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-microservice-server-6.4.0-incubating.jar 
       </p>  
 
       <h6 class='figure'>OSGi Module</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    org.apache.juneau.microservice.server_6.4.0-incubating.jar 
       </p>  
 
@@ -4338,7 +4338,7 @@
    <div class='topic'>
    
       <h6 class='figure'>Archive File</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    my-microservice-6.4.0-incubating.zip 
       </p>  
       
@@ -4396,7 +4396,7 @@
    <div class='topic'>
    
       <h6 class='figure'>Archive File</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-examples-core-6.4.0-incubating.zip 
       </p>  
       
@@ -4436,7 +4436,7 @@
    <div class='topic'>
    
       <h6 class='figure'>Archive File</h6>
-      <p class='bcode'>
+      <p class='bcode' style='width:500px;'>
    juneau-examples-rest-6.4.0-incubating.zip 
       </p>  
    
@@ -4467,7 +4467,7 @@
          The microservice can be started from the <code>juneau-examples-rest.launch</code> file.
          It will start up the microservice on port 10000 which you can then view through a browser:
       </p>
-      <img class='bordered' src='doc-files/juneau-examples-rest.import4.png' style='width:933px'>
+      <img class='bordered' src='doc-files/juneau-examples-rest.import4.png' style='width:466px'>
       
       
       <!-- ======================================================================================================= -->
@@ -5793,12 +5793,12 @@
          }
       ),
 
+      <jc>// Allow INIT as a method parameter.</jc>
+      allowMethodParam=<js>"*"</js>,
+   
       <jc>// Properties that get applied to all serializers and parsers.</jc>
       properties={
          
-         <jc>// Allow INIT as a method parameter.</jc>
-         <ja>@Property</ja>(name=<jsf>REST_allowMethodParam</jsf>, value=<js>"*"</js>),
-   
          <jc>// Use single quotes.</jc>
          <ja>@Property</ja>(name=<jsf>SERIALIZER_quoteChar</jsf>, value=<js>"'"</js>),
          
@@ -6476,7 +6476,7 @@
             </p>
             <p>
                The ability to overload methods is enabled through the 
-               <a href="org/apache/juneau/rest/RestContext.html#REST_allowMethodParam"><code>RestContext.REST_allowMethodParam</code></a> property.
+               <a href="org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--"><code>RestResource.allowMethodParam()</code></a> setting.
             </p>
          </div>
       </div>   
@@ -6517,10 +6517,8 @@
             <js>"options: servlet:/?method=OPTIONS"</js>
          }
       ),
-      properties={ 
-         <jc>// Allow us to use method=POST from a browser.</jc> 
-         <ja>@Property</ja>(name=<jsf>REST_allowMethodParam</jsf>, value=<js>"*"</js>) 
-      } 
+      <jc>// Allow us to use method=POST from a browser.</jc> 
+      allowMethodParam=<js>"*"</js> 
    ) 
    <jk>public class</jk> SampleRemoteableServlet <jk>extends</jk> RemoteableServlet { 
    
@@ -7802,6 +7800,7 @@
       <h6 class='topic'>juneau-dto</h6>
       <ul class='spaced-list'>
       </ul>
+      
    </div>
 
    <!-- =========================================================================================================== -->
@@ -8199,13 +8198,35 @@
             <a href="org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest"><code>RestResourceResolver</code></a> instances are now inherited from parent resources to child resources
             unless explicitly overridden at the child level.
             <br>It's also been changed to an interface.
-         <li>
-            New setting: <a href="org/apache/juneau/rest/RestContext.html#REST_resourceResolver"><code>RestContext.REST_resourceResolver</code></a>.  
-            <br>Allows you to specify a resource resolver on the servlet context to make it easier to work with
-            dependency injection frameworks.
-         <li>
-            New annotation: <a href="org/apache/juneau/rest/annotation/RestResource.html#contextPath--"><code>RestResource.contextPath()</code></a>.
-            <br>Allows you to override the context path value inherited from the servlet container.
+         <li>New annotations on <a href="org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestResource</code></a>:
+            <ul>
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#resourceResolver--"><code>resourceResolver()</code></a>
+                  <br>Allows you to specify a resource resolver on the servlet context to make it easier to work with
+                  dependency injection frameworks.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#contextPath--"><code>contextPath()</code></a> - 
+                  <br>Allows you to override the context path value inherited from the servlet container.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>allowHeaderParams()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_allowHeaderParams</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--"><code>allowMethodParam()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_allowMethodParam</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>allowBodyParam()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_allowBodyParam</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>renderResponseStackTraces()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_xxx</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#useStackTraceHashes--"><code>useStackTraceHashes()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_useStackTraceHashes</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>defaultCharset()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_defaultCharset</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>paramFormat()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_paramFormat</code> setting.
+            </ul>
+         <li>New annotations on <a href="org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestMethod</code></a>:
+            <ul>
+               <li><a href="org/apache/juneau/rest/annotation/RestMethod.html#defaultCharset--"><code>defaultCharset()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_defaultCharset</code> setting.
+               <li><a href="org/apache/juneau/rest/annotation/RestMethod.html#paramFormat--"><code>paramFormat()</code></a> - 
+                  <br>Replaces the <code>RestContext.REST_paramFormat</code> setting.
+            </ul>
          <li>
             The following implementation classes can now be defined as non-static inner classes of servlets/resources:
             <ul>
@@ -8238,12 +8259,32 @@
       <h6 class='topic'>juneau-microservice</h6>
       <ul class='spaced-list'>
          <li>
+            The microservice has been significantly modified to be configured via a <code>jetty.xml</code> file
+            for maximum flexibility instead of the hodge-podge of support in the config file.
+            <br>Top-level servlets should now be defined in the provided <code>jetty.xml</code> file.
+         <li>
             New methods on <a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice"><code>RestMicroservice</code></a>:
             <ul>
                <li><a href="org/apache/juneau/microservice/RestMicroservice.html#addServlet-javax.servlet.Servlet-java.lang.String-"><code>addServlet(Servlet,String)</code></a>
                <li><a href="org/apache/juneau/microservice/RestMicroservice.html#addServletAttribute-java.lang.String-java.lang.Object-"><code>addServletAttribute(String,Object)</code></a>
                <li><a href="org/apache/juneau/microservice/RestMicroservice.html#getServer--"><code>getServer()</code></a>
+               <li><a href="org/apache/juneau/microservice/RestMicroservice.html#getInstance--"><code>getInstance()</code></a>
+               <li><a href="org/apache/juneau/microservice/RestMicroservice.html#getPort--"><code>getPort()</code></a>
+               <li><a href="org/apache/juneau/microservice/RestMicroservice.html#getContextPath--"><code>getContextPath()</code></a>
+               <li><a href="org/apache/juneau/microservice/RestMicroservice.html#getProtocol--"><code>getProtocol()</code></a>
+               <li><a href="org/apache/juneau/microservice/RestMicroservice.html#getHostName--"><code>getHostName()</code></a>
             </ul>
+         <li>
+            New methods on <a href="org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice"><code>Microservice</code></a>:
+            <ul>
+               <li><a href="org/apache/juneau/microservice/Microservice.html#getInstance--"><code>getInstance()</code></a>
+            </ul>
+         <li>
+            New class <a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><code>JettyLogger</code></a> for directing Jetty logging to the
+            java.util.logging framework.
+         <li>
+            New class <a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><code>DebugResource</code></a> for viewing and generating
+            Jetty thread dumps through REST calls.
       </ul>
 
       <h6 class='topic'>org.apache.juneau.rest.examples</h6>



[18/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
----------------------------------------------------------------------
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 a35ad10..7345499 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>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
----------------------------------------------------------------------
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 b073baa..49238cc 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -137,8 +137,8 @@ var activeTableTab = "activeTableTab";
 </dl>
 <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 $R{attribute.path}",<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#messages--">messages</a>="nls/DirectoryResource",<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">@HtmlDoc</a>(<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html#links--">links</a>={"up: request:/..","options: servlet:/?method=OPTIONS"}),<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",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="PROPERTY_NAME"),<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>="RestServlet.allowMethodParam",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</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>=
 "DirectoryResource.rootDir",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="")})
-public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.78">DirectoryResource</a>
+<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 $R{attribute.path}",<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#messages--">messages</a>="nls/DirectoryResource",<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">@HtmlDoc</a>(<a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html#links--">links</a>={"up: request:/..","options: servlet:/?method=OPTIONS"}),<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.
 html#allowMethodParam--">allowMethodParam</a>="*",<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",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="PROPERTY_NAME"),<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>="DirectoryResource.rootDir",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="")})
+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>
 <div class="block">REST resource that allows access to a file system directory.
  
@@ -335,7 +335,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.78">DirectoryResource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.77">DirectoryResource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -352,7 +352,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.89">init</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.88">init</a>()
           throws <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletException.html?is-external=true" title="class or interface in javax.servlet">ServletException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -368,7 +368,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.105">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.104">getRootDir</a>()</pre>
 <div class="block">Returns the root directory defined by the 'rootDir' init parameter.
  
  <p>
@@ -389,7 +389,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.127">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.126">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 +412,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.163">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.162">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 +434,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.184">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.183">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 +456,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 +483,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 +507,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>
@@ -546,7 +546,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.htm
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
----------------------------------------------------------------------
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 aa4fdcd..e97b9de 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.306">LogsResource.FileResource</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.305">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&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.308">type</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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.307">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&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.309">name</a></pre>
+<pre>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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html#line.308">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&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.310">size</a></pre>
+<pre>public&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.309">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.311">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.310">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.312">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.311">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.312">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.311">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.312">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.311">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.312">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.311">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.312">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.311">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.314">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.313">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>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
----------------------------------------------------------------------
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 1bc6e56..6658c64 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
@@ -141,9 +141,9 @@ var activeTableTab = "activeTableTab";
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#title--">title</a>="Log files",
               <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#description--">description</a>="Log files from this service",
               <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",<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#value--">value</a>="PROPERTY_NAME"),
-              <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#flags--">flags</a>="RestServlet.allowMethodParam",
+              <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--">allowMethodParam</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.54">LogsResource</a>
+public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.53">LogsResource</a>
 extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
 <div class="block">REST resource for viewing and accessing log files.</div>
 <dl>
@@ -324,7 +324,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.54">LogsResource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.53">LogsResource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -342,7 +342,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.74">init</a>(<a href="../../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.73">init</a>(<a href="../../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
                                 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 +362,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.102">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.101">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/annotation/Properties.html" title="annotation in org.apache.juneau.rest.annotation">@Properties</a>
                                                                                                       <a href="../../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;properties,
@@ -392,7 +392,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.144">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.143">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,
@@ -439,7 +439,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.223">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.222">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")
@@ -479,7 +479,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.249">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.248">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>
@@ -504,7 +504,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.275">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.274">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>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/package-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/package-frame.html b/content/site/apidocs/org/apache/juneau/microservice/resources/package-frame.html
index f0ddd07..4961936 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/package-frame.html
@@ -14,6 +14,7 @@
 <h2 title="Classes">Classes</h2>
 <ul title="Classes">
 <li><a href="ConfigResource.html" title="class in org.apache.juneau.microservice.resources" target="classFrame">ConfigResource</a></li>
+<li><a href="DebugResource.html" title="class in org.apache.juneau.microservice.resources" target="classFrame">DebugResource</a></li>
 <li><a href="DirectoryResource.html" title="class in org.apache.juneau.microservice.resources" target="classFrame">DirectoryResource</a></li>
 <li><a href="LogEntryFormatter.html" title="class in org.apache.juneau.microservice.resources" target="classFrame">LogEntryFormatter</a></li>
 <li><a href="LogParser.html" title="class in org.apache.juneau.microservice.resources" target="classFrame">LogParser</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/package-summary.html b/content/site/apidocs/org/apache/juneau/microservice/resources/package-summary.html
index 5c1746d..7dce23d 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/package-summary.html
@@ -92,42 +92,48 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a></td>
+<td class="colLast">
+<div class="block">Microservice debug utilities.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources">DirectoryResource</a></td>
 <td class="colLast">
 <div class="block">REST resource that allows access to a file system directory.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/LogEntryFormatter.html" title="class in org.apache.juneau.microservice.resources">LogEntryFormatter</a></td>
 <td class="colLast">
 <div class="block">Log entry formatter.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/LogParser.html" title="class in org.apache.juneau.microservice.resources">LogParser</a></td>
 <td class="colLast">
 <div class="block">Utility class for reading log files.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource</a></td>
 <td class="colLast">
 <div class="block">REST resource for viewing and accessing log files.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/LogsResource.FileResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource.FileResource</a></td>
 <td class="colLast">
 <div class="block">File bean.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/SampleRootResource.html" title="class in org.apache.juneau.microservice.resources">SampleRootResource</a></td>
 <td class="colLast">
 <div class="block">Sample root REST resource.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources">ShutdownResource</a></td>
 <td class="colLast">
 <div class="block">Provides the capability to shut down this REST microservice through a REST call.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/package-tree.html
----------------------------------------------------------------------
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 99954b8..7be15d2 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
@@ -97,6 +97,7 @@
 <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>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.html b/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.html
index 3785d8b..01c73ff 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.html
@@ -434,7 +434,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 
  <p>
  The default implementation renders a plain text English message, optionally with a stack trace if
- <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces"><code>RestContext.REST_renderResponseStackTraces</code></a> is enabled.
+ <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>RestResource.renderResponseStackTraces()</code></a> is enabled.
 
  <p>
  Subclasses can override this method to provide their own custom error response handling.</div>


[22/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
Update javadocs.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/commit/eb2492a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/tree/eb2492a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/diff/eb2492a5

Branch: refs/heads/asf-site
Commit: eb2492a56bbd3b7b5d535dc09b0ec270be9da9e0
Parents: 24ee4a7
Author: JamesBognar <ja...@apache.org>
Authored: Sun Sep 24 16:08:32 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Sun Sep 24 16:08:32 2017 -0400

----------------------------------------------------------------------
 content/site/apidocs/allclasses-frame.html      |    3 +
 content/site/apidocs/allclasses-noframe.html    |    3 +
 content/site/apidocs/constant-values.html       |   70 -
 content/site/apidocs/index-all.html             |  196 +-
 .../org/apache/juneau/ini/ConfigFileImpl.html   |   76 +-
 .../org/apache/juneau/internal/KeywordSet.html  |   17 +-
 .../org/apache/juneau/internal/StringUtils.html |    4 +-
 .../org/apache/juneau/internal/SystemUtils.html |  336 ++
 .../apache/juneau/internal/TeeOutputStream.html |    4 +-
 .../apache/juneau/internal/package-frame.html   |    1 +
 .../apache/juneau/internal/package-summary.html |   18 +-
 .../apache/juneau/internal/package-tree.html    |    1 +
 .../apache/juneau/microservice/JettyLogger.html |  547 +++
 .../juneau/microservice/Microservice.html       |  246 +-
 .../apache/juneau/microservice/Resource.html    |    8 +-
 .../juneau/microservice/ResourceGroup.html      |    6 +-
 .../juneau/microservice/ResourceJenaGroup.html  |    6 +-
 .../juneau/microservice/RestMicroservice.html   |  349 +-
 .../juneau/microservice/package-frame.html      |    1 +
 .../juneau/microservice/package-summary.html    |   16 +-
 .../juneau/microservice/package-tree.html       |    5 +
 .../microservice/resources/ConfigResource.html  |    4 +-
 .../microservice/resources/DebugResource.html   |  404 ++
 .../DirectoryResource.FileResource.html         |   20 +-
 .../resources/DirectoryResource.html            |   26 +-
 .../resources/LogsResource.FileResource.html    |   22 +-
 .../microservice/resources/LogsResource.html    |   18 +-
 .../microservice/resources/package-frame.html   |    1 +
 .../microservice/resources/package-summary.html |   18 +-
 .../microservice/resources/package-tree.html    |    1 +
 .../org/apache/juneau/rest/RestCallHandler.html |    2 +-
 .../org/apache/juneau/rest/RestConfig.html      |  377 +-
 .../org/apache/juneau/rest/RestContext.html     |  502 +--
 .../org/apache/juneau/rest/RestException.html   |   22 +-
 .../juneau/rest/RestResourceResolver.html       |    2 +-
 .../apache/juneau/rest/RestServletDefault.html  |    8 +-
 .../apache/juneau/rest/annotation/FormData.html |    2 +-
 .../apache/juneau/rest/annotation/Query.html    |    2 +-
 .../juneau/rest/annotation/RestMethod.html      |  105 +-
 .../juneau/rest/annotation/RestResource.html    |  312 +-
 .../org/apache/juneau/rest/package-summary.html |   22 +-
 content/site/apidocs/overview-summary.html      |  229 +-
 content/site/apidocs/overview-tree.html         |    7 +
 content/site/apidocs/serialized-form.html       |    9 +
 .../org/apache/juneau/ini/ConfigFileImpl.html   | 1133 +++---
 .../org/apache/juneau/internal/KeywordSet.html  |  101 +-
 .../org/apache/juneau/internal/SystemUtils.html |  143 +
 .../apache/juneau/microservice/JettyLogger.html |  270 ++
 .../juneau/microservice/Microservice.html       | 1367 ++++---
 .../apache/juneau/microservice/Resource.html    |  114 +-
 .../juneau/microservice/ResourceGroup.html      |  118 +-
 .../juneau/microservice/ResourceJenaGroup.html  |  146 +-
 .../juneau/microservice/RestMicroservice.html   | 1127 +++---
 .../microservice/resources/DebugResource.html   |  146 +
 .../DirectoryResource.FileResource.html         |  711 ++--
 .../resources/DirectoryResource.html            |  711 ++--
 .../resources/LogsResource.FileResource.html    |  663 ++--
 .../microservice/resources/LogsResource.html    |  663 ++--
 .../org/apache/juneau/rest/RestCallHandler.html |    2 +-
 .../org/apache/juneau/rest/RestConfig.html      | 2989 +++++++-------
 .../org/apache/juneau/rest/RestContext.html     | 3699 +++++++++---------
 .../org/apache/juneau/rest/RestException.html   |  289 +-
 .../juneau/rest/RestResourceResolver.html       |    2 +-
 .../apache/juneau/rest/RestServletDefault.html  |  427 +-
 .../apache/juneau/rest/annotation/FormData.html |    2 +-
 .../apache/juneau/rest/annotation/Query.html    |    2 +-
 .../juneau/rest/annotation/RestMethod.html      |   49 +-
 .../juneau/rest/annotation/RestResource.html    |  404 +-
 68 files changed, 10830 insertions(+), 8476 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/allclasses-frame.html b/content/site/apidocs/allclasses-frame.html
index 7b1cbda..8953148 100644
--- a/content/site/apidocs/allclasses-frame.html
+++ b/content/site/apidocs/allclasses-frame.html
@@ -201,6 +201,7 @@
 <li><a href="org/apache/juneau/transforms/DateSwap.ToString.html" title="class in org.apache.juneau.transforms" target="classFrame">DateSwap.ToString</a></li>
 <li><a href="org/apache/juneau/internal/DateUtils.html" title="class in org.apache.juneau.internal" target="classFrame">DateUtils</a></li>
 <li><a href="org/apache/juneau/dto/html5/Dd.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Dd</a></li>
+<li><a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources" target="classFrame">DebugResource</a></li>
 <li><a href="org/apache/juneau/rest/response/DefaultHandler.html" title="class in org.apache.juneau.rest.response" target="classFrame">DefaultHandler</a></li>
 <li><a href="org/apache/juneau/svl/DefaultingVar.html" title="class in org.apache.juneau.svl" target="classFrame">DefaultingVar</a></li>
 <li><a href="org/apache/juneau/rest/jaxrs/DefaultProvider.html" title="class in org.apache.juneau.rest.jaxrs" target="classFrame">DefaultProvider</a></li>
@@ -342,6 +343,7 @@
 <li><a href="org/apache/juneau/internal/IOUtils.html" title="class in org.apache.juneau.internal" target="classFrame">IOUtils</a></li>
 <li><a href="org/apache/juneau/dto/swagger/Items.html" title="class in org.apache.juneau.dto.swagger" target="classFrame">Items</a></li>
 <li><a href="org/apache/juneau/transforms/IteratorSwap.html" title="class in org.apache.juneau.transforms" target="classFrame">IteratorSwap</a></li>
+<li><a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice" target="classFrame">JettyLogger</a></li>
 <li><a href="org/apache/juneau/json/annotation/Json.html" title="annotation in org.apache.juneau.json.annotation" target="classFrame">Json</a></li>
 <li><a href="org/apache/juneau/json/JsonClassMeta.html" title="class in org.apache.juneau.json" target="classFrame">JsonClassMeta</a></li>
 <li><a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json" target="classFrame">JsonParser</a></li>
@@ -697,6 +699,7 @@
 <li><a href="org/apache/juneau/annotation/Swaps.html" title="annotation in org.apache.juneau.annotation" target="classFrame">Swaps</a></li>
 <li><a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">SwitchVar</a></li>
 <li><a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars" target="classFrame">SystemPropertiesVar</a></li>
+<li><a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal" target="classFrame">SystemUtils</a></li>
 <li><a href="org/apache/juneau/dto/html5/Table.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Table</a></li>
 <li><a href="org/apache/juneau/dto/swagger/Tag.html" title="class in org.apache.juneau.dto.swagger" target="classFrame">Tag</a></li>
 <li><a href="org/apache/juneau/dto/html5/Tbody.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Tbody</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/allclasses-noframe.html b/content/site/apidocs/allclasses-noframe.html
index 66641d7..f23cc85 100644
--- a/content/site/apidocs/allclasses-noframe.html
+++ b/content/site/apidocs/allclasses-noframe.html
@@ -201,6 +201,7 @@
 <li><a href="org/apache/juneau/transforms/DateSwap.ToString.html" title="class in org.apache.juneau.transforms">DateSwap.ToString</a></li>
 <li><a href="org/apache/juneau/internal/DateUtils.html" title="class in org.apache.juneau.internal">DateUtils</a></li>
 <li><a href="org/apache/juneau/dto/html5/Dd.html" title="class in org.apache.juneau.dto.html5">Dd</a></li>
+<li><a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a></li>
 <li><a href="org/apache/juneau/rest/response/DefaultHandler.html" title="class in org.apache.juneau.rest.response">DefaultHandler</a></li>
 <li><a href="org/apache/juneau/svl/DefaultingVar.html" title="class in org.apache.juneau.svl">DefaultingVar</a></li>
 <li><a href="org/apache/juneau/rest/jaxrs/DefaultProvider.html" title="class in org.apache.juneau.rest.jaxrs">DefaultProvider</a></li>
@@ -342,6 +343,7 @@
 <li><a href="org/apache/juneau/internal/IOUtils.html" title="class in org.apache.juneau.internal">IOUtils</a></li>
 <li><a href="org/apache/juneau/dto/swagger/Items.html" title="class in org.apache.juneau.dto.swagger">Items</a></li>
 <li><a href="org/apache/juneau/transforms/IteratorSwap.html" title="class in org.apache.juneau.transforms">IteratorSwap</a></li>
+<li><a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></li>
 <li><a href="org/apache/juneau/json/annotation/Json.html" title="annotation in org.apache.juneau.json.annotation">Json</a></li>
 <li><a href="org/apache/juneau/json/JsonClassMeta.html" title="class in org.apache.juneau.json">JsonClassMeta</a></li>
 <li><a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json">JsonParser</a></li>
@@ -697,6 +699,7 @@
 <li><a href="org/apache/juneau/annotation/Swaps.html" title="annotation in org.apache.juneau.annotation">Swaps</a></li>
 <li><a href="org/apache/juneau/svl/vars/SwitchVar.html" title="class in org.apache.juneau.svl.vars">SwitchVar</a></li>
 <li><a href="org/apache/juneau/svl/vars/SystemPropertiesVar.html" title="class in org.apache.juneau.svl.vars">SystemPropertiesVar</a></li>
+<li><a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal">SystemUtils</a></li>
 <li><a href="org/apache/juneau/dto/html5/Table.html" title="class in org.apache.juneau.dto.html5">Table</a></li>
 <li><a href="org/apache/juneau/dto/swagger/Tag.html" title="class in org.apache.juneau.dto.swagger">Tag</a></li>
 <li><a href="org/apache/juneau/dto/html5/Tbody.html" title="class in org.apache.juneau.dto.html5">Tbody</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/constant-values.html b/content/site/apidocs/constant-values.html
index 5669023..3aa54c2 100644
--- a/content/site/apidocs/constant-values.html
+++ b/content/site/apidocs/constant-values.html
@@ -1227,76 +1227,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.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</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.rest.RestContext.REST_allowBodyParam">
-<!--   -->
-</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/rest/RestContext.html#REST_allowBodyParam">REST_allowBodyParam</a></code></td>
-<td class="colLast"><code>"RestServlet.allowBodyParam"</code></td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_allowHeaderParams">
-<!--   -->
-</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/rest/RestContext.html#REST_allowHeaderParams">REST_allowHeaderParams</a></code></td>
-<td class="colLast"><code>"RestServlet.allowHeaderParams"</code></td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_allowMethodParam">
-<!--   -->
-</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/rest/RestContext.html#REST_allowMethodParam">REST_allowMethodParam</a></code></td>
-<td class="colLast"><code>"RestServlet.allowMethodParam"</code></td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_defaultCharset">
-<!--   -->
-</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/rest/RestContext.html#REST_defaultCharset">REST_defaultCharset</a></code></td>
-<td class="colLast"><code>"RestServlet.defaultCharset"</code></td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_paramFormat">
-<!--   -->
-</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/rest/RestContext.html#REST_paramFormat">REST_paramFormat</a></code></td>
-<td class="colLast"><code>"RestServlet.paramFormat"</code></td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_renderResponseStackTraces">
-<!--   -->
-</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/rest/RestContext.html#REST_renderResponseStackTraces">REST_renderResponseStackTraces</a></code></td>
-<td class="colLast"><code>"RestServlet.renderResponseStackTraces"</code></td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_resourceResolver">
-<!--   -->
-</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/rest/RestContext.html#REST_resourceResolver">REST_resourceResolver</a></code></td>
-<td class="colLast"><code>"RestServlet.resourceResolver"</code></td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.juneau.rest.RestContext.REST_useStackTraceHashes">
-<!--   -->
-</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/rest/RestContext.html#REST_useStackTraceHashes">REST_useStackTraceHashes</a></code></td>
-<td class="colLast"><code>"RestServlet.useStackTraceHashes"</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.rest.remoteable.<a href="org/apache/juneau/rest/remoteable/RemoteableServiceProperties.html" title="class in org.apache.juneau.rest.remoteable">RemoteableServiceProperties</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/index-all.html b/content/site/apidocs/index-all.html
index a1c2d19..d9554e4 100644
--- a/content/site/apidocs/index-all.html
+++ b/content/site/apidocs/index-all.html
@@ -5016,6 +5016,10 @@
 <dd>
 <div class="block">Create config files if they cannot be found on the file system.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DebugResource.html#createJettyDump-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">createJettyDump(RestRequest, RestResponse)</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a></dt>
+<dd>
+<div class="block">[POST /jetty/dump] - Generates and saves the jetty thread dump file to jetty-thread-dump.log.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/uon/UonParser.html#createParameterSession--">createParameterSession()</a></span> - Method in class org.apache.juneau.uon.<a href="org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon">UonParser</a></dt>
 <dd>
 <div class="block">Create a UON parser session for parsing parameter values.</div>
@@ -5564,6 +5568,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/json/JsonSerializerBuilder.html#debug--">debug()</a></span> - Method in class org.apache.juneau.json.<a href="org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.String-java.lang.Object...-">debug(String, Object...)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.String-long-">debug(String, long)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.Throwable-">debug(Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.String-java.lang.Throwable-">debug(String, Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/msgpack/MsgPackParserBuilder.html#debug--">debug()</a></span> - Method in class org.apache.juneau.msgpack.<a href="org/apache/juneau/msgpack/MsgPackParserBuilder.html" title="class in org.apache.juneau.msgpack">MsgPackParserBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/msgpack/MsgPackSerializerBuilder.html#debug--">debug()</a></span> - Method in class org.apache.juneau.msgpack.<a href="org/apache/juneau/msgpack/MsgPackSerializerBuilder.html" title="class in org.apache.juneau.msgpack">MsgPackSerializerBuilder</a></dt>
@@ -5606,6 +5618,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlSerializerBuilder.html#debug--">debug()</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlSerializerBuilder.html" title="class in org.apache.juneau.xml">XmlSerializerBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">DebugResource</span></a> - Class in <a href="org/apache/juneau/microservice/resources/package-summary.html">org.apache.juneau.microservice.resources</a></dt>
+<dd>
+<div class="block">Microservice debug utilities.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DebugResource.html#DebugResource--">DebugResource()</a></span> - Constructor for class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ini/Encoder.html#decode-java.lang.String-java.lang.String-">decode(String, String)</a></span> - Method in interface org.apache.juneau.ini.<a href="org/apache/juneau/ini/Encoder.html" title="interface in org.apache.juneau.ini">Encoder</a></dt>
 <dd>
 <div class="block">Decode a string.</div>
@@ -8236,7 +8254,7 @@
 <dd>
 <div class="block">Returns the argument types of this meta.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#getArgs--">getArgs()</a></span> - Static 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#getArgs--">getArgs()</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">Returns the command-line arguments passed into the application.</div>
 </dd>
@@ -8640,6 +8658,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/html5/Pre.html#getChildren--">getChildren()</a></span> - Method in class org.apache.juneau.dto.html5.<a href="org/apache/juneau/dto/html5/Pre.html" title="class in org.apache.juneau.dto.html5">Pre</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DebugResource.html#getChildren--">getChildren()</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a></dt>
+<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>
 <dd>
 <div class="block">[GET /] - Get child resources.</div>
@@ -8798,7 +8820,7 @@
 <dd>
 <div class="block">Returns the current column number position in this reader.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#getConfig--">getConfig()</a></span> - Static 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#getConfig--">getConfig()</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">Returns the external INI-style configuration file that can be used to configure your microservice.</div>
 </dd>
@@ -8931,6 +8953,10 @@
 <dd>
 <div class="block">Returns the context map of this variable resolver context.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#getContextPath--">getContextPath()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></dt>
+<dd>
+<div class="block">Returns the context path that this microservice is using.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#getContextPath--">getContextPath()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
 <div class="block">Returns the context path of the resource if it's specified via the <a href="org/apache/juneau/rest/annotation/RestResource.html#contextPath--"><code>RestResource.contextPath()</code></a> setting
@@ -8980,7 +9006,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#getDefaultCharset--">getDefaultCharset()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
-<div class="block">Returns the value of the <a href="org/apache/juneau/rest/RestContext.html#REST_defaultCharset"><code>RestContext.REST_defaultCharset</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>RestResource.defaultCharset()</code></a> setting.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/SSLOpts.html#getDefaultProtocols--">getDefaultProtocols()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SSLOpts.html" title="class in org.apache.juneau.rest.client">SSLOpts</a></dt>
 <dd>
@@ -9300,10 +9326,22 @@
 <dd>
 <div class="block">Returns the first object in the specified collection or array.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/SystemUtils.html#getFirstBoolean-java.lang.Boolean-java.lang.String...-">getFirstBoolean(Boolean, String...)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal">SystemUtils</a></dt>
+<dd>
+<div class="block">Returns the first non-<jk>null</jk> boolean system property.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/SystemUtils.html#getFirstInteger-java.lang.Integer-java.lang.String...-">getFirstInteger(Integer, String...)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal">SystemUtils</a></dt>
+<dd>
+<div class="block">Returns the first non-<jk>null</jk> integer system property.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ObjectMap.html#getFirstKey--">getFirstKey()</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a></dt>
 <dd>
 <div class="block">Returns the first key in the map.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/SystemUtils.html#getFirstString-java.lang.String-java.lang.String...-">getFirstString(String, String...)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal">SystemUtils</a></dt>
+<dd>
+<div class="block">Returns the first non-<jk>null</jk> system property.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/swagger/SecurityScheme.html#getFlow--">getFlow()</a></span> - Method in class org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/SecurityScheme.html" title="class in org.apache.juneau.dto.swagger">SecurityScheme</a></dt>
 <dd>
 <div class="block">Bean property getter:  <property>flow</property>.</div>
@@ -9408,6 +9446,10 @@
 <dd>
 <div class="block">Returns the <code>Host</code> header on the request.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#getHostName--">getHostName()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></dt>
+<dd>
+<div class="block">Returns the hostname of this microservice.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/SSLOpts.html#getHostVerify--">getHostVerify()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SSLOpts.html" title="class in org.apache.juneau.rest.client">SSLOpts</a></dt>
 <dd>
 <div class="block">Bean property getter:  <property>hostVerify</property>.</div>
@@ -9623,6 +9665,14 @@
 <dd>
 <div class="block">Returns the HTTP body content as an <a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io"><code>InputStream</code></a>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#getInstance--">getInstance()</a></span> - Static 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">Returns the Microservice instance.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#getInstance--">getInstance()</a></span> - Static method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></dt>
+<dd>
+<div class="block">Returns the Microservice instance.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ini/ConfigFile.html#getInt-java.lang.String-">getInt(String)</a></span> - Method in class org.apache.juneau.ini.<a href="org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a></dt>
 <dd>
 <div class="block">Convenience method for getting int config values.</div>
@@ -9723,6 +9773,10 @@
 <dd>
 <div class="block">Returns the Java method that invoked this serializer.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DebugResource.html#getJettyDump-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">getJettyDump(RestRequest, RestResponse)</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources">DebugResource</a></dt>
+<dd>
+<div class="block">[GET /jetty/dump] - Generates and retrieves the jetty thread dump.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/json/JsonSerializerSession.html#getJsonWriter-org.apache.juneau.serializer.SerializerPipe-">getJsonWriter(SerializerPipe)</a></span> - Method in class org.apache.juneau.json.<a href="org/apache/juneau/json/JsonSerializerSession.html" title="class in org.apache.juneau.json">JsonSerializerSession</a></dt>
 <dd>
 <div class="block">Converts the specified output target object to an <a href="org/apache/juneau/json/JsonWriter.html" title="class in org.apache.juneau.json"><code>JsonWriter</code></a>.</div>
@@ -9859,6 +9913,10 @@
 <dd>
 <div class="block">Get logger with specified name using the specified resource bundle name.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#getLogger--">getLogger()</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">Returns the logger for this microservice.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#getLogger--">getLogger()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
 <div class="block">Returns the logger to use for this resource.</div>
@@ -9903,7 +9961,7 @@
 <dd>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang"><code>Long</code></a>.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#getManifest--">getManifest()</a></span> - Static 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#getManifest--">getManifest()</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">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>.</div>
 </dd>
@@ -10295,6 +10353,8 @@
 <dd>
 <div class="block">Bean property getter:  <property>name</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#getName--">getName()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#getName--">getName()</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html" title="class in org.apache.juneau.microservice.resources">DirectoryResource.FileResource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/SerializedNameValuePair.html#getName--">getName()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SerializedNameValuePair.html" title="class in org.apache.juneau.rest.client">SerializedNameValuePair</a></dt>
@@ -10558,7 +10618,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#getParamFormat--">getParamFormat()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
-<div class="block">Returns the value of the <a href="org/apache/juneau/rest/RestContext.html#REST_paramFormat"><code>RestContext.REST_paramFormat</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> setting.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestParam.html#getParamType--">getParamType()</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>
@@ -10866,6 +10926,10 @@
 <dd>
 <div class="block">Same as <a href="org/apache/juneau/Session.html#getProperty-java.lang.String-java.lang.Class-"><code>Session.getProperty(String,Class)</code></a> but with a default value.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#getProtocol--">getProtocol()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></dt>
+<dd>
+<div class="block">Returns whether this microservice is using <js>"http"</js> or <js>"https"</js>.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/SSLOpts.html#getProtocols--">getProtocols()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SSLOpts.html" title="class in org.apache.juneau.rest.client">SSLOpts</a></dt>
 <dd>
 <div class="block">Bean property getter:  <property>protocols</property>.</div>
@@ -11138,10 +11202,6 @@
 <dd>
 <div class="block">Returns the resource bundle for the request locale.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#getResourceMap--">getResourceMap()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></dt>
-<dd>
-<div class="block">Returns the resource map to use for this microservice.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#getResourceResolver--">getResourceResolver()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
 <div class="block">Returns the resource resolver associated with this context.</div>
@@ -12071,6 +12131,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ini/ConfigFile.html#getVarResolver--">getVarResolver()</a></span> - Method in class org.apache.juneau.ini.<a href="org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#getVarResolver--">getVarResolver()</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">Returns the variable resolver for resolving variables in strings and files.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#getVarResolver--">getVarResolver()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
 <div class="block">Returns the variable resolver for this servlet.</div>
@@ -13609,6 +13673,8 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#ignore-java.lang.Throwable-">ignore(Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#ignoreCase-boolean-">ignoreCase(boolean)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
 <dd>
 <div class="block">Specifies whether case-insensitive search should be used.</div>
@@ -14295,6 +14361,12 @@
 <dd>
 <div class="block">Logs a message with the specified <a href="http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html?is-external=true" title="class or interface in java.text"><code>MessageFormat</code></a>-style arguments at <a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true#INFO" title="class or interface in java.util.logging"><code>Level.INFO</code></a> level.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#info-java.lang.String-java.lang.Object...-">info(String, Object...)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#info-java.lang.Throwable-">info(Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#info-java.lang.String-java.lang.Throwable-">info(String, Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Inherit</span></a> - Enum in <a href="org/apache/juneau/rest/annotation/package-summary.html">org.apache.juneau.rest.annotation</a></dt>
 <dd>
 <div class="block">Inheritance values for the <a href="org/apache/juneau/rest/annotation/RestMethod.html#serializersInherit--"><code>RestMethod.serializersInherit()</code></a> and <a href="org/apache/juneau/rest/annotation/RestMethod.html#parsersInherit--"><code>RestMethod.parsersInherit()</code></a>
@@ -14377,7 +14449,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlSerializerBuilder.html#initialDepth-int-">initialDepth(int)</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlSerializerBuilder.html" title="class in org.apache.juneau.xml">XmlSerializerBuilder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#initLogging--">initLogging()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#initLogging--">initLogging()</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">Initialize the logging for this microservice.</div>
 </dd>
@@ -14605,11 +14677,11 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#isAllowBodyParam--">isAllowBodyParam()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
-<div class="block">Returns the value of the <a href="org/apache/juneau/rest/RestContext.html#REST_allowBodyParam"><code>RestContext.REST_allowBodyParam</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>RestResource.allowBodyParam()</code></a> setting.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#isAllowHeaderParams--">isAllowHeaderParams()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
-<div class="block">Returns the value of the <a href="org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams"><code>RestContext.REST_allowHeaderParams</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>RestResource.allowHeaderParams()</code></a> setting.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/http/EntityValidator.html#isAny--">isAny()</a></span> - Method in class org.apache.juneau.http.<a href="org/apache/juneau/http/EntityValidator.html" title="class in org.apache.juneau.http">EntityValidator</a></dt>
 <dd>
@@ -14723,6 +14795,8 @@
 <dd>
 <div class="block">Returns the <a href="org/apache/juneau/BeanContext.html#BEAN_debug"><code>BeanContext.BEAN_debug</code></a> setting value for this session.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#isDebugEnabled--">isDebugEnabled()</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ClassMeta.html#isDecimal--">isDecimal()</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a></dt>
 <dd>
 <div class="block">Returns <jk>true</jk> if this class is a subclass of <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Float.html?is-external=true" title="class or interface in java.lang"><code>Float</code></a> or <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang"><code>Double</code></a>.</div>
@@ -15028,7 +15102,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#isRenderResponseStackTraces--">isRenderResponseStackTraces()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
 <dd>
-<div class="block">Returns the value of the <a href="org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces"><code>RestContext.REST_renderResponseStackTraces</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>RestResource.renderResponseStackTraces()</code></a> setting.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestRequestEntity.html#isRepeatable--">isRepeatable()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestRequestEntity.html" title="class in org.apache.juneau.rest.client">RestRequestEntity</a></dt>
 <dd>&nbsp;</dd>
@@ -15240,6 +15314,18 @@
 </a>
 <h2 class="title">J</h2>
 <dl>
+<dt><a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">JettyLogger</span></a> - Class in <a href="org/apache/juneau/microservice/package-summary.html">org.apache.juneau.microservice</a></dt>
+<dd>
+<div class="block">Implementation of Jetty <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"><code>Logger</code></a> based on <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"><code>Logger</code></a>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#JettyLogger--">JettyLogger()</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>
+<div class="block">Default constructor.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#JettyLogger-java.lang.String-">JettyLogger(String)</a></span> - Constructor for class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>
+<div class="block">Normal constructor.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/internal/StringUtils.html#join-java.lang.Object:A-java.lang.String-">join(Object[], String)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal">StringUtils</a></dt>
 <dd>
 <div class="block">Join the specified tokens into a delimited string.</div>
@@ -17335,6 +17421,8 @@
 <dd>
 <div class="block">Create a new instance of the main class of this declared type from a <code>String</code> input.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#newLogger-java.lang.String-">newLogger(String)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogParser.html#next--">next()</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogParser.html" title="class in org.apache.juneau.microservice.resources">LogParser</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlReader.html#next--">next()</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlReader.html" title="class in org.apache.juneau.xml">XmlReader</a></dt>
@@ -21933,38 +22021,6 @@
 <dd>
 <div class="block">Synonym for <a href="org/apache/juneau/dto/swagger/Operation.html#setResponses-java.util.Map-"><code>Operation.setResponses(Map)</code></a>.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_allowBodyParam">REST_allowBodyParam</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Enable <js>"body"</js> URL parameter.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams">REST_allowHeaderParams</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Enable header URL parameters.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_allowMethodParam">REST_allowMethodParam</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Enable <js>"method"</js> URL parameter for specific HTTP methods.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_defaultCharset">REST_defaultCharset</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Default character encoding.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_paramFormat">REST_paramFormat</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Expected format of request parameters.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces">REST_renderResponseStackTraces</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Render stack traces.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_resourceResolver">REST_resourceResolver</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  REST resource resolver.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#REST_useStackTraceHashes">REST_useStackTraceHashes</a></span> - Static variable in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a></dt>
-<dd>
-<div class="block"><b>Configuration property:</b>  Use stack trace hashes.</div>
-</dd>
 <dt><a href="org/apache/juneau/rest/client/RestCall.html" title="class in org.apache.juneau.rest.client"><span class="typeNameLink">RestCall</span></a> - Class in <a href="org/apache/juneau/rest/client/package-summary.html">org.apache.juneau.rest.client</a></dt>
 <dd>
 <div class="block">Represents a connection to a remote REST resource.</div>
@@ -23141,10 +23197,22 @@
 <dd>
 <div class="block">Bean property setter:  <property>allOf</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setAllowBodyParam-boolean-">setAllowBodyParam(boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>allowBodyParam</code> setting on this resource.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/swagger/ParameterInfo.html#setAllowEmptyValue-java.lang.Boolean-">setAllowEmptyValue(Boolean)</a></span> - Method in class org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/ParameterInfo.html" title="class in org.apache.juneau.dto.swagger">ParameterInfo</a></dt>
 <dd>
 <div class="block">Bean property setter:  <property>allowEmptyValue</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setAllowHeaderParams-boolean-">setAllowHeaderParams(boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>allowHeaderParams</code> setting on this resource.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setAllowMethodParam-java.lang.String...-">setAllowMethodParam(String...)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>allowMethodParam</code> setting on this resource.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/jsonschema/Schema.html#setAnyOf-java.util.List-">setAnyOf(List&lt;Schema&gt;)</a></span> - Method in class org.apache.juneau.dto.jsonschema.<a href="org/apache/juneau/dto/jsonschema/Schema.html" title="class in org.apache.juneau.dto.jsonschema">Schema</a></dt>
 <dd>
 <div class="block">Bean property setter:  <property>anyOf</property>.</div>
@@ -23500,7 +23568,7 @@
 <dd>
 <div class="block">Specifies the path of the config file for this microservice.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setConfig-org.apache.juneau.ini.ConfigFile-">setConfig(ConfigFile)</a></span> - Static 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#setConfig-org.apache.juneau.ini.ConfigFile-">setConfig(ConfigFile)</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 config file for this microservice.</div>
 </dd>
@@ -23574,6 +23642,8 @@
 <dd>
 <div class="block">Bean property setter:  <property>data</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#setDebugEnabled-boolean-">setDebugEnabled(boolean)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/swagger/HeaderInfo.html#setDefault-java.lang.Object-">setDefault(Object)</a></span> - Method in class org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/HeaderInfo.html" title="class in org.apache.juneau.dto.swagger">HeaderInfo</a></dt>
 <dd>
 <div class="block">Bean property setter:  <property>default</property>.</div>
@@ -23592,6 +23662,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setDefaultAuthSchemeRegistry-org.apache.http.config.Lookup-">setDefaultAuthSchemeRegistry(Lookup&lt;AuthSchemeProvider&gt;)</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestClientBuilder.html" title="class in org.apache.juneau.rest.client">RestClientBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setDefaultCharset-java.lang.String-">setDefaultCharset(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>defaultCharset</code> setting on this resource.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setDefaultConnectionConfig-org.apache.http.config.ConnectionConfig-">setDefaultConnectionConfig(ConnectionConfig)</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestClientBuilder.html" title="class in org.apache.juneau.rest.client">RestClientBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setDefaultCookieSpecRegistry-org.apache.http.config.Lookup-">setDefaultCookieSpecRegistry(Lookup&lt;CookieSpecProvider&gt;)</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestClientBuilder.html" title="class in org.apache.juneau.rest.client">RestClientBuilder</a></dt>
@@ -23984,15 +24058,15 @@
 <dd>
 <div class="block">Overrides the logger for the resource.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">setManifest(Manifest)</a></span> - Static 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-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">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.io.File-">setManifest(File)</a></span> - Static 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-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>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Microservice.html#setManifest-java.lang.Class-">setManifest(Class&lt;?&gt;)</a></span> - Static 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-java.lang.Class-">setManifest(Class&lt;?&gt;)</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 finds and loads the manifest file of the jar file that the  
  specified class is contained within.</div>
@@ -24515,6 +24589,10 @@
 <dd>
 <div class="block">Bean property setter:  <property>parameters</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setParamFormat-java.lang.String-">setParamFormat(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>paramFormat</code> setting on this resource.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ini/Section.html#setParent-org.apache.juneau.ini.ConfigFileImpl-">setParent(ConfigFileImpl)</a></span> - Method in class org.apache.juneau.ini.<a href="org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a></dt>
 <dd>
 <div class="block">Sets the config file that this section belongs to.</div>
@@ -24752,6 +24830,10 @@
 <dd>
 <div class="block">Bean property setter:  <property>$ref</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setRenderResponseStackTraces-boolean-">setRenderResponseStackTraces(boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>renderResponseStackTraces</code> setting on this resource.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setRequestExecutor-org.apache.http.protocol.HttpRequestExecutor-">setRequestExecutor(HttpRequestExecutor)</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestClientBuilder.html" title="class in org.apache.juneau.rest.client">RestClientBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/jsonschema/Schema.html#setRequired-java.util.List-">setRequired(List&lt;String&gt;)</a></span> - Method in class org.apache.juneau.dto.jsonschema.<a href="org/apache/juneau/dto/jsonschema/Schema.html" title="class in org.apache.juneau.dto.jsonschema">Schema</a></dt>
@@ -24995,6 +25077,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setUserTokenHandler-org.apache.http.client.UserTokenHandler-">setUserTokenHandler(UserTokenHandler)</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestClientBuilder.html" title="class in org.apache.juneau.rest.client">RestClientBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#setUseStackTraceHashes-boolean-">setUseStackTraceHashes(boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></dt>
+<dd>
+<div class="block">Sets the <code>useStackTraceHashes</code> setting on this resource.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoQuery.html#setValidTimestampFormats-java.lang.String...-">setValidTimestampFormats(String...)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></dt>
 <dd>
 <div class="block">Use this method to override the allowed search patterns when used in locales where time formats are different.</div>
@@ -26401,6 +26487,12 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
+<dt><a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">SystemUtils</span></a> - Class in <a href="org/apache/juneau/internal/package-summary.html">org.apache.juneau.internal</a></dt>
+<dd>
+<div class="block">System utilities.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/SystemUtils.html#SystemUtils--">SystemUtils()</a></span> - Constructor for class org.apache.juneau.internal.<a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal">SystemUtils</a></dt>
+<dd>&nbsp;</dd>
 </dl>
 <a name="I:T">
 <!--   -->
@@ -28914,6 +29006,12 @@ the order they are declared.</div>
 </a>
 <h2 class="title">W</h2>
 <dl>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#warn-java.lang.String-java.lang.Object...-">warn(String, Object...)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#warn-java.lang.Throwable-">warn(Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/JettyLogger.html#warn-java.lang.String-java.lang.Throwable-">warn(String, Throwable)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/juneau/http/Warning.html" title="class in org.apache.juneau.http"><span class="typeNameLink">Warning</span></a> - Class in <a href="org/apache/juneau/http/package-summary.html">org.apache.juneau.http</a></dt>
 <dd>
 <div class="block">Represents a parsed <l>Warning</l> HTTP request/response header.</div>


[04/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/RestConfig.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestConfig.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestConfig.html
index 6713447..d5c9d6e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestConfig.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestConfig.html
@@ -132,1527 +132,1640 @@
 <span class="sourceLineNo">124</span>   Object logger = RestLogger.Normal.class;<a name="line.124"></a>
 <span class="sourceLineNo">125</span>   Object callHandler = RestCallHandler.class;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>   Object infoProvider = RestInfoProvider.class;<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>   boolean htmlNoWrap;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   Object htmlTemplate = HtmlDocTemplateBasic.class;<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>   Class&lt;?&gt; resourceClass;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   List&lt;Class&lt;? extends Widget&gt;&gt; htmlWidgets = new ArrayList&lt;Class&lt;? extends Widget&gt;&gt;();<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>    * Constructor for top-level servlets when using dependency injection.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    *<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    * &lt;p&gt;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    * Work-in-progress.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    *<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    * @param config<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    *    The servlet config object we're extending.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    * @param resourceClass<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    *    The class annotated with the {@link RestResource @RestResource} annotation.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    * @throws ServletException<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   public RestConfig(ServletConfig config, Class&lt;?&gt; resourceClass) throws ServletException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      this(config, resourceClass, null);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   }<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>    * Constructor.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    *<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    * @param config The servlet config passed into the servlet by the servlet container.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    * @param resource The class annotated with &lt;ja&gt;@RestResource&lt;/ja&gt;.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * @throws ServletException Something bad happened.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   RestConfig(ServletConfig config, Class&lt;?&gt; resourceClass, RestContext parentContext) throws ServletException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      this.inner = config;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      this.resourceClass = resourceClass;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      this.parentContext = parentContext;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      this.resourceResolver = parentContext == null ? RestResourceResolverSimple.class : parentContext.getResourceResolver();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      try {<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>         ConfigFileBuilder cfb = new ConfigFileBuilder();<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>         properties = new ObjectMap();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>         configFile = cfb.build();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>         varResolverBuilder = new VarResolverBuilder()<a name="line.168"></a>
-<span class="sourceLineNo">169</span>            .vars(<a name="line.169"></a>
-<span class="sourceLineNo">170</span>               SystemPropertiesVar.class,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>               EnvVariablesVar.class,<a name="line.171"></a>
-<span class="sourceLineNo">172</span>               ConfigFileVar.class,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>               IfVar.class,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>               SwitchVar.class<a name="line.174"></a>
-<span class="sourceLineNo">175</span>            );<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>         VarResolver vr = varResolverBuilder.build();<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>         Map&lt;Class&lt;?&gt;,RestResource&gt; restResourceAnnotationsParentFirst = findAnnotationsMapParentFirst(RestResource.class, resourceClass);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>         // Find our config file.  It's the last non-empty @RestResource.config().<a name="line.181"></a>
-<span class="sourceLineNo">182</span>         String configPath = "";<a name="line.182"></a>
-<span class="sourceLineNo">183</span>         for (RestResource r : restResourceAnnotationsParentFirst.values())<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            if (! r.config().isEmpty())<a name="line.184"></a>
-<span class="sourceLineNo">185</span>               configPath = r.config();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>         String cf = vr.resolve(configPath);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>         if (! cf.isEmpty())<a name="line.187"></a>
-<span class="sourceLineNo">188</span>            configFile = cfb.build(cf);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>         configFile = configFile.getResolving(vr);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>         // Add our config file to the variable resolver.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>         varResolverBuilder.contextObject(ConfigFileVar.SESSION_config, configFile);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>         vr = varResolverBuilder.build();<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>         // Add the servlet init parameters to our properties.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>         for (Enumeration&lt;String&gt; ep = config.getInitParameterNames(); ep.hasMoreElements();) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>            String p = ep.nextElement();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>            String initParam = config.getInitParameter(p);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>            properties.put(vr.resolve(p), vr.resolve(initParam));<a name="line.199"></a>
-<span class="sourceLineNo">200</span>         }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>         // Load stuff from parent-to-child order.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>         // This allows child settings to overwrite parent settings.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>         for (Map.Entry&lt;Class&lt;?&gt;,RestResource&gt; e : restResourceAnnotationsParentFirst.entrySet()) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            Class&lt;?&gt; c = e.getKey();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            RestResource r = e.getValue();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            for (Property p : r.properties())<a name="line.207"></a>
-<span class="sourceLineNo">208</span>               properties.append(vr.resolve(p.name()), vr.resolve(p.value()));<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            for (String p : r.flags())<a name="line.209"></a>
-<span class="sourceLineNo">210</span>               properties.append(p, true);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>            addSerializers(r.serializers());<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            addParsers(r.parsers());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>            addEncoders(r.encoders());<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            addDefaultRequestHeaders(r.defaultRequestHeaders());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>            addDefaultResponseHeaders(r.defaultResponseHeaders());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            addResponseHandlers(r.responseHandlers());<a name="line.216"></a>
-<span class="sourceLineNo">217</span>            addConverters(r.converters());<a name="line.217"></a>
-<span class="sourceLineNo">218</span>            addGuards(reverse(r.guards()));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            addChildResources(r.children());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            addBeanFilters(r.beanFilters());<a name="line.220"></a>
-<span class="sourceLineNo">221</span>            addPojoSwaps(r.pojoSwaps());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>            addParamResolvers(r.paramResolvers());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>            serializerListener(r.serializerListener());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>            parserListener(r.parserListener());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>            contextPath(r.contextPath());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>            if (! r.favicon().isEmpty())<a name="line.226"></a>
-<span class="sourceLineNo">227</span>               setFavIcon(c, r.favicon());<a name="line.227"></a>
-<span class="sourceLineNo">228</span>            if (! r.staticFiles().isEmpty())<a name="line.228"></a>
-<span class="sourceLineNo">229</span>               addStaticFiles(c, r.staticFiles());<a name="line.229"></a>
-<span class="sourceLineNo">230</span>            if (! r.path().isEmpty())<a name="line.230"></a>
-<span class="sourceLineNo">231</span>               setPath(r.path());<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            if (! r.clientVersionHeader().isEmpty())<a name="line.232"></a>
-<span class="sourceLineNo">233</span>               setClientVersionHeader(r.clientVersionHeader());<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>            if (r.resourceResolver() != RestResourceResolver.class)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>               setResourceResolver(r.resourceResolver());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>            if (r.logger() != RestLogger.Normal.class)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>               setLogger(r.logger());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            if (r.callHandler() != RestCallHandler.class)<a name="line.239"></a>
-<span class="sourceLineNo">240</span>               setCallHandler(r.callHandler());<a name="line.240"></a>
-<span class="sourceLineNo">241</span>            if (r.infoProvider() != RestInfoProvider.class)<a name="line.241"></a>
-<span class="sourceLineNo">242</span>               setInfoProvider(r.infoProvider());<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>            HtmlDoc hd = r.htmldoc();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>            for (Class&lt;? extends Widget&gt; cw : hd.widgets())<a name="line.245"></a>
-<span class="sourceLineNo">246</span>               addHtmlWidget(cw);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            setHtmlHeader(resolveNewlineSeparatedAnnotation(hd.header(), htmlHeader));<a name="line.247"></a>
-<span class="sourceLineNo">248</span>            setHtmlNav(resolveNewlineSeparatedAnnotation(hd.nav(), htmlNav));<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            setHtmlAside(resolveNewlineSeparatedAnnotation(hd.aside(), htmlAside));<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            setHtmlFooter(resolveNewlineSeparatedAnnotation(hd.footer(), htmlFooter));<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            setHtmlStyle(resolveNewlineSeparatedAnnotation(hd.style(), htmlStyle));<a name="line.251"></a>
-<span class="sourceLineNo">252</span>            setHtmlScript(resolveNewlineSeparatedAnnotation(hd.script(), htmlScript));<a name="line.252"></a>
-<span class="sourceLineNo">253</span>            setHtmlLinks(resolveLinks(hd.links(), htmlLinks));<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>            if (! hd.stylesheet().isEmpty())<a name="line.255"></a>
-<span class="sourceLineNo">256</span>               setHtmlStylesheet(hd.stylesheet());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>            if (! hd.noResultsMessage().isEmpty())<a name="line.257"></a>
-<span class="sourceLineNo">258</span>               setHtmlNoResultsMessage(hd.noResultsMessage());<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            if (hd.nowrap())<a name="line.259"></a>
-<span class="sourceLineNo">260</span>               setHtmlNoWrap(true);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>            if (hd.template() != HtmlDocTemplate.class)<a name="line.261"></a>
-<span class="sourceLineNo">262</span>               setHtmlTemplate(hd.template());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>         }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>         addResponseHandlers(<a name="line.265"></a>
-<span class="sourceLineNo">266</span>            StreamableHandler.class,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            WritableHandler.class,<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            ReaderHandler.class,<a name="line.268"></a>
-<span class="sourceLineNo">269</span>            InputStreamHandler.class,<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            RedirectHandler.class,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            DefaultHandler.class<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>      } catch (Exception e) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>         throw new ServletException(e);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   }<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>    * Calls all @RestHook(INIT) methods on the specified resource object.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   void init(Object resource) throws ServletException {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      Map&lt;String,Method&gt; map = new LinkedHashMap&lt;String,Method&gt;();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      for (Method m : ClassUtils.getAllMethods(this.resourceClass, true)) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>         if (m.isAnnotationPresent(RestHook.class) &amp;&amp; m.getAnnotation(RestHook.class).value() == HookEvent.INIT) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            Visibility.setAccessible(m);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>            String sig = ClassUtils.getMethodSignature(m);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            if (! map.containsKey(sig))<a name="line.288"></a>
-<span class="sourceLineNo">289</span>               map.put(sig, m);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>         }<a name="line.290"></a>
+<span class="sourceLineNo">127</span>   Object allowHeaderParams, allowMethodParam, allowBodyParam, renderResponseStackTraces, useStackTraceHashes, defaultCharset, paramFormat;<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>   boolean htmlNoWrap;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   Object htmlTemplate = HtmlDocTemplateBasic.class;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>   Class&lt;?&gt; resourceClass;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   List&lt;Class&lt;? extends Widget&gt;&gt; htmlWidgets = new ArrayList&lt;Class&lt;? extends Widget&gt;&gt;();<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>    * Constructor for top-level servlets when using dependency injection.<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    *<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    * &lt;p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    * Work-in-progress.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    *<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    * @param config<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    *    The servlet config object we're extending.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    * @param resourceClass<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    *    The class annotated with the {@link RestResource @RestResource} annotation.<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    * @throws ServletException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   public RestConfig(ServletConfig config, Class&lt;?&gt; resourceClass) throws ServletException {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      this(config, resourceClass, null);<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>    * Constructor.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    *<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * @param config The servlet config passed into the servlet by the servlet container.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    * @param resource The class annotated with &lt;ja&gt;@RestResource&lt;/ja&gt;.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    * @throws ServletException Something bad happened.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   RestConfig(ServletConfig config, Class&lt;?&gt; resourceClass, RestContext parentContext) throws ServletException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.inner = config;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      this.resourceClass = resourceClass;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      this.parentContext = parentContext;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      this.resourceResolver = parentContext == null ? RestResourceResolverSimple.class : parentContext.getResourceResolver();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      try {<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>         ConfigFileBuilder cfb = new ConfigFileBuilder();<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>         properties = new ObjectMap();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>         configFile = cfb.build();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>         varResolverBuilder = new VarResolverBuilder()<a name="line.169"></a>
+<span class="sourceLineNo">170</span>            .vars(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>               SystemPropertiesVar.class,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>               EnvVariablesVar.class,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>               ConfigFileVar.class,<a name="line.173"></a>
+<span class="sourceLineNo">174</span>               IfVar.class,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>               SwitchVar.class<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            );<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>         VarResolver vr = varResolverBuilder.build();<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>         Map&lt;Class&lt;?&gt;,RestResource&gt; restResourceAnnotationsParentFirst = findAnnotationsMapParentFirst(RestResource.class, resourceClass);<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>         // Find our config file.  It's the last non-empty @RestResource.config().<a name="line.182"></a>
+<span class="sourceLineNo">183</span>         String configPath = "";<a name="line.183"></a>
+<span class="sourceLineNo">184</span>         for (RestResource r : restResourceAnnotationsParentFirst.values())<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            if (! r.config().isEmpty())<a name="line.185"></a>
+<span class="sourceLineNo">186</span>               configPath = r.config();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>         String cf = vr.resolve(configPath);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>         if (! cf.isEmpty())<a name="line.188"></a>
+<span class="sourceLineNo">189</span>            configFile = cfb.build(cf);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>         configFile = configFile.getResolving(vr);<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>         // Add our config file to the variable resolver.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>         varResolverBuilder.contextObject(ConfigFileVar.SESSION_config, configFile);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>         vr = varResolverBuilder.build();<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>         // Add the servlet init parameters to our properties.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>         for (Enumeration&lt;String&gt; ep = config.getInitParameterNames(); ep.hasMoreElements();) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>            String p = ep.nextElement();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>            String initParam = config.getInitParameter(p);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>            properties.put(vr.resolve(p), vr.resolve(initParam));<a name="line.200"></a>
+<span class="sourceLineNo">201</span>         }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>         // Load stuff from parent-to-child order.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>         // This allows child settings to overwrite parent settings.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>         for (Map.Entry&lt;Class&lt;?&gt;,RestResource&gt; e : restResourceAnnotationsParentFirst.entrySet()) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>            Class&lt;?&gt; c = e.getKey();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>            RestResource r = e.getValue();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>            for (Property p : r.properties())<a name="line.208"></a>
+<span class="sourceLineNo">209</span>               properties.append(vr.resolve(p.name()), vr.resolve(p.value()));<a name="line.209"></a>
+<span class="sourceLineNo">210</span>            for (String p : r.flags())<a name="line.210"></a>
+<span class="sourceLineNo">211</span>               properties.append(p, true);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            addSerializers(r.serializers());<a name="line.212"></a>
+<span class="sourceLineNo">213</span>            addParsers(r.parsers());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            addEncoders(r.encoders());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>            addDefaultRequestHeaders(r.defaultRequestHeaders());<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            addDefaultResponseHeaders(r.defaultResponseHeaders());<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            addResponseHandlers(r.responseHandlers());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            addConverters(r.converters());<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            addGuards(reverse(r.guards()));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>            addChildResources(r.children());<a name="line.220"></a>
+<span class="sourceLineNo">221</span>            addBeanFilters(r.beanFilters());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>            addPojoSwaps(r.pojoSwaps());<a name="line.222"></a>
+<span class="sourceLineNo">223</span>            addParamResolvers(r.paramResolvers());<a name="line.223"></a>
+<span class="sourceLineNo">224</span>            serializerListener(r.serializerListener());<a name="line.224"></a>
+<span class="sourceLineNo">225</span>            parserListener(r.parserListener());<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            contextPath(r.contextPath());<a name="line.226"></a>
+<span class="sourceLineNo">227</span>            if (! r.favicon().isEmpty())<a name="line.227"></a>
+<span class="sourceLineNo">228</span>               setFavIcon(c, r.favicon());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            if (! r.staticFiles().isEmpty())<a name="line.229"></a>
+<span class="sourceLineNo">230</span>               addStaticFiles(c, r.staticFiles());<a name="line.230"></a>
+<span class="sourceLineNo">231</span>            if (! r.path().isEmpty())<a name="line.231"></a>
+<span class="sourceLineNo">232</span>               setPath(r.path());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>            if (! r.clientVersionHeader().isEmpty())<a name="line.233"></a>
+<span class="sourceLineNo">234</span>               setClientVersionHeader(r.clientVersionHeader());<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>            if (r.resourceResolver() != RestResourceResolver.class)<a name="line.236"></a>
+<span class="sourceLineNo">237</span>               setResourceResolver(r.resourceResolver());<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            if (r.logger() != RestLogger.Normal.class)<a name="line.238"></a>
+<span class="sourceLineNo">239</span>               setLogger(r.logger());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            if (r.callHandler() != RestCallHandler.class)<a name="line.240"></a>
+<span class="sourceLineNo">241</span>               setCallHandler(r.callHandler());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            if (r.infoProvider() != RestInfoProvider.class)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>               setInfoProvider(r.infoProvider());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            if (! r.allowHeaderParams().isEmpty())<a name="line.244"></a>
+<span class="sourceLineNo">245</span>               setAllowHeaderParams(Boolean.valueOf(vr.resolve(r.allowHeaderParams())));<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            if (! r.allowMethodParam().isEmpty())<a name="line.246"></a>
+<span class="sourceLineNo">247</span>               setAllowMethodParam(vr.resolve(r.allowMethodParam()));<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            if (! r.allowBodyParam().isEmpty())<a name="line.248"></a>
+<span class="sourceLineNo">249</span>               setAllowBodyParam(Boolean.valueOf(vr.resolve(r.allowBodyParam())));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            if (! r.renderResponseStackTraces().isEmpty())<a name="line.250"></a>
+<span class="sourceLineNo">251</span>               setRenderResponseStackTraces(Boolean.valueOf(vr.resolve(r.renderResponseStackTraces())));<a name="line.251"></a>
+<span class="sourceLineNo">252</span>            if (! r.useStackTraceHashes().isEmpty())<a name="line.252"></a>
+<span class="sourceLineNo">253</span>               setUseStackTraceHashes(Boolean.valueOf(vr.resolve(r.useStackTraceHashes())));<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            if (! r.defaultCharset().isEmpty())<a name="line.254"></a>
+<span class="sourceLineNo">255</span>               setDefaultCharset(vr.resolve(r.defaultCharset()));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>            if (! r.paramFormat().isEmpty())<a name="line.256"></a>
+<span class="sourceLineNo">257</span>               setParamFormat(vr.resolve(r.paramFormat()));<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>            HtmlDoc hd = r.htmldoc();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            for (Class&lt;? extends Widget&gt; cw : hd.widgets())<a name="line.260"></a>
+<span class="sourceLineNo">261</span>               addHtmlWidget(cw);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            setHtmlHeader(resolveNewlineSeparatedAnnotation(hd.header(), htmlHeader));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            setHtmlNav(resolveNewlineSeparatedAnnotation(hd.nav(), htmlNav));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>            setHtmlAside(resolveNewlineSeparatedAnnotation(hd.aside(), htmlAside));<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            setHtmlFooter(resolveNewlineSeparatedAnnotation(hd.footer(), htmlFooter));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>            setHtmlStyle(resolveNewlineSeparatedAnnotation(hd.style(), htmlStyle));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            setHtmlScript(resolveNewlineSeparatedAnnotation(hd.script(), htmlScript));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            setHtmlLinks(resolveLinks(hd.links(), htmlLinks));<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>            if (! hd.stylesheet().isEmpty())<a name="line.270"></a>
+<span class="sourceLineNo">271</span>               setHtmlStylesheet(hd.stylesheet());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            if (! hd.noResultsMessage().isEmpty())<a name="line.272"></a>
+<span class="sourceLineNo">273</span>               setHtmlNoResultsMessage(hd.noResultsMessage());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>            if (hd.nowrap())<a name="line.274"></a>
+<span class="sourceLineNo">275</span>               setHtmlNoWrap(true);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>            if (hd.template() != HtmlDocTemplate.class)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>               setHtmlTemplate(hd.template());<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>         addResponseHandlers(<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            StreamableHandler.class,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>            WritableHandler.class,<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            ReaderHandler.class,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            InputStreamHandler.class,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>            RedirectHandler.class,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>            DefaultHandler.class<a name="line.286"></a>
+<span class="sourceLineNo">287</span>         );<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>      } catch (Exception e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>         throw new ServletException(e);<a name="line.290"></a>
 <span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (Method m : map.values()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>         ClassUtils.assertArgsOfType(m, RestConfig.class, ServletConfig.class);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>         Class&lt;?&gt;[] argTypes = m.getParameterTypes();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>         Object[] args = new Object[argTypes.length];<a name="line.295"></a>
-<span class="sourceLineNo">296</span>         for (int i = 0; i &lt; args.length; i++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            if (argTypes[i] == RestConfig.class)<a name="line.297"></a>
-<span class="sourceLineNo">298</span>               args[i] = this;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            else<a name="line.299"></a>
-<span class="sourceLineNo">300</span>               args[i] = this.inner;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>         }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>         try {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>            m.invoke(resource, args);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>         } catch (Exception e) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>            throw new RestServletException("Exception thrown from @RestHook(INIT) method {0}.", m).initCause(e);<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>   }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>   /**<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    * Adds the specified {@link Var} classes to this config.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    *<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    * &lt;p&gt;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    * These variables affect the variable resolver returned by {@link RestRequest#getVarResolverSession()} which is<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    * used to resolve string variables of the form &lt;js&gt;"$X{...}"&lt;/js&gt;.<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    *<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    * &lt;p&gt;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    * By default, this config includes the following variables:<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    * &lt;ul&gt;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    *    &lt;li&gt;{@link SystemPropertiesVar}<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    *    &lt;li&gt;{@link EnvVariablesVar}<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    *    &lt;li&gt;{@link ConfigFileVar}<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    *    &lt;li&gt;{@link IfVar}<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    *    &lt;li&gt;{@link SwitchVar}<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    * &lt;/ul&gt;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    *<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    * &lt;p&gt;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    * Later during the construction of {@link RestContext}, we add the following variables:<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    * &lt;ul&gt;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    *    &lt;li&gt;{@link LocalizationVar}<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    *    &lt;li&gt;{@link RequestVar}<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    *    &lt;li&gt;{@link SerializedRequestAttrVar}<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    *    &lt;li&gt;{@link ServletInitParamVar}<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    *    &lt;li&gt;{@link UrlVar}<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    *    &lt;li&gt;{@link UrlEncodeVar}<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    *    &lt;li&gt;{@link WidgetVar}<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    * &lt;/ul&gt;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    *<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    * @param vars The {@link Var} classes to add to this config.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    * @return This object (for method chaining).<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   public RestConfig addVars(Class&lt;?&gt;...vars) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      this.varResolverBuilder.vars(vars);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      return this;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   }<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>    * Adds a var context object to this config.<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>    * Var context objects are read-only objects associated with the variable resolver for vars that require external<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * information.<a name="line.352"></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>    * Calls all @RestHook(INIT) methods on the specified resource object.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   void init(Object resource) throws ServletException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      Map&lt;String,Method&gt; map = new LinkedHashMap&lt;String,Method&gt;();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      for (Method m : ClassUtils.getAllMethods(this.resourceClass, true)) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>         if (m.isAnnotationPresent(RestHook.class) &amp;&amp; m.getAnnotation(RestHook.class).value() == HookEvent.INIT) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            Visibility.setAccessible(m);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            String sig = ClassUtils.getMethodSignature(m);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>            if (! map.containsKey(sig))<a name="line.303"></a>
+<span class="sourceLineNo">304</span>               map.put(sig, m);<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>      for (Method m : map.values()) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>         ClassUtils.assertArgsOfType(m, RestConfig.class, ServletConfig.class);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>         Class&lt;?&gt;[] argTypes = m.getParameterTypes();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>         Object[] args = new Object[argTypes.length];<a name="line.310"></a>
+<span class="sourceLineNo">311</span>         for (int i = 0; i &lt; args.length; i++) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>            if (argTypes[i] == RestConfig.class)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>               args[i] = this;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>            else<a name="line.314"></a>
+<span class="sourceLineNo">315</span>               args[i] = this.inner;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>         }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>         try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            m.invoke(resource, args);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>         } catch (Exception e) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            throw new RestServletException("Exception thrown from @RestHook(INIT) method {0}.", m).initCause(e);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>         }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>   /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    * Adds the specified {@link Var} classes to this config.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    *<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    * &lt;p&gt;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    * These variables affect the variable resolver returned by {@link RestRequest#getVarResolverSession()} which is<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    * used to resolve string variables of the form &lt;js&gt;"$X{...}"&lt;/js&gt;.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    *<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    * &lt;p&gt;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    * By default, this config includes the following variables:<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * &lt;ul&gt;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    *    &lt;li&gt;{@link SystemPropertiesVar}<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    *    &lt;li&gt;{@link EnvVariablesVar}<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    *    &lt;li&gt;{@link ConfigFileVar}<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    *    &lt;li&gt;{@link IfVar}<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    *    &lt;li&gt;{@link SwitchVar}<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    * &lt;/ul&gt;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    *<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    * &lt;p&gt;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    * Later during the construction of {@link RestContext}, we add the following variables:<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    * &lt;ul&gt;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    *    &lt;li&gt;{@link LocalizationVar}<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    *    &lt;li&gt;{@link RequestVar}<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    *    &lt;li&gt;{@link SerializedRequestAttrVar}<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    *    &lt;li&gt;{@link ServletInitParamVar}<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    *    &lt;li&gt;{@link UrlVar}<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    *    &lt;li&gt;{@link UrlEncodeVar}<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    *    &lt;li&gt;{@link WidgetVar}<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    * &lt;/ul&gt;<a name="line.352"></a>
 <span class="sourceLineNo">353</span>    *<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    * &lt;p&gt;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    * For example, the {@link ConfigFileVar} needs access to this resource's {@link ConfigFile} through the<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    * {@link ConfigFileVar#SESSION_config} object that can be specified as either a session object (temporary) or<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    * context object (permanent).<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    * In this case, we call the following code to add it to the context map:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    * &lt;p class='bcode'&gt;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    *    config.addVarContextObject(&lt;jsf&gt;SESSION_config&lt;/jsf&gt;, configFile);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    * &lt;/p&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    *<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    * @param name The context object key (i.e. the name that the Var class looks for).<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    * @param object The context object.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    * @return This object (for method chaining).<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   public RestConfig addVarContextObject(String name, Object object) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      this.varResolverBuilder.contextObject(name, object);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return this;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>   /**<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    * Overwrites the default config file with a custom config file.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    *<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    * &lt;p&gt;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * By default, the config file is determined using the {@link RestResource#config() @RestResource.config()}<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * annotation.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    * This method allows you to programmatically override it with your own custom config file.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    *<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    * @param configFile The new config file.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    * @return This object (for method chaining).<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    */<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   public RestConfig setConfigFile(ConfigFile configFile) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      this.configFile = configFile;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      return this;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>   /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    * Sets a property on this resource.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    *<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    * &lt;p&gt;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    * This is the programmatic equivalent to the {@link RestResource#properties()} annotation.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    *<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    * @param key The property name.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    * @param value The property value.<a name="line.395"></a>
+<span class="sourceLineNo">354</span>    * @param vars The {@link Var} classes to add to this config.<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    * @return This object (for method chaining).<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   public RestConfig addVars(Class&lt;?&gt;...vars) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      this.varResolverBuilder.vars(vars);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return this;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   }<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>   /**<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    * Adds a var context object to this config.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    *<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    * &lt;p&gt;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    * Var context objects are read-only objects associated with the variable resolver for vars that require external<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    * information.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    *<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    * &lt;p&gt;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    * For example, the {@link ConfigFileVar} needs access to this resource's {@link ConfigFile} through the<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    * {@link ConfigFileVar#SESSION_config} object that can be specified as either a session object (temporary) or<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    * context object (permanent).<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    * In this case, we call the following code to add it to the context map:<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    * &lt;p class='bcode'&gt;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    *    config.addVarContextObject(&lt;jsf&gt;SESSION_config&lt;/jsf&gt;, configFile);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    * &lt;/p&gt;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    *<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    * @param name The context object key (i.e. the name that the Var class looks for).<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    * @param object The context object.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    * @return This object (for method chaining).<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   public RestConfig addVarContextObject(String name, Object object) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      this.varResolverBuilder.contextObject(name, object);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      return this;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>   /**<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    * Overwrites the default config file with a custom config file.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    *<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    * &lt;p&gt;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    * By default, the config file is determined using the {@link RestResource#config() @RestResource.config()}<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    * annotation.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    * This method allows you to programmatically override it with your own custom config file.<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    *<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    * @param configFile The new config file.<a name="line.395"></a>
 <span class="sourceLineNo">396</span>    * @return This object (for method chaining).<a name="line.396"></a>
 <span class="sourceLineNo">397</span>    */<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   public RestConfig setProperty(String key, Object value) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      this.properties.put(key, value);<a name="line.399"></a>
+<span class="sourceLineNo">398</span>   public RestConfig setConfigFile(ConfigFile configFile) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      this.configFile = configFile;<a name="line.399"></a>
 <span class="sourceLineNo">400</span>      return this;<a name="line.400"></a>
 <span class="sourceLineNo">401</span>   }<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
 <span class="sourceLineNo">403</span>   /**<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    * Sets multiple properties on this resource.<a name="line.404"></a>
+<span class="sourceLineNo">404</span>    * Sets a property on this resource.<a name="line.404"></a>
 <span class="sourceLineNo">405</span>    *<a name="line.405"></a>
 <span class="sourceLineNo">406</span>    * &lt;p&gt;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    * This is the programmatic equivalent to the {@link RestResource#properties() @RestResource.properties()} annotation.<a name="line.407"></a>
+<span class="sourceLineNo">407</span>    * This is the programmatic equivalent to the {@link RestResource#properties()} annotation.<a name="line.407"></a>
 <span class="sourceLineNo">408</span>    *<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    * &lt;p&gt;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    * Values in the map are added to the existing properties and are overwritten if duplicates are found.<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    *<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    * @param properties The new properties to add to this config.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    * @return This object (for method chaining).<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    */<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   public RestConfig setProperties(Map&lt;String,Object&gt; properties) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      this.properties.putAll(properties);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return this;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>   /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    * Adds class-level bean filters to this resource.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    * &lt;p&gt;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    * This is the programmatic equivalent to the {@link RestResource#beanFilters() @RestResource.beanFilters()}<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    * annotation.<a name="line.425"></a>
+<span class="sourceLineNo">409</span>    * @param key The property name.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    * @param value The property value.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    * @return This object (for method chaining).<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   public RestConfig setProperty(String key, Object value) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      this.properties.put(key, value);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return this;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>   /**<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    * Sets multiple properties on this resource.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    *<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    * &lt;p&gt;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    * This is the programmatic equivalent to the {@link RestResource#properties() @RestResource.properties()} annotation.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    *<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    * &lt;p&gt;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    * Values in the map are added to the existing properties and are overwritten if duplicates are found.<a name="line.425"></a>
 <span class="sourceLineNo">426</span>    *<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    * &lt;p&gt;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    * annotation.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    *<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    * @param beanFilters The bean filters to add to this config.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    * @return This object (for method chaining).<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   public RestConfig addBeanFilters(Class&lt;?&gt;...beanFilters) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      this.beanFilters.addAll(Arrays.asList(beanFilters));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return this;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>   /**<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    * Adds class-level pojo swaps to this resource.<a name="line.440"></a>
+<span class="sourceLineNo">427</span>    * @param properties The new properties to add to this config.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    * @return This object (for method chaining).<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   public RestConfig setProperties(Map&lt;String,Object&gt; properties) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      this.properties.putAll(properties);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      return this;<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>   /**<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    * Adds class-level bean filters to this resource.<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    *<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    * This is the programmatic equivalent to the {@link RestResource#beanFilters() @RestResource.beanFilters()}<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    * annotation.<a name="line.440"></a>
 <span class="sourceLineNo">441</span>    *<a name="line.441"></a>
 <span class="sourceLineNo">442</span>    * &lt;p&gt;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    * This is the programmatic equivalent to the {@link RestResource#pojoSwaps() @RestResource.pojoSwaps()} annotation.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    *<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    * &lt;p&gt;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * annotation.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    *<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    * @param pojoSwaps The pojo swaps to add to this config.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    * @return This object (for method chaining).<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   public RestConfig addPojoSwaps(Class&lt;?&gt;...pojoSwaps) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      this.pojoSwaps.addAll(Arrays.asList(pojoSwaps));<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      return this;<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>   /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    * Specifies the serializer listener class to use for listening to non-fatal serialization errors.<a name="line.458"></a>
+<span class="sourceLineNo">443</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    * annotation.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    * @param beanFilters The bean filters to add to this config.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    * @return This object (for method chaining).<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   public RestConfig addBeanFilters(Class&lt;?&gt;...beanFilters) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      this.beanFilters.addAll(Arrays.asList(beanFilters));<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return this;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   }<a name="line.452"></a>
+<span class="sourceLineNo">453</span><a name="line.453"></a>
+<span class="sourceLineNo">454</span>   /**<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    * Adds class-level pojo swaps to this resource.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    *<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    * &lt;p&gt;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    * This is the programmatic equivalent to the {@link RestResource#pojoSwaps() @RestResource.pojoSwaps()} annotation.<a name="line.458"></a>
 <span class="sourceLineNo">459</span>    *<a name="line.459"></a>
 <span class="sourceLineNo">460</span>    * &lt;p&gt;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    * This is the programmatic equivalent to the<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    * {@link RestResource#serializerListener() @RestResource.serializerListener()} annotation.<a name="line.462"></a>
+<span class="sourceLineNo">461</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    * annotation.<a name="line.462"></a>
 <span class="sourceLineNo">463</span>    *<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    * @param listener The listener to add to this config.<a name="line.464"></a>
+<span class="sourceLineNo">464</span>    * @param pojoSwaps The pojo swaps to add to this config.<a name="line.464"></a>
 <span class="sourceLineNo">465</span>    * @return This object (for method chaining).<a name="line.465"></a>
 <span class="sourceLineNo">466</span>    */<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   public RestConfig serializerListener(Class&lt;? extends SerializerListener&gt; listener) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      if (listener != SerializerListener.class)<a name="line.468"></a>
-<span class="sourceLineNo">469</span>         this.serializerListener = listener;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      return this;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   }<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>   /**<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    * Specifies the parser listener class to use for listening to non-fatal parse errors.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    * &lt;p&gt;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    * This is the programmatic equivalent to the<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    * {@link RestResource#parserListener() @RestResource.parserListener()} annotation.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    *<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    * @param listener The listener to add to this config.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    * @return This object (for method chaining).<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   public RestConfig parserListener(Class&lt;? extends ParserListener&gt; listener) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      if (listener != ParserListener.class)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>         this.parserListener = listener;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      return this;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>   /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    * Specifies the override context path for this resource.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    *<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    * This is the programmatic equivalent to the<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    * {@link RestResource#contextPath() @RestResource.contextPath()} annotation.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    *<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    * @param contextPath The context path for this resource and any child resources.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    * @return This object (for method chaining).<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    */<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   public RestConfig contextPath(String contextPath) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      if (! contextPath.isEmpty())<a name="line.500"></a>
-<span class="sourceLineNo">501</span>         this.contextPath = contextPath;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      return this;<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>    * Adds class-level parameter resolvers to this resource.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    *<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    * &lt;p&gt;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    * This is the programmatic equivalent to the<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    * {@link RestResource#paramResolvers() @RestResource.paramResolvers()} annotation.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    *<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    * @param paramResolvers The parameter resolvers to add to this config.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    * @return This object (for method chaining).<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    */<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   public RestConfig addParamResolvers(Class&lt;? extends RestParam&gt;...paramResolvers) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      this.paramResolvers.addAll(Arrays.asList(paramResolvers));<a name="line.516"></a>
+<span class="sourceLineNo">467</span>   public RestConfig addPojoSwaps(Class&lt;?&gt;...pojoSwaps) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      this.pojoSwaps.addAll(Arrays.asList(pojoSwaps));<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      return this;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>   /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    * Specifies the serializer listener class to use for listening to non-fatal serialization errors.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    *<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    * &lt;p&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    * This is the programmatic equivalent to the<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    * {@link RestResource#serializerListener() @RestResource.serializerListener()} annotation.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    *<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    * @param listener The listener to add to this config.<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    * @return This object (for method chaining).<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   public RestConfig serializerListener(Class&lt;? extends SerializerListener&gt; listener) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      if (listener != SerializerListener.class)<a name="line.483"></a>
+<span class="sourceLineNo">484</span>         this.serializerListener = listener;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      return this;<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   }<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>   /**<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    * Specifies the parser listener class to use for listening to non-fatal parse errors.<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    *<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    * This is the programmatic equivalent to the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    * {@link RestResource#parserListener() @RestResource.parserListener()} annotation.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    *<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    * @param listener The listener to add to this config.<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    * @return This object (for method chaining).<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    */<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   public RestConfig parserListener(Class&lt;? extends ParserListener&gt; listener) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      if (listener != ParserListener.class)<a name="line.499"></a>
+<span class="sourceLineNo">500</span>         this.parserListener = listener;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      return this;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   }<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>    * Specifies the override context path for this resource.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    *<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    * &lt;p&gt;<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    * This is the programmatic equivalent to the<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    * {@link RestResource#contextPath() @RestResource.contextPath()} annotation.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    *<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    * @param contextPath The context path for this resource and any child resources.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    * @return This object (for method chaining).<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    */<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   public RestConfig contextPath(String contextPath) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      if (! contextPath.isEmpty())<a name="line.515"></a>
+<span class="sourceLineNo">516</span>         this.contextPath = contextPath;<a name="line.516"></a>
 <span class="sourceLineNo">517</span>      return this;<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>    * Adds class-level serializers to this resource.<a name="line.521"></a>
+<span class="sourceLineNo">521</span>    * Adds class-level parameter resolvers to this resource.<a name="line.521"></a>
 <span class="sourceLineNo">522</span>    *<a name="line.522"></a>
 <span class="sourceLineNo">523</span>    * &lt;p&gt;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    * This is the programmatic equivalent to the {@link RestResource#serializers() @RestResource.serializers()}<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    * annotation.<a name="line.525"></a>
+<span class="sourceLineNo">524</span>    * This is the programmatic equivalent to the<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    * {@link RestResource#paramResolvers() @RestResource.paramResolvers()} annotation.<a name="line.525"></a>
 <span class="sourceLineNo">526</span>    *<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    * &lt;p&gt;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    * annotation.<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    *<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    * @param serializers The serializer classes to add to this config.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    * @return This object (for method chaining).<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   public RestConfig addSerializers(Class&lt;?&gt;...serializers) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      this.serializers.append(serializers);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      return this;<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   }<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>   /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    * Adds class-level serializers to this resource.<a name="line.540"></a>
+<span class="sourceLineNo">527</span>    * @param paramResolvers The parameter resolvers to add to this config.<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    * @return This object (for method chaining).<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   public RestConfig addParamResolvers(Class&lt;? extends RestParam&gt;...paramResolvers) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      this.paramResolvers.addAll(Arrays.asList(paramResolvers));<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      return this;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   }<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>   /**<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    * Adds class-level serializers to this resource.<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    *<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    * &lt;p&gt;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    * This is the programmatic equivalent to the {@link RestResource#serializers() @RestResource.serializers()}<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    * annotation.<a name="line.540"></a>
 <span class="sourceLineNo">541</span>    *<a name="line.541"></a>
 <span class="sourceLineNo">542</span>    * &lt;p&gt;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    * Same as {@link #addSerializers(Class...)} except allows you to pass in serializer instances.<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    * The actual serializer ends up being the result of this operation using the bean filters, pojo swaps, and<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    * properties on this config:<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    * &lt;p class='bcode'&gt;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    *    serializer = serializer.builder().beanFilters(beanFilters).pojoSwaps(pojoSwaps).properties(properties).build();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    * &lt;/p&gt;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    *<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    * &lt;p&gt;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    * annotation.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    *<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    * @param serializers The serializers to add to this config.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    * @return This object (for method chaining).<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    */<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   public RestConfig addSerializers(Serializer...serializers) {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.serializers.append(serializers);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return this;<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>   /**<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    * Adds class-level parsers to this resource.<a name="line.563"></a>
+<span class="sourceLineNo">543</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    * annotation.<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    *<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    * @param serializers The serializer classes to add to this config.<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    * @return This object (for method chaining).<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    */<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   public RestConfig addSerializers(Class&lt;?&gt;...serializers) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      this.serializers.append(serializers);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return this;<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>    * Adds class-level serializers to this resource.<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    *<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    * &lt;p&gt;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    * Same as {@link #addSerializers(Class...)} except allows you to pass in serializer instances.<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    * The actual serializer ends up being the result of this operation using the bean filters, pojo swaps, and<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    * properties on this config:<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    * &lt;p class='bcode'&gt;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    *    serializer = serializer.builder().beanFilters(beanFilters).pojoSwaps(pojoSwaps).properties(properties).build();<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    * &lt;/p&gt;<a name="line.563"></a>
 <span class="sourceLineNo">564</span>    *<a name="line.564"></a>
 <span class="sourceLineNo">565</span>    * &lt;p&gt;<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    * This is the programmatic equivalent to the {@link RestResource#parsers() @RestResource.parsers()} annotation.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    *<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    * &lt;p&gt;<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    * annotation.<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    *<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    * @param parsers The parser classes to add to this config.<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    * @return This object (for method chaining).<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   public RestConfig addParsers(Class&lt;?&gt;...parsers) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      this.parsers.append(parsers);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return this;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>   /**<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    * Adds class-level parsers to this resource.<a name="line.581"></a>
+<span class="sourceLineNo">566</span>    * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    * annotation.<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    *<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    * @param serializers The serializers to add to this config.<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    * @return This object (for method chaining).<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   public RestConfig addSerializers(Serializer...serializers) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      this.serializers.append(serializers);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      return this;<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>   /**<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    * Adds class-level parsers to this resource.<a name="line.578"></a>
+<span class="sourceLineNo">579</span>    *<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    * &lt;p&gt;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    * This is the programmatic equivalent to the {@link RestResource#parsers() @RestResource.parsers()} annotation.<a name="line.581"></a>
 <span

<TRUNCATED>


[07/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.html
----------------------------------------------------------------------
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 26a50e7..6cf94d3 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
@@ -23,364 +23,363 @@
 <span class="sourceLineNo">015</span>import static java.util.logging.Level.*;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.16"></a>
 <span class="sourceLineNo">017</span>import static org.apache.juneau.html.HtmlDocSerializerContext.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import static org.apache.juneau.rest.RestContext.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import java.io.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.net.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.*;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.logging.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<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.*;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.juneau.annotation.*;<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>import org.apache.juneau.utils.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * REST resource that allows access to a file system directory.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <a name="line.38"></a>
-<span class="sourceLineNo">039</span> * &lt;p&gt;<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * The root directory is specified in one of two ways:<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * &lt;ul class='spaced-list'&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *    &lt;li&gt;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *       Specifying the location via a &lt;l&gt;DirectoryResource.rootDir&lt;/l&gt; property.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *    &lt;li&gt;<a name="line.44"></a>
-<span class="sourceLineNo">045</span> *       Overriding the {@link #getRootDir()} method.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * &lt;/ul&gt;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * <a name="line.47"></a>
-<span class="sourceLineNo">048</span> * &lt;p&gt;<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * Read/write access control is handled through the following properties:<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * &lt;ul class='spaced-list'&gt;<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.allowViews&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows view and download access to files.<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.allowPuts&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be created or overwritten.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *    &lt;li&gt;<a name="line.55"></a>
-<span class="sourceLineNo">056</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.56"></a>
-<span class="sourceLineNo">057</span> * &lt;/ul&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Access can also be controlled by overriding the {@link #checkAccess(RestRequest)} method.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@RestResource(<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   title="File System Explorer",<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   description="Contents of $R{attribute.path}",<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   messages="nls/DirectoryResource",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   htmldoc=@HtmlDoc(<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      links={<a name="line.67"></a>
-<span class="sourceLineNo">068</span>         "up: request:/..",<a name="line.68"></a>
-<span class="sourceLineNo">069</span>         "options: servlet:/?method=OPTIONS"<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   ),<a name="line.71"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import java.io.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.net.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.*;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.logging.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import javax.servlet.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.*;<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 $R{attribute.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>      links={<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>   allowMethodParam="*",<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=REST_allowMethodParam, value="*"),<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      @Property(name="DirectoryResource.rootDir", value="")<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>public class DirectoryResource extends Resource {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   private static final long serialVersionUID = 1L;<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>   private File rootDir;     // The root directory<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>   // Settings enabled through servlet init parameters<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   private boolean allowDeletes, allowPuts, allowViews;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>   private static Logger logger = Logger.getLogger(DirectoryResource.class.getName());<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>   @Override /* Servlet */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   public void init() throws ServletException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      ObjectMap p = getProperties();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      rootDir = new File(p.getString("DirectoryResource.rootDir"));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      allowViews = p.getBoolean("DirectoryResource.allowViews", false);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      allowDeletes = p.getBoolean("DirectoryResource.allowDeletes", false);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      allowPuts = p.getBoolean("DirectoryResource.allowPuts", false);<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>   /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    * Returns the root directory defined by the 'rootDir' init parameter.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    * <a name="line.99"></a>
-<span class="sourceLineNo">100</span>    * &lt;p&gt;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * Subclasses can override this method to provide their own root directory.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * <a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * @return The root directory.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   protected File getRootDir() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      if (rootDir == null) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         rootDir = new File(getProperties().getString("rootDir"));<a name="line.107"></a>
-<span class="sourceLineNo">108</span>         if (! rootDir.exists())<a name="line.108"></a>
-<span class="sourceLineNo">109</span>            if (! rootDir.mkdirs())<a name="line.109"></a>
-<span class="sourceLineNo">110</span>               throw new RuntimeException("Could not create root dir");<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      return rootDir;<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>    * [GET /*] - On directories, returns a directory listing.  On files, returns information about the file.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    *<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    * @param req The HTTP request.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    * @return Either a FileResource or list of FileResources depending on whether it's a<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    *    file or directory.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   @RestMethod(name="GET", path="/*",<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      description="On directories, returns a directory listing.\nOn files, returns information about the file.",<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      converters={Queryable.class}<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   )<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   public Object doGet(RestRequest req) throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      checkAccess(req);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>      String pathInfo = req.getPathInfo();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      File f = pathInfo == null ? rootDir : new File(rootDir.getAbsolutePath() + pathInfo);<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>      if (!f.exists())<a name="line.133"></a>
-<span class="sourceLineNo">134</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>      req.setAttribute("path", f.getAbsolutePath());<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (f.isDirectory()) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>         List&lt;FileResource&gt; l = new LinkedList&lt;FileResource&gt;();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>         File[] files = f.listFiles();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>         if (files != null) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>            for (File fc : files) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>               URL fUrl = new URL(req.getRequestURL().append("/").append(fc.getName()).toString());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>               l.add(new FileResource(fc, fUrl));<a name="line.144"></a>
-<span class="sourceLineNo">145</span>            }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>         }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>         return l;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      return new FileResource(f, new URL(req.getRequestURL().toString()));<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>    * [DELETE /*] - Delete a file on the file system.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    *<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * @param req The HTTP request.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * @return The message &lt;js&gt;"File deleted"&lt;/js&gt; if successful.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    */<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   @RestMethod(name="DELETE", path="/*",<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      description="Delete a file on the file system."<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   )<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   public Object doDelete(RestRequest req) throws Exception {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      checkAccess(req);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      deleteFile(f);<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (req.getHeader("Accept").contains("text/html"))<a name="line.169"></a>
-<span class="sourceLineNo">170</span>         return new Redirect();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return "File deleted";<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>    * [PUT /*] - Add or overwrite a file on the file system.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * @param req The HTTP request.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * @return The message &lt;js&gt;"File added"&lt;/js&gt; if successful.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   @RestMethod(name="PUT", path="/*",<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      description="Add or overwrite a file on the file system."<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   )<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   public Object doPut(RestRequest req) throws Exception {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      checkAccess(req);<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      IOPipe.create(req.getInputStream(), bos).closeOut().run();<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">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>   private 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>      ObjectMap 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;FileResource&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>      BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      IOPipe.create(req.getInputStream(), bos).closeOut().run();<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>
 
 
 


[09/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/RestMicroservice.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/RestMicroservice.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/RestMicroservice.html
index f0f0cb4..f2a378c 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/RestMicroservice.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/RestMicroservice.html
@@ -20,636 +20,517 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.microservice;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import static org.apache.juneau.internal.FileUtils.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import static org.apache.juneau.internal.ClassUtils.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>import java.io.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import java.net.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.util.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.logging.*;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import javax.servlet.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.juneau.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.juneau.ini.*;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.juneau.json.*;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.microservice.resources.*;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.parser.*;<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.eclipse.jetty.server.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.eclipse.jetty.servlet.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.eclipse.jetty.xml.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * &lt;h6 class='topic'&gt;Jetty Server Details&lt;/h6&gt;<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <a name="line.40"></a>
-<span class="sourceLineNo">041</span> * The Jetty server is created by the {@link #createServer()} method and started with the {@link #startServer()} method.<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * These methods can be overridden to provided customized behavior.<a name="line.42"></a>
+<span class="sourceLineNo">015</span>import java.io.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import java.net.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import java.util.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import java.util.logging.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import javax.servlet.*;<a name="line.20"></a>
+<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.ini.*;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.juneau.internal.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.svl.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.eclipse.jetty.server.*;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.eclipse.jetty.server.Handler;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.eclipse.jetty.server.handler.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.eclipse.jetty.servlet.*;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.eclipse.jetty.xml.*;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * &lt;h6 class='topic'&gt;Jetty Server Details&lt;/h6&gt;<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * <a name="line.36"></a>
+<span class="sourceLineNo">037</span> * The Jetty server is created by the {@link #createServer()} method and started with the {@link #startServer()} method.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * These methods can be overridden to provided customized behavior.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * &lt;h6 class='topic'&gt;Defining REST Resources&lt;/h6&gt;<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <a name="line.41"></a>
+<span class="sourceLineNo">042</span> * Top-level REST resources are defined in the &lt;code&gt;jetty.xml&lt;/code&gt; file as normal servlets.<a name="line.42"></a>
 <span class="sourceLineNo">043</span> *<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * &lt;h6 class='topic'&gt;Defining REST Resources&lt;/h6&gt;<a name="line.44"></a>
+<span class="sourceLineNo">044</span> * &lt;h6 class='topic'&gt;Logging&lt;/h6&gt;<a name="line.44"></a>
 <span class="sourceLineNo">045</span> * <a name="line.45"></a>
-<span class="sourceLineNo">046</span> * Top-level REST resources are defined by the {@link #getResourceMap()} method.<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This method can be overridden to provide a customized list of REST resources.<a name="line.47"></a>
+<span class="sourceLineNo">046</span> * Logging is initialized by the {@link #initLogging()} method.<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * This method can be overridden to provide customized logging behavior.<a name="line.47"></a>
 <span class="sourceLineNo">048</span> *<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * &lt;h6 class='topic'&gt;Logging&lt;/h6&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * <a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Logging is initialized by the {@link #initLogging()} method.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * This method can be overridden to provide customized logging behavior.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * &lt;h6 class='topic'&gt;Lifecycle Listener Methods&lt;/h6&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * Subclasses can optionally implement the following event listener methods:<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * &lt;ul class='spaced-list'&gt;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> *    &lt;li&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> *       {@link #onStart()} - Gets executed before {@link #start()}.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *    &lt;li&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *       {@link #onStop()} - Gets executed before {@link #stop()}.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *    &lt;li&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *       {@link #onCreateServer()} - Gets executed before {@link #createServer()}.<a name="line.62"></a>
-<span class="sourceLineNo">063</span> *    &lt;li&gt;<a name="line.63"></a>
-<span class="sourceLineNo">064</span> *       {@link #onStartServer()} - Gets executed before {@link #startServer()}.<a name="line.64"></a>
-<span class="sourceLineNo">065</span> *    &lt;li&gt;<a name="line.65"></a>
-<span class="sourceLineNo">066</span> *       {@link #onPostStartServer()} - Gets executed after {@link #startServer()}.<a name="line.66"></a>
-<span class="sourceLineNo">067</span> *    &lt;li&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *       {@link #onStopServer()} - Gets executed before {@link #stop()}.<a name="line.68"></a>
-<span class="sourceLineNo">069</span> *    &lt;li&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> *       {@link #onPostStopServer()} - Gets executed after {@link #stop()}.<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * &lt;/ul&gt;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>public class RestMicroservice extends Microservice {<a name="line.73"></a>
+<span class="sourceLineNo">049</span> * &lt;h6 class='topic'&gt;Lifecycle Listener Methods&lt;/h6&gt;<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * Subclasses can optionally implement the following event listener methods:<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * &lt;ul class='spaced-list'&gt;<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *    &lt;li&gt;<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *       {@link #onStart()} - Gets executed before {@link #start()}.<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *    &lt;li&gt;<a name="line.54"></a>
+<span class="sourceLineNo">055</span> *       {@link #onStop()} - Gets executed before {@link #stop()}.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> *    &lt;li&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span> *       {@link #onCreateServer()} - Gets executed before {@link #createServer()}.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> *    &lt;li&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span> *       {@link #onStartServer()} - Gets executed before {@link #startServer()}.<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *    &lt;li&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *       {@link #onPostStartServer()} - Gets executed after {@link #startServer()}.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *    &lt;li&gt;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> *       {@link #onStopServer()} - Gets executed before {@link #stop()}.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> *    &lt;li&gt;<a name="line.64"></a>
+<span class="sourceLineNo">065</span> *       {@link #onPostStopServer()} - Gets executed after {@link #stop()}.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * &lt;/ul&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>public class RestMicroservice extends Microservice {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   <a name="line.69"></a>
+<span class="sourceLineNo">070</span>   private Server server;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   private Object jettyXml;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   <a name="line.72"></a>
+<span class="sourceLineNo">073</span>   private static volatile RestMicroservice INSTANCE;<a name="line.73"></a>
 <span class="sourceLineNo">074</span>   <a name="line.74"></a>
-<span class="sourceLineNo">075</span>   ServletContextHandler servletContextHandler; <a name="line.75"></a>
-<span class="sourceLineNo">076</span>   Server server;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   int port;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   String contextPath;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   Logger logger;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   Object jettyXml;<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>    * Main method.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    * <a name="line.84"></a>
-<span class="sourceLineNo">085</span>    * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * Subclasses must also implement this method!<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    *<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    * @param args Command line arguments.<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    * @throws Exception<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   public static void main(String[] args) throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      new RestMicroservice(args).start().join();<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>    * Constructor.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    *<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    * @param args Command line arguments.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    * @throws Exception<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   public RestMicroservice(String...args) throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      super(args);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>   //--------------------------------------------------------------------------------<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   // Methods implemented on Microservice API<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   //--------------------------------------------------------------------------------<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>   @Override /* Microservice */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   public RestMicroservice start() throws Exception {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      super.start();<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      try {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>         initLogging();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      } catch (Exception e) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>         // If logging can be initialized, just print a stack trace and continue.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>         e.printStackTrace();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      createServer();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      startServer();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      return this;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>   @Override /* Microservice */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   public RestMicroservice join() throws Exception {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      server.join();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      return this;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   }<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>   @Override /* Microservice */<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   public RestMicroservice stop() {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      Thread t = new Thread() {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         @Override /* Thread */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>         public void run() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            try {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>               if (server.isStopping() || server.isStopped())<a name="line.136"></a>
-<span class="sourceLineNo">137</span>                  return;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>               onStopServer();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>               logger.warning("Stopping server.");<a name="line.139"></a>
-<span class="sourceLineNo">140</span>               server.stop();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>               logger.warning("Server stopped.");<a name="line.141"></a>
-<span class="sourceLineNo">142</span>               onPostStopServer();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            } catch (Exception e) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>               logger.log(Level.SEVERE, e.getLocalizedMessage(), e);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>            }<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>      t.start();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      try {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>         t.join();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      } catch (InterruptedException e) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>         e.printStackTrace();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      super.stop();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      return this;<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>   //--------------------------------------------------------------------------------<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   // RestMicroservice API methods.<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>    * Returns the port that this microservice started up on.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    * @return The port that this microservice started up on.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   public int getPort() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      return port;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   }<a name="line.169"></a>
+<span class="sourceLineNo">075</span>   /**<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    * Returns the Microservice instance.  <a name="line.76"></a>
+<span class="sourceLineNo">077</span>    * &lt;p&gt;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    * This method only works if there's only one Microservice instance in a JVM.  <a name="line.78"></a>
+<span class="sourceLineNo">079</span>    * Otherwise, it's just overwritten by the last call to {@link #RestMicroservice(String...)}.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    * <a name="line.80"></a>
+<span class="sourceLineNo">081</span>    * @return The Microservice instance, or &lt;jk&gt;null&lt;/jk&gt; if there isn't one.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   public static RestMicroservice getInstance() {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      synchronized(RestMicroservice.class) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>         return INSTANCE;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   }<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   <a name="line.88"></a>
+<span class="sourceLineNo">089</span>   /**<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    * Main method.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    * <a name="line.91"></a>
+<span class="sourceLineNo">092</span>    * &lt;p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    * Subclasses must also implement this method!<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    *<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    * @param args Command line arguments.<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    * @throws Exception<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    */<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   public static void main(String[] args) throws Exception {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      new RestMicroservice(args).start().join();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>   /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    * Constructor.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    * @param args Command line arguments.<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>   public RestMicroservice(String...args) throws Exception {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      super(args);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      setInstance(this);<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>   private static void setInstance(RestMicroservice rm) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      synchronized(RestMicroservice.class) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>         INSTANCE = rm;<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>   //--------------------------------------------------------------------------------<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   // Methods implemented on Microservice API<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   //--------------------------------------------------------------------------------<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>   @Override /* Microservice */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   public RestMicroservice start() throws Exception {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      super.start();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      createServer();<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      startServer();<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      return this;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>   @Override /* Microservice */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   public RestMicroservice join() throws Exception {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      server.join();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return this;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>   @Override /* Microservice */<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   public RestMicroservice stop() {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      Thread t = new Thread() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>         @Override /* Thread */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>         public void run() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>            Logger logger = getLogger();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>            try {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>               if (server.isStopping() || server.isStopped())<a name="line.144"></a>
+<span class="sourceLineNo">145</span>                  return;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>               onStopServer();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>               logger.warning("Stopping server.");<a name="line.147"></a>
+<span class="sourceLineNo">148</span>               server.stop();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>               logger.warning("Server stopped.");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>               onPostStopServer();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            } catch (Exception e) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>               logger.log(Level.SEVERE, e.getLocalizedMessage(), e);<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>      };<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      t.start();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>         t.join();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      } catch (InterruptedException e) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>         e.printStackTrace();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      super.stop();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      return this;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>   //--------------------------------------------------------------------------------<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   // RestMicroservice API methods.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   //--------------------------------------------------------------------------------<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>    * Returns the URI where this microservice is listening on.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * @return The URI where this microservice is listening on.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   public URI getURI() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      String scheme = getConfig().getBoolean("REST/useSsl") ? "https" : "http";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      String hostname = "localhost";<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      String ctx = "/".equals(contextPath) ? null : contextPath;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>         hostname = InetAddress.getLocalHost().getHostName();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      } catch (UnknownHostException e) {}<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>         return new URI(scheme, null, hostname, port, ctx, null, null);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      } catch (URISyntaxException e) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>         throw new RuntimeException(e);<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><a name="line.188"></a>
-<span class="sourceLineNo">189</span>   /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    * Initialize the logging for this microservice.<a name="line.190"></a>
+<span class="sourceLineNo">172</span>    * Returns the port that this microservice started up on.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    * &lt;p&gt;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    * The value is determined by looking at the &lt;code&gt;Server/Connectors[ServerConnector]/port&lt;/code&gt; value in the <a name="line.174"></a>
+<span class="sourceLineNo">175</span>    * Jetty configuration.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    * <a name="line.176"></a>
+<span class="sourceLineNo">177</span>    * @return The port that this microservice started up on.<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   public int getPort() {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      for (Connector c : getServer().getConnectors()) <a name="line.180"></a>
+<span class="sourceLineNo">181</span>         if (c instanceof ServerConnector)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            return ((ServerConnector)c).getPort();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      throw new RuntimeException("Could not locate ServerConnector in Jetty server.");<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>    * Returns the context path that this microservice is using.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    * &lt;p&gt;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    * The value is determined by looking at the &lt;code&gt;Server/Handlers[ServletContextHandler]/contextPath&lt;/code&gt; value <a name="line.189"></a>
+<span class="sourceLineNo">190</span>    * in the Jetty configuration.<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    * <a name="line.191"></a>
-<span class="sourceLineNo">192</span>    * &lt;p&gt;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    * Subclasses can override this method to provide customized logging.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    * <a name="line.194"></a>
-<span class="sourceLineNo">195</span>    * &lt;p&gt;<a name="line.195"></a>
-<span class="sourceLineNo">196</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.196"></a>
-<span class="sourceLineNo">197</span>    * &lt;p class='bcode'&gt;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    *    &lt;cc&gt;#================================================================================<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    *    # Logger settings<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    *    # See FileHandler Java class for details.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    *    #================================================================================&lt;/cc&gt;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    *    &lt;cs&gt;[Logging]&lt;/cs&gt;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    *<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    *    &lt;cc&gt;# The directory where to create the log file.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    *    # Default is ".".&lt;/cc&gt;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    *    &lt;ck&gt;logDir&lt;/ck&gt; = logs<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    *<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    *    &lt;cc&gt;# The name of the log file to create for the main logger.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    *    # The logDir and logFile make up the pattern that's passed to the FileHandler<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    *    # constructor.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    *    # If value is not specified, then logging to a file will not be set up.&lt;/cc&gt;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    *    &lt;ck&gt;logFile&lt;/ck&gt; = microservice.%g.log<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    *<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    *    &lt;cc&gt;# Whether to append to the existing log file or create a new one.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    *    # Default is false.&lt;/cc&gt;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    *    &lt;ck&gt;append&lt;/ck&gt; =<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    *<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    *    &lt;cc&gt;# The SimpleDateFormat format to use for dates.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    *    # Default is "yyyy.MM.dd hh:mm:ss".&lt;/cc&gt;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    *    &lt;ck&gt;dateFormat&lt;/ck&gt; =<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    *<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    *    &lt;cc&gt;# The log message format.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    *    # The value can contain any of the following variables:<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    *    #  {date} - The date, formatted per dateFormat.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    *    #  {class} - The class name.<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    *    #  {method} - The method name.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    *    #  {logger} - The logger name.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    *    #  {level} - The log level name.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    *    #  {msg} - The log message.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    *    #  {threadid} - The thread ID.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    *    #  {exception} - The localized exception message.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    *    # Default is "[{date} {level}] {msg}%n".&lt;/cc&gt;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    *    &lt;ck&gt;format&lt;/ck&gt; =<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    *<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    *    &lt;cc&gt;# The maximum log file size.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    *    # Suffixes available for numbers.<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    *    # See ConfigFile.getInt(String,int) for details.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    *    # Default is 1M.&lt;/cc&gt;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    *    &lt;ck&gt;limit&lt;/ck&gt; = 10M<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    *<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    *    &lt;cc&gt;# Max number of log files.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    *    # Default is 1.&lt;/cc&gt;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    *    &lt;ck&gt;count&lt;/ck&gt; = 5<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    *<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    *    &lt;cc&gt;# Default log levels.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    *    # Keys are logger names.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    *    # Values are serialized Level POJOs.&lt;/cc&gt;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    *    &lt;ck&gt;levels&lt;/ck&gt; = { org.apache.juneau:'INFO' }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    *<a name="line.249"></a>
-<span class="sourceLineNo">250</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.250"></a>
-<span class="sourceLineNo">251</span>    *    # Useful for preventing log files from filling up with duplicate stack traces.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    *    # Default is false.&lt;/cc&gt;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    *    &lt;ck&gt;useStackTraceHashes&lt;/ck&gt; = true<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    *<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    *    &lt;cc&gt;# The default level for the console logger.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    *    # Default is WARNING.&lt;/cc&gt;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    *    &lt;ck&gt;consoleLevel&lt;/ck&gt; = WARNING<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    * &lt;/p&gt;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    *<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    * @throws Exception<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   protected void initLogging() throws Exception {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      ConfigFile cf = getConfig();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      logger = Logger.getLogger("");<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      String logFile = cf.getString("Logging/logFile");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      if (! isEmpty(logFile)) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>         LogManager.getLogManager().reset();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>         String logDir = cf.getString("Logging/logDir", ".");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>         mkdirs(new File(logDir), false);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>         boolean append = cf.getBoolean("Logging/append");<a name="line.270"></a>
-<span class="sourceLineNo">271</span>         int limit = cf.getInt("Logging/limit", 1024*1024);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         int count = cf.getInt("Logging/count", 1);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>         FileHandler fh = new FileHandler(logDir + '/' + logFile, limit, count, append);<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>         boolean useStackTraceHashes = cf.getBoolean("Logging/useStackTraceHashes");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>         String format = cf.getString("Logging/format", "[{date} {level}] {msg}%n");<a name="line.276"></a>
-<span class="sourceLineNo">277</span>         String dateFormat = cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>         fh.setFormatter(new LogEntryFormatter(format, dateFormat, useStackTraceHashes));<a name="line.278"></a>
-<span class="sourceLineNo">279</span>         logger.addHandler(fh);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>         ConsoleHandler ch = new ConsoleHandler();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>         ch.setLevel(Level.parse(cf.getString("Logging/consoleLevel", "WARNING")));<a name="line.282"></a>
-<span class="sourceLineNo">283</span>         ch.setFormatter(new LogEntryFormatter(format, dateFormat, false));<a name="line.283"></a>
-<span class="sourceLineNo">284</span>         logger.addHandler(ch);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      ObjectMap loggerLevels = cf.getObject("Logging/levels", ObjectMap.class);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      if (loggerLevels != null)<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      for (String l : loggerLevels.keySet())<a name="line.288"></a>
-<span class="sourceLineNo">289</span>         Logger.getLogger(l).setLevel(loggerLevels.get(l, Level.class));<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   }<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>    * Method used to create (but not start) an instance of a Jetty server.<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 customize the Jetty server before it is started.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * <a name="line.297"></a>
-<span class="sourceLineNo">298</span>    * &lt;p&gt;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * The default implementation is configured by the following values in the config file <a name="line.299"></a>
-<span class="sourceLineNo">300</span>    * if a jetty.xml is not specified via a &lt;code&gt;REST/jettyXml&lt;/code&gt; setting:<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    * &lt;p class='bcode'&gt;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    *    &lt;cc&gt;#================================================================================<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    *    # REST settings<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    *    #================================================================================&lt;/cc&gt;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    *    &lt;cs&gt;[REST]&lt;/cs&gt;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    *<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    *    &lt;cc&gt;# The HTTP port number to use.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    *    # Default is Rest-Port setting in manifest file, or 8000.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    *    # Can also specify a comma-delimited lists of ports to try, including 0 meaning<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    *    # try a random port.&lt;/cc&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    *    &lt;ck&gt;port&lt;/ck&gt; = 10000<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    *<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    *    &lt;cc&gt;# The context root of the Jetty server.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    *    # Default is Rest-ContextPath in manifest file, or "/".&lt;/cc&gt;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    *    &lt;ck&gt;contextPath&lt;/ck&gt; =<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    *<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    *    &lt;cc&gt;# Enable SSL support.&lt;/cc&gt;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    *    &lt;ck&gt;useSsl&lt;/ck&gt; = false<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    *<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    * @return The newly-created server.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    * @throws Exception<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   protected Server createServer() throws Exception {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      onCreateServer();<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      ConfigFile cf = getConfig();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      ObjectMap mf = getManifest();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      if (jettyXml == null)<a name="line.328"></a>
-<span class="sourceLineNo">329</span>         jettyXml = cf.getString("REST/jettyXml", mf.getString("Rest-JettyXml", null));<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      if (jettyXml != null) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>         InputStream is = null;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>         if (jettyXml instanceof String) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            jettyXml = new File(jettyXml.toString());<a name="line.333"></a>
-<span class="sourceLineNo">334</span>         }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>         if (jettyXml instanceof File) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>            File f = (File)jettyXml;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>            if (f.exists())<a name="line.337"></a>
-<span class="sourceLineNo">338</span>               is = new FileInputStream((File)jettyXml);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            else <a name="line.339"></a>
-<span class="sourceLineNo">340</span>               throw new FormattedRuntimeException("Jetty.xml file ''{0}'' was specified but not found on the file system.", jettyXml);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>         } else if (jettyXml instanceof InputStream) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>            is = (InputStream)jettyXml;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>         }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>         <a name="line.344"></a>
-<span class="sourceLineNo">345</span>         XmlConfiguration config = new XmlConfiguration(is);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>         server = (Server)config.configure();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      <a name="line.347"></a>
-<span class="sourceLineNo">348</span>      } else {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>         int[] ports = cf.getObjectWithDefault("REST/port", mf.getWithDefault("Rest-Port", new int[]{8000}, int[].class), int[].class);<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>         port = findOpenPort(ports);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>         if (port == 0) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>            System.err.println("Open port not found.  Tried " + JsonSerializer.DEFAULT_LAX.toString(ports));<a name="line.353"></a>
-<span class="sourceLineNo">354</span>            System.exit(1);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>         }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>         contextPath = cf.getString("REST/contextPath", mf.getString("Rest-ContextPath", "/"));<a name="line.357"></a>
-<span class="sourceLineNo">358</span>         server = new Server(port);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>         <a name="line.359"></a>
-<span class="sourceLineNo">360</span>         servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>         servletContextHandler.setContextPath(contextPath);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>         server.setHandler(servletContextHandler);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>         for (Map.Entry&lt;String,Class&lt;? extends Servlet&gt;&gt; e : getResourceMap().entrySet())<a name="line.365"></a>
-<span class="sourceLineNo">366</span>            servletContextHandler.addServlet(e.getValue(), e.getKey()).setInitOrder(0);<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>      return server;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   <a name="line.371"></a>
-<span class="sourceLineNo">372</span>   /**<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    * Adds an arbitrary servlet to this microservice.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    * <a name="line.374"></a>
-<span class="sourceLineNo">375</span>    * @param servlet The servlet instance.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * @param pathSpec The context path of the servlet.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * @return This object (for method chaining).<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    * @throws RuntimeException if {@link #createServer()} has not previously been called.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    */<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   public RestMicroservice addServlet(Servlet servlet, String pathSpec) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      if (servletContextHandler == null)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>         throw new RuntimeException("Servlet context handler not found.  createServer() must be called first.");<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      ServletHolder sh = new ServletHolder(servlet);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      servletContextHandler.addServlet(sh, pathSpec);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      return this;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   <a name="line.387"></a>
-<span class="sourceLineNo">388</span>   /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    * Adds a servlet attribute to the Jetty server.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    * <a name="line.390"></a>
-<span class="sourceLineNo">391</span>    * @param name The server attribute name.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    * @param value The context path of the servlet.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    * @return This object (for method chaining).<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    * @throws RuntimeException if {@link #createServer()} has not previously been called.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    */<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   public RestMicroservice addServletAttribute(String name, Object value) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      if (server == null)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>         throw new RuntimeException("Server not found.  createServer() must be called first.");<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      server.setAttribute(name, value);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return this;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   <a name="line.402"></a>
-<span class="sourceLineNo">403</span>   /**<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    * Returns the underlying Jetty server.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    * <a name="line.405"></a>
-<span class="sourceLineNo">406</span>    * @return The underlying Jetty server, or &lt;jk&gt;null&lt;/jk&gt; if {@link #createServer()} has not yet been called.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    */<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   public Server getServer() {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      return server;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   }<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   <a name="line.411"></a>
-<span class="sourceLineNo">412</span>   private static int findOpenPort(int[] ports) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      for (int port : ports) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>         try {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            // If port is 0, try a random port between ports[0] and 32767.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            if (port == 0)<a name="line.416"></a>
-<span class="sourceLineNo">417</span>               port = new Random().nextInt(32767 - ports[0] + 1) + ports[0];<a name="line.417"></a>
-<span class="sourceLineNo">418</span>            ServerSocket ss = new ServerSocket(port);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>            ss.close();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>            return port;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>         } catch (IOException e) {}<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      return 0;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>   /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    * Method used to start the Jetty server created by {@link #createServer()}.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    * <a name="line.428"></a>
-<span class="sourceLineNo">429</span>    * &lt;p&gt;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    * Subclasses can override this method to customize server startup.<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    *<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    * @return The port that this server started on.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    * @throws Exception<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   protected int startServer() throws Exception {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      onStartServer();<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      server.start();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      this.port = ((ServerConnector)server.getConnectors()[0]).getLocalPort();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      logger.warning("Server started on port " + port);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      onPostStartServer();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      return port;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>   /**<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    * Returns the resource map to use for this microservice.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    * <a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * &lt;p&gt;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    * Subclasses can override this method to programmatically specify their resources.<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    * <a name="line.449"></a>
-<span class="sourceLineNo">450</span>    * &lt;p&gt;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    * The default implementation is configured by the following values in the config file:<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    * &lt;p class='bcode'&gt;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    *<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    *    &lt;cc&gt;#================================================================================<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    *    # REST settings<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    *    #================================================================================&lt;/cc&gt;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    *    &lt;cs&gt;[REST]&lt;/cs&gt;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    *<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    *    &lt;cc&gt;# A JSON map of servlet paths to servlet classes.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    *    # Example:<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    *    #  resourceMap = {'/*':'com.foo.MyServlet'}<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    *    # Either resourceMap or resources must be specified if it's not defined in<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    *    # the manifest file.&lt;/cc&gt;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    *    &lt;ck&gt;resourceMap&lt;/ck&gt; =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    *<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    *    &lt;cc&gt;# A comma-delimited list of names of classes that extend from Servlet.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    *    # Resource paths are pulled from @RestResource.path() annotation, or<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    *    #  "/*" if annotation not specified.<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    *    # Example:<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    *    #  resources = com.foo.MyServlet<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    *     *    # Default is Rest-Resources in manifest file.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    *    # Either resourceMap or resources must be specified if it's not defined in<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    *    # the manifest file.&lt;/cc&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    *    &lt;ck&gt;resources&lt;/ck&gt; =<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    * &lt;/p&gt;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    * <a name="line.476"></a>
-<span class="sourceLineNo">477</span>    * &lt;p&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    * In most cases, the rest resources will be specified in the manifest file since it's not likely to be a <a name="line.478"></a>
-<span class="sourceLineNo">479</span>    * configurable property:<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    * &lt;p class='bcode'&gt;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    *    &lt;mk&gt;Rest-Resources:&lt;/mk&gt; org.apache.juneau.microservice.sample.RootResources<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    * &lt;/p&gt;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    *<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    * @return The map of REST resources.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    * @throws ClassNotFoundException<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    * @throws ParseException<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    */<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   @SuppressWarnings("unchecked")<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   protected Map&lt;String,Class&lt;? extends Servlet&gt;&gt; getResourceMap() throws ClassNotFoundException, ParseException {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      ConfigFile cf = getConfig();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      ObjectMap mf = getManifest();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      Map&lt;String,Class&lt;? extends Servlet&gt;&gt; rm = new LinkedHashMap&lt;String,Class&lt;? extends Servlet&gt;&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>      ObjectMap resourceMap = cf.getObject("REST/resourceMap", ObjectMap.class);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      String[] resources = cf.getStringArray("REST/resources", mf.getStringArray("Rest-Resources"));<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      if (resourceMap != null &amp;&amp; ! resourceMap.isEmpty()) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>         for (Map.Entry&lt;String,Object&gt; e : resourceMap.entrySet()) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>            Class&lt;?&gt; c = Class.forName(e.getValue().toString());<a name="line.499"></a>
-<span class="sourceLineNo">500</span>            if (! isParentClass(Servlet.class, c))<a name="line.500"></a>
-<span class="sourceLineNo">501</span>               throw new ClassNotFoundException("Invalid class specified as resource.  Must be a Servlet.  Class='"+c.getName()+"'");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            rm.put(e.getKey(), (Class&lt;? extends Servlet&gt;)c);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>         }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      } else if (resources.length &gt; 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>         for (String resource : resources) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            Class&lt;?&gt; c = Class.forName(resource);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            if (! isParentClass(Servlet.class, c))<a name="line.507"></a>
-<span class="sourceLineNo">508</span>               throw new ClassNotFoundException("Invalid class specified as resource.  Must be a Servlet.  Class='"+c.getName()+"'");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>            RestResource rr = c.getAnnotation(RestResource.class);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>            String path = rr == null ? "/*" : rr.path();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            if (! path.endsWith("*"))<a name="line.511"></a>
-<span class="sourceLineNo">512</span>               path += (path.endsWith("/") ? "*" : "/*");<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            rm.put(path, (Class&lt;? extends Servlet&gt;)c);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>         }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      return rm;<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   }<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>    * Called when {@link ConfigFile#save()} is called on the config file.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    * <a name="line.521"></a>
-<span class="sourceLineNo">522</span>    * &lt;p&gt;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    * The default behavior is configured by the following value in the config file:<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    * &lt;p class='bcode'&gt;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    *    &lt;cs&gt;[REST]&lt;/cs&gt;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    *<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    *    &lt;cc&gt;# What to do when the config file is saved.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    *    # Possible values:<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    *    #  NOTHING - Don't do anything. (default)<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    *    #  RESTART_SERVER - Restart the Jetty server.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    *    #  RESTART_SERVICE - Shutdown and exit with code '3'.&lt;/cc&gt;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    *    &lt;ck&gt;saveConfigAction&lt;/ck&gt; = RESTART_SERVER<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    * &lt;/p&gt;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   @Override /* Microservice */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   protected void onConfigSave(ConfigFile cf) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      try {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>         String saveConfigAction = cf.getString("REST/saveConfigAction", "NOTHING");<a name="line.538"></a>
-<span class="sourceLineNo">539</span>         if (saveConfigAction.equals("RESTART_SERVER")) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>            new Thread() {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>               @Override /* Thread */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>               public void run() {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>                  try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>                     RestMicroservice.this.stop();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>                     RestMicroservice.this.start();<a name="line.545"></a>
-<span class="sourceLineNo">546</span>                  } catch (Exception e) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>                     logger.log(Level.SEVERE, e.getLocalizedMessage(), e);<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>            }.start();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>         } else if (saveConfigAction.equals("RESTART_SERVICE")) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>            stop();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>            System.exit(3);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>         }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      } catch (Exception e) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>         throw new RuntimeException(e);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      }<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   }<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>    * Sets the &lt;code&gt;jetty.xml&lt;/code&gt; used to configure the Jetty server.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    * <a name="line.562"></a>
-<span class="sourceLineNo">563</span>    * &lt;p&gt;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    * <a name="line.564"></a>
-<span class="sourceLineNo">565</span>    * @param jettyXml <a name="line.565"></a>
-<span class="sourceLineNo">566</span>    *    The &lt;code&gt;jetty.xml&lt;/code&gt;.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    *    &lt;br&gt;Can be any of the following:<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    *    &lt;ul&gt;<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    *       &lt;li&gt;A {@link File} representing the location on the file system.<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    *       &lt;li&gt;An {@link InputStream} containing the contents of the file.<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    *       &lt;li&gt;A {@link String} representing the file system path.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    *    &lt;/ul&gt;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    * @return This object (for method chaining).<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   public RestMicroservice setJettyXml(Object jettyXml) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      if (jettyXml instanceof String || jettyXml instanceof File || jettyXml instanceof InputStream)<a name="line.576"></a>
-<span class="sourceLineNo">577</span>         this.jettyXml = jettyXml;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      else<a name="line.578"></a>
-<span class="sourceLineNo">579</span>         throw new FormattedRuntimeException("Invalid object type passed to setJettyXml()", jettyXml == null ? null : jettyXml.getClass().getName());<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      return this;<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>   //--------------------------------------------------------------------------------<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   // Lifecycle listener methods.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   //--------------------------------------------------------------------------------<a name="line.586"></a>
-<span class="sourceLineNo">587</span><a name="line.587"></a>
-<span class="sourceLineNo">588</span>   /**<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    * Called before {@link #createServer()} is called.<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    * <a name="line.590"></a>
-<span class="sourceLineNo">591</span>    * &lt;p&gt;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    */<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   protected void onCreateServer() {}<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>   /**<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    * Called before {@link #startServer()} is called.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    * <a name="line.598"></a>
-<span class="sourceLineNo">599</span>    * &lt;p&gt;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   protected void onStartServer() {}<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>   /**<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    * Called after the Jetty server is started.<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    * <a name="line.606"></a>
-<span class="sourceLineNo">607</span>    * &lt;p&gt;<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    */<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   protected void onPostStartServer() {}<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>   /**<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    * Called before the Jetty server is stopped.<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    * <a name="line.614"></a>
-<span class="sourceLineNo">615</span>    * &lt;p&gt;<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    */<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   protected void onStopServer() {}<a name="line.618"></a>
-<span class="sourceLineNo">619</span><a name="line.619"></a>
-<span class="sourceLineNo">620</span>   /**<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    * Called after the Jetty server is stopped.<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    * <a name="line.622"></a>
-<span class="sourceLineNo">623</span>    * &lt;p&gt;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    * Subclasses can override this method to hook into the lifecycle of this application.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    */<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   protected void onPostStopServer() {}<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>   //--------------------------------------------------------------------------------<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   // Overridden methods.<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>   @Override /* Microservice */<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   public RestMicroservice setConfig(String cfPath, boolean create) throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      super.setConfig(cfPath, create);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return this;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>   @Override /* Microservice */<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   public RestMicroservice setManifestContents(String...contents) throws IOException {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      super.setManifestContents(contents);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      return this;<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>}<a name="line.644"></a>
+<span class="sourceLineNo">192</span>    * @return The context path that this microservice is using.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   public String getContextPath() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      for (Handler h : getServer().getHandlers()) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>         if (h instanceof HandlerCollection) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>            for (Handler h2 : ((HandlerCollection)h).getChildHandlers())<a name="line.197"></a>
+<span class="sourceLineNo">198</span>               if (h2 instanceof ServletContextHandler) <a name="line.198"></a>
+<span class="sourceLineNo">199</span>                  return ((ServletContextHandler)h2).getContextPath();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>         }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>         if (h instanceof ServletContextHandler) <a name="line.201"></a>
+<span class="sourceLineNo">202</span>            return ((ServletContextHandler)h).getContextPath();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throw new RuntimeException("Could not locate ServletContextHandler in Jetty server.");<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   }<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>    * Returns whether this microservice is using &lt;js&gt;"http"&lt;/js&gt; or &lt;js&gt;"https"&lt;/js&gt;.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    * &lt;p&gt;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    * The value is determined by looking for the existence of an SSL Connection Factorie by looking for the<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * &lt;code&gt;Server/Connectors[ServerConnector]/ConnectionFactories[SslConnectionFactory]&lt;/code&gt; value in the Jetty<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * configuration.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    * <a name="line.213"></a>
+<span class="sourceLineNo">214</span>    * @return Whether this microservice is using &lt;js&gt;"http"&lt;/js&gt; or &lt;js&gt;"https"&lt;/js&gt;.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    */<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   public String getProtocol() {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      for (Connector c : getServer().getConnectors())<a name="line.217"></a>
+<span class="sourceLineNo">218</span>         if (c instanceof ServerConnector) <a name="line.218"></a>
+<span class="sourceLineNo">219</span>            for (ConnectionFactory cf : ((ServerConnector)c).getConnectionFactories())<a name="line.219"></a>
+<span class="sourceLineNo">220</span>               if (cf instanceof SslConnectionFactory)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>                  return "https";<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return "http";<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>    * Returns the hostname of this microservice.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    * &lt;p&gt;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    * Simply uses &lt;code&gt;InetAddress.getLocalHost().getHostName()&lt;/code&gt;.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    * <a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * @return The hostname of this microservice.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   public String getHostName() {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      String hostname = "localhost";<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      try {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>         hostname = InetAddress.getLocalHost().getHostName();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } catch (UnknownHostException e) {}<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      return hostname;<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>    * Returns the URI where this microservice is listening on.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    * <a name="line.242"></a>
+<span class="sourceLineNo">243</span>    * @return The URI where this microservice is listening on.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   public URI getURI() {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      String cp = getContextPath(); <a name="line.246"></a>
+<span class="sourceLineNo">247</span>      try {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>         return new URI(getProtocol(), null, getHostName(), getPort(), "/".equals(cp) ? null : cp, null, null);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      } catch (URISyntaxException e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>         throw new RuntimeException(e);<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>   /**<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    * Method used to create (but not start) an instance of a Jetty server.<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 customize the Jetty server before it is started.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * <a name="line.259"></a>
+<span class="sourceLineNo">260</span>    * &lt;p&gt;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    * The default implementation is configured by the following values in the config file <a name="line.261"></a>
+<span class="sourceLineNo">262</span>    * if a jetty.xml is not specified via a &lt;code&gt;REST/jettyXml&lt;/code&gt; setting:<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    * &lt;p class='bcode'&gt;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    *    &lt;cc&gt;#================================================================================<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    *    # Jetty settings<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    *    #================================================================================&lt;/cc&gt;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    *    &lt;cs&gt;[Jetty]&lt;/cs&gt;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    *    <a name="line.268"></a>
+<span class="sourceLineNo">269</span>    *    &lt;cc&gt;# Path of the jetty.xml file used to configure the Jetty server.&lt;/cc&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    *    &lt;ck&gt;config&lt;/ck&gt; = jetty.xml<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    *    <a name="line.271"></a>
+<span class="sourceLineNo">272</span>    *    &lt;cc&gt;# Resolve Juneau variables in the jetty.xml file.&lt;/cc&gt;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    *    &lt;ck&gt;resolveVars&lt;/ck&gt; = true<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    *    <a name="line.274"></a>
+<span class="sourceLineNo">275</span>    *    &lt;cc&gt;# Port to use for the jetty server.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    *    # You can specify multiple ports.  The first available will be used.  '0' indicates to try a random port.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    *    # The resulting available port gets set as the system property "availablePort" which can be referenced in the <a name="line.277"></a>
+<span class="sourceLineNo">278</span>    *    # jetty.xml file as "$S{availablePort}" (assuming resolveVars is enabled).&lt;/cc&gt;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    *    &lt;ck&gt;port&lt;/ck&gt; = 10000,0,0,0<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    * &lt;/p&gt;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    *<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    * @return The newly-created server.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    * @throws Exception<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   protected Server createServer() throws Exception {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      onCreateServer();<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>      ConfigFile cf = getConfig();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      ObjectMap mf = getManifest();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      VarResolver vr = getVarResolver();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      <a name="line.291"></a>
+<span class="sourceLineNo">292</span>      int[] ports = cf.getObjectWithDefault("Jetty/port", mf.getWithDefault("Jetty-Port", new int[]{8000}, int[].class), int[].class);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      int availablePort = findOpenPort(ports);<a nam

<TRUNCATED>


[02/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/RestException.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestException.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestException.html
index bf4c56b..9daea0c 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestException.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestException.html
@@ -26,151 +26,152 @@
 <span class="sourceLineNo">018</span>import java.text.*;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import org.apache.juneau.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * Exception thrown to trigger an error HTTP status.<a name="line.23"></a>
-<span class="sourceLineNo">024</span> *<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * &lt;p&gt;<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * REST methods on subclasses of {@link RestServlet} can throw this exception to trigger an HTTP status other than the<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * automatically-generated &lt;code&gt;404&lt;/code&gt;, &lt;code&gt;405&lt;/code&gt;, and &lt;code&gt;500&lt;/code&gt; statuses.<a name="line.27"></a>
-<span class="sourceLineNo">028</span> */<a name="line.28"></a>
-<span class="sourceLineNo">029</span>public class RestException extends FormattedRuntimeException {<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>   private static final long serialVersionUID = 1L;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>   private final int status;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>   private int occurrence;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>   /**<a name="line.36"></a>
-<span class="sourceLineNo">037</span>    * Constructor.<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    *<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    * @param status The HTTP status code.<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    * @param msg The status message.<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   public RestException(int status, String msg, Object...args) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      super(msg, args);<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      this.status = status;<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>   /**<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    * Constructor.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    *<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    * @param status The HTTP status code.<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    * @param cause The root exception.<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    */<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   public RestException(int status, Throwable cause) {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      this(status, cause.getLocalizedMessage());<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      initCause(cause);<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">021</span>import org.apache.juneau.rest.annotation.*;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>/**<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * Exception thrown to trigger an error HTTP status.<a name="line.24"></a>
+<span class="sourceLineNo">025</span> *<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * &lt;p&gt;<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * REST methods on subclasses of {@link RestServlet} can throw this exception to trigger an HTTP status other than the<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * automatically-generated &lt;code&gt;404&lt;/code&gt;, &lt;code&gt;405&lt;/code&gt;, and &lt;code&gt;500&lt;/code&gt; statuses.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> */<a name="line.29"></a>
+<span class="sourceLineNo">030</span>public class RestException extends FormattedRuntimeException {<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>   private static final long serialVersionUID = 1L;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>   private final int status;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>   private int occurrence;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>   /**<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    * Constructor.<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    *<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    * @param status The HTTP status code.<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    * @param msg The status message.<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   public RestException(int status, String msg, Object...args) {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>      super(msg, args);<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      this.status = status;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   }<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>   /**<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    * Constructor.<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    *<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    * @param status The HTTP status code.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    * @param cause The root exception.<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    */<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   public RestException(int status, Throwable cause) {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      this(status, cause.getLocalizedMessage());<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      initCause(cause);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   }<a name="line.58"></a>
 <span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>   /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    * Sets the inner cause for this exception.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    *<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    * @param cause The inner cause.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    * @return This object (for method chaining).<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   @Override /* Throwable */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>   public synchronized RestException initCause(Throwable cause) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      super.initCause(cause);<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      return this;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   }<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>   /**<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    * Returns the root cause of this exception.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    *<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    * &lt;p&gt;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    * The root cause is the first exception in the init-cause parent chain that's not one of the following:<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    * &lt;ul&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    *    &lt;li&gt;{@link RestException}<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    *    &lt;li&gt;{@link InvocationTargetException}<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    * &lt;/ul&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    *<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    * @return The root cause of this exception, or &lt;jk&gt;null&lt;/jk&gt; if no root cause was found.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   public Throwable getRootCause() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      Throwable t = this;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      while(t != null) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>         t = t.getCause();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>         if (! (t instanceof RestException || t instanceof InvocationTargetException))<a name="line.88"></a>
-<span class="sourceLineNo">089</span>            return t;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      }<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      return null;<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>    * Returns all error messages from all errors in this stack.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    *<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    * &lt;p&gt;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    * Typically useful if you want to render all the error messages in the stack, but don't want to render all the<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    * stack traces too.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * @param scrubForXssVulnerabilities<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    *    If &lt;jk&gt;true&lt;/jk&gt;, replaces &lt;js&gt;'&amp;lt;'&lt;/js&gt;, &lt;js&gt;'&amp;gt;'&lt;/js&gt;, and &lt;js&gt;'&amp;amp;'&lt;/js&gt; characters with spaces.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * @return All error messages from all errors in this stack.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   public String getFullStackMessage(boolean scrubForXssVulnerabilities) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      String msg = getMessage();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      StringBuilder sb = new StringBuilder();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      if (msg != null) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>         if (scrubForXssVulnerabilities)<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            msg = msg.replace('&lt;', ' ').replace('&gt;', ' ').replace('&amp;', ' ');<a name="line.110"></a>
-<span class="sourceLineNo">111</span>         sb.append(msg);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Throwable e = getCause();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      while (e != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>         msg = e.getMessage();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>         if (msg != null &amp;&amp; scrubForXssVulnerabilities)<a name="line.116"></a>
-<span class="sourceLineNo">117</span>            msg = msg.replace('&lt;', ' ').replace('&gt;', ' ').replace('&amp;', ' ');<a name="line.117"></a>
-<span class="sourceLineNo">118</span>         String cls = e.getClass().getSimpleName();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>         if (msg == null)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>            sb.append(format("\nCaused by ({0})", cls));<a name="line.120"></a>
-<span class="sourceLineNo">121</span>         else<a name="line.121"></a>
-<span class="sourceLineNo">122</span>            sb.append(format("\nCaused by ({0}): {1}", cls, msg));<a name="line.122"></a>
-<span class="sourceLineNo">123</span>         e = e.getCause();<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return sb.toString();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>   @Override /* Object */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   public int hashCode() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      int i = 0;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      Throwable t = this;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      while (t != null) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         for (StackTraceElement e : t.getStackTrace())<a name="line.133"></a>
-<span class="sourceLineNo">134</span>         i ^= e.hashCode();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>         t = t.getCause();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return i;<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>   void setOccurrence(int occurrence) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      this.occurrence = occurrence;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   }<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>    * Returns the number of times this exception occurred on this servlet.<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    * &lt;p&gt;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    * This only gets set if {@link RestContext#REST_useStackTraceHashes} is enabled on the servlet.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    *<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    * @return<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    *    The occurrence number if {@link RestContext#REST_useStackTraceHashes} is enabled, or &lt;code&gt;0&lt;/code&gt; otherwise.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   public int getOccurrence() {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return occurrence;<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>   /**<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    * Returns the HTTP status code.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    *<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    * @return The HTTP status code.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   public int getStatus() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return status;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>}<a name="line.165"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>   /**<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    * Sets the inner cause for this exception.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    *<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    * @param cause The inner cause.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    * @return This object (for method chaining).<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   @Override /* Throwable */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   public synchronized RestException initCause(Throwable cause) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      super.initCause(cause);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      return this;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   }<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>   /**<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    * Returns the root cause of this exception.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    *<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    * &lt;p&gt;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    * The root cause is the first exception in the init-cause parent chain that's not one of the following:<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    * &lt;ul&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    *    &lt;li&gt;{@link RestException}<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    *    &lt;li&gt;{@link InvocationTargetException}<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    * &lt;/ul&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    *<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    * @return The root cause of this exception, or &lt;jk&gt;null&lt;/jk&gt; if no root cause was found.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   public Throwable getRootCause() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      Throwable t = this;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      while(t != null) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>         t = t.getCause();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>         if (! (t instanceof RestException || t instanceof InvocationTargetException))<a name="line.89"></a>
+<span class="sourceLineNo">090</span>            return t;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      return null;<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 all error messages from all errors in this stack.<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>    * Typically useful if you want to render all the error messages in the stack, but don't want to render all the<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    * stack traces too.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    *<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    * @param scrubForXssVulnerabilities<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    *    If &lt;jk&gt;true&lt;/jk&gt;, replaces &lt;js&gt;'&amp;lt;'&lt;/js&gt;, &lt;js&gt;'&amp;gt;'&lt;/js&gt;, and &lt;js&gt;'&amp;amp;'&lt;/js&gt; characters with spaces.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    * @return All error messages from all errors in this stack.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   public String getFullStackMessage(boolean scrubForXssVulnerabilities) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      String msg = getMessage();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      StringBuilder sb = new StringBuilder();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (msg != null) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>         if (scrubForXssVulnerabilities)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            msg = msg.replace('&lt;', ' ').replace('&gt;', ' ').replace('&amp;', ' ');<a name="line.111"></a>
+<span class="sourceLineNo">112</span>         sb.append(msg);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      Throwable e = getCause();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      while (e != null) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>         msg = e.getMessage();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>         if (msg != null &amp;&amp; scrubForXssVulnerabilities)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>            msg = msg.replace('&lt;', ' ').replace('&gt;', ' ').replace('&amp;', ' ');<a name="line.118"></a>
+<span class="sourceLineNo">119</span>         String cls = e.getClass().getSimpleName();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>         if (msg == null)<a name="line.120"></a>
+<span class="sourceLineNo">121</span>            sb.append(format("\nCaused by ({0})", cls));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>         else<a name="line.122"></a>
+<span class="sourceLineNo">123</span>            sb.append(format("\nCaused by ({0}): {1}", cls, msg));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>         e = e.getCause();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      return sb.toString();<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>   @Override /* Object */<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   public int hashCode() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      int i = 0;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      Throwable t = this;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      while (t != null) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>         for (StackTraceElement e : t.getStackTrace())<a name="line.134"></a>
+<span class="sourceLineNo">135</span>         i ^= e.hashCode();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>         t = t.getCause();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      return i;<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>   void setOccurrence(int occurrence) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      this.occurrence = occurrence;<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>   /**<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    * Returns the number of times this exception occurred on this servlet.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    *<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    * &lt;p&gt;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    * This only gets set if {@link RestResource#useStackTraceHashes()} is enabled on the servlet.<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    * @return<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    *    The occurrence number if {@link RestResource#useStackTraceHashes()} is enabled, or &lt;code&gt;0&lt;/code&gt; otherwise.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    */<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   public int getOccurrence() {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      return occurrence;<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>    * Returns the HTTP status code.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    *<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    * @return The HTTP status code.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   public int getStatus() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return status;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>}<a name="line.166"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/RestResourceResolver.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestResourceResolver.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestResourceResolver.html
index 0f9f1cc..5a7823e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestResourceResolver.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestResourceResolver.html
@@ -39,7 +39,7 @@
 <span class="sourceLineNo">031</span> *<a name="line.31"></a>
 <span class="sourceLineNo">032</span> * &lt;p&gt;<a name="line.32"></a>
 <span class="sourceLineNo">033</span> * An instance of this class can also be passed in through the servlet context as the context attribute<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * {@link RestContext#REST_resourceResolver}.<a name="line.34"></a>
+<span class="sourceLineNo">034</span> * {@link RestResource#resourceResolver()}.<a name="line.34"></a>
 <span class="sourceLineNo">035</span> */<a name="line.35"></a>
 <span class="sourceLineNo">036</span>public interface RestResourceResolver {<a name="line.36"></a>
 <span class="sourceLineNo">037</span><a name="line.37"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/RestServletDefault.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestServletDefault.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestServletDefault.html
index 17ade01..933a319 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestServletDefault.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestServletDefault.html
@@ -20,222 +20,217 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.rest;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static org.apache.juneau.rest.RestContext.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span><a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.juneau.dto.swagger.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import org.apache.juneau.html.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.juneau.jso.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.juneau.json.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.juneau.msgpack.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.juneau.plaintext.*;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.juneau.rest.annotation.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.juneau.soap.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.juneau.uon.*;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.juneau.urlencoding.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.juneau.xml.*;<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> * Subclass of {@link RestServlet} with default serializers and parsers defined.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * &lt;p&gt;<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * Supports the following request &lt;code&gt;Accept&lt;/code&gt; header values with the resulting response &lt;code&gt;Content-Type&lt;/code&gt;:<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * &lt;table class='styled'&gt;<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *    &lt;tr&gt;<a name="line.35"></a>
-<span class="sourceLineNo">036</span> *       &lt;th&gt;Accept&lt;/th&gt;<a name="line.36"></a>
-<span class="sourceLineNo">037</span> *       &lt;th&gt;Content-Type&lt;/th&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *       &lt;th&gt;Serializer&lt;/th&gt;<a name="line.38"></a>
-<span class="sourceLineNo">039</span> *    &lt;/tr&gt;<a name="line.39"></a>
-<span class="sourceLineNo">040</span> *    &lt;tr&gt;<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *       &lt;td class='code'&gt;application/json&lt;br&gt;text/json&lt;/td&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *       &lt;td class='code'&gt;application/json&lt;/td&gt;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *       &lt;td&gt;{@link JsonSerializer}&lt;/td&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *    &lt;/tr&gt;<a name="line.44"></a>
-<span class="sourceLineNo">045</span> *    &lt;tr&gt;<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *       &lt;td class='code'&gt;application/json+simple&lt;br&gt;text/json+simple&lt;/td&gt;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> *       &lt;td class='code'&gt;application/json&lt;/td&gt;<a name="line.47"></a>
-<span class="sourceLineNo">048</span> *       &lt;td&gt;{@link org.apache.juneau.json.JsonSerializer.Simple}&lt;/td&gt;<a name="line.48"></a>
-<span class="sourceLineNo">049</span> *    &lt;/tr&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> *    &lt;tr&gt;<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *       &lt;td class='code'&gt;application/json+schema&lt;br&gt;text/json+schema&lt;/td&gt;<a name="line.51"></a>
-<span class="sourceLineNo">052</span> *       &lt;td class='code'&gt;application/json&lt;/td&gt;<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *       &lt;td&gt;{@link JsonSchemaSerializer}&lt;/td&gt;<a name="line.53"></a>
-<span class="sourceLineNo">054</span> *    &lt;/tr&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *    &lt;tr&gt;<a name="line.55"></a>
-<span class="sourceLineNo">056</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> *       &lt;td&gt;{@link XmlDocSerializer}&lt;/td&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *    &lt;/tr&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *    &lt;tr&gt;<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *       &lt;td class='code'&gt;text/xml+schema&lt;/td&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.62"></a>
-<span class="sourceLineNo">063</span> *       &lt;td&gt;{@link XmlSchemaDocSerializer}&lt;/td&gt;<a name="line.63"></a>
-<span class="sourceLineNo">064</span> *    &lt;/tr&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> *    &lt;tr&gt;<a name="line.65"></a>
-<span class="sourceLineNo">066</span> *       &lt;td class='code'&gt;text/html&lt;/td&gt;<a name="line.66"></a>
-<span class="sourceLineNo">067</span> *       &lt;td class='code'&gt;text/html&lt;/td&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *       &lt;td&gt;{@link HtmlDocSerializer}&lt;/td&gt;<a name="line.68"></a>
-<span class="sourceLineNo">069</span> *    &lt;/tr&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> *    &lt;tr&gt;<a name="line.70"></a>
-<span class="sourceLineNo">071</span> *       &lt;td class='code'&gt;text/html+stripped&lt;/td&gt;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> *       &lt;td class='code'&gt;text/html&lt;/td&gt;<a name="line.72"></a>
-<span class="sourceLineNo">073</span> *       &lt;td&gt;{@link HtmlStrippedDocSerializer}&lt;/td&gt;<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *    &lt;/tr&gt;<a name="line.74"></a>
-<span class="sourceLineNo">075</span> *    &lt;tr&gt;<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *       &lt;td class='code'&gt;text/uon&lt;/td&gt;<a name="line.76"></a>
-<span class="sourceLineNo">077</span> *       &lt;td class='code'&gt;text/uon&lt;/td&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> *       &lt;td&gt;{@link UonSerializer}&lt;/td&gt;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> *    &lt;/tr&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *    &lt;tr&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span> *       &lt;td class='code'&gt;application/x-www-form-urlencoded&lt;/td&gt;<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *       &lt;td class='code'&gt;application/x-www-form-urlencoded&lt;/td&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> *       &lt;td&gt;{@link UrlEncodingSerializer}&lt;/td&gt;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *    &lt;/tr&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> *    &lt;tr&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> *       &lt;td class='code'&gt;text/xml+soap&lt;/td&gt;<a name="line.86"></a>
-<span class="sourceLineNo">087</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *       &lt;td&gt;{@link SoapXmlSerializer}&lt;/td&gt;<a name="line.88"></a>
-<span class="sourceLineNo">089</span> *    &lt;/tr&gt;<a name="line.89"></a>
-<span class="sourceLineNo">090</span> *    &lt;tr&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *       &lt;td class='code'&gt;text/plain&lt;/td&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> *       &lt;td class='code'&gt;text/plain&lt;/td&gt;<a name="line.92"></a>
-<span class="sourceLineNo">093</span> *       &lt;td&gt;{@link PlainTextSerializer}&lt;/td&gt;<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *    &lt;/tr&gt;<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/table&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Supports the following request &lt;code&gt;Content-Type&lt;/code&gt; header values:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * &lt;/p&gt;<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;table class='styled'&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> *    &lt;tr&gt;<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *       &lt;th&gt;Content-Type&lt;/th&gt;<a name="line.101"></a>
-<span class="sourceLineNo">102</span> *       &lt;th&gt;Parser&lt;/th&gt;<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *    &lt;/tr&gt;<a name="line.103"></a>
-<span class="sourceLineNo">104</span> *    &lt;tr&gt;<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *       &lt;td class='code'&gt;application/json&lt;br&gt;text/json&lt;/td&gt;<a name="line.105"></a>
-<span class="sourceLineNo">106</span> *       &lt;td&gt;{@link JsonParser}&lt;/td&gt;<a name="line.106"></a>
-<span class="sourceLineNo">107</span> *    &lt;/tr&gt;<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *    &lt;tr&gt;<a name="line.108"></a>
-<span class="sourceLineNo">109</span> *       &lt;td class='code'&gt;text/xml&lt;br&gt;application/xml&lt;/td&gt;<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *       &lt;td&gt;{@link XmlParser}&lt;/td&gt;<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *    &lt;/tr&gt;<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *    &lt;tr&gt;<a name="line.112"></a>
-<span class="sourceLineNo">113</span> *       &lt;td class='code'&gt;text/html&lt;br&gt;text/html+stripped&lt;/td&gt;<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *       &lt;td&gt;{@link HtmlParser}&lt;/td&gt;<a name="line.114"></a>
-<span class="sourceLineNo">115</span> *    &lt;/tr&gt;<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *    &lt;tr&gt;<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *       &lt;td class='code'&gt;text/uon&lt;/td&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span> *       &lt;td&gt;{@link UonParser}&lt;/td&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *    &lt;/tr&gt;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> *    &lt;tr&gt;<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *       &lt;td class='code'&gt;application/x-www-form-urlencoded&lt;/td&gt;<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *       &lt;td&gt;{@link UrlEncodingParser}&lt;/td&gt;<a name="line.122"></a>
-<span class="sourceLineNo">123</span> *    &lt;/tr&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *    &lt;tr&gt;<a name="line.124"></a>
-<span class="sourceLineNo">125</span> *       &lt;td class='code'&gt;text/plain&lt;/td&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span> *       &lt;td&gt;{@link PlainTextParser}&lt;/td&gt;<a name="line.126"></a>
-<span class="sourceLineNo">127</span> *    &lt;/tr&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span> * &lt;/table&gt;<a name="line.128"></a>
-<span class="sourceLineNo">129</span> *<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * &lt;p&gt;<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * It should be noted that we do NOT add {@link JsoParser} to the list of parsers since this could cause security<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * issues.<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * Use caution when using this particular parser as it could inadvertently cause code execution security holes.<a name="line.133"></a>
-<span class="sourceLineNo">134</span> *<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * The list of serializers and parsers can be appended to using the<a name="line.136"></a>
-<span class="sourceLineNo">137</span> * {@link RestResource#serializers() @RestResource.serializers()} and<a name="line.137"></a>
-<span class="sourceLineNo">138</span> * {@link RestResource#parsers() @RestResource.parsers()} annotations on subclasses.<a name="line.138"></a>
-<span class="sourceLineNo">139</span> *<a name="line.139"></a>
-<span class="sourceLineNo">140</span> * &lt;p&gt;<a name="line.140"></a>
-<span class="sourceLineNo">141</span> * This subclass also provides a default OPTIONS page by implementing a {@link #getOptions(RestRequest)} that returns a<a name="line.141"></a>
-<span class="sourceLineNo">142</span> * POJO consisting of beans describing the class.<a name="line.142"></a>
-<span class="sourceLineNo">143</span> * &lt;img class='bordered' src='doc-files/OptionsPage.png'&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span> *<a name="line.144"></a>
-<span class="sourceLineNo">145</span> * &lt;p&gt;<a name="line.145"></a>
-<span class="sourceLineNo">146</span> * The OPTIONS page can be modified or augmented by overriding this method and providing your own data.<a name="line.146"></a>
-<span class="sourceLineNo">147</span> *<a name="line.147"></a>
-<span class="sourceLineNo">148</span> * &lt;h6 class='topic'&gt;Other Notes&lt;/h6&gt;<a name="line.148"></a>
-<span class="sourceLineNo">149</span> * &lt;ul class='spaced-list'&gt;<a name="line.149"></a>
-<span class="sourceLineNo">150</span> *    &lt;li&gt;<a name="line.150"></a>
-<span class="sourceLineNo">151</span> *       Provides a default HTML stylesheet by setting {@link HtmlDoc#stylesheet() @HtmlDoc.stylesheet()}<a name="line.151"></a>
-<span class="sourceLineNo">152</span> *       to &lt;js&gt;"styles/juneau.css"&lt;/js&gt;.<a name="line.152"></a>
-<span class="sourceLineNo">153</span> *    &lt;li&gt;<a name="line.153"></a>
-<span class="sourceLineNo">154</span> *       Provides a default favicon by setting {@link RestResource#favicon() @RestResource.favicon()} to<a name="line.154"></a>
-<span class="sourceLineNo">155</span> *       &lt;js&gt;"juneau.ico"&lt;/js&gt;.<a name="line.155"></a>
-<span class="sourceLineNo">156</span> *    &lt;li&gt;<a name="line.156"></a>
-<span class="sourceLineNo">157</span> *       Provides a default classpath entry "htdocs" by setting<a name="line.157"></a>
-<span class="sourceLineNo">158</span> *       {@link RestResource#staticFiles() @RestResource.staticFiles()} to &lt;js&gt;"{htdocs:'htdocs'}"&lt;/js&gt;.<a name="line.158"></a>
-<span class="sourceLineNo">159</span> *       This allows files inside the &lt;code&gt;[servletPackage].htdocs&lt;/code&gt; package to be served up under the URL<a name="line.159"></a>
-<span class="sourceLineNo">160</span> *       &lt;code&gt;/servletPath/htdocs&lt;/code&gt;.<a name="line.160"></a>
-<span class="sourceLineNo">161</span> * &lt;/ul&gt;<a name="line.161"></a>
-<span class="sourceLineNo">162</span> */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>@RestResource(<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   serializers={<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      HtmlDocSerializer.class, // HTML must be listed first because Internet Explore does not include text/html in their Accept header.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      HtmlStrippedDocSerializer.class,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      HtmlSchemaDocSerializer.class,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      JsonSerializer.class,<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      JsonSerializer.Simple.class,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      JsonSchemaSerializer.class,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      XmlDocSerializer.class,<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      XmlSchemaDocSerializer.class,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      UonSerializer.class,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      UrlEncodingSerializer.class,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      MsgPackSerializer.class,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      SoapXmlSerializer.class,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      PlainTextSerializer.class<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   },<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   parsers={<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      JsonParser.class,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      XmlParser.class,<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      HtmlParser.class,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      UonParser.class,<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      UrlEncodingParser.class,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      MsgPackParser.class,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      PlainTextParser.class<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   },<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   properties={<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      // Allow &amp;method parameter on safe HTTP methods.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Property(name=REST_allowMethodParam, value="OPTIONS"),<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   },<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   htmldoc=@HtmlDoc(<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      header={<a name="line.193"></a>
-<span class="sourceLineNo">194</span>         "&lt;h1&gt;$R{servletTitle}&lt;/h1&gt;",<a name="line.194"></a>
-<span class="sourceLineNo">195</span>         "&lt;h2&gt;$R{methodSummary,$R{servletDescription}}&lt;/h2&gt;",<a name="line.195"></a>
-<span class="sourceLineNo">196</span>         "&lt;a href='http://juneau.apache.org'&gt;&lt;img src='$U{servlet:/htdocs/juneau.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/&gt;&lt;/a&gt;"<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      },<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      stylesheet="servlet:/styles/light.css"<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   ),<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>   // The location on the classpath or file system of the fav-icon.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   favicon="htdocs/juneau.png",<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>   // These are static files that are served up by the servlet under the specified sub-paths.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   staticFiles="{htdocs:'htdocs',styles:'styles'}"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>public abstract class RestServletDefault extends RestServlet {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   private static final long serialVersionUID = 1L;<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>
-<span class="sourceLineNo">211</span>    * [OPTIONS /*] - Show resource options.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    *<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    * @param req The HTTP request.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    * @return A bean containing the contents for the OPTIONS page.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    */<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   @RestMethod(name="OPTIONS", path="/*",<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      htmldoc=@HtmlDoc(<a name="line.217"></a>
-<span class="sourceLineNo">218</span>         links={<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            "back: servlet:/",<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            "json: servlet:/?method=OPTIONS&amp;Accept=text/json&amp;plainText=true"<a name="line.220"></a>
-<span class="sourceLineNo">221</span>         },<a name="line.221"></a>
-<span class="sourceLineNo">222</span>         aside="NONE"<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      ),<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      summary="Swagger documentation",<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      description="Auto-generated swagger documentation for this resource"<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   )<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   public Swagger getOptions(RestRequest req) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      return req.getSwagger();<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">015</span>import org.apache.juneau.dto.swagger.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import org.apache.juneau.html.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.jso.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import org.apache.juneau.json.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.juneau.msgpack.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.juneau.plaintext.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.juneau.rest.annotation.*;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.juneau.soap.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.juneau.uon.*;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.juneau.urlencoding.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.xml.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Subclass of {@link RestServlet} with default serializers and parsers defined.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * &lt;p&gt;<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Supports the following request &lt;code&gt;Accept&lt;/code&gt; header values with the resulting response &lt;code&gt;Content-Type&lt;/code&gt;:<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * &lt;table class='styled'&gt;<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *    &lt;tr&gt;<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *       &lt;th&gt;Accept&lt;/th&gt;<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *       &lt;th&gt;Content-Type&lt;/th&gt;<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *       &lt;th&gt;Serializer&lt;/th&gt;<a name="line.36"></a>
+<span class="sourceLineNo">037</span> *    &lt;/tr&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> *    &lt;tr&gt;<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *       &lt;td class='code'&gt;application/json&lt;br&gt;text/json&lt;/td&gt;<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *       &lt;td class='code'&gt;application/json&lt;/td&gt;<a name="line.40"></a>
+<span class="sourceLineNo">041</span> *       &lt;td&gt;{@link JsonSerializer}&lt;/td&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *    &lt;/tr&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *    &lt;tr&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> *       &lt;td class='code'&gt;application/json+simple&lt;br&gt;text/json+simple&lt;/td&gt;<a name="line.44"></a>
+<span class="sourceLineNo">045</span> *       &lt;td class='code'&gt;application/json&lt;/td&gt;<a name="line.45"></a>
+<span class="sourceLineNo">046</span> *       &lt;td&gt;{@link org.apache.juneau.json.JsonSerializer.Simple}&lt;/td&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> *    &lt;/tr&gt;<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *    &lt;tr&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span> *       &lt;td class='code'&gt;application/json+schema&lt;br&gt;text/json+schema&lt;/td&gt;<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *       &lt;td class='code'&gt;application/json&lt;/td&gt;<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *       &lt;td&gt;{@link JsonSchemaSerializer}&lt;/td&gt;<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *    &lt;/tr&gt;<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *    &lt;tr&gt;<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.54"></a>
+<span class="sourceLineNo">055</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> *       &lt;td&gt;{@link XmlDocSerializer}&lt;/td&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span> *    &lt;/tr&gt;<a name="line.57"></a>
+<span class="sourceLineNo">058</span> *    &lt;tr&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span> *       &lt;td class='code'&gt;text/xml+schema&lt;/td&gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *       &lt;td&gt;{@link XmlSchemaDocSerializer}&lt;/td&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *    &lt;/tr&gt;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> *    &lt;tr&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> *       &lt;td class='code'&gt;text/html&lt;/td&gt;<a name="line.64"></a>
+<span class="sourceLineNo">065</span> *       &lt;td class='code'&gt;text/html&lt;/td&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> *       &lt;td&gt;{@link HtmlDocSerializer}&lt;/td&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> *    &lt;/tr&gt;<a name="line.67"></a>
+<span class="sourceLineNo">068</span> *    &lt;tr&gt;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> *       &lt;td class='code'&gt;text/html+stripped&lt;/td&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> *       &lt;td class='code'&gt;text/html&lt;/td&gt;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> *       &lt;td&gt;{@link HtmlStrippedDocSerializer}&lt;/td&gt;<a name="line.71"></a>
+<span class="sourceLineNo">072</span> *    &lt;/tr&gt;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *    &lt;tr&gt;<a name="line.73"></a>
+<span class="sourceLineNo">074</span> *       &lt;td class='code'&gt;text/uon&lt;/td&gt;<a name="line.74"></a>
+<span class="sourceLineNo">075</span> *       &lt;td class='code'&gt;text/uon&lt;/td&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> *       &lt;td&gt;{@link UonSerializer}&lt;/td&gt;<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *    &lt;/tr&gt;<a name="line.77"></a>
+<span class="sourceLineNo">078</span> *    &lt;tr&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> *       &lt;td class='code'&gt;application/x-www-form-urlencoded&lt;/td&gt;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *       &lt;td class='code'&gt;application/x-www-form-urlencoded&lt;/td&gt;<a name="line.80"></a>
+<span class="sourceLineNo">081</span> *       &lt;td&gt;{@link UrlEncodingSerializer}&lt;/td&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span> *    &lt;/tr&gt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *    &lt;tr&gt;<a name="line.83"></a>
+<span class="sourceLineNo">084</span> *       &lt;td class='code'&gt;text/xml+soap&lt;/td&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *       &lt;td class='code'&gt;text/xml&lt;/td&gt;<a name="line.85"></a>
+<span class="sourceLineNo">086</span> *       &lt;td&gt;{@link SoapXmlSerializer}&lt;/td&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> *    &lt;/tr&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *    &lt;tr&gt;<a name="line.88"></a>
+<span class="sourceLineNo">089</span> *       &lt;td class='code'&gt;text/plain&lt;/td&gt;<a name="line.89"></a>
+<span class="sourceLineNo">090</span> *       &lt;td class='code'&gt;text/plain&lt;/td&gt;<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *       &lt;td&gt;{@link PlainTextSerializer}&lt;/td&gt;<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *    &lt;/tr&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;/table&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * &lt;p&gt;<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Supports the following request &lt;code&gt;Content-Type&lt;/code&gt; header values:<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * &lt;/p&gt;<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;table class='styled'&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> *    &lt;tr&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> *       &lt;th&gt;Content-Type&lt;/th&gt;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *       &lt;th&gt;Parser&lt;/th&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> *    &lt;/tr&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> *    &lt;tr&gt;<a name="line.102"></a>
+<span class="sourceLineNo">103</span> *       &lt;td class='code'&gt;application/json&lt;br&gt;text/json&lt;/td&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *       &lt;td&gt;{@link JsonParser}&lt;/td&gt;<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *    &lt;/tr&gt;<a name="line.105"></a>
+<span class="sourceLineNo">106</span> *    &lt;tr&gt;<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *       &lt;td class='code'&gt;text/xml&lt;br&gt;application/xml&lt;/td&gt;<a name="line.107"></a>
+<span class="sourceLineNo">108</span> *       &lt;td&gt;{@link XmlParser}&lt;/td&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *    &lt;/tr&gt;<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *    &lt;tr&gt;<a name="line.110"></a>
+<span class="sourceLineNo">111</span> *       &lt;td class='code'&gt;text/html&lt;br&gt;text/html+stripped&lt;/td&gt;<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *       &lt;td&gt;{@link HtmlParser}&lt;/td&gt;<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *    &lt;/tr&gt;<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *    &lt;tr&gt;<a name="line.114"></a>
+<span class="sourceLineNo">115</span> *       &lt;td class='code'&gt;text/uon&lt;/td&gt;<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *       &lt;td&gt;{@link UonParser}&lt;/td&gt;<a name="line.116"></a>
+<span class="sourceLineNo">117</span> *    &lt;/tr&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *    &lt;tr&gt;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *       &lt;td class='code'&gt;application/x-www-form-urlencoded&lt;/td&gt;<a name="line.119"></a>
+<span class="sourceLineNo">120</span> *       &lt;td&gt;{@link UrlEncodingParser}&lt;/td&gt;<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *    &lt;/tr&gt;<a name="line.121"></a>
+<span class="sourceLineNo">122</span> *    &lt;tr&gt;<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *       &lt;td class='code'&gt;text/plain&lt;/td&gt;<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *       &lt;td&gt;{@link PlainTextParser}&lt;/td&gt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span> *    &lt;/tr&gt;<a name="line.125"></a>
+<span class="sourceLineNo">126</span> * &lt;/table&gt;<a name="line.126"></a>
+<span class="sourceLineNo">127</span> *<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * &lt;p&gt;<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * It should be noted that we do NOT add {@link JsoParser} to the list of parsers since this could cause security<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * issues.<a name="line.130"></a>
+<span class="sourceLineNo">131</span> * Use caution when using this particular parser as it could inadvertently cause code execution security holes.<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * The list of serializers and parsers can be appended to using the<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * {@link RestResource#serializers() @RestResource.serializers()} and<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * {@link RestResource#parsers() @RestResource.parsers()} annotations on subclasses.<a name="line.136"></a>
+<span class="sourceLineNo">137</span> *<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * This subclass also provides a default OPTIONS page by implementing a {@link #getOptions(RestRequest)} that returns a<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * POJO consisting of beans describing the class.<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * &lt;img class='bordered' src='doc-files/OptionsPage.png'&gt;<a name="line.141"></a>
+<span class="sourceLineNo">142</span> *<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * &lt;p&gt;<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * The OPTIONS page can be modified or augmented by overriding this method and providing your own data.<a name="line.144"></a>
+<span class="sourceLineNo">145</span> *<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * &lt;h6 class='topic'&gt;Other Notes&lt;/h6&gt;<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * &lt;ul class='spaced-list'&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span> *    &lt;li&gt;<a name="line.148"></a>
+<span class="sourceLineNo">149</span> *       Provides a default HTML stylesheet by setting {@link HtmlDoc#stylesheet() @HtmlDoc.stylesheet()}<a name="line.149"></a>
+<span class="sourceLineNo">150</span> *       to &lt;js&gt;"styles/juneau.css"&lt;/js&gt;.<a name="line.150"></a>
+<span class="sourceLineNo">151</span> *    &lt;li&gt;<a name="line.151"></a>
+<span class="sourceLineNo">152</span> *       Provides a default favicon by setting {@link RestResource#favicon() @RestResource.favicon()} to<a name="line.152"></a>
+<span class="sourceLineNo">153</span> *       &lt;js&gt;"juneau.ico"&lt;/js&gt;.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> *    &lt;li&gt;<a name="line.154"></a>
+<span class="sourceLineNo">155</span> *       Provides a default classpath entry "htdocs" by setting<a name="line.155"></a>
+<span class="sourceLineNo">156</span> *       {@link RestResource#staticFiles() @RestResource.staticFiles()} to &lt;js&gt;"{htdocs:'htdocs'}"&lt;/js&gt;.<a name="line.156"></a>
+<span class="sourceLineNo">157</span> *       This allows files inside the &lt;code&gt;[servletPackage].htdocs&lt;/code&gt; package to be served up under the URL<a name="line.157"></a>
+<span class="sourceLineNo">158</span> *       &lt;code&gt;/servletPath/htdocs&lt;/code&gt;.<a name="line.158"></a>
+<span class="sourceLineNo">159</span> * &lt;/ul&gt;<a name="line.159"></a>
+<span class="sourceLineNo">160</span> */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>@RestResource(<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   serializers={<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      HtmlDocSerializer.class, // HTML must be listed first because Internet Explore does not include text/html in their Accept header.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      HtmlStrippedDocSerializer.class,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      HtmlSchemaDocSerializer.class,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      JsonSerializer.class,<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      JsonSerializer.Simple.class,<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      JsonSchemaSerializer.class,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      XmlDocSerializer.class,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      XmlSchemaDocSerializer.class,<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      UonSerializer.class,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      UrlEncodingSerializer.class,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      MsgPackSerializer.class,<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      SoapXmlSerializer.class,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      PlainTextSerializer.class<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   },<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   parsers={<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      JsonParser.class,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      XmlParser.class,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      HtmlParser.class,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      UonParser.class,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      UrlEncodingParser.class,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      MsgPackParser.class,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      PlainTextParser.class<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   },<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   allowMethodParam="OPTIONS",<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   htmldoc=@HtmlDoc(<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      header={<a name="line.188"></a>
+<span class="sourceLineNo">189</span>         "&lt;h1&gt;$R{servletTitle}&lt;/h1&gt;",<a name="line.189"></a>
+<span class="sourceLineNo">190</span>         "&lt;h2&gt;$R{methodSummary,$R{servletDescription}}&lt;/h2&gt;",<a name="line.190"></a>
+<span class="sourceLineNo">191</span>         "&lt;a href='http://juneau.apache.org'&gt;&lt;img src='$U{servlet:/htdocs/juneau.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/&gt;&lt;/a&gt;"<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      },<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      stylesheet="servlet:/styles/light.css"<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>   // The location on the classpath or file system of the fav-icon.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   favicon="htdocs/juneau.png",<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>   // These are static files that are served up by the servlet under the specified sub-paths.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   staticFiles="{htdocs:'htdocs',styles:'styles'}"<a name="line.200"></a>
+<span class="sourceLineNo">201</span>)<a name="line.201"></a>
+<span class="sourceLineNo">202</span>public abstract class RestServletDefault extends RestServlet {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   private static final long serialVersionUID = 1L;<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>   /**<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    * [OPTIONS /*] - Show resource options.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    *<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    * @param req The HTTP request.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    * @return A bean containing the contents for the OPTIONS page.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    */<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   @RestMethod(name="OPTIONS", path="/*",<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      htmldoc=@HtmlDoc(<a name="line.212"></a>
+<span class="sourceLineNo">213</span>         links={<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            "back: servlet:/",<a name="line.214"></a>
+<span class="sourceLineNo">215</span>            "json: servlet:/?method=OPTIONS&amp;Accept=text/json&amp;plainText=true"<a name="line.215"></a>
+<span class="sourceLineNo">216</span>         },<a name="line.216"></a>
+<span class="sourceLineNo">217</span>         aside="NONE"<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      ),<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      summary="Swagger documentation",<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      description="Auto-generated swagger documentation for this resource"<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   )<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   public Swagger getOptions(RestRequest req) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      return req.getSwagger();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/FormData.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/FormData.html b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/FormData.html
index 3f1e8f4..f66bb2f 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/FormData.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/FormData.html
@@ -109,7 +109,7 @@
 <span class="sourceLineNo">101</span>    *       &lt;br&gt;This treats request parameters as plain text.<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    *       &lt;br&gt;Only POJOs directly convertible from &lt;l&gt;Strings&lt;/l&gt; can be represented in parameters when using this mode.<a name="line.102"></a>
 <span class="sourceLineNo">103</span>    *    &lt;li&gt;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    *       &lt;js&gt;"INHERIT"&lt;/js&gt; (default) - Inherit from the {@link RestContext#REST_paramFormat} property on the<a name="line.104"></a>
+<span class="sourceLineNo">104</span>    *       &lt;js&gt;"INHERIT"&lt;/js&gt; (default) - Inherit from the {@link RestResource#paramFormat()} property on the<a name="line.104"></a>
 <span class="sourceLineNo">105</span>    *       servlet method or class.<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    * &lt;/ul&gt;<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    *<a name="line.107"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/Query.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/Query.html b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/Query.html
index 225d150..598d324 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/Query.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/Query.html
@@ -105,7 +105,7 @@
 <span class="sourceLineNo">097</span>    *       &lt;br&gt;This treats request parameters as plain text.<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    *       &lt;br&gt;Only POJOs directly convertible from &lt;l&gt;Strings&lt;/l&gt; can be represented in parameters when using this mode.<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    *    &lt;li&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    *       &lt;js&gt;"INHERIT"&lt;/js&gt; (default) - Inherit from the {@link RestContext#REST_paramFormat} property on the<a name="line.100"></a>
+<span class="sourceLineNo">100</span>    *       &lt;js&gt;"INHERIT"&lt;/js&gt; (default) - Inherit from the {@link RestResource#paramFormat()} property on the<a name="line.100"></a>
 <span class="sourceLineNo">101</span>    *       servlet method or class.<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    * &lt;/ul&gt;<a name="line.102"></a>
 <span class="sourceLineNo">103</span>    *<a name="line.103"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
index bb95f17..ae0ad43 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
@@ -638,7 +638,54 @@
 <span class="sourceLineNo">630</span>    * Information provided here overrides information provided in the servlet-level annotation.<a name="line.630"></a>
 <span class="sourceLineNo">631</span>    */<a name="line.631"></a>
 <span class="sourceLineNo">632</span>   HtmlDoc htmldoc() default @HtmlDoc;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>}<a name="line.633"></a>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>   /**<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    * Default character encoding.<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    *<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    * &lt;p&gt;<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    * The default character encoding for the request and response if not specified on the request.<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    *<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    * &lt;ul&gt;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    *    &lt;li&gt;String value.<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.defaultCharset"&lt;/js&gt;, or &lt;js&gt;"utf-8"&lt;/js&gt; if not specified.<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    *    &lt;li&gt;Can contain variables.<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    *    &lt;li&gt;Overrides the value at the class level via {@link RestResource#defaultCharset() @RestResource.defaultCharset()}.<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    * &lt;/ul&gt;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    */<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   String defaultCharset() default "";<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>    * Expected format of request parameters.<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    *<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    * Possible values:<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    * &lt;ul class='spaced-list'&gt;<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    *    &lt;li&gt;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    *       &lt;js&gt;"UON"&lt;/js&gt; - URL-Encoded Object Notation.<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    *       &lt;br&gt;This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    *    &lt;li&gt;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    *       &lt;js&gt;"PLAIN"&lt;/js&gt; - Plain text.<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    *       &lt;br&gt;This treats request parameters as plain text.<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    *       &lt;br&gt;Only POJOs directly convertible from &lt;l&gt;Strings&lt;/l&gt; can be represented in parameters when using this<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    *       mode.<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    * &lt;/ul&gt;<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>    * Note that the parameter value &lt;js&gt;"(foo)"&lt;/js&gt; is interpreted as &lt;js&gt;"(foo)"&lt;/js&gt; when using plain mode, but<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    * &lt;js&gt;"foo"&lt;/js&gt; when using UON mode.<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    *<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    * &lt;p&gt;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    * The format can also be specified per-parameter using the {@link FormData#format() @FormData.format()} and<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    * {@link Query#format() @Query.format()} annotations.<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    *<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    * &lt;ul&gt;<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    *    &lt;li&gt;String value.<a name="line.673"></a>
+<span class="sourceLineNo">674</span>    *    &lt;li&gt;Defaults to system property &lt;js&gt;"juneau.paramFormat"&lt;/js&gt;, or &lt;js&gt;"UON"&lt;/js&gt; if not specified.<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    *    &lt;li&gt;Can contain variables.<a name="line.675"></a>
+<span class="sourceLineNo">676</span>    *    &lt;li&gt;Overrides the value at the class level via {@link RestResource#paramFormat() @RestResource.paramFormat()}.<a name="line.676"></a>
+<span class="sourceLineNo">677</span>    * &lt;/ul&gt;<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    */<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   String paramFormat() default "";<a name="line.679"></a>
+<span class="sourceLineNo">680</span>}<a name="line.680"></a>
 
 
 


[21/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/ini/ConfigFileImpl.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/ini/ConfigFileImpl.html b/content/site/apidocs/org/apache/juneau/ini/ConfigFileImpl.html
index dee747c..b402f81 100644
--- a/content/site/apidocs/org/apache/juneau/ini/ConfigFileImpl.html
+++ b/content/site/apidocs/org/apache/juneau/ini/ConfigFileImpl.html
@@ -700,7 +700,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.270">get</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;key)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.279">get</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;key)</pre>
 </li>
 </ul>
 <a name="put-java.lang.String-org.apache.juneau.ini.Section-">
@@ -709,7 +709,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.282">put</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;key,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.291">put</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;key,
                    <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;section)</pre>
 </li>
 </ul>
@@ -719,7 +719,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>putAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.303">putAll</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;? extends <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>,? extends <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&gt;&nbsp;map)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.312">putAll</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;? extends <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>,? extends <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&gt;&nbsp;map)</pre>
 </li>
 </ul>
 <a name="clear--">
@@ -728,7 +728,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.316">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.325">clear</a>()</pre>
 </li>
 </ul>
 <a name="containsKey-java.lang.Object-">
@@ -737,7 +737,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>containsKey</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.330">containsKey</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;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.339">containsKey</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;key)</pre>
 </li>
 </ul>
 <a name="containsValue-java.lang.Object-">
@@ -746,7 +746,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>containsValue</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.337">containsValue</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;value)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.346">containsValue</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;value)</pre>
 </li>
 </ul>
 <a name="entrySet--">
@@ -755,7 +755,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>entrySet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</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/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.342">entrySet</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</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/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.351">entrySet</a>()</pre>
 </li>
 </ul>
 <a name="isEmpty--">
@@ -764,7 +764,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.381">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.390">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="keySet--">
@@ -773,7 +773,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>keySet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/ini/ConfigFileImpl.html#line.386">keySet</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/ini/ConfigFileImpl.html#line.395">keySet</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -782,7 +782,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.425">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.434">size</a>()</pre>
 </li>
 </ul>
 <a name="values--">
@@ -791,7 +791,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.430">values</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.439">values</a>()</pre>
 </li>
 </ul>
 <a name="remove-java.lang.Object-">
@@ -800,7 +800,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>remove</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.466">remove</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;key)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.475">remove</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;key)</pre>
 </li>
 </ul>
 <a name="get-java.lang.String-java.lang.String-">
@@ -809,7 +809,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>get</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/ini/ConfigFileImpl.html#line.490">get</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;sectionName,
+<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/ini/ConfigFileImpl.html#line.499">get</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;sectionName,
                   <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;sectionKey)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#get-java.lang.String-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Retrieves an entry value from this config file.</div>
@@ -830,7 +830,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>put</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/ini/ConfigFileImpl.html#line.501">put</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;sectionName,
+<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/ini/ConfigFileImpl.html#line.510">put</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;sectionName,
                   <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;sectionKey,
                   <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,
                   <a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&nbsp;serializer,
@@ -863,7 +863,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>put</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/ini/ConfigFileImpl.html#line.509">put</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;sectionName,
+<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/ini/ConfigFileImpl.html#line.518">put</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;sectionName,
                   <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;sectionKey,
                   <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,
                   boolean&nbsp;encoded)</pre>
@@ -888,7 +888,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>remove</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/ini/ConfigFileImpl.html#line.516">remove</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;sectionName,
+<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/ini/ConfigFileImpl.html#line.525">remove</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;sectionName,
                      <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;sectionKey)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#remove-java.lang.String-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Removes an entry from this config file.</div>
@@ -909,7 +909,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>addLines</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.525">addLines</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;section,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.534">addLines</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;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;lines)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#addLines-java.lang.String-java.lang.String...-">ConfigFile</a></code></span></div>
 <div class="block">Adds arbitrary lines to the specified config file section.
@@ -944,7 +944,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>addHeaderComments</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.538">addHeaderComments</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;section,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.547">addHeaderComments</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;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;headerComments)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#addHeaderComments-java.lang.String-java.lang.String...-">ConfigFile</a></code></span></div>
 <div class="block">Adds header comments to the specified section.
@@ -982,7 +982,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>clearHeaderComments</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.551">clearHeaderComments</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;section)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.560">clearHeaderComments</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;section)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#clearHeaderComments-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Removes any header comments from the specified section.</div>
 <dl>
@@ -1001,7 +1001,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getSection</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.564">getSection</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="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.573">getSection</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>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getSection-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Gets the section with the specified name.</div>
 <dl>
@@ -1020,7 +1020,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getSection</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.569">getSection</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/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.578">getSection</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,
                           boolean&nbsp;create)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getSection-java.lang.String-boolean-">ConfigFile</a></code></span></div>
 <div class="block">Gets the section with the specified name and optionally creates it if it's not there.</div>
@@ -1041,7 +1041,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>addSection</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.584">addSection</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="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.593">addSection</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>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#addSection-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Appends a section to this config file if it does not already exist.
 
@@ -1063,7 +1063,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>setSection</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.595">setSection</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/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.604">setSection</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/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;contents)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#setSection-java.lang.String-java.util.Map-">ConfigFile</a></code></span></div>
 <div class="block">Creates or overwrites the specified section.</div>
@@ -1084,7 +1084,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>removeSection</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.606">removeSection</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="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.615">removeSection</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>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#removeSection-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Removes the section with the specified name.</div>
 <dl>
@@ -1103,7 +1103,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getSectionKeys</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/ini/ConfigFileImpl.html#line.621">getSectionKeys</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;sectionName)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/ini/ConfigFileImpl.html#line.630">getSectionKeys</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;sectionName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getSectionKeys-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Returns the current set of keys in the specified section.</div>
 <dl>
@@ -1122,7 +1122,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>isEncoded</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.629">isEncoded</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;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.638">isEncoded</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;key)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#isEncoded-java.lang.String-">ConfigFile</a></code></span></div>
 <div class="block">Returns <jk>true</jk> if the encoding flag is set on the specified entry.</div>
 <dl>
@@ -1141,7 +1141,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>save</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.639">save</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.648">save</a>()
                     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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#save--">ConfigFile</a></code></span></div>
 <div class="block">Saves this config file to disk.</div>
@@ -1161,7 +1161,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeTo</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.661">serializeTo</a>(<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;out,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.670">serializeTo</a>(<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;out,
                                   <a href="../../../../org/apache/juneau/ini/ConfigFileFormat.html" title="enum in org.apache.juneau.ini">ConfigFileFormat</a>&nbsp;format)
                            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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#serializeTo-java.io.Writer-org.apache.juneau.ini.ConfigFileFormat-">ConfigFile</a></code></span></div>
@@ -1185,7 +1185,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</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/ini/ConfigFileImpl.html#line.681">toString</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/ini/ConfigFileImpl.html#line.690">toString</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#toString--">ConfigFile</a></code></span></div>
 <div class="block">Returns the config file contents as a string.
 
@@ -1203,7 +1203,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>addListener</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.692">addListener</a>(<a href="../../../../org/apache/juneau/ini/ConfigFileListener.html" title="class in org.apache.juneau.ini">ConfigFileListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.701">addListener</a>(<a href="../../../../org/apache/juneau/ini/ConfigFileListener.html" title="class in org.apache.juneau.ini">ConfigFileListener</a>&nbsp;listener)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#addListener-org.apache.juneau.ini.ConfigFileListener-">ConfigFile</a></code></span></div>
 <div class="block">Add a listener to this config file to react to modification events.</div>
 <dl>
@@ -1222,7 +1222,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>toWritable</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau">Writable</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.708">toWritable</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau">Writable</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.717">toWritable</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#toWritable--">ConfigFile</a></code></span></div>
 <div class="block">Wraps this config file in a <a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau"><code>Writable</code></a> interface that renders it as plain text.</div>
 <dl>
@@ -1239,7 +1239,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>merge</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.713">merge</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.722">merge</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#merge-org.apache.juneau.ini.ConfigFile-">ConfigFile</a></code></span></div>
 <div class="block">Merges the contents of the specified config file into this config file.
 
@@ -1262,7 +1262,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getBeanSession</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.737">getBeanSession</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.746">getBeanSession</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getBeanSession--">ConfigFile</a></code></span></div>
 <div class="block">Returns the reusable bean session associated with this config file.
 
@@ -1282,7 +1282,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>readLock</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.742">readLock</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.751">readLock</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#readLock--">ConfigFile</a></code></span></div>
 <div class="block">Places a read lock on this config file.</div>
 <dl>
@@ -1297,7 +1297,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>readUnlock</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.747">readUnlock</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.756">readUnlock</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#readUnlock--">ConfigFile</a></code></span></div>
 <div class="block">Removes the read lock on this config file.</div>
 <dl>
@@ -1312,7 +1312,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getResolving</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.763">getResolving</a>(<a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a>&nbsp;vr)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.772">getResolving</a>(<a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a>&nbsp;vr)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getResolving-org.apache.juneau.svl.VarResolver-">ConfigFile</a></code></span></div>
 <div class="block">Returns a wrapped instance of this config file where calls to getters have their values first resolved by the
  specified <a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl"><code>VarResolver</code></a>.</div>
@@ -1332,7 +1332,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getResolving</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.769">getResolving</a>(<a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;vs)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.778">getResolving</a>(<a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;vs)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getResolving-org.apache.juneau.svl.VarResolverSession-">ConfigFile</a></code></span></div>
 <div class="block">Returns a wrapped instance of this config file where calls to getters have their values first resolved by the
  specified <a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl"><code>VarResolverSession</code></a>.</div>
@@ -1352,7 +1352,7 @@ extends <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getResolving</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.775">getResolving</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.784">getResolving</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ini/ConfigFile.html#getResolving--">ConfigFile</a></code></span></div>
 <div class="block">Returns a wrapped instance of this config file where calls to getters have their values first resolved by a
  default <a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl"><code>VarResolver</code></a>.

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/KeywordSet.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/KeywordSet.html b/content/site/apidocs/org/apache/juneau/internal/KeywordSet.html
index 69b5be1..7116ae1 100644
--- a/content/site/apidocs/org/apache/juneau/internal/KeywordSet.html
+++ b/content/site/apidocs/org/apache/juneau/internal/KeywordSet.html
@@ -108,18 +108,9 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public final class <a href="../../../../src-html/org/apache/juneau/internal/KeywordSet.html#line.29">KeywordSet</a>
+<pre>public final class <a href="../../../../src-html/org/apache/juneau/internal/KeywordSet.html#line.20">KeywordSet</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">Stores a set of language keywords for quick lookup.
-
- <p>
- Keywords must be:
- <ul class='spaced-list'>
-   <li>
-      2 or more characters in length.
-   <li>
-      Lowercase ASCII.
- </ul></div>
+<div class="block">Stores a set of language keywords for quick lookup.</div>
 </li>
 </ul>
 </div>
@@ -191,7 +182,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KeywordSet</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/KeywordSet.html#line.37">KeywordSet</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;keywords)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/KeywordSet.html#line.28">KeywordSet</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;keywords)</pre>
 <div class="block">Constructor.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -213,7 +204,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>contains</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/KeywordSet.html#line.68">contains</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;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/KeywordSet.html#line.39">contains</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">Returns <jk>true</jk> if the specified string exists in this store.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/StringUtils.html b/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
index b0365ed..2322b07 100644
--- a/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
+++ b/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/internal/StringBuilderWriter.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/internal/StringUtils.html" target="_top">Frames</a></li>
@@ -1912,7 +1912,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/internal/StringBuilderWriter.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/internal/StringUtils.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/SystemUtils.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/SystemUtils.html b/content/site/apidocs/org/apache/juneau/internal/SystemUtils.html
new file mode 100644
index 0000000..1d760f3
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/internal/SystemUtils.html
@@ -0,0 +1,336 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>SystemUtils (Apache Juneau (incubating) 6.4.1-incubating-SNAPSHOT)</title>
+<link rel="stylesheet" type="text/css" href="../../../../javadoc.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SystemUtils (Apache Juneau (incubating) 6.4.1-incubating-SNAPSHOT)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/juneau/internal/SystemUtils.html" target="_top">Frames</a></li>
+<li><a href="SystemUtils.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.juneau.internal</div>
+<h2 title="Class SystemUtils" class="title">Class SystemUtils</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.juneau.internal.SystemUtils</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/internal/SystemUtils.html#line.18">SystemUtils</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">System utilities.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/SystemUtils.html#SystemUtils--">SystemUtils</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/SystemUtils.html#getFirstBoolean-java.lang.Boolean-java.lang.String...-">getFirstBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;def,
+               <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;keys)</code>
+<div class="block">Returns the first non-<jk>null</jk> boolean system property.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/SystemUtils.html#getFirstInteger-java.lang.Integer-java.lang.String...-">getFirstInteger</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;def,
+               <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;keys)</code>
+<div class="block">Returns the first non-<jk>null</jk> integer system property.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/SystemUtils.html#getFirstString-java.lang.String-java.lang.String...-">getFirstString</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;def,
+              <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;keys)</code>
+<div class="block">Returns the first non-<jk>null</jk> system property.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SystemUtils--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SystemUtils</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/SystemUtils.html#line.18">SystemUtils</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getFirstString-java.lang.String-java.lang.String...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFirstString</h4>
+<pre>public static&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/internal/SystemUtils.html#line.31">getFirstString</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;def,
+                                    <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;keys)</pre>
+<div class="block">Returns the first non-<jk>null</jk> system property.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>def</code> - The default value if none are found.
+   Can be <jk>null</jk>.</dd>
+<dd><code>keys</code> - The system properties to look for.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The first non-<jk>null</jk> system property, or the default value if non were found.</dd>
+</dl>
+</li>
+</ul>
+<a name="getFirstBoolean-java.lang.Boolean-java.lang.String...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFirstBoolean</h4>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/SystemUtils.html#line.51">getFirstBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;def,
+                                      <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;keys)</pre>
+<div class="block">Returns the first non-<jk>null</jk> boolean system property.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>def</code> - The default value if none are found.
+   Can be <jk>null</jk>.</dd>
+<dd><code>keys</code> - The system properties to look for.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The first non-<jk>null</jk> system property, or the default value if non were found.</dd>
+</dl>
+</li>
+</ul>
+<a name="getFirstInteger-java.lang.Integer-java.lang.String...-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getFirstInteger</h4>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/SystemUtils.html#line.67">getFirstInteger</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;def,
+                                      <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;keys)</pre>
+<div class="block">Returns the first non-<jk>null</jk> integer system property.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>def</code> - The default value if none are found.
+   Can be <jk>null</jk>.</dd>
+<dd><code>keys</code> - The system properties to look for.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The first non-<jk>null</jk> system property, or the default value if non were found.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/juneau/internal/SystemUtils.html" target="_top">Frames</a></li>
+<li><a href="SystemUtils.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2017 <a href="http://www.apache.org/">Apache</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/TeeOutputStream.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/TeeOutputStream.html b/content/site/apidocs/org/apache/juneau/internal/TeeOutputStream.html
index 68be98d..080b5b0 100644
--- a/content/site/apidocs/org/apache/juneau/internal/TeeOutputStream.html
+++ b/content/site/apidocs/org/apache/juneau/internal/TeeOutputStream.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/juneau/internal/TeeWriter.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -443,7 +443,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.h
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/juneau/internal/TeeWriter.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/package-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/package-frame.html b/content/site/apidocs/org/apache/juneau/internal/package-frame.html
index f4d335d..8a53e89 100644
--- a/content/site/apidocs/org/apache/juneau/internal/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/internal/package-frame.html
@@ -43,6 +43,7 @@
 <li><a href="SimpleMap.html" title="class in org.apache.juneau.internal" target="classFrame">SimpleMap</a></li>
 <li><a href="StringBuilderWriter.html" title="class in org.apache.juneau.internal" target="classFrame">StringBuilderWriter</a></li>
 <li><a href="StringUtils.html" title="class in org.apache.juneau.internal" target="classFrame">StringUtils</a></li>
+<li><a href="SystemUtils.html" title="class in org.apache.juneau.internal" target="classFrame">SystemUtils</a></li>
 <li><a href="TeeOutputStream.html" title="class in org.apache.juneau.internal" target="classFrame">TeeOutputStream</a></li>
 <li><a href="TeeWriter.html" title="class in org.apache.juneau.internal" target="classFrame">TeeWriter</a></li>
 <li><a href="ThrowableUtils.html" title="class in org.apache.juneau.internal" target="classFrame">ThrowableUtils</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/package-summary.html b/content/site/apidocs/org/apache/juneau/internal/package-summary.html
index ad2a18d..4a58615 100644
--- a/content/site/apidocs/org/apache/juneau/internal/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/internal/package-summary.html
@@ -269,42 +269,48 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal">SystemUtils</a></td>
+<td class="colLast">
+<div class="block">System utilities.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal">TeeOutputStream</a></td>
 <td class="colLast">
 <div class="block">Output stream that can send output to multiple output streams.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/TeeWriter.html" title="class in org.apache.juneau.internal">TeeWriter</a></td>
 <td class="colLast">
 <div class="block">Writer that can send output to multiple writers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/ThrowableUtils.html" title="class in org.apache.juneau.internal">ThrowableUtils</a></td>
 <td class="colLast">
 <div class="block">Various utility methods for creating and working with throwables.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/Utils.html" title="class in org.apache.juneau.internal">Utils</a></td>
 <td class="colLast">
 <div class="block">Various utility methods.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/Version.html" title="class in org.apache.juneau.internal">Version</a></td>
 <td class="colLast">
 <div class="block">Represents a version string such as <js>"1.2"</js> or <js>"1.2.3"</js></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/VersionRange.html" title="class in org.apache.juneau.internal">VersionRange</a></td>
 <td class="colLast">
 <div class="block">Represents an OSGi-style version range like <js>"1.2"</js> or <js>"[1.0,2.0)"</js>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/internal/WrappedMap.html" title="class in org.apache.juneau.internal">WrappedMap</a>&lt;K,V&gt;</td>
 <td class="colLast">
 <div class="block">Wraps an existing map inside an extensible interface so that convenience methods can be added to the subclass.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/internal/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/package-tree.html b/content/site/apidocs/org/apache/juneau/internal/package-tree.html
index 10d589a..233a6b0 100644
--- a/content/site/apidocs/org/apache/juneau/internal/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/internal/package-tree.html
@@ -174,6 +174,7 @@
 </li>
 <li type="circle">org.apache.juneau.internal.<a href="../../../../org/apache/juneau/internal/ReflectionUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">ReflectionUtils</span></a></li>
 <li type="circle">org.apache.juneau.internal.<a href="../../../../org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">StringUtils</span></a></li>
+<li type="circle">org.apache.juneau.internal.<a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">SystemUtils</span></a></li>
 <li type="circle">org.apache.juneau.internal.<a href="../../../../org/apache/juneau/internal/ThrowableUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">ThrowableUtils</span></a></li>
 <li type="circle">org.apache.juneau.internal.<a href="../../../../org/apache/juneau/internal/Utils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Utils</span></a></li>
 <li type="circle">org.apache.juneau.internal.<a href="../../../../org/apache/juneau/internal/Version.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Version</span></a></li>


[12/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/internal/KeywordSet.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/internal/KeywordSet.html b/content/site/apidocs/src-html/org/apache/juneau/internal/KeywordSet.html
index 40913c5..0393036 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/internal/KeywordSet.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/internal/KeywordSet.html
@@ -20,83 +20,36 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.internal;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static org.apache.juneau.internal.ThrowableUtils.*;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import java.util.*;<a name="line.15"></a>
 <span class="sourceLineNo">016</span><a name="line.16"></a>
 <span class="sourceLineNo">017</span>/**<a name="line.17"></a>
 <span class="sourceLineNo">018</span> * Stores a set of language keywords for quick lookup.<a name="line.18"></a>
-<span class="sourceLineNo">019</span> *<a name="line.19"></a>
-<span class="sourceLineNo">020</span> * &lt;p&gt;<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Keywords must be:<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * &lt;ul class='spaced-list'&gt;<a name="line.22"></a>
-<span class="sourceLineNo">023</span> *    &lt;li&gt;<a name="line.23"></a>
-<span class="sourceLineNo">024</span> *       2 or more characters in length.<a name="line.24"></a>
-<span class="sourceLineNo">025</span> *    &lt;li&gt;<a name="line.25"></a>
-<span class="sourceLineNo">026</span> *       Lowercase ASCII.<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * &lt;/ul&gt;<a name="line.27"></a>
-<span class="sourceLineNo">028</span> */<a name="line.28"></a>
-<span class="sourceLineNo">029</span>public final class KeywordSet {<a name="line.29"></a>
-<span class="sourceLineNo">030</span>   final char[][][][] store;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>   /**<a name="line.32"></a>
-<span class="sourceLineNo">033</span>    * Constructor.<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    *<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    * @param keywords The list of keywords.<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>   public KeywordSet(String... keywords) {<a name="line.37"></a>
-<span class="sourceLineNo">038</span>      this.store = new char[26][][][];<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>      for (String keyword : keywords) {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>         if (keyword.length() &lt; 2)<a name="line.41"></a>
-<span class="sourceLineNo">042</span>            illegalArg("Invalid keyword '{0}' passed to KeywordStore.", keyword);<a name="line.42"></a>
-<span class="sourceLineNo">043</span>         int c0 = keyword.charAt(0) - 'a';<a name="line.43"></a>
-<span class="sourceLineNo">044</span>         int c1 = keyword.charAt(1) - 'a';<a name="line.44"></a>
-<span class="sourceLineNo">045</span>         if (c0 &lt; 0 || c0 &gt; 25 || c1 &lt; 0 || c1 &gt; 25)<a name="line.45"></a>
-<span class="sourceLineNo">046</span>            illegalArg("Invalid keyword '{0}' passed to KeywordStore.", keyword);<a name="line.46"></a>
-<span class="sourceLineNo">047</span>         if (this.store[c0] == null)<a name="line.47"></a>
-<span class="sourceLineNo">048</span>            this.store[c0] = new char[26][][];<a name="line.48"></a>
-<span class="sourceLineNo">049</span>         char[][][] x1 = this.store[c0];<a name="line.49"></a>
-<span class="sourceLineNo">050</span>         char[][] x2;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>         if (x1[c1] == null)<a name="line.51"></a>
-<span class="sourceLineNo">052</span>            x2 = new char[1][];<a name="line.52"></a>
-<span class="sourceLineNo">053</span>         else {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>            x2 = new char[x1[c1].length+1][];<a name="line.54"></a>
-<span class="sourceLineNo">055</span>            System.arraycopy(x1[c1], 0, x2, 0, x1[c1].length);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>         }<a name="line.56"></a>
-<span class="sourceLineNo">057</span>         x2[x2.length-1] = keyword.toCharArray();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>         x1[c1] = x2;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      }<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   }<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>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified string exists in this store.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    *<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    * @param s The string to check.<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified string exists in this store.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    */<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   public boolean contains(String s) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      if (s == null || s.length() &lt; 2)<a name="line.69"></a>
-<span class="sourceLineNo">070</span>         return false;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      int c0 = s.charAt(0) - 'a', c1 = s.charAt(1) - 'a';<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      if (c0 &lt; 0 || c0 &gt; 25 || c1 &lt; 0 || c1 &gt; 25)<a name="line.72"></a>
-<span class="sourceLineNo">073</span>         return false;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      char[][][] x1 = store[c0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      if (x1 == null)<a name="line.75"></a>
-<span class="sourceLineNo">076</span>         return false;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      char[][] x2 = x1[c1];<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      if (x2 == null)<a name="line.78"></a>
-<span class="sourceLineNo">079</span>         return false;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      for (int i = 0; i &lt; x2.length; i++) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>         char[] keyword = x2[i];<a name="line.81"></a>
-<span class="sourceLineNo">082</span>         if (keyword.length == s.length()) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>            for (int j = 0; j &lt; keyword.length; j++)<a name="line.83"></a>
-<span class="sourceLineNo">084</span>               if (keyword[j] != s.charAt(j))<a name="line.84"></a>
-<span class="sourceLineNo">085</span>                  return false;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>            return true;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>         }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      }<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return false;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   }<a name="line.90"></a>
-<span class="sourceLineNo">091</span>}<a name="line.91"></a>
+<span class="sourceLineNo">019</span> */<a name="line.19"></a>
+<span class="sourceLineNo">020</span>public final class KeywordSet {<a name="line.20"></a>
+<span class="sourceLineNo">021</span>   final String[] store;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>   /**<a name="line.23"></a>
+<span class="sourceLineNo">024</span>    * Constructor.<a name="line.24"></a>
+<span class="sourceLineNo">025</span>    *<a name="line.25"></a>
+<span class="sourceLineNo">026</span>    * @param keywords The list of keywords.<a name="line.26"></a>
+<span class="sourceLineNo">027</span>    */<a name="line.27"></a>
+<span class="sourceLineNo">028</span>   public KeywordSet(String... keywords) {<a name="line.28"></a>
+<span class="sourceLineNo">029</span>      this.store = keywords;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>      Arrays.sort(store);<a name="line.30"></a>
+<span class="sourceLineNo">031</span>   }<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>   /**<a name="line.33"></a>
+<span class="sourceLineNo">034</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified string exists in this store.<a name="line.34"></a>
+<span class="sourceLineNo">035</span>    *<a name="line.35"></a>
+<span class="sourceLineNo">036</span>    * @param s The string to check.<a name="line.36"></a>
+<span class="sourceLineNo">037</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified string exists in this store.<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   public boolean contains(String s) {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      if (s == null || s.length() &lt; 2)<a name="line.40"></a>
+<span class="sourceLineNo">041</span>         return false;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>      return Arrays.binarySearch(store, s) &gt;= 0;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   }<a name="line.43"></a>
+<span class="sourceLineNo">044</span>}<a name="line.44"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/internal/SystemUtils.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/internal/SystemUtils.html b/content/site/apidocs/src-html/org/apache/juneau/internal/SystemUtils.html
new file mode 100644
index 0000000..1979da8
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/internal/SystemUtils.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a>
+<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *<a name="line.2"></a>
+<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *<a name="line.3"></a>
+<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *<a name="line.4"></a>
+<span class="sourceLineNo">005</span>// * with the License.  You may obtain a copy of the License at                                                              *<a name="line.5"></a>
+<span class="sourceLineNo">006</span>// *                                                                                                                         *<a name="line.6"></a>
+<span class="sourceLineNo">007</span>// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *<a name="line.7"></a>
+<span class="sourceLineNo">008</span>// *                                                                                                                         *<a name="line.8"></a>
+<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *<a name="line.9"></a>
+<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *<a name="line.10"></a>
+<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License.                                              *<a name="line.11"></a>
+<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
+<span class="sourceLineNo">013</span>package org.apache.juneau.internal;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>/**<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * System utilities.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>public class SystemUtils {<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>   /**<a name="line.20"></a>
+<span class="sourceLineNo">021</span>    * Returns the first non-&lt;jk&gt;null&lt;/jk&gt; system property.<a name="line.21"></a>
+<span class="sourceLineNo">022</span>    *<a name="line.22"></a>
+<span class="sourceLineNo">023</span>    * @param def<a name="line.23"></a>
+<span class="sourceLineNo">024</span>    *    The default value if none are found.<a name="line.24"></a>
+<span class="sourceLineNo">025</span>    *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.25"></a>
+<span class="sourceLineNo">026</span>    * @param keys<a name="line.26"></a>
+<span class="sourceLineNo">027</span>    *    The system properties to look for.<a name="line.27"></a>
+<span class="sourceLineNo">028</span>    * @return<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    *    The first non-&lt;jk&gt;null&lt;/jk&gt; system property, or the default value if non were found.<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>   public static String getFirstString(String def, String...keys) {<a name="line.31"></a>
+<span class="sourceLineNo">032</span>      for (String key : keys) {<a name="line.32"></a>
+<span class="sourceLineNo">033</span>         String v = System.getProperty(key);<a name="line.33"></a>
+<span class="sourceLineNo">034</span>         if (v != null)<a name="line.34"></a>
+<span class="sourceLineNo">035</span>            return v;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>      }<a name="line.36"></a>
+<span class="sourceLineNo">037</span>      return def;<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>
+<span class="sourceLineNo">040</span>   /**<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    * Returns the first non-&lt;jk&gt;null&lt;/jk&gt; boolean system property.<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    *<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    * @param def<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    *    The default value if none are found.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    * @param keys<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    *    The system properties to look for.<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    * @return<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    *    The first non-&lt;jk&gt;null&lt;/jk&gt; system property, or the default value if non were found.<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   public static Boolean getFirstBoolean(Boolean def, String...keys) {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      String s = getFirstString(null, keys);<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      return s == null ? def : Boolean.parseBoolean(s);<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   }<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>    * Returns the first non-&lt;jk&gt;null&lt;/jk&gt; integer system property.<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    *<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    * @param def<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    *    The default value if none are found.<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    * @param keys<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    *    The system properties to look for.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    * @return<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    *    The first non-&lt;jk&gt;null&lt;/jk&gt; system property, or the default value if non were found.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   public static Integer getFirstInteger(Integer def, String...keys) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      String s = getFirstString(null, keys);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return s == null ? def : Integer.parseInt(s);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>}<a name="line.71"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/JettyLogger.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/JettyLogger.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/JettyLogger.html
new file mode 100644
index 0000000..7b7d41c
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/JettyLogger.html
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a>
+<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *<a name="line.2"></a>
+<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *<a name="line.3"></a>
+<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *<a name="line.4"></a>
+<span class="sourceLineNo">005</span>// * with the License.  You may obtain a copy of the License at                                                              *<a name="line.5"></a>
+<span class="sourceLineNo">006</span>// *                                                                                                                         *<a name="line.6"></a>
+<span class="sourceLineNo">007</span>// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *<a name="line.7"></a>
+<span class="sourceLineNo">008</span>// *                                                                                                                         *<a name="line.8"></a>
+<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *<a name="line.9"></a>
+<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *<a name="line.10"></a>
+<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License.                                              *<a name="line.11"></a>
+<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
+<span class="sourceLineNo">013</span>package org.apache.juneau.microservice;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import static java.util.logging.Level.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import java.util.logging.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span><a name="line.17"></a>
+<span class="sourceLineNo">018</span>import org.apache.juneau.internal.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.eclipse.jetty.util.log.AbstractLogger;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Implementation of Jetty {@link Logger} based on {@link java.util.logging.Logger}.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * <a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;p&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * Allows Jetty to log to the Java Util logging framework (and thus to the main log file defined in the <a name="line.25"></a>
+<span class="sourceLineNo">026</span> * &lt;cc&gt;[Logging]&lt;/cc&gt; section).<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * <a name="line.27"></a>
+<span class="sourceLineNo">028</span> * &lt;p&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Can be used by setting the following system property in the microservice config file.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * <a name="line.30"></a>
+<span class="sourceLineNo">031</span> * &lt;p class='bcode'&gt;<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *    &lt;cs&gt;[SystemProperties]&lt;/cs&gt;<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *    <a name="line.33"></a>
+<span class="sourceLineNo">034</span> *    &lt;cc&gt;# Configure Jetty to log using java-util logging&lt;/cc&gt;<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *    &lt;ck&gt;org.eclipse.jetty.util.log.class&lt;/ck&gt; = org.apache.juneau.microservice.JettyLogger<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * &lt;/p&gt;<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * <a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public class JettyLogger extends AbstractLogger {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   private final static boolean SHOW_SOURCE = SystemUtils.getFirstBoolean(true, "org.eclipse.jetty.util.log.SOURCE", "org.eclipse.jetty.util.log.javautil.SOURCE");<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>   private Level configuredLevel;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   private Logger logger;<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>
+<span class="sourceLineNo">046</span>    * Default constructor.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    * <a name="line.47"></a>
+<span class="sourceLineNo">048</span>    * &lt;p&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    * Returns the logger with name &lt;js&gt;"org.eclipse.jetty.util.log.javautil"&lt;/js&gt;.<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   public JettyLogger() {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      this("org.eclipse.jetty.util.log.javautil");<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   }<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>   /**<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    * Normal constructor.<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    * <a name="line.57"></a>
+<span class="sourceLineNo">058</span>    * @param name The logger name.<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   public JettyLogger(String name) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      logger = Logger.getLogger(name);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      configuredLevel = logger.getLevel();<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>   @Override<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   public String getName() {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      return logger.getName();<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>   @Override<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   public void warn(String msg, Object... args) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      if (isLoggable(WARNING))<a name="line.72"></a>
+<span class="sourceLineNo">073</span>         log(WARNING, format(msg, args), null);<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>   @Override<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   public void warn(Throwable thrown) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      if (isLoggable(WARNING))<a name="line.78"></a>
+<span class="sourceLineNo">079</span>         log(WARNING, "", thrown);<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>   @Override<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   public void warn(String msg, Throwable thrown) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      if (isLoggable(WARNING))<a name="line.84"></a>
+<span class="sourceLineNo">085</span>         log(WARNING, msg, thrown);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>   @Override<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   public void info(String msg, Object... args) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      if (isLoggable(INFO))<a name="line.90"></a>
+<span class="sourceLineNo">091</span>         log(INFO, format(msg, args), null);<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>   @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   public void info(Throwable thrown) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      if (isLoggable(INFO))<a name="line.96"></a>
+<span class="sourceLineNo">097</span>         log(INFO, "", thrown);<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>   @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   public void info(String msg, Throwable thrown) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      if (isLoggable(INFO))<a name="line.102"></a>
+<span class="sourceLineNo">103</span>         log(INFO, msg, thrown);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>   @Override<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   public boolean isDebugEnabled() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      return isLoggable(FINE);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   }<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>   @Override<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   public void setDebugEnabled(boolean enabled) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      if (enabled) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>         configuredLevel = logger.getLevel();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>         logger.setLevel(FINE);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      } else {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>         logger.setLevel(configuredLevel);<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>   @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   public void debug(String msg, Object... args) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      if (isLoggable(FINE))<a name="line.123"></a>
+<span class="sourceLineNo">124</span>         log(FINE, format(msg, args), null);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>   @Override<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   public void debug(String msg, long arg) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      if (isLoggable(FINE))<a name="line.129"></a>
+<span class="sourceLineNo">130</span>         log(FINE, format(msg, arg), null);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>   @Override<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   public void debug(Throwable thrown) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      if (isLoggable(FINE))<a name="line.135"></a>
+<span class="sourceLineNo">136</span>         log(FINE, "", thrown);<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>   @Override<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   public void debug(String msg, Throwable thrown) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (isLoggable(FINE))<a name="line.141"></a>
+<span class="sourceLineNo">142</span>         log(FINE, msg, thrown);<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>   @Override<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   protected org.eclipse.jetty.util.log.Logger newLogger(String fullname) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return new JettyLogger(fullname);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>   @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   public void ignore(Throwable ignored) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      if (isLoggable(FINEST))<a name="line.152"></a>
+<span class="sourceLineNo">153</span>         log(FINEST, org.eclipse.jetty.util.log.Log.IGNORED, ignored);<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 String format(String msg, Object... args) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      msg = String.valueOf(msg); <a name="line.157"></a>
+<span class="sourceLineNo">158</span>      if (args.length == 0)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>         return msg;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      StringBuilder sb = new StringBuilder();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      int start = 0;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      for (Object arg : args) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>         int bi = msg.indexOf("{}", start);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>         if (bi &lt; 0) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            sb.append(msg.substring(start)).append(" ").append(arg);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>            start = msg.length();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>         } else {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>            sb.append(msg.substring(start, bi)).append(String.valueOf(arg));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            start = bi + 2;<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>      sb.append(msg.substring(start));<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      return sb.toString();<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>   private void log(Level level, String msg, Throwable thrown) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LogRecord r = new LogRecord(level, msg);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      if (thrown != null)<a name="line.178"></a>
+<span class="sourceLineNo">179</span>         r.setThrown(thrown);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      r.setLoggerName(logger.getName());<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      if (SHOW_SOURCE) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>         StackTraceElement[] stack = new Throwable().getStackTrace();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>         for (int i = 0; i &lt; stack.length; i++) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            StackTraceElement e = stack[i];<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            if (!e.getClassName().equals(getClass().getName())) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>               r.setSourceClassName(e.getClassName());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>               r.setSourceMethodName(e.getMethodName());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>               break;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>            }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>         }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      logger.log(r);<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>   private boolean isLoggable(Level level) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      return logger.isLoggable(level);<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>



[16/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/RestContext.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestContext.html b/content/site/apidocs/org/apache/juneau/rest/RestContext.html
index b67e446..990af7a 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestContext.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestContext.html
@@ -74,13 +74,13 @@ var activeTableTab = "activeTableTab";
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
@@ -125,69 +125,6 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowBodyParam">REST_allowBodyParam</a></span></code>
-<div class="block"><b>Configuration property:</b>  Enable <js>"body"</js> URL parameter.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams">REST_allowHeaderParams</a></span></code>
-<div class="block"><b>Configuration property:</b>  Enable header URL parameters.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowMethodParam">REST_allowMethodParam</a></span></code>
-<div class="block"><b>Configuration property:</b>  Enable <js>"method"</js> URL parameter for specific HTTP methods.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_defaultCharset">REST_defaultCharset</a></span></code>
-<div class="block"><b>Configuration property:</b>  Default character encoding.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_paramFormat">REST_paramFormat</a></span></code>
-<div class="block"><b>Configuration property:</b>  Expected format of request parameters.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces">REST_renderResponseStackTraces</a></span></code>
-<div class="block"><b>Configuration property:</b>  Render stack traces.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_resourceResolver">REST_resourceResolver</a></span></code>
-<div class="block"><b>Configuration property:</b>  REST resource resolver.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#REST_useStackTraceHashes">REST_useStackTraceHashes</a></span></code>
-<div class="block"><b>Configuration property:</b>  Use stack trace hashes.</div>
-</td>
-</tr>
-</table>
-</li>
-</ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.summary">
@@ -319,7 +256,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#getDefaultCharset--">getDefaultCharset</a></span>()</code>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_defaultCharset"><code>REST_defaultCharset</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>RestResource.defaultCharset()</code></a> setting.</div>
 </td>
 </tr>
 <tr id="i16" class="altColor">
@@ -451,7 +388,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <tr id="i37" class="rowColor">
 <td class="colFirst"><code>protected <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#getParamFormat--">getParamFormat</a></span>()</code>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_paramFormat"><code>REST_paramFormat</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> setting.</div>
 </td>
 </tr>
 <tr id="i38" class="altColor">
@@ -591,19 +528,19 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <tr id="i59" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#isAllowBodyParam--">isAllowBodyParam</a></span>()</code>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowBodyParam"><code>REST_allowBodyParam</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>RestResource.allowBodyParam()</code></a> setting.</div>
 </td>
 </tr>
 <tr id="i60" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#isAllowHeaderParams--">isAllowHeaderParams</a></span>()</code>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams"><code>REST_allowHeaderParams</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>RestResource.allowHeaderParams()</code></a> setting.</div>
 </td>
 </tr>
 <tr id="i61" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#isRenderResponseStackTraces--">isRenderResponseStackTraces</a></span>()</code>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces"><code>REST_renderResponseStackTraces</code></a> setting.</div>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>RestResource.renderResponseStackTraces()</code></a> setting.</div>
 </td>
 </tr>
 <tr id="i62" class="altColor">
@@ -641,277 +578,6 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <div class="details">
 <ul class="blockList">
 <li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="REST_allowHeaderParams">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_allowHeaderParams</h4>
-<pre>public static 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/rest/RestContext.html#line.83">REST_allowHeaderParams</a></pre>
-<div class="block"><b>Configuration property:</b>  Enable header URL parameters.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.allowHeaderParams"</js>
-   <li><b>Data type:</b> <code>Boolean</code>
-   <li><b>Default:</b> <jk>true</jk>
- </ul>
-
- <p>
- When enabled, headers such as <js>"Accept"</js> and <js>"Content-Type"</js> to be passed in as URL query
- parameters.
- For example:  <js>"?Accept=text/json&amp;Content-Type=text/json"</js>
-
- <p>
- Parameter names are case-insensitive.
-
- <p>
- Useful for debugging REST interface using only a browser.
-
- <p>
- Applicable to servlet class only.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_allowHeaderParams">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_allowMethodParam">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_allowMethodParam</h4>
-<pre>public static 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/rest/RestContext.html#line.116">REST_allowMethodParam</a></pre>
-<div class="block"><b>Configuration property:</b>  Enable <js>"method"</js> URL parameter for specific HTTP methods.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.allowMethodParam"</js>
-   <li><b>Data type:</b> <code>String</code>
-   <li><b>Default:</b> <js>""</js>
- </ul>
-
- <p>
- When specified, the HTTP method can be overridden by passing in a <js>"method"</js> URL parameter on a regular
- GET request.
- For example:  <js>"?method=OPTIONS"</js>
-
- <p>
- Format is a comma-delimited list of HTTP method names that can be passed in as a method parameter.
- Parameter name is case-insensitive.
- Use "*" to represent all methods.
- For backwards compatibility, "true" also means "*".
-
- <p>
- Note that per the <a class="doclink"
- href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, special care should
- be taken when allowing non-safe (POST, PUT, DELETE) methods to be invoked through GET requests.
-
- <p>
- Applicable to servlet class only.
-
- <p>
- Example: <js>"HEAD,OPTIONS"</js></div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_allowMethodParam">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_allowBodyParam">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_allowBodyParam</h4>
-<pre>public static 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/rest/RestContext.html#line.141">REST_allowBodyParam</a></pre>
-<div class="block"><b>Configuration property:</b>  Enable <js>"body"</js> URL parameter.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.allowBodyParam"</js>
-   <li><b>Data type:</b> <code>Boolean</code>
-   <li><b>Default:</b> <jk>true</jk>
- </ul>
-
- <p>
- When enabled, the HTTP body content on PUT and POST requests can be passed in as text using the <js>"body"</js>
- URL parameter.
- For example:  <js>"?body={name:'John%20Smith',age:45}"</js>
-
- <p>
- Parameter name is case-insensitive.
-
- <p>
- Useful for debugging PUT and POST methods using only a browser.
-
- <p>
- Applicable to servlet class only.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_allowBodyParam">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_renderResponseStackTraces">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_renderResponseStackTraces</h4>
-<pre>public static 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/rest/RestContext.html#line.162">REST_renderResponseStackTraces</a></pre>
-<div class="block"><b>Configuration property:</b>  Render stack traces.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.renderResponseStackTraces"</js>
-   <li><b>Data type:</b> <code>Boolean</code>
-   <li><b>Default:</b> <jk>false</jk>
- </ul>
-
- <p>
- Render stack traces in HTTP response bodies when errors occur.
-
- <p>
- When enabled, Java stack traces will be rendered in the output response.
- Useful for debugging, although allowing stack traces to be rendered may cause security concerns.
-
- <p>
- Applicable to servlet class only.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_renderResponseStackTraces">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_useStackTraceHashes">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_useStackTraceHashes</h4>
-<pre>public static 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/rest/RestContext.html#line.180">REST_useStackTraceHashes</a></pre>
-<div class="block"><b>Configuration property:</b>  Use stack trace hashes.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.useStackTraceHashes"</js>
-   <li><b>Data type:</b> <code>Boolean</code>
-   <li><b>Default:</b> <jk>true</jk>
- </ul>
-
- <p>
- When enabled, the number of times an exception has occurred will be determined based on stack trace hashsums,
- made available through the <a href="../../../../org/apache/juneau/rest/RestException.html#getOccurrence--"><code>RestException.getOccurrence()</code></a> method.
-
- <p>
- Applicable to servlet class only.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_useStackTraceHashes">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_defaultCharset">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_defaultCharset</h4>
-<pre>public static 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/rest/RestContext.html#line.197">REST_defaultCharset</a></pre>
-<div class="block"><b>Configuration property:</b>  Default character encoding.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.defaultCharset"</js>
-   <li><b>Data type:</b> <code>String</code>
-   <li><b>Default:</b> <js>"utf-8"</js>
- </ul>
-
- <p>
- The default character encoding for the request and response if not specified on the request.
-
- <p>
- Applicable to servlet class and methods.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_defaultCharset">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_paramFormat">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>REST_paramFormat</h4>
-<pre>public static 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/rest/RestContext.html#line.231">REST_paramFormat</a></pre>
-<div class="block"><b>Configuration property:</b>  Expected format of request parameters.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.paramFormat"</js>
-   <li><b>Data type:</b> <code>String</code>
-   <li><b>Default:</b> <js>"UON"</js>
- </ul>
- <p>
- Possible values:
- <ul class='spaced-list'>
-   <li>
-      <js>"UON"</js> - URL-Encoded Object Notation.
-      <br>This notation allows for request parameters to contain arbitrarily complex POJOs.
-   <li>
-      <js>"PLAIN"</js> - Plain text.
-      <br>This treats request parameters as plain text.
-      <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this
-      mode.
- </ul>
-
- <p>
- Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but
- <js>"foo"</js> when using UON mode.
-
- <p>
- The format can also be specified per-parameter using the <a href="../../../../org/apache/juneau/rest/annotation/FormData.html#format--"><code>@FormData.format()</code></a> and
- <a href="../../../../org/apache/juneau/rest/annotation/Query.html#format--"><code>@Query.format()</code></a> annotations.
-
- <p>
- Applicable to servlet class and methods.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_paramFormat">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="REST_resourceResolver">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>REST_resourceResolver</h4>
-<pre>public static 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/rest/RestContext.html#line.249">REST_resourceResolver</a></pre>
-<div class="block"><b>Configuration property:</b>  REST resource resolver.
-
- <ul>
-   <li><b>Name:</b> <js>"RestServlet.resourceResolver"</js>
-   <li><b>Data type:</b> <code>Class</code> or <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest"><code>RestResourceResolver</code></a>
-   <li><b>Default:</b> <jk>null</jk>
- </ul>
-
- <p>
- The resource resolver used to instantiate REST resource classes.
-
- <p>
- Applicable to servlet class.
- <br>Can be passed in through servlet context.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.juneau.rest.RestContext.REST_resourceResolver">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.detail">
@@ -924,7 +590,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RestContext</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.354">RestContext</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;resource,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.162">RestContext</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;resource,
                    <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html?is-external=true" title="class or interface in javax.servlet">ServletContext</a>&nbsp;servletContext,
                    <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
             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>
@@ -954,7 +620,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getResourceResolver</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.850">getResourceResolver</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.669">getResourceResolver</a>()</pre>
 <div class="block">Returns the resource resolver associated with this context.
 
  <p>
@@ -977,7 +643,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <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/rest/RestContext.html#line.930">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/rest/RestContext.html#line.749">getVarResolver</a>()</pre>
 <div class="block">Returns the variable resolver for this servlet.
 
  <p>
@@ -1062,7 +728,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfigFile</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.946">getConfigFile</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.765">getConfigFile</a>()</pre>
 <div class="block">Returns the config file associated with this servlet.
 
  <p>
@@ -1083,7 +749,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>resolveStaticFile</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.964">resolveStaticFile</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;pathInfo)
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.783">resolveStaticFile</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;pathInfo)
                                  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 a static resource file.
 
@@ -1109,7 +775,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getResource</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1017">getResource</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>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.836">getResource</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/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;locale)
                            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="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true#getResourceAsStream-java.lang.String-" title="class or interface in java.lang"><code>Class.getResourceAsStream(String)</code></a> except if it doesn't find the resource on this class, searches
@@ -1144,7 +810,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getResourceAsString</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/RestContext.html#line.1029">getResourceAsString</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="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/RestContext.html#line.848">getResourceAsString</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/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;locale)
                            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">Reads the input stream from <a href="../../../../org/apache/juneau/rest/RestContext.html#getResource-java.lang.String-java.util.Locale-"><code>getResource(String, Locale)</code></a> into a String.</div>
@@ -1165,7 +831,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getResource</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1048">getResource</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;c,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.867">getResource</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;c,
                          <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType,
                          <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/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;locale)
@@ -1196,7 +862,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getPath</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/RestContext.html#line.1081">getPath</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/RestContext.html#line.900">getPath</a>()</pre>
 <div class="block">Returns the path for this resource as defined by the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#path--"><code>RestResource.path()</code></a> annotation or
  <a href="../../../../org/apache/juneau/rest/RestConfig.html#setPath-java.lang.String-"><code>RestConfig.setPath(String)</code></a> method concatenated with those on all parent classes.
 
@@ -1217,7 +883,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlHeader</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/RestContext.html#line.1093">getHtmlHeader</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/RestContext.html#line.912">getHtmlHeader</a>()</pre>
 <div class="block">The HTML page header contents.
 
  <p>
@@ -1234,7 +900,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlLinks</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/RestContext.html#line.1105">getHtmlLinks</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/RestContext.html#line.924">getHtmlLinks</a>()</pre>
 <div class="block">The HTML page nav section links.
 
  <p>
@@ -1251,7 +917,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlNav</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/RestContext.html#line.1117">getHtmlNav</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/RestContext.html#line.936">getHtmlNav</a>()</pre>
 <div class="block">The HTML page nav section contents.
 
  <p>
@@ -1268,7 +934,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlAside</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/RestContext.html#line.1129">getHtmlAside</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/RestContext.html#line.948">getHtmlAside</a>()</pre>
 <div class="block">The HTML page aside section contents.
 
  <p>
@@ -1285,7 +951,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlFooter</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/RestContext.html#line.1141">getHtmlFooter</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/RestContext.html#line.960">getHtmlFooter</a>()</pre>
 <div class="block">The HTML page footer section contents.
 
  <p>
@@ -1302,7 +968,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlStylesheet</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/RestContext.html#line.1153">getHtmlStylesheet</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/RestContext.html#line.972">getHtmlStylesheet</a>()</pre>
 <div class="block">The HTML page stylesheet URL.
 
  <p>
@@ -1319,7 +985,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlStyle</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/RestContext.html#line.1165">getHtmlStyle</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/RestContext.html#line.984">getHtmlStyle</a>()</pre>
 <div class="block">The HTML page CSS contents.
 
  <p>
@@ -1336,7 +1002,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlScript</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/RestContext.html#line.1177">getHtmlScript</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/RestContext.html#line.996">getHtmlScript</a>()</pre>
 <div class="block">The HTML page Javascript contents.
 
  <p>
@@ -1353,7 +1019,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlNoWrap</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1189">getHtmlNoWrap</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1008">getHtmlNoWrap</a>()</pre>
 <div class="block">The HTML page nowrap setting.
 
  <p>
@@ -1370,7 +1036,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlTemplate</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1201">getHtmlTemplate</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1020">getHtmlTemplate</a>()</pre>
 <div class="block">The HTML page template.
 
  <p>
@@ -1387,7 +1053,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlNoResultsMessage</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/RestContext.html#line.1214">getHtmlNoResultsMessage</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/RestContext.html#line.1033">getHtmlNoResultsMessage</a>()</pre>
 <div class="block">The HTML page no-results message.
 
  <p>
@@ -1405,7 +1071,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getHtmlWidgets</h4>
-<pre>public&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/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1226">getHtmlWidgets</a>()</pre>
+<pre>public&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/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1045">getHtmlWidgets</a>()</pre>
 <div class="block">The widgets used for resolving <js>"$W{...}"<js> variables.
 
  <p>
@@ -1422,7 +1088,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogger</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1242">getLogger</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1061">getLogger</a>()</pre>
 <div class="block">Returns the logger to use for this resource.
 
  <p>
@@ -1443,7 +1109,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getMessages</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1257">getMessages</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1076">getMessages</a>()</pre>
 <div class="block">Returns the resource bundle used by this resource.
 
  <p>
@@ -1463,7 +1129,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getInfoProvider</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1273">getInfoProvider</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1092">getInfoProvider</a>()</pre>
 <div class="block">Returns the REST information provider used by this resource.
 
  <p>
@@ -1484,7 +1150,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getCallHandler</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1289">getCallHandler</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1108">getCallHandler</a>()</pre>
 <div class="block">Returns the REST call handler used by this resource.
 
  <p>
@@ -1505,7 +1171,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getCallRouters</h4>
-<pre>protected&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>,org.apache.juneau.rest.CallRouter&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1298">getCallRouters</a>()</pre>
+<pre>protected&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>,org.apache.juneau.rest.CallRouter&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1117">getCallRouters</a>()</pre>
 <div class="block">Returns a map of HTTP method names to call routers.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1519,7 +1185,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getResource</h4>
-<pre>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/rest/RestContext.html#line.1311">getResource</a>()</pre>
+<pre>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/rest/RestContext.html#line.1130">getResource</a>()</pre>
 <div class="block">Returns the resource object.
 
  <p>
@@ -1537,7 +1203,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getRestServlet</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1322">getRestServlet</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1141">getRestServlet</a>()</pre>
 <div class="block">Returns the resource object as a <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a>.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1552,7 +1218,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>checkForInitException</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1331">checkForInitException</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1150">checkForInitException</a>()
                               throws <a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></pre>
 <div class="block">Throws a <a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest"><code>RestException</code></a> if an exception occurred in the constructor of this object.</div>
 <dl>
@@ -1567,7 +1233,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getParentContext</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1345">getParentContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1164">getParentContext</a>()</pre>
 <div class="block">Returns the parent resource context (if this resource was initialized from a parent).
 
  <p>
@@ -1585,7 +1251,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getBeanContext</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/RestContext.html#line.1354">getBeanContext</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/RestContext.html#line.1173">getBeanContext</a>()</pre>
 <div class="block">Returns the <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> object used for parsing path variables and header values.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1599,7 +1265,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getProperties</h4>
-<pre>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/rest/RestContext.html#line.1376">getProperties</a>()</pre>
+<pre>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/rest/RestContext.html#line.1195">getProperties</a>()</pre>
 <div class="block">Returns the class-level properties associated with this servlet.
 
  <p>
@@ -1626,7 +1292,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/SerializerGroup.html" title="class in org.apache.juneau.serializer">SerializerGroup</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1392">getSerializers</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/SerializerGroup.html" title="class in org.apache.juneau.serializer">SerializerGroup</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1211">getSerializers</a>()</pre>
 <div class="block">Returns the serializers registered with this resource.
 
  <p>
@@ -1647,7 +1313,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getParsers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/parser/ParserGroup.html" title="class in org.apache.juneau.parser">ParserGroup</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1408">getParsers</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/parser/ParserGroup.html" title="class in org.apache.juneau.parser">ParserGroup</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1227">getParsers</a>()</pre>
 <div class="block">Returns the parsers registered with this resource.
 
  <p>
@@ -1668,7 +1334,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getServletInitParameter</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/RestContext.html#line.1418">getServletInitParameter</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/RestContext.html#line.1237">getServletInitParameter</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>
 <div class="block">Returns the servlet init parameter returned by <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true#getInitParameter-java.lang.String-" title="class or interface in javax.servlet"><code>ServletConfig.getInitParameter(String)</code></a>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1684,7 +1350,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getChildResources</h4>
-<pre>public&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/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1429">getChildResources</a>()</pre>
+<pre>public&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/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1248">getChildResources</a>()</pre>
 <div class="block">Returns the child resources associated with this servlet.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1699,7 +1365,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getStackTraceOccurrence</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1441">getStackTraceOccurrence</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1260">getStackTraceOccurrence</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
 <div class="block">Returns the number of times this exception was thrown based on a hash of its stacktrace.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1716,11 +1382,11 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>isRenderResponseStackTraces</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1454">isRenderResponseStackTraces</a>()</pre>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces"><code>REST_renderResponseStackTraces</code></a> setting.</div>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1273">isRenderResponseStackTraces</a>()</pre>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>RestResource.renderResponseStackTraces()</code></a> setting.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_renderResponseStackTraces"><code>REST_renderResponseStackTraces</code></a> setting.</dd>
+<dd>The value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>RestResource.renderResponseStackTraces()</code></a> setting.</dd>
 </dl>
 </li>
 </ul>
@@ -1730,11 +1396,11 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>isAllowHeaderParams</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1463">isAllowHeaderParams</a>()</pre>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams"><code>REST_allowHeaderParams</code></a> setting.</div>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1282">isAllowHeaderParams</a>()</pre>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>RestResource.allowHeaderParams()</code></a> setting.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowHeaderParams"><code>REST_allowHeaderParams</code></a> setting.</dd>
+<dd>The value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>RestResource.allowHeaderParams()</code></a> setting.</dd>
 </dl>
 </li>
 </ul>
@@ -1744,11 +1410,11 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>isAllowBodyParam</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1472">isAllowBodyParam</a>()</pre>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowBodyParam"><code>REST_allowBodyParam</code></a> setting.</div>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1291">isAllowBodyParam</a>()</pre>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>RestResource.allowBodyParam()</code></a> setting.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_allowBodyParam"><code>REST_allowBodyParam</code></a> setting.</dd>
+<dd>The value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>RestResource.allowBodyParam()</code></a> setting.</dd>
 </dl>
 </li>
 </ul>
@@ -1758,11 +1424,11 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultCharset</h4>
-<pre>protected&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/RestContext.html#line.1481">getDefaultCharset</a>()</pre>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_defaultCharset"><code>REST_defaultCharset</code></a> setting.</div>
+<pre>protected&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/RestContext.html#line.1300">getDefaultCharset</a>()</pre>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>RestResource.defaultCharset()</code></a> setting.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_defaultCharset"><code>REST_defaultCharset</code></a> setting.</dd>
+<dd>The value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>RestResource.defaultCharset()</code></a> setting.</dd>
 </dl>
 </li>
 </ul>
@@ -1772,11 +1438,11 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getParamFormat</h4>
-<pre>protected&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/RestContext.html#line.1490">getParamFormat</a>()</pre>
-<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_paramFormat"><code>REST_paramFormat</code></a> setting.</div>
+<pre>protected&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/RestContext.html#line.1309">getParamFormat</a>()</pre>
+<div class="block">Returns the value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> setting.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The value of the <a href="../../../../org/apache/juneau/rest/RestContext.html#REST_paramFormat"><code>REST_paramFormat</code></a> setting.</dd>
+<dd>The value of the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> setting.</dd>
 </dl>
 </li>
 </ul>
@@ -1786,7 +1452,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getClientVersionHeader</h4>
-<pre>protected&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/RestContext.html#line.1508">getClientVersionHeader</a>()</pre>
+<pre>protected&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/RestContext.html#line.1327">getClientVersionHeader</a>()</pre>
 <div class="block">Returns the name of the client version header name used by this resource.
 
  <p>
@@ -1809,7 +1475,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>allowMethodParam</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1519">allowMethodParam</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;m)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1338">allowMethodParam</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;m)</pre>
 <div class="block">Returns <jk>true</jk> if the specified <code>Method</code> GET parameter value can be used to override
  the method name in the HTTP header.</div>
 <dl>
@@ -1826,7 +1492,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getBeanFilters</h4>
-<pre>protected&nbsp;<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;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1535">getBeanFilters</a>()</pre>
+<pre>protected&nbsp;<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;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1354">getBeanFilters</a>()</pre>
 <div class="block">Returns the bean filters associated with this resource.
 
  <p>
@@ -1847,7 +1513,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getPojoSwaps</h4>
-<pre>protected&nbsp;<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;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1551">getPojoSwaps</a>()</pre>
+<pre>protected&nbsp;<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;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1370">getPojoSwaps</a>()</pre>
 <div class="block">Returns the POJO swaps associated with this resource.
 
  <p>
@@ -1868,7 +1534,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>findParams</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1565">findParams</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;method,
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1384">findParams</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;method,
                                  boolean&nbsp;methodPlainParams,
                                  <a href="../../../../org/apache/juneau/rest/UrlPathPattern.html" title="class in org.apache.juneau.rest">UrlPathPattern</a>&nbsp;pathPattern,
                                  boolean&nbsp;isPreOrPost)
@@ -1893,7 +1559,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getUrlEncodingParser</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding">UrlEncodingParser</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1764">getUrlEncodingParser</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding">UrlEncodingParser</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1583">getUrlEncodingParser</a>()</pre>
 <div class="block">Returns the URL-encoding parser associated with this resource.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1907,7 +1573,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getUrlEncodingSerializer</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1773">getUrlEncodingSerializer</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1592">getUrlEncodingSerializer</a>()</pre>
 <div class="block">Returns the URL-encoding serializer associated with this resource.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1921,7 +1587,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getEncoders</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/encoders/EncoderGroup.html" title="class in org.apache.juneau.encoders">EncoderGroup</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1793">getEncoders</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/encoders/EncoderGroup.html" title="class in org.apache.juneau.encoders">EncoderGroup</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1612">getEncoders</a>()</pre>
 <div class="block">Returns the encoders associated with this resource.
 
  <p>
@@ -1946,7 +1612,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getSupportedAcceptTypes</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1807">getSupportedAcceptTypes</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1626">getSupportedAcceptTypes</a>()</pre>
 <div class="block">Returns the explicit list of supported accept types for this resource.
 
  <p>
@@ -1965,7 +1631,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getSupportedContentTypes</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1821">getSupportedContentTypes</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1640">getSupportedContentTypes</a>()</pre>
 <div class="block">Returns the explicit list of supported content types for this resource.
 
  <p>
@@ -1984,7 +1650,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultRequestHeaders</h4>
-<pre>protected&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="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/RestContext.html#line.1840">getDefaultRequestHeaders</a>()</pre>
+<pre>protected&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="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/RestContext.html#line.1659">getDefaultRequestHeaders</a>()</pre>
 <div class="block">Returns the default request headers for this resource.
 
  <p>
@@ -2008,7 +1674,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultResponseHeaders</h4>
-<pre>public&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="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1860">getDefaultResponseHeaders</a>()</pre>
+<pre>public&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="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1679">getDefaultResponseHeaders</a>()</pre>
 <div class="block">Returns the default response headers for this resource.
 
  <p>
@@ -2033,7 +1699,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getConverters</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1879">getConverters</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1698">getConverters</a>()</pre>
 <div class="block">Returns the converters associated with this resource at the class level.
 
  <p>
@@ -2057,7 +1723,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getGuards</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1898">getGuards</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1717">getGuards</a>()</pre>
 <div class="block">Returns the guards associated with this resource at the class level.
 
  <p>
@@ -2081,7 +1747,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getResponseHandlers</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1918">getResponseHandlers</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>[]&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1737">getResponseHandlers</a>()</pre>
 <div class="block">Returns the response handlers associated with this resource.
 
  <p>
@@ -2106,7 +1772,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getMediaTypeForName</h4>
-<pre>protected&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/RestContext.html#line.1932">getMediaTypeForName</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>protected&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/RestContext.html#line.1751">getMediaTypeForName</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>
 <div class="block">Returns the media type for the specified file name.
 
  <p>
@@ -2126,7 +1792,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getFavIcon</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1951">getFavIcon</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1770">getFavIcon</a>()</pre>
 <div class="block">Returns the favicon of the resource.
 
  <p>
@@ -2150,7 +1816,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>isStaticFile</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1971">isStaticFile</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;p)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1790">isStaticFile</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;p)</pre>
 <div class="block">Returns <jk>true</jk> if the specified path refers to a static file.
 
  <p>
@@ -2176,7 +1842,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getCallMethods</h4>
-<pre>protected&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>,org.apache.juneau.rest.CallMethod&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1983">getCallMethods</a>()</pre>
+<pre>protected&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>,org.apache.juneau.rest.CallMethod&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1802">getCallMethods</a>()</pre>
 <div class="block">Returns the REST Java methods defined in this resource.
 
  <p>
@@ -2193,7 +1859,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>destroy</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1990">destroy</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1809">destroy</a>()</pre>
 <div class="block">Calls <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#destroy--" title="class or interface in javax.servlet"><code>Servlet.destroy()</code></a> on any child resources defined on this resource.</div>
 </li>
 </ul>
@@ -2203,7 +1869,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>hasChildResources</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.2011">hasChildResources</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1830">hasChildResources</a>()</pre>
 <div class="block">Returns <jk>true</jk> if this resource has any child resources associated with it.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2217,7 +1883,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockList">
 <li class="blockList">
 <h4>getChildResource</h4>
-<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.2021">getChildResource</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>
+<pre>protected&nbsp;<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1840">getChildResource</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>
 <div class="block">Returns the context of the child resource associated with the specified path.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2233,7 +1899,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getContextPath</h4>
-<pre>protected&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/RestContext.html#line.2031">getContextPath</a>()</pre>
+<pre>protected&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/RestContext.html#line.1850">getContextPath</a>()</pre>
 <div class="block">Returns the context path of the resource if it's specified via the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#contextPath--"><code>RestResource.contextPath()</code></a> setting
  on this or a parent resource.</div>
 <dl>
@@ -2295,13 +1961,13 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>


[03/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/RestContext.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestContext.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestContext.html
index 85d4ff2..22719fc 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestContext.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestContext.html
@@ -65,2000 +65,1819 @@
 <span class="sourceLineNo">057</span> */<a name="line.57"></a>
 <span class="sourceLineNo">058</span>public final class RestContext extends Context {<a name="line.58"></a>
 <span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>   /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Enable header URL parameters.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    *<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    * &lt;ul&gt;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.allowHeaderParams"&lt;/js&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Boolean&lt;/code&gt;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    * &lt;/ul&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    *<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    * &lt;p&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    * When enabled, headers such as &lt;js&gt;"Accept"&lt;/js&gt; and &lt;js&gt;"Content-Type"&lt;/js&gt; to be passed in as URL query<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    * parameters.<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    * For example:  &lt;js&gt;"?Accept=text/json&amp;amp;Content-Type=text/json"&lt;/js&gt;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    *<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    * &lt;p&gt;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    * Parameter names are case-insensitive.<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    *<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    * &lt;p&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    * Useful for debugging REST interface using only a browser.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    *<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    * &lt;p&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    * Applicable to servlet class only.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   public static final String REST_allowHeaderParams = "RestServlet.allowHeaderParams";<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>   /**<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Enable &lt;js&gt;"method"&lt;/js&gt; URL parameter for specific HTTP methods.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    *<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    * &lt;ul&gt;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.allowMethodParam"&lt;/js&gt;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;""&lt;/js&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    * &lt;/ul&gt;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    *<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    * &lt;p&gt;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    * When specified, the HTTP method can be overridden by passing in a &lt;js&gt;"method"&lt;/js&gt; URL parameter on a regular<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    * GET request.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    * For example:  &lt;js&gt;"?method=OPTIONS"&lt;/js&gt;<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>    * Format is a comma-delimited list of HTTP method names that can be passed in as a method parameter.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * Parameter name is case-insensitive.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * Use "*" to represent all methods.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * For backwards compatibility, "true" also means "*".<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    * &lt;p&gt;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    * Note that per the &lt;a class="doclink"<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"&gt;HTTP specification&lt;/a&gt;, special care should<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    * be taken when allowing non-safe (POST, PUT, DELETE) methods to be invoked through GET requests.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    *<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    * &lt;p&gt;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    * Applicable to servlet class only.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    *<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    * &lt;p&gt;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    * Example: &lt;js&gt;"HEAD,OPTIONS"&lt;/js&gt;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   public static final String REST_allowMethodParam = "RestServlet.allowMethodParam";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Enable &lt;js&gt;"body"&lt;/js&gt; URL parameter.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    *<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    * &lt;ul&gt;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.allowBodyParam"&lt;/js&gt;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Boolean&lt;/code&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * &lt;/ul&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    *<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    * &lt;p&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    * When enabled, the HTTP body content on PUT and POST requests can be passed in as text using the &lt;js&gt;"body"&lt;/js&gt;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    * URL parameter.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    * For example:  &lt;js&gt;"?body={name:'John%20Smith',age:45}"&lt;/js&gt;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    *<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    * &lt;p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    * Parameter name is case-insensitive.<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    *<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    * &lt;p&gt;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    * Useful for debugging PUT and POST methods using only a browser.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    *<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    * &lt;p&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    * Applicable to servlet class only.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    */<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   public static final String REST_allowBodyParam = "RestServlet.allowBodyParam";<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>   /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Render stack traces.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    *<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    * &lt;ul&gt;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.renderResponseStackTraces"&lt;/js&gt;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Boolean&lt;/code&gt;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;false&lt;/jk&gt;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    * &lt;/ul&gt;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    *<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    * &lt;p&gt;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    * Render stack traces in HTTP response bodies when errors occur.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    *<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * &lt;p&gt;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * When enabled, Java stack traces will be rendered in the output response.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * Useful for debugging, although allowing stack traces to be rendered may cause security concerns.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    *<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    * &lt;p&gt;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    * Applicable to servlet class only.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   public static final String REST_renderResponseStackTraces = "RestServlet.renderResponseStackTraces";<a name="line.162"></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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Use stack trace hashes.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    *<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    * &lt;ul&gt;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.useStackTraceHashes"&lt;/js&gt;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Boolean&lt;/code&gt;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    * &lt;/ul&gt;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    *<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * &lt;p&gt;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    * When enabled, the number of times an exception has occurred will be determined based on stack trace hashsums,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    * made available through the {@link RestException#getOccurrence()} method.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * &lt;p&gt;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * Applicable to servlet class only.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   public static final String REST_useStackTraceHashes = "RestServlet.useStackTraceHashes";<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>   /**<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Default character encoding.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    * &lt;ul&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.defaultCharset"&lt;/js&gt;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;"utf-8"&lt;/js&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    * &lt;/ul&gt;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    *<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    * &lt;p&gt;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    * The default character encoding for the request and response if not specified on the request.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    *<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    * &lt;p&gt;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    * Applicable to servlet class and methods.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   public static final String REST_defaultCharset = "RestServlet.defaultCharset";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Expected format of request parameters.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    *<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * &lt;ul&gt;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.paramFormat"&lt;/js&gt;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;"UON"&lt;/js&gt;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * &lt;/ul&gt;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    * &lt;p&gt;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    * Possible values:<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    * &lt;ul class='spaced-list'&gt;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    *    &lt;li&gt;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    *       &lt;js&gt;"UON"&lt;/js&gt; - URL-Encoded Object Notation.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    *       &lt;br&gt;This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    *    &lt;li&gt;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    *       &lt;js&gt;"PLAIN"&lt;/js&gt; - Plain text.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    *       &lt;br&gt;This treats request parameters as plain text.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    *       &lt;br&gt;Only POJOs directly convertible from &lt;l&gt;Strings&lt;/l&gt; can be represented in parameters when using this<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    *       mode.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    * &lt;/ul&gt;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    *<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    * &lt;p&gt;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    * Note that the parameter value &lt;js&gt;"(foo)"&lt;/js&gt; is interpreted as &lt;js&gt;"(foo)"&lt;/js&gt; when using plain mode, but<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    * &lt;js&gt;"foo"&lt;/js&gt; when using UON mode.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    *<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    * &lt;p&gt;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    * The format can also be specified per-parameter using the {@link FormData#format() @FormData.format()} and<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    * {@link Query#format() @Query.format()} annotations.<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>    * Applicable to servlet class and methods.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   public static final String REST_paramFormat = "RestServlet.paramFormat";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  REST resource resolver.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    *<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    * &lt;ul&gt;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"RestServlet.resourceResolver"&lt;/js&gt;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Class&lt;/code&gt; or {@link RestResourceResolver}<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * &lt;/ul&gt;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    *<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    * &lt;p&gt;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    * The resource resolver used to instantiate REST resource classes.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    *<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    * &lt;p&gt;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    * Applicable to servlet class.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    * &lt;br&gt;Can be passed in through servlet context.<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   public static final String REST_resourceResolver = "RestServlet.resourceResolver";<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>   private final Object resource;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   final RestConfig config;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   private final boolean<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      allowHeaderParams,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      allowBodyParam,<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      renderResponseStackTraces,<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      useStackTraceHashes;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   private final String<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      defaultCharset,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      paramFormat,<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      clientVersionHeader,<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      fullPath,<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      contextPath,<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      htmlHeader,<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      htmlNav,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      htmlAside,<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      htmlStyle,<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      htmlStylesheet,<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      htmlScript,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      htmlFooter,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      htmlNoResultsMessage;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   private final String[]<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      htmlLinks;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   private final boolean htmlNoWrap;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   private final HtmlDocTemplate htmlTemplate;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   private final Map&lt;String,Widget&gt; htmlWidgets;<a name="line.277"></a>
+<span class="sourceLineNo">060</span>   private final Object resource;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   final RestConfig config;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   private final boolean<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      allowHeaderParams,<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      allowBodyParam,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      renderResponseStackTraces,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      useStackTraceHashes;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   private final String<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      defaultCharset,<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      paramFormat,<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      clientVersionHeader,<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      fullPath,<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      contextPath,<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      htmlHeader,<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      htmlNav,<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      htmlAside,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      htmlStyle,<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      htmlStylesheet,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      htmlScript,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      htmlFooter,<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      htmlNoResultsMessage;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   private final String[]<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      htmlLinks;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   private final boolean htmlNoWrap;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   private final HtmlDocTemplate htmlTemplate;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   private final Map&lt;String,Widget&gt; htmlWidgets;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>   private final Set&lt;String&gt; allowMethodParams;<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>   private final ObjectMap properties;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   private final Class&lt;?&gt;[]<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      beanFilters,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      pojoSwaps;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   private final Map&lt;Class&lt;?&gt;,RestParam&gt; paramResolvers;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   private final SerializerGroup serializers;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   private final ParserGroup parsers;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   private final UrlEncodingSerializer urlEncodingSerializer;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   private final UrlEncodingParser urlEncodingParser;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   private final EncoderGroup encoders;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   private final MediaType[]<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      supportedContentTypes,<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      supportedAcceptTypes;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   private final Map&lt;String,String&gt; defaultRequestHeaders;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   private final Map&lt;String,Object&gt; defaultResponseHeaders;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   private final BeanContext beanContext;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   private final RestConverter[] converters;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   private final RestGuard[] guards;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   private final ResponseHandler[] responseHandlers;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   private final MimetypesFileTypeMap mimetypesFileTypeMap;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   private final StreamResource favIcon;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   private final Map&lt;String,String&gt; staticFilesMap;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   private final String[] staticFilesPrefixes;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   private final MessageBundle msgs;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   private final ConfigFile configFile;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   private final VarResolver varResolver;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   private final Map&lt;String,CallRouter&gt; callRouters;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   private final Map&lt;String,CallMethod&gt; callMethods;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   private final Map&lt;String,RestContext&gt; childResources;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   private final RestLogger logger;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   private final RestCallHandler callHandler;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   private final RestInfoProvider infoProvider;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   private final RestException initException;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   private final RestContext parentContext;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   private final RestResourceResolver resourceResolver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>   // Lifecycle methods<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   private final Method[]<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      postInitMethods,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      postInitChildFirstMethods,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      preCallMethods,<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      postCallMethods,<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      startCallMethods,<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      endCallMethods,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      destroyMethods;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   private final RestParam[][]<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      preCallMethodParams,<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      postCallMethodParams;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   private final Class&lt;?&gt;[][]<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      postInitMethodParams,<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      postInitChildFirstMethodParams,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      startCallMethodParams,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      endCallMethodParams,<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      destroyMethodParams;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>   // In-memory cache of images and stylesheets in the org.apache.juneau.rest.htdocs package.<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   private final Map&lt;String,StreamResource&gt; staticFilesCache = new ConcurrentHashMap&lt;String,StreamResource&gt;();<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>   private final ResourceFinder resourceFinder;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   private final ConcurrentHashMap&lt;Integer,AtomicInteger&gt; stackTraceHashes = new ConcurrentHashMap&lt;Integer,AtomicInteger&gt;();<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>    * Constructor.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    *<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * @param resource The resource class (a class annotated with {@link RestResource @RestResource}).<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    * @param servletContext<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    *    The servlet context object.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    *    Can be &lt;jk&gt;null&lt;/jk&gt; if this isn't a<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    * @param config The servlet configuration object.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    * @throws Exception If any initialization problems were encountered.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   @SuppressWarnings("unchecked")<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   public RestContext(Object resource, ServletContext servletContext, RestConfig config) throws Exception {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      super(null);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      RestException _initException = null;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      try {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>         this.resource = resource;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>         this.config = config;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>         this.resourceFinder = new ResourceFinder(resource.getClass());<a name="line.168"></a>
+<span class="sourceLineNo">169</span>         this.parentContext = config.parentContext;<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>         Builder b = new Builder(resource, config);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>         this.allowHeaderParams = b.allowHeaderParams;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>         this.allowBodyParam = b.allowBodyParam;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>         this.renderResponseStackTraces = b.renderResponseStackTraces;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>         this.useStackTraceHashes = b.useStackTraceHashes;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>         this.allowMethodParams = Collections.unmodifiableSet(b.allowMethodParams);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>         this.defaultCharset = b.defaultCharset;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>         this.paramFormat = b.paramFormat;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>         this.varResolver = b.varResolver;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>         this.configFile = b.configFile;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>         this.properties = b.properties;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>         this.beanFilters = b.beanFilters;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>         this.pojoSwaps = b.pojoSwaps;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>         this.paramResolvers = Collections.unmodifiableMap(b.paramResolvers);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>         this.serializers = b.serializers;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>         this.parsers = b.parsers;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>         this.urlEncodingSerializer = b.urlEncodingSerializer;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>         this.urlEncodingParser = b.urlEncodingParser;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>         this.encoders = b.encoders;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>         this.supportedContentTypes = toObjectArray(b.supportedContentTypes, MediaType.class);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>         this.supportedAcceptTypes = toObjectArray(b.supportedAcceptTypes, MediaType.class);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>         this.clientVersionHeader = b.clientVersionHeader;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>         this.defaultRequestHeaders = Collections.unmodifiableMap(b.defaultRequestHeaders);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>         this.defaultResponseHeaders = Collections.unmodifiableMap(b.defaultResponseHeaders);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>         this.beanContext = b.beanContext;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>         this.converters = b.converters.toArray(new RestConverter[b.converters.size()]);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>         this.guards = b.guards.toArray(new RestGuard[b.guards.size()]);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>         this.responseHandlers = toObjectArray(b.responseHandlers, ResponseHandler.class);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>         this.mimetypesFileTypeMap = b.mimetypesFileTypeMap;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>         this.favIcon = b.favIcon;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>         this.staticFilesMap = Collections.unmodifiableMap(b.staticFilesMap);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>         this.staticFilesPrefixes = b.staticFilesPrefixes;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>         this.msgs = b.messageBundle;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>         this.childResources = Collections.synchronizedMap(new LinkedHashMap&lt;String,RestContext&gt;());  // Not unmodifiable on purpose so that children can be replaced.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>         this.logger = b.logger;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>         this.fullPath = b.fullPath;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>         this.contextPath = nullIfEmpty(b.contextPath);<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>         this.htmlWidgets = Collections.unmodifiableMap(b.htmlWidgets);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>         this.htmlHeader = b.htmlHeader;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>         this.htmlLinks = b.htmlLinks;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>         this.htmlNav = b.htmlNav;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>         this.htmlAside = b.htmlAside;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>         this.htmlStyle = b.htmlStyle;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>         this.htmlStylesheet = b.htmlStylesheet;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>         this.htmlScript = b.htmlScript;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>         this.htmlFooter = b.htmlFooter;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>         this.htmlNoWrap = b.htmlNoWrap;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>         this.htmlNoResultsMessage = b.htmlNoResultsMessage;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>         this.htmlTemplate = b.htmlTemplate;<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>         //----------------------------------------------------------------------------------------------------<a name="line.222"></a>
+<span class="sourceLineNo">223</span>         // Initialize the child resources.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>         // Done after initializing fields above since we pass this object to the child resources.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>         //----------------------------------------------------------------------------------------------------<a name="line.225"></a>
+<span class="sourceLineNo">226</span>         List&lt;String&gt; methodsFound = new LinkedList&lt;String&gt;();   // Temporary to help debug transient duplicate method issue.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>         Map&lt;String,CallRouter.Builder&gt; routers = new LinkedHashMap&lt;String,CallRouter.Builder&gt;();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>         Map&lt;String,CallMethod&gt; _javaRestMethods = new LinkedHashMap&lt;String,CallMethod&gt;();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>         Map&lt;String,Method&gt;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            _startCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.230"></a>
+<span class="sourceLineNo">231</span>            _preCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.231"></a>
+<span class="sourceLineNo">232</span>            _postCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.232"></a>
+<span class="sourceLineNo">233</span>            _endCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            _postInitMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            _postInitChildFirstMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>            _destroyMethods = new LinkedHashMap&lt;String,Method&gt;();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>         List&lt;RestParam[]&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            _preCallMethodParams = new ArrayList&lt;RestParam[]&gt;(),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>            _postCallMethodParams = new ArrayList&lt;RestParam[]&gt;();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>         List&lt;Class&lt;?&gt;[]&gt;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>            _startCallMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            _endCallMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            _postInitMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            _postInitChildFirstMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            _destroyMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;();<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>         for (java.lang.reflect.Method method : resource.getClass().getMethods()) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            if (method.isAnnotationPresent(RestMethod.class)) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>               RestMethod a = method.getAnnotation(RestMethod.class);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>               methodsFound.add(method.getName() + "," + a.name() + "," + a.path());<a name="line.250"></a>
+<span class="sourceLineNo">251</span>               try {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>                  if (! Modifier.isPublic(method.getModifiers()))<a name="line.252"></a>
+<span class="sourceLineNo">253</span>                     throw new RestServletException("@RestMethod method {0}.{1} must be defined as public.", this.getClass().getName(), method.getName());<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>                  CallMethod sm = new CallMethod(resource, method, this);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>                  String httpMethod = sm.getHttpMethod();<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>                  // PROXY is a special case where a method returns an interface that we<a name="line.258"></a>
+<span class="sourceLineNo">259</span>                  // can perform REST calls against.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>                  // We override the CallMethod.invoke() method to insert our logic.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                  if ("PROXY".equals(httpMethod)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>                     final ClassMeta&lt;?&gt; interfaceClass = beanContext.getClassMeta(method.getGenericReturnType());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>                     final Map&lt;String,Method&gt; remoteableMethods = interfaceClass.getRemoteableMethods();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>                     if (remoteableMethods.isEmpty())<a name="line.265"></a>
+<span class="sourceLineNo">266</span>                        throw new RestException(SC_INTERNAL_SERVER_ERROR, "Method {0} returns an interface {1} that doesn't define any remoteable methods.", getMethodSignature(method), interfaceClass.getReadableName());<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>                     sm = new CallMethod(resource, method, this) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>                        @Override<a name="line.270"></a>
+<span class="sourceLineNo">271</span>                        int invoke(String pathInfo, RestRequest req, RestResponse res) throws RestException {<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>                           int rc = super.invoke(pathInfo, req, res);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>                           if (rc != SC_OK)<a name="line.274"></a>
+<span class="sourceLineNo">275</span>                              return rc;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>                           final Object o = res.getOutput();<a name="line.277"></a>
 <span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>   private final Set&lt;String&gt; allowMethodParams;<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>   private final ObjectMap properties;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   private final Class&lt;?&gt;[]<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      beanFilters,<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      pojoSwaps;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   private final Map&lt;Class&lt;?&gt;,RestParam&gt; paramResolvers;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   private final SerializerGroup serializers;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   private final ParserGroup parsers;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   private final UrlEncodingSerializer urlEncodingSerializer;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   private final UrlEncodingParser urlEncodingParser;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   private final EncoderGroup encoders;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   private final MediaType[]<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      supportedContentTypes,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      supportedAcceptTypes;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   private final Map&lt;String,String&gt; defaultRequestHeaders;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   private final Map&lt;String,Object&gt; defaultResponseHeaders;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   private final BeanContext beanContext;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   private final RestConverter[] converters;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   private final RestGuard[] guards;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   private final ResponseHandler[] responseHandlers;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   private final MimetypesFileTypeMap mimetypesFileTypeMap;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   private final StreamResource favIcon;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   private final Map&lt;String,String&gt; staticFilesMap;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>   private final String[] staticFilesPrefixes;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   private final MessageBundle msgs;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   private final ConfigFile configFile;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   private final VarResolver varResolver;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   private final Map&lt;String,CallRouter&gt; callRouters;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   private final Map&lt;String,CallMethod&gt; callMethods;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   private final Map&lt;String,RestContext&gt; childResources;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   private final RestLogger logger;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   private final RestCallHandler callHandler;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   private final RestInfoProvider infoProvider;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   private final RestException initException;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   private final RestContext parentContext;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   private final RestResourceResolver resourceResolver;<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>   // Lifecycle methods<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   private final Method[]<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      postInitMethods,<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      postInitChildFirstMethods,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      preCallMethods,<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      postCallMethods,<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      startCallMethods,<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      endCallMethods,<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      destroyMethods;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   private final RestParam[][]<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      preCallMethodParams,<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      postCallMethodParams;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   private final Class&lt;?&gt;[][]<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      postInitMethodParams,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      postInitChildFirstMethodParams,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      startCallMethodParams,<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      endCallMethodParams,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      destroyMethodParams;<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>   // In-memory cache of images and stylesheets in the org.apache.juneau.rest.htdocs package.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   private final Map&lt;String,StreamResource&gt; staticFilesCache = new ConcurrentHashMap&lt;String,StreamResource&gt;();<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>   private final ResourceFinder resourceFinder;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   private final ConcurrentHashMap&lt;Integer,AtomicInteger&gt; stackTraceHashes = new ConcurrentHashMap&lt;Integer,AtomicInteger&gt;();<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>   /**<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    * Constructor.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    *<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    * @param resource The resource class (a class annotated with {@link RestResource @RestResource}).<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    * @param servletContext<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    *    The servlet context object.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    *    Can be &lt;jk&gt;null&lt;/jk&gt; if this isn't a<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    * @param config The servlet configuration object.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    * @throws Exception If any initialization problems were encountered.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   @SuppressWarnings("unchecked")<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   public RestContext(Object resource, ServletContext servletContext, RestConfig config) throws Exception {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      super(null);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      RestException _initException = null;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      try {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>         this.resource = resource;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>         this.config = config;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>         this.resourceFinder = new ResourceFinder(resource.getClass());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>         this.parentContext = config.parentContext;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>         Builder b = new Builder(resource, servletContext, config);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>         this.allowHeaderParams = b.allowHeaderParams;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>         this.allowBodyParam = b.allowBodyParam;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>         this.renderResponseStackTraces = b.renderResponseStackTraces;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>         this.useStackTraceHashes = b.useStackTraceHashes;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>         this.allowMethodParams = Collections.unmodifiableSet(b.allowMethodParams);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>         this.defaultCharset = b.defaultCharset;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>         this.paramFormat = b.paramFormat;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>         this.varResolver = b.varResolver;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>         this.configFile = b.configFile;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>         this.properties = b.properties;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>         this.beanFilters = b.beanFilters;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>         this.pojoSwaps = b.pojoSwaps;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>         this.paramResolvers = Collections.unmodifiableMap(b.paramResolvers);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>         this.serializers = b.serializers;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>         this.parsers = b.parsers;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>         this.urlEncodingSerializer = b.urlEncodingSerializer;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>         this.urlEncodingParser = b.urlEncodingParser;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>         this.encoders = b.encoders;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>         this.supportedContentTypes = toObjectArray(b.supportedContentTypes, MediaType.class);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>         this.supportedAcceptTypes = toObjectArray(b.supportedAcceptTypes, MediaType.class);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>         this.clientVersionHeader = b.clientVersionHeader;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>         this.defaultRequestHeaders = Collections.unmodifiableMap(b.defaultRequestHeaders);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>         this.defaultResponseHeaders = Collections.unmodifiableMap(b.defaultResponseHeaders);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>         this.beanContext = b.beanContext;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>         this.converters = b.converters.toArray(new RestConverter[b.converters.size()]);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>         this.guards = b.guards.toArray(new RestGuard[b.guards.size()]);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>         this.responseHandlers = toObjectArray(b.responseHandlers, ResponseHandler.class);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>         this.mimetypesFileTypeMap = b.mimetypesFileTypeMap;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>         this.favIcon = b.favIcon;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>         this.staticFilesMap = Collections.unmodifiableMap(b.staticFilesMap);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>         this.staticFilesPrefixes = b.staticFilesPrefixes;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>         this.msgs = b.messageBundle;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>         this.childResources = Collections.synchronizedMap(new LinkedHashMap&lt;String,RestContext&gt;());  // Not unmodifiable on purpose so that children can be replaced.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>         this.logger = b.logger;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>         this.fullPath = b.fullPath;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>         this.contextPath = nullIfEmpty(b.contextPath);<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>         this.htmlWidgets = Collections.unmodifiableMap(b.htmlWidgets);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>         this.htmlHeader = b.htmlHeader;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>         this.htmlLinks = b.htmlLinks;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>         this.htmlNav = b.htmlNav;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>         this.htmlAside = b.htmlAside;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>         this.htmlStyle = b.htmlStyle;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>         this.htmlStylesheet = b.htmlStylesheet;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>         this.htmlScript = b.htmlScript;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>         this.htmlFooter = b.htmlFooter;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>         this.htmlNoWrap = b.htmlNoWrap;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>         this.htmlNoResultsMessage = b.htmlNoResultsMessage;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>         this.htmlTemplate = b.htmlTemplate;<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>         //----------------------------------------------------------------------------------------------------<a name="line.414"></a>
-<span class="sourceLineNo">415</span>         // Initialize the child resources.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>         // Done after initializing fields above since we pass this object to the child resources.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>         //----------------------------------------------------------------------------------------------------<a name="line.417"></a>
-<span class="sourceLineNo">418</span>         List&lt;String&gt; methodsFound = new LinkedList&lt;String&gt;();   // Temporary to help debug transient duplicate method issue.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>         Map&lt;String,CallRouter.Builder&gt; routers = new LinkedHashMap&lt;String,CallRouter.Builder&gt;();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>         Map&lt;String,CallMethod&gt; _javaRestMethods = new LinkedHashMap&lt;String,CallMethod&gt;();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>         Map&lt;String,Method&gt;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>            _startCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            _preCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            _postCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.424"></a>
-<span class="sourceLineNo">425</span>            _endCallMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.425"></a>
-<span class="sourceLineNo">426</span>            _postInitMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.426"></a>
-<span class="sourceLineNo">427</span>            _postInitChildFirstMethods = new LinkedHashMap&lt;String,Method&gt;(),<a name="line.427"></a>
-<span class="sourceLineNo">428</span>            _destroyMethods = new LinkedHashMap&lt;String,Method&gt;();<a name="line.428"></a>
-<span class="sourceLineNo">429</span>         List&lt;RestParam[]&gt;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            _preCallMethodParams = new ArrayList&lt;RestParam[]&gt;(),<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            _postCallMethodParams = new ArrayList&lt;RestParam[]&gt;();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>         List&lt;Class&lt;?&gt;[]&gt;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            _startCallMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.433"></a>
-<span class="sourceLineNo">434</span>            _endCallMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.434"></a>
-<span class="sourceLineNo">435</span>            _postInitMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.435"></a>
-<span class="sourceLineNo">436</span>            _postInitChildFirstMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;(),<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            _destroyMethodParams = new ArrayList&lt;Class&lt;?&gt;[]&gt;();<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>         for (java.lang.reflect.Method method : resource.getClass().getMethods()) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>            if (method.isAnnotationPresent(RestMethod.class)) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>               RestMethod a = method.getAnnotation(RestMethod.class);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>               methodsFound.add(method.getName() + "," + a.name() + "," + a.path());<a name="line.442"></a>
-<span class="sourceLineNo">443</span>               try {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>                  if (! Modifier.isPublic(method.getModifiers()))<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                     throw new RestServletException("@RestMethod method {0}.{1} must be defined as public.", this.getClass().getName(), method.getName());<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>                  CallMethod sm = new CallMethod(resource, method, this);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>                  String httpMethod = sm.getHttpMethod();<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>                  // PROXY is a special case where a method returns an interface that we<a name="line.450"></a>
-<span class="sourceLineNo">451</span>                  // can perform REST calls against.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>                  // We override the CallMethod.invoke() method to insert our logic.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>                  if ("PROXY".equals(httpMethod)) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>                     final ClassMeta&lt;?&gt; interfaceClass = beanContext.getClassMeta(method.getGenericReturnType());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>                     final Map&lt;String,Method&gt; remoteableMethods = interfaceClass.getRemoteableMethods();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>                     if (remoteableMethods.isEmpty())<a name="line.457"></a>
-<span class="sourceLineNo">458</span>                        throw new RestException(SC_INTERNAL_SERVER_ERROR, "Method {0} returns an interface {1} that doesn't define any remoteable methods.", getMethodSignature(method), interfaceClass.getReadableName());<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>                     sm = new CallMethod(resource, method, this) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>                        @Override<a name="line.462"></a>
-<span class="sourceLineNo">463</span>                        int invoke(String pathInfo, RestRequest req, RestResponse res) throws RestException {<a name="line.463"></a>
+<span class="sourceLineNo">279</span>                           if ("GET".equals(req.getMethod())) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>                              res.setOutput(getMethodInfo(remoteableMethods.values()));<a name="line.280"></a>
+<span class="sourceLineNo">281</span>                              return SC_OK;<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>                           } else if ("POST".equals(req.getMethod())) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>                              if (pathInfo.indexOf('/') != -1)<a name="line.284"></a>
+<span class="sourceLineNo">285</span>                                 pathInfo = pathInfo.substring(pathInfo.lastIndexOf('/')+1);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>                              pathInfo = urlDecode(pathInfo);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>                              java.lang.reflect.Method m = remoteableMethods.get(pathInfo);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>                              if (m != null) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>                                 try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>                                    // Parse the args and invoke the method.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>                                    Parser p = req.getBody().getParser();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>                                    Object input = p.isReaderParser() ? req.getReader() : req.getInputStream();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>                                    Object output = m.invoke(o, p.parseArgs(input, m.getGenericParameterTypes()));<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                                    res.setOutput(output);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>                                    return SC_OK;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                                 } catch (Exception e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>                                    throw new RestException(SC_INTERNAL_SERVER_ERROR, e);<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 SC_NOT_FOUND;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>                        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>                     };<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>                     _javaRestMethods.put(method.getName(), sm);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>                     addToRouter(routers, "GET", sm);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>                     addToRouter(routers, "POST", sm);<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>                  } else {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>                     _javaRestMethods.put(method.getName(), sm);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>                     addToRouter(routers, httpMethod, sm);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>               } catch (RestServletException e) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>                  throw new RestServletException("Problem occurred trying to serialize methods on class {0}, methods={1}", this.getClass().getName(), JsonSerializer.DEFAULT_LAX.serialize(methodsFound)).initCause(e);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>               }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>            }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>         }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>         for (Method m : ClassUtils.getAllMethods(resource.getClass(), true)) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            if (ClassUtils.isPublic(m) &amp;&amp; m.isAnnotationPresent(RestHook.class)) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>               HookEvent he = m.getAnnotation(RestHook.class).value();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>               String sig = ClassUtils.getMethodSignature(m);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>               switch(he) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>                  case PRE_CALL: {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>                     if (! _preCallMethods.containsKey(sig)) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>                        Visibility.setAccessible(m);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>                        _preCallMethods.put(sig, m);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>                        _preCallMethodParams.add(findParams(m, false, null, true));<a name="line.328"></a>
+<span class="sourceLineNo">329</span>                     }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                     break;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                  }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>                  case POST_CALL: {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>                     if (! _postCallMethods.containsKey(sig)) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>                        Visibility.setAccessible(m);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>                        _postCallMethods.put(sig, m);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                        _postCallMethodParams.add(findParams(m, false, null, true));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                     }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>                     break;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>                  }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>                  case START_CALL: {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>                     if (! _startCallMethods.containsKey(sig)) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>                        Visibility.setAccessible(m);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>                        _startCallMethods.put(sig, m);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>                        _startCallMethodParams.add(m.getParameterTypes());<a name="line.344"></a>
+<span class="sourceLineNo">345</span>                        ClassUtils.assertArgsOfType(m, HttpServletRequest.class, HttpServletResponse.class);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>                     }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>                     break;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>                  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>                  case END_CALL: {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>                     if (! _endCallMethods.containsKey(sig)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>                        Visibility.setAccessible(m);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>                        _endCallMethods.put(sig, m);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>                        _endCallMethodParams.add(m.getParameterTypes());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>                        ClassUtils.assertArgsOfType(m, HttpServletRequest.class, HttpServletResponse.class);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>                     }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>                     break;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>                  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>                  case POST_INIT: {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>                     if (! _postInitMethods.containsKey(sig)) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>                        Visibility.setAccessible(m);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>                        _postInitMethods.put(sig, m);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>                        _postInitMethodParams.add(m.getParameterTypes());<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                        ClassUtils.assertArgsOfType(m, RestContext.class);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>                     }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>                     break;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>                  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>                  case POST_INIT_CHILD_FIRST: {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>                     if (! _postInitChildFirstMethods.containsKey(sig)) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>                        Visibility.setAccessible(m);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>                        _postInitChildFirstMethods.put(sig, m);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>                        _postInitChildFirstMethodParams.add(m.getParameterTypes());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>                        ClassUtils.assertArgsOfType(m, RestContext.class);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>                     }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>                     break;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>                  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>                  case DESTROY: {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>                     if (! _destroyMethods.containsKey(sig)) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>                        Visibility.setAccessible(m);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>                        _destroyMethods.put(sig, m);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>                        _destroyMethodParams.add(m.getParameterTypes());<a name="line.380"></a>
+<span class="sourceLineNo">381</span>                        ClassUtils.assertArgsOfType(m, RestContext.class);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>                     }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>                     break;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>                  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>                  default: // Ignore INIT<a name="line.385"></a>
+<span class="sourceLineNo">386</span>               }<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>         }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>         this.callMethods = Collections.unmodifiableMap(_javaRestMethods);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>         this.preCallMethods = _preCallMethods.values().toArray(new Method[_preCallMethods.size()]);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>         this.postCallMethods = _postCallMethods.values().toArray(new Method[_postCallMethods.size()]);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>         this.startCallMethods = _startCallMethods.values().toArray(new Method[_startCallMethods.size()]);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>         this.endCallMethods = _endCallMethods.values().toArray(new Method[_endCallMethods.size()]);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>         this.postInitMethods = _postInitMethods.values().toArray(new Method[_postInitMethods.size()]);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>         this.postInitChildFirstMethods = _postInitChildFirstMethods.values().toArray(new Method[_postInitChildFirstMethods.size()]);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>         this.destroyMethods = _destroyMethods.values().toArray(new Method[_destroyMethods.size()]);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>         this.preCallMethodParams = _preCallMethodParams.toArray(new RestParam[_preCallMethodParams.size()][]);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         this.postCallMethodParams = _postCallMethodParams.toArray(new RestParam[_postCallMethodParams.size()][]);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>         this.startCallMethodParams = _startCallMethodParams.toArray(new Class[_startCallMethodParams.size()][]);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>         this.endCallMethodParams = _endCallMethodParams.toArray(new Class[_endCallMethodParams.size()][]);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>         this.postInitMethodParams = _postInitMethodParams.toArray(new Class[_postInitMethodParams.size()][]);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>         this.postInitChildFirstMethodParams = _postInitChildFirstMethodParams.toArray(new Class[_postInitChildFirstMethodParams.size()][]);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>         this.destroyMethodParams = _destroyMethodParams.toArray(new Class[_destroyMethodParams.size()][]);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>         Map&lt;String,CallRouter&gt; _callRouters = new LinkedHashMap&lt;String,CallRouter&gt;();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>         for (CallRouter.Builder crb : routers.values())<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            _callRouters.put(crb.getHttpMethodName(), crb.build());<a name="line.408"></a>
+<span class="sourceLineNo">409</span>         this.callRouters = Collections.unmodifiableMap(_callRouters);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>         // Initialize our child resources.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>         resourceResolver = resolve(resource, RestResourceResolver.class, b.resourceResolver);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>         for (Object o : config.childResources) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>            String path = null;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>            Object r = null;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>            if (o instanceof Pair) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>               Pair&lt;String,Object&gt; p = (Pair&lt;String,Object&gt;)o;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>               path = p.first();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>               r = p.second();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            } else if (o instanceof Class&lt;?&gt;) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>               Class&lt;?&gt; c = (Class&lt;?&gt;)o;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>               // Don't allow specifying yourself as a child.  Causes an infinite loop.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>               if (c == config.resourceClass)<a name="line.423"></a>
+<span class="sourceLineNo">424</span>                  continue;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>               r = c;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>            } else {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>               r = o;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>            }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>            RestConfig childConfig = null;<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>            if (o instanceof Class) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>               Class&lt;?&gt; oc = (Class&lt;?&gt;)o;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>               childConfig = new RestConfig(config.inner, oc, this);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>               r = resourceResolver.resolve(oc, childConfig);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>            } else {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>               r = o;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>               childConfig = new RestConfig(config.inner, o.getClass(), this);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            }<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>            childConfig.init(r);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            if (r instanceof RestServlet)<a name="line.442"></a>
+<span class="sourceLineNo">443</span>               ((RestServlet)r).innerInit(childConfig);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>            RestContext rc2 = new RestContext(r, servletContext, childConfig);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>            if (r instanceof RestServlet)<a name="line.445"></a>
+<span class="sourceLineNo">446</span>               ((RestServlet)r).setContext(rc2);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            path = childConfig.path;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>            childResources.put(path, rc2);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>         }<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>         callHandler = config.callHandler == null ? new RestCallHandler(this) : resolve(resource, RestCallHandler.class, config.callHandler, this);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>         infoProvider = config.infoProvider == null ? new RestInfoProvider(this) : resolve(resource, RestInfoProvider.class, config.infoProvider, this);<a name="line.452"></a>
+<span class="sourceLineNo">453</span><a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } catch (RestException e) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>         _initException = e;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>         throw e;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      } catch (Exception e) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>         _initException = new RestException(SC_INTERNAL_SERVER_ERROR, e);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>         throw e;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      } finally {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>         initException = _initException;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   }<a name="line.463"></a>
 <span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>                           int rc = super.invoke(pathInfo, req, res);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>                           if (rc != SC_OK)<a name="line.466"></a>
-<span class="sourceLineNo">467</span>                              return rc;<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>                           final Object o = res.getOutput();<a name="line.469"></a>
+<span class="sourceLineNo">465</span>   private static void addToRouter(Map&lt;String, CallRouter.Builder&gt; routers, String httpMethodName, CallMethod cm) throws RestServletException {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      if (! routers.containsKey(httpMethodName))<a name="line.466"></a>
+<span class="sourceLineNo">467</span>         routers.put(httpMethodName, new CallRouter.Builder(httpMethodName));<a name="line.467"></a>
+<span class="sourceLineNo">4

<TRUNCATED>


[08/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DebugResource.html
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..53945fe
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DebugResource.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../javadoc.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a>
+<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *<a name="line.2"></a>
+<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *<a name="line.3"></a>
+<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *<a name="line.4"></a>
+<span class="sourceLineNo">005</span>// * with the License.  You may obtain a copy of the License at                                                              *<a name="line.5"></a>
+<span class="sourceLineNo">006</span>// *                                                                                                                         *<a name="line.6"></a>
+<span class="sourceLineNo">007</span>// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *<a name="line.7"></a>
+<span class="sourceLineNo">008</span>// *                                                                                                                         *<a name="line.8"></a>
+<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *<a name="line.9"></a>
+<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *<a name="line.10"></a>
+<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License.                                              *<a name="line.11"></a>
+<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
+<span class="sourceLineNo">013</span>package org.apache.juneau.microservice.resources;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import java.io.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span><a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.internal.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import org.apache.juneau.microservice.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.juneau.rest.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.juneau.rest.annotation.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.juneau.rest.labels.*;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>/**<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * Microservice debug utilities.<a name="line.24"></a>
+<span class="sourceLineNo">025</span> */<a name="line.25"></a>
+<span class="sourceLineNo">026</span>@RestResource(<a name="line.26"></a>
+<span class="sourceLineNo">027</span>   path="/debug",<a name="line.27"></a>
+<span class="sourceLineNo">028</span>   title="Debug",<a name="line.28"></a>
+<span class="sourceLineNo">029</span>   description="Debug Utilities.",<a name="line.29"></a>
+<span class="sourceLineNo">030</span>   htmldoc=@HtmlDoc(<a name="line.30"></a>
+<span class="sourceLineNo">031</span>      links={<a name="line.31"></a>
+<span class="sourceLineNo">032</span>         "up: request:/..",<a name="line.32"></a>
+<span class="sourceLineNo">033</span>         "jetty-thread-dump: servlet:/jetty/dump?method=POST",<a name="line.33"></a>
+<span class="sourceLineNo">034</span>         "options: servlet:/?method=OPTIONS"<a name="line.34"></a>
+<span class="sourceLineNo">035</span>      }<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   ),<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   allowMethodParam="OPTIONS,POST"<a name="line.37"></a>
+<span class="sourceLineNo">038</span>)<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@SuppressWarnings("javadoc")<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class DebugResource extends Resource {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   private static final long serialVersionUID = 1L;<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>    * [GET /] - Shows child utilities.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    * <a name="line.45"></a>
+<span class="sourceLineNo">046</span>    * @return Child utility links.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    * @throws Exception <a name="line.47"></a>
+<span class="sourceLineNo">048</span>    */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   @RestMethod(name="GET", path="/", description="Show contents of config file.")<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   public ResourceDescription[] getChildren() throws Exception {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      return new ResourceDescription[] {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>         new ResourceDescription("jetty/dump", "Jetty thread dump")<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      };<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   }<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>    * [GET /jetty/dump] - Generates and retrieves the jetty thread dump.<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   @RestMethod(name="GET", path="/jetty/dump", description="Generates and retrieves the jetty thread dump.")<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   public Reader getJettyDump(RestRequest req, RestResponse res) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      res.setContentType("text/plain");<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      return new StringReader(RestMicroservice.getInstance().getServer().dump());<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>   /**<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    * [POST /jetty/dump] - Generates and saves the jetty thread dump file to jetty-thread-dump.log.<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   @RestMethod(name="POST", path="/jetty/dump", description="Generates and saves the jetty thread dump file to jetty-thread-dump.log.")<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   public String createJettyDump(RestRequest req, RestResponse res) throws Exception {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      String dump = RestMicroservice.getInstance().getServer().dump();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      IOUtils.pipe(dump, new FileWriter(req.getConfigFile().getString("Logging/logDir") + "/jetty-thread-dump.log"));<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      return "OK";<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   }<a name="line.73"></a>
+<span class="sourceLineNo">074</span>}<a name="line.74"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html
----------------------------------------------------------------------
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 26a50e7..6cf94d3 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
@@ -23,364 +23,363 @@
 <span class="sourceLineNo">015</span>import static java.util.logging.Level.*;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.16"></a>
 <span class="sourceLineNo">017</span>import static org.apache.juneau.html.HtmlDocSerializerContext.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import static org.apache.juneau.rest.RestContext.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import java.io.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.net.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.*;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.logging.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<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.*;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.juneau.annotation.*;<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>import org.apache.juneau.utils.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * REST resource that allows access to a file system directory.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <a name="line.38"></a>
-<span class="sourceLineNo">039</span> * &lt;p&gt;<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * The root directory is specified in one of two ways:<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * &lt;ul class='spaced-list'&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *    &lt;li&gt;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *       Specifying the location via a &lt;l&gt;DirectoryResource.rootDir&lt;/l&gt; property.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *    &lt;li&gt;<a name="line.44"></a>
-<span class="sourceLineNo">045</span> *       Overriding the {@link #getRootDir()} method.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * &lt;/ul&gt;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * <a name="line.47"></a>
-<span class="sourceLineNo">048</span> * &lt;p&gt;<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * Read/write access control is handled through the following properties:<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * &lt;ul class='spaced-list'&gt;<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.allowViews&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows view and download access to files.<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.allowPuts&lt;/l&gt; - If &lt;jk&gt;true&lt;/jk&gt;, allows files to be created or overwritten.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *    &lt;li&gt;<a name="line.55"></a>
-<span class="sourceLineNo">056</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.56"></a>
-<span class="sourceLineNo">057</span> * &lt;/ul&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Access can also be controlled by overriding the {@link #checkAccess(RestRequest)} method.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@RestResource(<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   title="File System Explorer",<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   description="Contents of $R{attribute.path}",<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   messages="nls/DirectoryResource",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   htmldoc=@HtmlDoc(<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      links={<a name="line.67"></a>
-<span class="sourceLineNo">068</span>         "up: request:/..",<a name="line.68"></a>
-<span class="sourceLineNo">069</span>         "options: servlet:/?method=OPTIONS"<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   ),<a name="line.71"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import java.io.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.net.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.*;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.logging.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import javax.servlet.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.*;<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 $R{attribute.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>      links={<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>   allowMethodParam="*",<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=REST_allowMethodParam, value="*"),<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      @Property(name="DirectoryResource.rootDir", value="")<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>public class DirectoryResource extends Resource {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   private static final long serialVersionUID = 1L;<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>   private File rootDir;     // The root directory<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>   // Settings enabled through servlet init parameters<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   private boolean allowDeletes, allowPuts, allowViews;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>   private static Logger logger = Logger.getLogger(DirectoryResource.class.getName());<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>   @Override /* Servlet */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   public void init() throws ServletException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      ObjectMap p = getProperties();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      rootDir = new File(p.getString("DirectoryResource.rootDir"));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      allowViews = p.getBoolean("DirectoryResource.allowViews", false);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      allowDeletes = p.getBoolean("DirectoryResource.allowDeletes", false);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      allowPuts = p.getBoolean("DirectoryResource.allowPuts", false);<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>   /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    * Returns the root directory defined by the 'rootDir' init parameter.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    * <a name="line.99"></a>
-<span class="sourceLineNo">100</span>    * &lt;p&gt;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * Subclasses can override this method to provide their own root directory.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * <a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * @return The root directory.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   protected File getRootDir() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      if (rootDir == null) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         rootDir = new File(getProperties().getString("rootDir"));<a name="line.107"></a>
-<span class="sourceLineNo">108</span>         if (! rootDir.exists())<a name="line.108"></a>
-<span class="sourceLineNo">109</span>            if (! rootDir.mkdirs())<a name="line.109"></a>
-<span class="sourceLineNo">110</span>               throw new RuntimeException("Could not create root dir");<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      return rootDir;<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>    * [GET /*] - On directories, returns a directory listing.  On files, returns information about the file.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    *<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    * @param req The HTTP request.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    * @return Either a FileResource or list of FileResources depending on whether it's a<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    *    file or directory.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   @RestMethod(name="GET", path="/*",<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      description="On directories, returns a directory listing.\nOn files, returns information about the file.",<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      converters={Queryable.class}<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   )<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   public Object doGet(RestRequest req) throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      checkAccess(req);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>      String pathInfo = req.getPathInfo();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      File f = pathInfo == null ? rootDir : new File(rootDir.getAbsolutePath() + pathInfo);<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>      if (!f.exists())<a name="line.133"></a>
-<span class="sourceLineNo">134</span>         throw new RestException(SC_NOT_FOUND, "File not found");<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>      req.setAttribute("path", f.getAbsolutePath());<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (f.isDirectory()) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>         List&lt;FileResource&gt; l = new LinkedList&lt;FileResource&gt;();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>         File[] files = f.listFiles();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>         if (files != null) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>            for (File fc : files) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>               URL fUrl = new URL(req.getRequestURL().append("/").append(fc.getName()).toString());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>               l.add(new FileResource(fc, fUrl));<a name="line.144"></a>
-<span class="sourceLineNo">145</span>            }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>         }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>         return l;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      return new FileResource(f, new URL(req.getRequestURL().toString()));<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>    * [DELETE /*] - Delete a file on the file system.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    *<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * @param req The HTTP request.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * @return The message &lt;js&gt;"File deleted"&lt;/js&gt; if successful.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    */<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   @RestMethod(name="DELETE", path="/*",<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      description="Delete a file on the file system."<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   )<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   public Object doDelete(RestRequest req) throws Exception {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      checkAccess(req);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      deleteFile(f);<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (req.getHeader("Accept").contains("text/html"))<a name="line.169"></a>
-<span class="sourceLineNo">170</span>         return new Redirect();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return "File deleted";<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>    * [PUT /*] - Add or overwrite a file on the file system.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    *<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * @param req The HTTP request.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * @return The message &lt;js&gt;"File added"&lt;/js&gt; if successful.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    * @throws Exception If file could not be read or access was not granted.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   @RestMethod(name="PUT", path="/*",<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      description="Add or overwrite a file on the file system."<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   )<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   public Object doPut(RestRequest req) throws Exception {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      checkAccess(req);<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>      File f = new File(rootDir.getAbsolutePath() + req.getPathInfo());<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      String parentSubPath = f.getParentFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      IOPipe.create(req.getInputStream(), bos).closeOut().run();<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">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>   private 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>      ObjectMap 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;FileResource&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>      BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      IOPipe.create(req.getInputStream(), bos).closeOut().run();<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>
 
 
 


[13/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/ini/ConfigFileImpl.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/ini/ConfigFileImpl.html b/content/site/apidocs/src-html/org/apache/juneau/ini/ConfigFileImpl.html
index cb2b543..cbdd7a5 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/ini/ConfigFileImpl.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/ini/ConfigFileImpl.html
@@ -253,580 +253,589 @@
 <span class="sourceLineNo">245</span>         return (T)pBeanSession.convertToType(s, (Class&lt;?&gt;)type);<a name="line.245"></a>
 <span class="sourceLineNo">246</span><a name="line.246"></a>
 <span class="sourceLineNo">247</span>      char s1 = firstNonWhitespaceChar(s);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (s1 != '[' &amp;&amp; s1 != '{' &amp;&amp; ! "null".equals(s))<a name="line.248"></a>
-<span class="sourceLineNo">249</span>         s = '\'' + s + '\'';<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>      if (parser == null)<a name="line.251"></a>
-<span class="sourceLineNo">252</span>         parser = this.parser;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return parser.parse(s, type, args);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>   private static boolean isSimpleType(Type t) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (! (t instanceof Class))<a name="line.258"></a>
-<span class="sourceLineNo">259</span>         return false;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      Class&lt;?&gt; c = (Class&lt;?&gt;)t;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return (c == String.class || c.isPrimitive() || c.isAssignableFrom(Number.class) || c == Boolean.class || c.isEnum());<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><a name="line.264"></a>
-<span class="sourceLineNo">265</span>   //--------------------------------------------------------------------------------<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   // Map methods<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   //--------------------------------------------------------------------------------<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>   @Override /* Map */<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   public Section get(Object key) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (StringUtils.isEmpty(key))<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         key = DEFAULT;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      readLock();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>         return sections.get(key);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      } finally {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>         readUnlock();<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><a name="line.280"></a>
-<span class="sourceLineNo">281</span>   @Override /* Map */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   public Section put(String key, Section section) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      Set&lt;String&gt; changes = createChanges();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Section old = put(key, section, changes);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      signalChanges(changes);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      return old;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>   private Section put(String key, Section section, Set&lt;String&gt; changes) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      if (StringUtils.isEmpty(key))<a name="line.290"></a>
-<span class="sourceLineNo">291</span>         key = DEFAULT;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      writeLock();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      try {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>         Section prev = sections.put(key, section);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>         findChanges(changes, prev, section);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>         return prev;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      } finally {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>         writeUnlock();<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><a name="line.301"></a>
-<span class="sourceLineNo">302</span>   @Override /* Map */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>   public void putAll(Map&lt;? extends String,? extends Section&gt; map) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      Set&lt;String&gt; changes = createChanges();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      writeLock();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      try {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>         for (Map.Entry&lt;? extends String,? extends Section&gt; e : map.entrySet())<a name="line.307"></a>
-<span class="sourceLineNo">308</span>            put(e.getKey(), e.getValue(), changes);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      } finally {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>         writeUnlock();<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      signalChanges(changes);<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>   @Override /* Map */<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   public void clear() {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      Set&lt;String&gt; changes = createChanges();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      writeLock();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>         for (Section s : values())<a name="line.320"></a>
-<span class="sourceLineNo">321</span>            findChanges(changes, s, null);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>         sections.clear();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      } finally {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>         writeUnlock();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      signalChanges(changes);<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>   @Override /* Map */<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   public boolean containsKey(Object key) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      if (StringUtils.isEmpty(key))<a name="line.331"></a>
-<span class="sourceLineNo">332</span>         key = DEFAULT;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      return sections.containsKey(key);<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>   @Override /* Map */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   public boolean containsValue(Object value) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return sections.containsValue(value);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>   @Override /* Map */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   public Set&lt;Map.Entry&lt;String,Section&gt;&gt; entrySet() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // We need to create our own set so that entries are removed correctly.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      return new AbstractSet&lt;Map.Entry&lt;String,Section&gt;&gt;() {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>         @Override /* Map */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>         public Iterator&lt;Map.Entry&lt;String,Section&gt;&gt; iterator() {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>            return new Iterator&lt;Map.Entry&lt;String,Section&gt;&gt;() {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>               Iterator&lt;Map.Entry&lt;String,Section&gt;&gt; i = sections.entrySet().iterator();<a name="line.349"></a>
-<span class="sourceLineNo">350</span>               Map.Entry&lt;String,Section&gt; i2;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>               @Override /* Iterator */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>               public boolean hasNext() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>                  return i.hasNext();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>               }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>               @Override /* Iterator */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>               public Map.Entry&lt;String,Section&gt; next() {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>                  i2 = i.next();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>                  return i2;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>               }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>               @Override /* Iterator */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>               public void remove() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>                  Set&lt;String&gt; changes = createChanges();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>                  findChanges(changes, i2.getValue(), null);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>                  i.remove();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>                  signalChanges(changes);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>               }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>            };<a name="line.370"></a>
-<span class="sourceLineNo">371</span>         }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>         @Override /* Map */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>         public int size() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>            return sections.size();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>         }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      };<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   }<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>   @Override /* Map */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   public boolean isEmpty() {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return sections.isEmpty();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>   @Override /* Map */<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   public Set&lt;String&gt; keySet() {<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // We need to create our own set so that sections are removed correctly.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      return new AbstractSet&lt;String&gt;() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>         @Override /* Set */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>         public Iterator&lt;String&gt; iterator() {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            return new Iterator&lt;String&gt;() {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>               Iterator&lt;String&gt; i = sections.keySet().iterator();<a name="line.393"></a>
-<span class="sourceLineNo">394</span>               String i2;<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>               @Override /* Iterator */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>               public boolean hasNext() {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>                  return i.hasNext();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>               }<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>               @Override /* Iterator */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>               public String next() {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                  i2 = i.next();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                  return i2;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>               }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>               @Override /* Iterator */<a name="line.407"></a>
-<span class="sourceLineNo">408</span>               public void remove() {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>                  Set&lt;String&gt; changes = createChanges();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                  findChanges(changes, sections.get(i2), null);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                  i.remove();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                  signalChanges(changes);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>               }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>            };<a name="line.414"></a>
-<span class="sourceLineNo">415</span>         }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>         @Override /* Set */<a name="line.417"></a>
-<span class="sourceLineNo">418</span>         public int size() {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>            return sections.size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>         }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      };<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>   @Override /* Map */<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   public int size() {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      return sections.size();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>   @Override /* Map */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   public Collection&lt;Section&gt; values() {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      return new AbstractCollection&lt;Section&gt;() {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>         @Override /* Collection */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>         public Iterator&lt;Section&gt; iterator() {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>            return new Iterator&lt;Section&gt;() {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>               Iterator&lt;Section&gt; i = sections.values().iterator();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>               Section i2;<a name="line.436"></a>
+<span class="sourceLineNo">248</span>      if (isArray(type) &amp;&amp; s1 != '[')<a name="line.248"></a>
+<span class="sourceLineNo">249</span>         s = '[' + s + ']';<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      else if (s1 != '[' &amp;&amp; s1 != '{' &amp;&amp; ! "null".equals(s))<a name="line.250"></a>
+<span class="sourceLineNo">251</span>         s = '\'' + s + '\'';<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>      if (parser == null)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>         parser = this.parser;<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return parser.parse(s, type, args);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>   private static boolean isSimpleType(Type t) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (! (t instanceof Class))<a name="line.260"></a>
+<span class="sourceLineNo">261</span>         return false;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Class&lt;?&gt; c = (Class&lt;?&gt;)t;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      return (c == String.class || c.isPrimitive() || c.isAssignableFrom(Number.class) || c == Boolean.class || c.isEnum());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>   private static boolean isArray(Type t) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      if (! (t instanceof Class))<a name="line.267"></a>
+<span class="sourceLineNo">268</span>         return false;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Class&lt;?&gt; c = (Class&lt;?&gt;)t;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      return (c.isArray());<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   }<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>   //--------------------------------------------------------------------------------<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   // Map methods<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   //--------------------------------------------------------------------------------<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>   @Override /* Map */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   public Section get(Object key) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      if (StringUtils.isEmpty(key))<a name="line.280"></a>
+<span class="sourceLineNo">281</span>         key = DEFAULT;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      readLock();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      try {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>         return sections.get(key);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      } finally {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>         readUnlock();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<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>   @Override /* Map */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   public Section put(String key, Section section) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      Set&lt;String&gt; changes = createChanges();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      Section old = put(key, section, changes);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      signalChanges(changes);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return old;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>   private Section put(String key, Section section, Set&lt;String&gt; changes) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      if (StringUtils.isEmpty(key))<a name="line.299"></a>
+<span class="sourceLineNo">300</span>         key = DEFAULT;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      writeLock();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      try {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>         Section prev = sections.put(key, section);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>         findChanges(changes, prev, section);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>         return prev;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      } finally {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>         writeUnlock();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>   @Override /* Map */<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   public void putAll(Map&lt;? extends String,? extends Section&gt; map) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      Set&lt;String&gt; changes = createChanges();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      writeLock();<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      try {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>         for (Map.Entry&lt;? extends String,? extends Section&gt; e : map.entrySet())<a name="line.316"></a>
+<span class="sourceLineNo">317</span>            put(e.getKey(), e.getValue(), changes);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      } finally {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>         writeUnlock();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      signalChanges(changes);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>   @Override /* Map */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   public void clear() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Set&lt;String&gt; changes = createChanges();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      writeLock();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      try {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>         for (Section s : values())<a name="line.329"></a>
+<span class="sourceLineNo">330</span>            findChanges(changes, s, null);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>         sections.clear();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      } finally {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         writeUnlock();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      signalChanges(changes);<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>   @Override /* Map */<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   public boolean containsKey(Object key) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      if (StringUtils.isEmpty(key))<a name="line.340"></a>
+<span class="sourceLineNo">341</span>         key = DEFAULT;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      return sections.containsKey(key);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>   @Override /* Map */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   public boolean containsValue(Object value) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      return sections.containsValue(value);<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>   @Override /* Map */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   public Set&lt;Map.Entry&lt;String,Section&gt;&gt; entrySet() {<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>      // We need to create our own set so that entries are removed correctly.<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return new AbstractSet&lt;Map.Entry&lt;String,Section&gt;&gt;() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>         @Override /* Map */<a name="line.355"></a>
+<span class="sourceLineNo">356</span>         public Iterator&lt;Map.Entry&lt;String,Section&gt;&gt; iterator() {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>            return new Iterator&lt;Map.Entry&lt;String,Section&gt;&gt;() {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>               Iterator&lt;Map.Entry&lt;String,Section&gt;&gt; i = sections.entrySet().iterator();<a name="line.358"></a>
+<span class="sourceLineNo">359</span>               Map.Entry&lt;String,Section&gt; i2;<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>               @Override /* Iterator */<a name="line.361"></a>
+<span class="sourceLineNo">362</span>               public boolean hasNext() {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                  return i.hasNext();<a name="line.363"></a>
+<span class="sourceLineNo">364</span>               }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>               @Override /* Iterator */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>               public Map.Entry&lt;String,Section&gt; next() {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>                  i2 = i.next();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>                  return i2;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>               }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>               @Override /* Iterator */<a name="line.372"></a>
+<span class="sourceLineNo">373</span>               public void remove() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>                  Set&lt;String&gt; changes = createChanges();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>                  findChanges(changes, i2.getValue(), null);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>                  i.remove();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>                  signalChanges(changes);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>               }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>            };<a name="line.379"></a>
+<span class="sourceLineNo">380</span>         }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>         @Override /* Map */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>         public int size() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            return sections.size();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>         }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      };<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   }<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>   @Override /* Map */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   public boolean isEmpty() {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return sections.isEmpty();<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>   @Override /* Map */<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   public Set&lt;String&gt; keySet() {<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>      // We need to create our own set so that sections are removed correctly.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return new AbstractSet&lt;String&gt;() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         @Override /* Set */<a name="line.399"></a>
+<span class="sourceLineNo">400</span>         public Iterator&lt;String&gt; iterator() {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            return new Iterator&lt;String&gt;() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>               Iterator&lt;String&gt; i = sections.keySet().iterator();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>               String i2;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>               @Override /* Iterator */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>               public boolean hasNext() {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                  return i.hasNext();<a name="line.407"></a>
+<span class="sourceLineNo">408</span>               }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>               @Override /* Iterator */<a name="line.410"></a>
+<span class="sourceLineNo">411</span>               public String next() {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                  i2 = i.next();<a name="line.412"></a>
+<span class="sourceLineNo">413</span>                  return i2;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>               }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>               @Override /* Iterator */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>               public void remove() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                  Set&lt;String&gt; changes = createChanges();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                  findChanges(changes, sections.get(i2), null);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                  i.remove();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                  signalChanges(changes);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>               }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>            };<a name="line.423"></a>
+<span class="sourceLineNo">424</span>         }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>         @Override /* Set */<a name="line.426"></a>
+<span class="sourceLineNo">427</span>         public int size() {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>            return sections.size();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>         }<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>   @Override /* Map */<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   public int size() {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      return sections.size();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   }<a name="line.436"></a>
 <span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>               @Override /* Iterator */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>               public boolean hasNext() {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>                  return i.hasNext();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>               }<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>               @Override /* Iterator */<a name="line.443"></a>
-<span class="sourceLineNo">444</span>               public Section next() {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                  i2 = i.next();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>                  return i2;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>               }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>               @Override /* Iterator */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>               public void remove() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>                  Set&lt;String&gt; changes = createChanges();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>                  findChanges(changes, i2, null);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>                  i.remove();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>                  signalChanges(changes);<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>         }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>         @Override /* Collection */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>         public int size() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>            return sections.size();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>         }<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      };<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>   @Override /* Map */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   public Section remove(Object key) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      Set&lt;String&gt; changes = createChanges();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      Section prev = remove(key, changes);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      signalChanges(changes);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      return prev;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   }<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>   private Section remove(Object key, Set&lt;String&gt; changes) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      writeLock();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      try {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>         Section prev = sections.remove(key);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>         findChanges(changes, prev, null);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>         return prev;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      } finally {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>         writeUnlock();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   }<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>   // API methods<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   //--------------------------------------------------------------------------------<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>   @Override /* ConfigFile */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   public String get(String sectionName, String sectionKey) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      Section s = get(sectionName);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      if (s == null)<a name="line.493"></a>
-<span class="sourceLineNo">494</span>         return null;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      Object s2 = s.get(sectionKey);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      return (s2 == null ? null : s2.toString());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>   @SuppressWarnings("hiding")<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   @Override /* ConfigFile */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   public String put(String sectionName, String sectionKey, Object value, Serializer serializer, boolean encoded,<a name="line.501"></a>
-<span class="sourceLineNo">502</span>         boolean newline) throws SerializeException {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      Section s = getSection(sectionName, true);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      return s.put(sectionKey, serialize(value, serializer, newline), encoded);<a name="line.505"></a>
+<span class="sourceLineNo">438</span>   @Override /* Map */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   public Collection&lt;Section&gt; values() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      return new AbstractCollection&lt;Section&gt;() {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>         @Override /* Collection */<a name="line.441"></a>
+<span class="sourceLineNo">442</span>         public Iterator&lt;Section&gt; iterator() {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>            return new Iterator&lt;Section&gt;() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>               Iterator&lt;Section&gt; i = sections.values().iterator();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>               Section i2;<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>               @Override /* Iterator */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>               public boolean hasNext() {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>                  return i.hasNext();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>               }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>               @Override /* Iterator */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>               public Section next() {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>                  i2 = i.next();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>                  return i2;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>               }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>               @Override /* Iterator */<a name="line.458"></a>
+<span class="sourceLineNo">459</span>               public void remove() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>                  Set&lt;String&gt; changes = createChanges();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>                  findChanges(changes, i2, null);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>                  i.remove();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>                  signalChanges(changes);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>               }<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>         @Override /* Collection */<a name="line.467"></a>
+<span class="sourceLineNo">468</span>         public int size() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>            return sections.size();<a name="line.469"></a>
+<span class="sourceLineNo">470</span>         }<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      };<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   }<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>   @Override /* Map */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   public Section remove(Object key) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      Set&lt;String&gt; changes = createChanges();<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      Section prev = remove(key, changes);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      signalChanges(changes);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      return prev;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>   private Section remove(Object key, Set&lt;String&gt; changes) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      writeLock();<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>         Section prev = sections.remove(key);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>         findChanges(changes, prev, null);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>         return prev;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      } finally {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>         writeUnlock();<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>   //--------------------------------------------------------------------------------<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   // API methods<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   //--------------------------------------------------------------------------------<a name="line.496"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>   @Override /* ConfigFile */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   public String get(String sectionName, String sectionKey) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      Section s = get(sectionName);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      if (s == null)<a name="line.502"></a>
+<span class="sourceLineNo">503</span>         return null;<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      Object s2 = s.get(sectionKey);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      return (s2 == null ? null : s2.toString());<a name="line.505"></a>
 <span class="sourceLineNo">506</span>   }<a name="line.506"></a>
 <span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>   @Override /* ConfigFile */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   public String put(String sectionName, String sectionKey, String value, boolean encoded) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      Section s = getSection(sectionName, true);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return s.put(sectionKey, value, encoded);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>   @Override /* ConfigFile */<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   public String remove(String sectionName, String sectionKey) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      Section s = getSection(sectionName, false);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      if (s == null)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>         return null;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      return s.remove(sectionKey);<a name="line.521"></a>
+<span class="sourceLineNo">508</span>   @SuppressWarnings("hiding")<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   @Override /* ConfigFile */<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   public String put(String sectionName, String sectionKey, Object value, Serializer serializer, boolean encoded,<a name="line.510"></a>
+<span class="sourceLineNo">511</span>         boolean newline) throws SerializeException {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      Section s = getSection(sectionName, true);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      return s.put(sectionKey, serialize(value, serializer, newline), encoded);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   }<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>   @Override /* ConfigFile */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   public String put(String sectionName, String sectionKey, String value, boolean encoded) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      Section s = getSection(sectionName, true);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      return s.put(sectionKey, value, encoded);<a name="line.521"></a>
 <span class="sourceLineNo">522</span>   }<a name="line.522"></a>
 <span class="sourceLineNo">523</span><a name="line.523"></a>
 <span class="sourceLineNo">524</span>   @Override /* ConfigFile */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   public ConfigFileImpl addLines(String section, String...lines) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      Set&lt;String&gt; changes = createChanges();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      writeLock();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      try {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>         getSection(section, true).addLines(changes, lines);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      } finally {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>         writeUnlock();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      signalChanges(changes);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return this;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>   @Override /* ConfigFile */<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   public ConfigFileImpl addHeaderComments(String section, String...headerComments) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      writeLock();<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>         if (headerComments == null)<a name="line.541"></a>
-<span class="sourceLineNo">542</span>            headerComments = new String[0];<a name="line.542"></a>
-<span class="sourceLineNo">543</span>         getSection(section, true).addHeaderComments(Arrays.asList(headerComments));<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      } finally {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>         writeUnlock();<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      }<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      return this;<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>   @Override /* ConfigFile */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   public ConfigFileImpl clearHeaderComments(String section) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      writeLock();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      try {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>         Section s = getSection(section, false);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>         if (s != null)<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            s.clearHeaderComments();<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      } finally {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>         writeUnlock();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      }<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      return this;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   }<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>   @Override /* ConfigFile */<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   public Section getSection(String name) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      return getSection(name, false);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   }<a name="line.566"></a>
-<span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>   @Override /* ConfigFile */<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   public Section getSection(String name, boolean create) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      if (StringUtils.isEmpty(name))<a name="line.570"></a>
-<span class="sourceLineNo">571</span>         name = DEFAULT;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      Section s = sections.get(name);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      if (s != null)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>         return s;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      if (create) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>         s = new Section().setParent(this).setName(name);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>         sections.put(name, s);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>         return s;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      return null;<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>   @Override /* ConfigFile */<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   public ConfigFileImpl addSection(String name) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      writeLock();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      try {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>         getSection(name, true);<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      } finally {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>         writeUnlock();<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      }<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      return this;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>   @Override /* ConfigFile */<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   public ConfigFile setSection(String name, Map&lt;String,String&gt; contents) {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      writeLock();<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      try {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>         put(name, new Section(contents).setParent(this).setName(name));<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      } finally {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>         writeUnlock();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      return this;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>   @Override /* ConfigFile */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>   public ConfigFileImpl removeSection(String name) {<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      Set&lt;String&gt; changes = createChanges();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      writeLock();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      try {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>         Section prev = sections.remove(name);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         if (changes != null &amp;&amp; prev != null)<a name="line.611"></a>
-<span class="sourceLineNo">612</span>            findChanges(changes, prev, null);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      } finally {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>         writeUnlock();<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      signalChanges(changes);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return this;<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>   @Override /* ConfigFile */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   public Set&lt;String&gt; getSectionKeys(String sectionName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      Section s = get(sectionName);<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      if (s == null)<a name="line.623"></a>
-<span class="sourceLineNo">624</span>         return null;<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      return s.keySet();<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>   @Override /* ConfigFile */<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   public boolean isEncoded(String key) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      assertFieldNotNull(key, "key");<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      String section = getSectionName(key);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      Section s = getSection(section, false);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      if (s == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>         return false;<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      return s.isEncoded(getSectionKey(key));<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   }<a name="line.636"></a>
-<span class="sourceLineNo">637</span><a name="line.637"></a>
-<span class="sourceLineNo">638</span>   @Override /* ConfigFile */<a name="line.638"></a>
-<span class="sourceLineNo">639</span>   public ConfigFileImpl save() throws IOException {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      writeLock();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      try {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>         if (file == null)<a name="line.642"></a>
-<span class="sourceLineNo">643</span>            throw new UnsupportedOperationException("No backing file specified for config file.");<a name="line.643"></a>
-<span class="sourceLineNo">644</span>         Writer out = new OutputStreamWriter(new FileOutputStream(file), charset);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>         try {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            serializeTo(out);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            hasBeenModified = false;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            modifiedTimestamp = file.lastModified();<a name="line.648"></a>
-<span class="sourceLineNo">649</span>         } finally {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>            out.close();<a name="line.650"></a>
-<span class="sourceLineNo">651</span>         }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>         for (ConfigFileListener l : listeners)<a name="line.652"></a>
-<span class="sourceLineNo">653</span>            l.onSave(this);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>         return this;<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      } finally {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>         writeUnlock();<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><a name="line.659"></a>
-<span class="sourceLineNo">660</span>   @Override /* ConfigFile */<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   public ConfigFileImpl serializeTo(Writer out, ConfigFileFormat format) throws IOException {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      readLock();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      try {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>         PrintWriter pw = (out instanceof PrintWriter ? (PrintWriter)out : new PrintWriter(out));<a name="line.664"></a>
-<span class="sourceLineNo">665</span>         for (Section s : sections.values())<a name="line.665"></a>
-<span class="sourceLineNo">666</span>            s.writeTo(pw, format);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>         pw.flush();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>         pw.close();<a name="line.668"></a>
-<span class="sourceLineNo">669</span>         out.close();<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      } finally {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>         readUnlock();<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      }<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      return this;<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   }<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>   void setHasBeenModified() {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      hasBeenModified = true;<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>   @Override /* ConfigFile */<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   public String toString() {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      try {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>         StringWriter sw = new StringWriter();<a name="line.683"></a>
-<span class="sourceLineNo">684</span>         toWritable().writeTo(sw);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>         return sw.toString();<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      } catch (IOException e) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>         return e.getLocalizedMessage();<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   }<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>   @Override /* ConfigFile */<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   public ConfigFile addListener(ConfigFileListener listener) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      assertFieldNotNull(listener, "listener");<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      writeLock();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      try {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>         this.listeners.add(listener);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>         return this;<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      } finally {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>         writeUnlock();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      }<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>   List&lt;ConfigFileListener&gt; getListeners() {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      return listeners;<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   }<a name="line.705"></a>
-<span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>   @Override /* ConfigFile */<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   public Writable toWritable() {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      return new ConfigFileWritable(this);<a name="line.709"></a>
+<span class="sourceLineNo">525</span>   public String remove(String sectionName, String sectionKey) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      assertFieldNotNull(sectionKey, "sectionKey");<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      Section s = getSection(sectionName, false);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      if (s == null)<a name="line.528"></a>
+<span class="sourceLineNo">529</span>         return null;<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      return s.remove(sectionKey);<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>   @Override /* ConfigFile */<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   public ConfigFileImpl addLines(String section, String...lines) {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      Set&lt;String&gt; changes = createChanges();<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      writeLock();<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      try {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>         getSection(section, true).addLines(changes, lines);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      } finally {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>         writeUnlock();<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      signalChanges(changes);<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      return this;<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   }<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span>   @Override /* ConfigFile */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   public ConfigFileImpl addHeaderComments(String section, String...headerComments) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      writeLock();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      try {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>         if (headerComments == null)<a name="line.550"></a>
+<span class="sourceLineNo">551</span>            headerComments = new String[0];<a name="line.551"></a>
+<span class="sourceLineNo">552</span>         getSection(section, true).addHeaderComments(Arrays.asList(headerComments));<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      } finally {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>         writeUnlock();<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      return this;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>   @Override /* ConfigFile */<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   public ConfigFileImpl clearHeaderComments(String section) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      writeLock();<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      try {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>         Section s = getSection(section, false);<a name="line.563"></a>
+<span class="sourceLineNo">564</span>         if (s != null)<a name="line.564"></a>
+<span class="sourceLineNo">565</span>            s.clearHeaderComments();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      } finally {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>         writeUnlock();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      return this;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>   @Override /* ConfigFile */<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   public Section getSection(String name) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      return getSection(name, false);<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>   @Override /* ConfigFile */<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   public Section getSection(String name, boolean create) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      if (StringUtils.isEmpty(name))<a name="line.579"></a>
+<span class="sourceLineNo">580</span>         name = DEFAULT;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      Section s = sections.get(name);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      if (s != null)<a name="line.582"></a>
+<span class="sourceLineNo">583</span>         return s;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      if (create) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>         s = new Section().setParent(this).setName(name);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>         sections.put(name, s);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>         return s;<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      return null;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>   @Override /* ConfigFile */<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   public ConfigFileImpl addSection(String name) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      writeLock();<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      try {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>         getSection(name, true);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      } finally {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>         writeUnlock();<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      }<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>   @Override /* ConfigFile */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   public ConfigFile setSection(String name, Map&lt;String,String&gt; contents) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      writeLock();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      try {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>         put(name, new Section(contents).setParent(this).setName(name));<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      } finally {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>         writeUnlock();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      }<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      return this;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   }<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>   @Override /* ConfigFile */<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   public ConfigFileImpl removeSection(String name) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      Set&lt;String&gt; changes = createChanges();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      writeLock();<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      try {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>         Section prev = sections.remove(name);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>         if (changes != null &amp;&amp; prev != null)<a name="line.620"></a>
+<span class="sourceLineNo">621</span>            findChanges(changes, prev, null);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      } finally {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>         writeUnlock();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      }<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      signalChanges(changes);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      return this;<a name="line.626"></a>
+<span class="sourceLineNo">627</span>   }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>   @Override /* ConfigFile */<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   public Set&lt;String&gt; getSectionKeys(String sectionName) {<a name="line.630"></a>
+<span class="sourceLineNo">631</span>      Section s = get(sectionName);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      if (s == null)<a name="line.632"></a>
+<span class="sourceLineNo">633</span>         return null;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      return s.keySet();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   }<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>   @Override /* ConfigFile */<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   public boolean isEncoded(String key) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      assertFieldNotNull(key, "key");<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      String section = getSectionName(key);<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      Section s = getSection(section, false);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      if (s == null)<a name="line.642"></a>
+<span class="sourceLineNo">643</span>         return false;<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      return s.isEncoded(getSectionKey(key));<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>   @Override /* ConfigFile */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   public ConfigFileImpl save() throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      writeLock();<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      try {<a name="line.650"></a>
+<span class="sourceLineNo">651</span>         if (file == null)<a name="line.651"></a>
+<span class="sourceLineNo">652</span>            throw new UnsupportedOperationException("No backing file specified for config file.");<a name="line.652"></a>
+<span class="sourceLineNo">653</span>         Writer out = new OutputStreamWriter(new FileOutputStream(file), charset);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>         try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>            serializeTo(out);<a name="line.655"></a>
+<span class="sourceLineNo">656</span>            hasBeenModified = false;<a name="line.656"></a>
+<span class="sourceLineNo">657</span>            modifiedTimestamp = file.lastModified();<a name="line.657"></a>
+<span class="sourceLineNo">658</span>         } finally {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>            out.close();<a name="line.659"></a>
+<span class="sourceLineNo">660</span>         }<a name="line.660"></a>
+<span class="sourceLineNo">661</span>         for (ConfigFileListener l : listeners)<a name="line.661"></a>
+<span class="sourceLineNo">662</span>            l.onSave(this);<a name="line.662"></a>
+<span class="sourceLineNo">663</span>         return this;<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      } finally {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>         writeUnlock();<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      }<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   }<a name="line.667"></a>
+<span class="sourceLineNo">668</span><a name="line.668"></a>
+<span class="sourceLineNo">669</span>   @Override /* ConfigFile */<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   public ConfigFileImpl serializeTo(Writer out, ConfigFileFormat format) throws IOException {<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      readLock();<a name="line.671"></a>
+<span class="sourceLineNo">672</span>      try {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>         PrintWriter pw = (out instanceof PrintWriter ? (PrintWriter)out : new PrintWriter(out));<a name="line.673"></a>
+<span class="sourceLineNo">674</span>         for (Section s : sections.values())<a name="line.674"></a>
+<span class="sourceLineNo">675</span>            s.writeTo(pw, format);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>         pw.flush();<a name="line.676"></a>
+<span class="sourceLineNo">677</span>         pw.close();<a name="line.677"></a>
+<span class="sourceLineNo">678</span>         out.close();<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      } finally {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>         readUnlock();<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      return this;<a name="line.682"></a>
+<span class="sourceLineNo">683</span>   }<a name="line.683"></a>
+<span class="sourceLineNo">684</span><a name="line.684"></a>
+<span class="sourceLineNo">685</span>   void setHasBeenModified() {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      hasBeenModified = true;<a name="line.686"></a>
+<span class="sourceLineNo">687</span>   }<a name="line.687"></a>
+<span class="sourceLineNo">688</span><a name="line.688"></a>
+<span class="sourceLineNo">689</span>   @Override /* ConfigFile */<a name="line.689"></a>
+<span class="sourceLineNo">690</span>   public String toString() {<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      try {<a name="line.691"></a>
+<span class="sourceLineNo">692</span>         StringWriter sw = new StringWriter();<a name="line.692"></a>
+<span class="sourceLineNo">693</span>         toWritable().writeTo(sw);<a name="line.693"></a>
+<span class="sourceLineNo">694</span>         return sw.toString();<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      } catch (IOException e) {<a name="line.695"></a>
+<span class="sourceLineNo">696</span>         return e.getLocalizedMessage();<a name="line.696"></a>
+<span class="sourceLineNo">697</span>      }<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   }<a name="line.698"></a>
+<span class="sourceLineNo">699</span><a name="line.699"></a>
+<span class="sourceLineNo">700</span>   @Override /* ConfigFile */<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   public ConfigFile addListener(ConfigFileListener listener) {<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      assertFieldNotNull(listener, "listener");<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      writeLock();<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      try {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>         this.listeners.add(listener);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>         return this;<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      } finally {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>         writeUnlock();<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      }<a name="line.709"></a>
 <span class="sourceLineNo">710</span>   }<a name="line.710"></a>
 <span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>   @Override /* ConfigFile */<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   public ConfigFile merge(ConfigFile cf) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      assertFieldNotNull(cf, "cf");<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      Set&lt;String&gt; changes = createChanges();<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      writeLock();<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      try {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>         for (String sectionName : this.keySet())<a name="line.718"></a>
-<span class="sourceLineNo">719</span>            if (! cf.containsKey(sectionName))<a name="line.719"></a>
-<span class="sourceLineNo">720</span>               remove(sectionName, changes);<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>         for (Map.Entry&lt;String,Section&gt; e : cf.entrySet())<a name="line.722"></a>
-<span class="sourceLineNo">723</span>            put(e.getKey(), e.getValue(), changes);<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>      } finally {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>         writeUnlock();<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      }<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      signalChanges(changes);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      return this;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   }<a name="line.730"></a>
-<span class="sourceLineNo">731</span><a name="line.731"></a>
-<span class="sourceLineNo">732</span>   Encoder getEncoder() {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      return encoder;<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   }<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>   @Override /* ConfigFile */<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   protected BeanSession getBeanSession() {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      return pBeanSession;<a name="line.738"></a>
+<span class="sourceLineNo">712</span>   List&lt;ConfigFileListener&gt; getListeners() {<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      return listeners;<a name="line.713"></a>
+<span class="sourceLineNo">714</span>   }<a name="line.714"></a>
+<span class="sourceLineNo">715</span><a name="line.715"></a>
+<span class="sourceLineNo">716</span>   @Override /* ConfigFile */<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   public Writable toWritable() {<a name="line.717"></a>
+<span class="sourceLineNo">718</span>      return new ConfigFileWritable(this);<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   }<a name="line.719"></a>
+<span class="sourceLineNo">720</span><a name="line.720"></a>
+<span class="sourceLineNo">721</span>   @Override /* ConfigFile */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   public ConfigFile merge(ConfigFile cf) {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>      assertFieldNotNull(cf, "cf");<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      Set&lt;String&gt; changes = createChanges();<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      writeLock();<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      try {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>         for (String sectionName : this.keySet())<a name="line.727"></a>
+<span class="sourceLineNo">728</span>            if (! cf.containsKey(sectionName))<a name="line.728"></a>
+<span class="sourceLineNo">729</span>               remove(sectionName, changes);<a name="line.729"></a>
+<span class="sourceLineNo">730</span><a name="line.730"></a>
+<span class="sourceLineNo">731</span>         for (Map.Entry&lt;String,Section&gt; e : cf.entrySet())<a name="line.731"></a>
+<span class="sourceLineNo">732</span>            put(e.getKey(), e.getValue(), changes);<a name="line.732"></a>
+<span class="sourceLineNo">733</span><a name="line.733"></a>
+<span class="sourceLineNo">734</span>      } finally {<a name="line.734"></a>
+<span class="sourceLineNo">735</span>         writeUnlock();<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      }<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      signalChanges(changes);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      return this;<a name="line.738"></a>
 <span class="sourceLineNo">739</span>   }<a name="line.739"></a>
 <span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>   @Override /* ConfigFile */<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   protected void readLock() {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      lock.readLock().lock();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   }<a name="line.744"></a>
-<span class="sourceLineNo">745</span><a name="line.745"></a>
-<span class="sourceLineNo">746</span>   @Override /* ConfigFile */<a name="line.746"></a>
-<span class="sourceLineNo">747</span>   protected void readUnlock() {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      lock.readLock().unlock();<a name="line.748"></a>
-<span class="sourceLineNo">749</span>   }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>   private void writeLock() {<a name="line.751"></a>
-<span class="sourceLineNo">752</span>      if (readOnly)<a name="line.752"></a>
-<span class="sourceLineNo">753</span>         throw new UnsupportedOperationException("Cannot modify read-only ConfigFile.");<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      lock.writeLock().lock();<a name="line.754"></a>
-

<TRUNCATED>


[06/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.FileResource.html
----------------------------------------------------------------------
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 d0471f6..7af886a 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
@@ -22,338 +22,337 @@
 <span class="sourceLineNo">014</span><a name="line.14"></a>
 <span class="sourceLineNo">015</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>import static org.apache.juneau.html.HtmlDocSerializerContext.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import static org.apache.juneau.rest.RestContext.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.net.URI;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.nio.charset.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.juneau.*;<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.dto.*;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.ini.*;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.microservice.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.rest.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.rest.annotation.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.rest.annotation.Properties;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.juneau.rest.converters.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.juneau.transforms.*;<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>/**<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * REST resource for viewing and accessing log files.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> */<a name="line.39"></a>
-<span class="sourceLineNo">040</span>@RestResource(<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   path="/logs",<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   title="Log files",<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   description="Log files from this service",<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   properties={<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   },<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   flags={REST_allowMethodParam},<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   pojoSwaps={<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      IteratorSwap.class,       // Allows Iterators and Iterables to be serialized.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      DateSwap.ISO8601DT.class  // Serialize Date objects as ISO8601 strings.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   }<a name="line.51"></a>
-<span class="sourceLineNo">052</span>)<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@SuppressWarnings("nls")<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public class LogsResource extends Resource {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   private static final long serialVersionUID = 1L;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>   private File logDir;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   private LogEntryFormatter leFormatter;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>   private final FileFilter filter = new FileFilter() {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      @Override /* FileFilter */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      public boolean accept(File f) {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>         return f.isDirectory() || f.getName().endsWith(".log");<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      }<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   };<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>   /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    * Initializes the log directory and formatter.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    * <a name="line.69"></a>
-<span class="sourceLineNo">070</span>    * @param config The resource config.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    * @throws Exception<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   @RestHook(INIT) <a name="line.73"></a>
-<span class="sourceLineNo">074</span>   public void init(RestConfig config) throws Exception {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      ConfigFile cf = config.getConfigFile();<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>      logDir = new File(cf.getString("Logging/logDir", "."));<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      leFormatter = new LogEntryFormatter(<a name="line.78"></a>
-<span class="sourceLineNo">079</span>         cf.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.79"></a>
-<span class="sourceLineNo">080</span>         cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.80"></a>
-<span class="sourceLineNo">081</span>         cf.getBoolean("Logging/useStackTraceHashes")<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      );<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>   /**<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * [GET /*] - Get file details or directory listing.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    *<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    * @param req The HTTP request<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    * @param res The HTTP response<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    * @param properties The writable properties for setting the descriptions.<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    * @param path The log file path.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    * @return The log file.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    * @throws Exception<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   @RestMethod(<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      name="GET",<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      path="/*",<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      swagger=@MethodSwagger(<a name="line.98"></a>
-<span class="sourceLineNo">099</span>         responses={@Response(200),@Response(404)}<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      )<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   )<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   public Object getFileOrDirectory(RestRequest req, RestResponse res, @Properties ObjectMap properties, @PathRemainder String path) throws Exception {<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>      File f = getFile(path);<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>      if (f.isDirectory()) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         Set&lt;FileResource&gt; l = new TreeSet&lt;FileResource&gt;(new FileResourceComparator());<a name="line.107"></a>
-<span class="sourceLineNo">108</span>         File[] files = f.listFiles(filter);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>         if (files != null) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            for (File fc : files) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>               URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.111"></a>
-<span class="sourceLineNo">112</span>               l.add(new FileResource(fc, fUrl));<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 l;<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>      return new FileResource(f, new URI("servlet:/"));<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>    * [VIEW /*] - Retrieve the contents of a log file.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    *<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * @param req The HTTP request.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * @param res The HTTP response.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    * @param path The log file path.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    * @param properties The writable properties for setting the descriptions.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    * @param highlight If &lt;code&gt;true&lt;/code&gt;, add color highlighting based on severity.<a name="line.128"></a>
-<span class="sourceLineNo">129</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.129"></a>
-<span class="sourceLineNo">130</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.130"></a>
-<span class="sourceLineNo">131</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.131"></a>
-<span class="sourceLineNo">132</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.132"></a>
-<span class="sourceLineNo">133</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    * @throws Exception<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   @RestMethod(<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      name="VIEW",<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      path="/*",<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      swagger=@MethodSwagger(<a name="line.139"></a>
-<span class="sourceLineNo">140</span>         responses={@Response(200),@Response(404)}<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      )<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   )<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   @SuppressWarnings("nls")<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   public void viewFile(RestRequest req, RestResponse res, @PathRemainder String path, @Properties ObjectMap 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.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>      File f = getFile(path);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      if (f.isDirectory())<a name="line.147"></a>
-<span class="sourceLineNo">148</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>      if (! highlight) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>         Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>         res.setContentType("text/plain");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>         if (o instanceof Reader)<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            res.setOutput(o);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>         else {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>            LogParser p = (LogParser)o;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            Writer w = res.getNegotiatedWriter();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>            try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>               p.writeTo(w);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>            } finally {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>               w.flush();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>               w.close();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>            }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>         }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>         return;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>      res.setContentType("text/html");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      PrintWriter w = res.getNegotiatedWriter();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      try {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>         w.println("&lt;html&gt;&lt;body style='font-family:monospace;font-size:8pt;white-space:pre;'&gt;");<a name="line.173"></a>
-<span class="sourceLineNo">174</span>         LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>         try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>            if (! lp.hasNext())<a name="line.176"></a>
-<span class="sourceLineNo">177</span>               w.append("&lt;span style='color:gray'&gt;[EMPTY]&lt;/span&gt;");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            else for (LogParser.Entry le : lp) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>               char s = le.severity.charAt(0);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>               String color = "black";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>               //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.181"></a>
-<span class="sourceLineNo">182</span>               if (s == 'I')<a name="line.182"></a>
-<span class="sourceLineNo">183</span>                  color = "#006400";<a name="line.183"></a>
-<span class="sourceLineNo">184</span>               else if (s == 'W')<a name="line.184"></a>
-<span class="sourceLineNo">185</span>                  color = "#CC8400";<a name="line.185"></a>
-<span class="sourceLineNo">186</span>               else if (s == 'E' || s == 'S')<a name="line.186"></a>
-<span class="sourceLineNo">187</span>                  color = "#DD0000";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>               else if (s == 'D' || s == 'F' || s == 'T')<a name="line.188"></a>
-<span class="sourceLineNo">189</span>                  color = "#000064";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>               w.append("&lt;span style='color:").append(color).append("'&gt;");<a name="line.190"></a>
-<span class="sourceLineNo">191</span>               le.appendHtml(w).append("&lt;/span&gt;");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>            }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            w.append("&lt;/body&gt;&lt;/html&gt;");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>         } finally {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>            lp.close();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>         }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      } finally {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>         w.close();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>   /**<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    *<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    * @param req The HTTP request.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * @param path The log file path.<a name="line.206"></a>
-<span class="sourceLineNo">207</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.207"></a>
-<span class="sourceLineNo">208</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.208"></a>
-<span class="sourceLineNo">209</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.209"></a>
-<span class="sourceLineNo">210</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.210"></a>
-<span class="sourceLineNo">211</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    * @return The parsed contents of the log file.<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    * @throws Exception<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   @RestMethod(<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      name="PARSE",<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      path="/*",<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      converters=Queryable.class,<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      swagger=@MethodSwagger(<a name="line.219"></a>
-<span class="sourceLineNo">220</span>         responses={@Response(200),@Response(404)}<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      )<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   )<a name="line.222"></a>
-<span class="sourceLineNo">223</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.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>      File f = getFile(path);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>      if (f.isDirectory())<a name="line.228"></a>
-<span class="sourceLineNo">229</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return getLogParser(f, startDate, endDate, thread, loggers, severity);<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>   /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    * [DOWNLOAD /*] - Download file.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    *<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    * @param res The HTTP response.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    * @param path The log file path.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    * @return The contents of the log file.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * @throws Exception<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   @RestMethod(<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      name="DOWNLOAD",<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      path="/*",<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      swagger=@MethodSwagger(<a name="line.245"></a>
-<span class="sourceLineNo">246</span>         responses={@Response(200),@Response(404)}<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>   public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>      File f = getFile(path);<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (f.isDirectory())<a name="line.253"></a>
-<span class="sourceLineNo">254</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "Download not available on directories");<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>      res.setContentType("application/octet-stream");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      res.setContentLength((int)f.length());<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      return new FileInputStream(f);<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>   /**<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    * [DELETE /*] - Delete a file.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * @param path The log file path.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    * @return A redirect object to the root.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    * @throws Exception<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   @RestMethod(<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      name="DELETE",<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      path="/*",<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      swagger=@MethodSwagger(<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         responses={@Response(200),@Response(404)}<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>   public Object deleteFile(@PathRemainder String path) throws Exception {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      File f = getFile(path);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (f.isDirectory())<a name="line.279"></a>
-<span class="sourceLineNo">280</span>         throw new RestException(SC_BAD_REQUEST, "Delete not available on directories.");<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>      if (f.canWrite())<a name="line.282"></a>
-<span class="sourceLineNo">283</span>         if (! f.delete())<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            throw new RestException(SC_FORBIDDEN, "Could not delete file.");<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>      return new Redirect(path + "/..");<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>   private static BufferedReader getReader(File f) throws IOException {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      return new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.defaultCharset()));<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>   private File getFile(String path) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (path != null &amp;&amp; path.indexOf("..") != -1)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>         throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      File f = (path == null ? logDir : new File(logDir.getAbsolutePath() + '/' + path));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      if (filter.accept(f))<a name="line.297"></a>
-<span class="sourceLineNo">298</span>         return f;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>   /**<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    * File bean.<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   @SuppressWarnings("javadoc")<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   public static class FileResource {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      private File f;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      public String type;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      public Object name;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      public Long size;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      @Swap(DateSwap.DateTimeMedium.class) public Date lastModified;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      public URI view, highlighted, parsed, download, delete;<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      public FileResource(File f, URI uri) throws Exception {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>         this.f = f;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>         this.type = (f.isDirectory() ? "dir" : "file");<a name="line.316"></a>
-<span class="sourceLineNo">317</span>         this.name = f.isDirectory() ? new Link(f.getName(), uri.toString()) : f.getName();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>         this.size = f.isDirectory() ? null : f.length();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>         this.lastModified = new Date(f.lastModified());<a name="line.319"></a>
-<span class="sourceLineNo">320</span>         if (f.canRead() &amp;&amp; ! f.isDirectory()) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>            this.view = new URI(uri + "?method=VIEW");<a name="line.321"></a>
-<span class="sourceLineNo">322</span>            this.highlighted = new URI(uri + "?method=VIEW&amp;highlight=true");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            this.parsed = new URI(uri + "?method=PARSE");<a name="line.323"></a>
-<span class="sourceLineNo">324</span>            this.download = new URI(uri + "?method=DOWNLOAD");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>            this.delete = new URI(uri + "?method=DELETE");<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><a name="line.329"></a>
-<span class="sourceLineNo">330</span>   private static class FileResourceComparator implements Comparator&lt;FileResource&gt;, Serializable {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      private static final long serialVersionUID = 1L;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      @Override /* Comparator */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      public int compare(FileResource o1, FileResource o2) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>         int c = o1.type.compareTo(o2.type);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>         return c != 0 ? c : o1.f.getName().compareTo(o2.f.getName());<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>   private Object getReader(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      if (start == null &amp;&amp; end == null &amp;&amp; thread == null &amp;&amp; loggers == null)<a name="line.340"></a>
-<span class="sourceLineNo">341</span>         return getReader(f);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return getLogParser(f, start, end, thread, loggers, severity);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>   private LogParser getLogParser(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return new LogParser(leFormatter, f, start, end, thread, loggers, severity);<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">017</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.net.URI;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.nio.charset.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.*;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.annotation.*;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.juneau.dto.*;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.ini.*;<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.annotation.Properties;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.juneau.rest.converters.*;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.juneau.transforms.*;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * REST resource for viewing and accessing log files.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@RestResource(<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   path="/logs",<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   title="Log files",<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   description="Log files from this service",<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   properties={<a name="line.43"></a>
+<span class="sourceLineNo">044</span>      @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   },<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   allowMethodParam="*",<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   pojoSwaps={<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      IteratorSwap.class,       // Allows Iterators and Iterables to be serialized.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      DateSwap.ISO8601DT.class  // Serialize Date objects as ISO8601 strings.<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   }<a name="line.50"></a>
+<span class="sourceLineNo">051</span>)<a name="line.51"></a>
+<span class="sourceLineNo">052</span>@SuppressWarnings("nls")<a name="line.52"></a>
+<span class="sourceLineNo">053</span>public class LogsResource extends Resource {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   private static final long serialVersionUID = 1L;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>   private File logDir;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   private LogEntryFormatter leFormatter;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>   private final FileFilter filter = new FileFilter() {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      @Override /* FileFilter */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      public boolean accept(File f) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>         return f.isDirectory() || f.getName().endsWith(".log");<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><a name="line.65"></a>
+<span class="sourceLineNo">066</span>   /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    * Initializes the log directory and formatter.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    * <a name="line.68"></a>
+<span class="sourceLineNo">069</span>    * @param config The resource config.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    * @throws Exception<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    */<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   @RestHook(INIT) <a name="line.72"></a>
+<span class="sourceLineNo">073</span>   public void init(RestConfig config) throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ConfigFile cf = config.getConfigFile();<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>      logDir = new File(cf.getString("Logging/logDir", "."));<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      leFormatter = new LogEntryFormatter(<a name="line.77"></a>
+<span class="sourceLineNo">078</span>         cf.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.78"></a>
+<span class="sourceLineNo">079</span>         cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.79"></a>
+<span class="sourceLineNo">080</span>         cf.getBoolean("Logging/useStackTraceHashes")<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><a name="line.83"></a>
+<span class="sourceLineNo">084</span>   /**<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    * [GET /*] - Get file details or directory listing.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    *<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    * @param req The HTTP request<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    * @param res The HTTP response<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    * @param properties The writable properties for setting the descriptions.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    * @param path The log file path.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    * @return The log file.<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    * @throws Exception<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   @RestMethod(<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      name="GET",<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      path="/*",<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      swagger=@MethodSwagger(<a name="line.97"></a>
+<span class="sourceLineNo">098</span>         responses={@Response(200),@Response(404)}<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>   public Object getFileOrDirectory(RestRequest req, RestResponse res, @Properties ObjectMap properties, @PathRemainder String path) throws Exception {<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>      File f = getFile(path);<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>      if (f.isDirectory()) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>         Set&lt;FileResource&gt; l = new TreeSet&lt;FileResource&gt;(new FileResourceComparator());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>         File[] files = f.listFiles(filter);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>         if (files != null) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            for (File fc : files) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>               URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.110"></a>
+<span class="sourceLineNo">111</span>               l.add(new FileResource(fc, fUrl));<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>         return l;<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>      return new FileResource(f, new URI("servlet:/"));<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>    * [VIEW /*] - Retrieve the contents of a log file.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    *<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    * @param req The HTTP request.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    * @param res The HTTP response.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    * @param path The log file path.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    * @param properties The writable properties for setting the descriptions.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    * @param highlight If &lt;code&gt;true&lt;/code&gt;, add color highlighting based on severity.<a name="line.127"></a>
+<span class="sourceLineNo">128</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.128"></a>
+<span class="sourceLineNo">129</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.129"></a>
+<span class="sourceLineNo">130</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.130"></a>
+<span class="sourceLineNo">131</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.131"></a>
+<span class="sourceLineNo">132</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    * @throws Exception<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   @RestMethod(<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      name="VIEW",<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      path="/*",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      swagger=@MethodSwagger(<a name="line.138"></a>
+<span class="sourceLineNo">139</span>         responses={@Response(200),@Response(404)}<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      )<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   )<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   @SuppressWarnings("nls")<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   public void viewFile(RestRequest req, RestResponse res, @PathRemainder String path, @Properties ObjectMap 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.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>      File f = getFile(path);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      if (f.isDirectory())<a name="line.146"></a>
+<span class="sourceLineNo">147</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      if (! highlight) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>         Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>         res.setContentType("text/plain");<a name="line.153"></a>
+<span class="sourceLineNo">154</span>         if (o instanceof Reader)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            res.setOutput(o);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>         else {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            LogParser p = (LogParser)o;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>            Writer w = res.getNegotiatedWriter();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>            try {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>               p.writeTo(w);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            } finally {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>               w.flush();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>               w.close();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>            }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>         }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>         return;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      res.setContentType("text/html");<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      PrintWriter w = res.getNegotiatedWriter();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      try {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>         w.println("&lt;html&gt;&lt;body style='font-family:monospace;font-size:8pt;white-space:pre;'&gt;");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>         LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>         try {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            if (! lp.hasNext())<a name="line.175"></a>
+<span class="sourceLineNo">176</span>               w.append("&lt;span style='color:gray'&gt;[EMPTY]&lt;/span&gt;");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            else for (LogParser.Entry le : lp) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>               char s = le.severity.charAt(0);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>               String color = "black";<a name="line.179"></a>
+<span class="sourceLineNo">180</span>               //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.180"></a>
+<span class="sourceLineNo">181</span>               if (s == 'I')<a name="line.181"></a>
+<span class="sourceLineNo">182</span>                  color = "#006400";<a name="line.182"></a>
+<span class="sourceLineNo">183</span>               else if (s == 'W')<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                  color = "#CC8400";<a name="line.184"></a>
+<span class="sourceLineNo">185</span>               else if (s == 'E' || s == 'S')<a name="line.185"></a>
+<span class="sourceLineNo">186</span>                  color = "#DD0000";<a name="line.186"></a>
+<span class="sourceLineNo">187</span>               else if (s == 'D' || s == 'F' || s == 'T')<a name="line.187"></a>
+<span class="sourceLineNo">188</span>                  color = "#000064";<a name="line.188"></a>
+<span class="sourceLineNo">189</span>               w.append("&lt;span style='color:").append(color).append("'&gt;");<a name="line.189"></a>
+<span class="sourceLineNo">190</span>               le.appendHtml(w).append("&lt;/span&gt;");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>            w.append("&lt;/body&gt;&lt;/html&gt;");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>         } finally {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            lp.close();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>         }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      } finally {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>         w.close();<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><a name="line.200"></a>
+<span class="sourceLineNo">201</span>   /**<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    *<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @param req The HTTP request.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    * @param path The log file path.<a name="line.205"></a>
+<span class="sourceLineNo">206</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.206"></a>
+<span class="sourceLineNo">207</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.207"></a>
+<span class="sourceLineNo">208</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.208"></a>
+<span class="sourceLineNo">209</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.209"></a>
+<span class="sourceLineNo">210</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * @return The parsed contents of the log file.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * @throws Exception<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   @RestMethod(<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      name="PARSE",<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      path="/*",<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      converters=Queryable.class,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      swagger=@MethodSwagger(<a name="line.218"></a>
+<span class="sourceLineNo">219</span>         responses={@Response(200),@Response(404)}<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      )<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   )<a name="line.221"></a>
+<span class="sourceLineNo">222</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.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>      File f = getFile(path);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (f.isDirectory())<a name="line.227"></a>
+<span class="sourceLineNo">228</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   }<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>    * [DOWNLOAD /*] - Download file.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    *<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    * @param res The HTTP response.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * @param path The log file path.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * @return The contents of the log file.<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    * @throws Exception<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   @RestMethod(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      name="DOWNLOAD",<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      path="/*",<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      swagger=@MethodSwagger(<a name="line.244"></a>
+<span class="sourceLineNo">245</span>         responses={@Response(200),@Response(404)}<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      )<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   )<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>      File f = getFile(path);<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>      if (f.isDirectory())<a name="line.252"></a>
+<span class="sourceLineNo">253</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "Download not available on directories");<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>      res.setContentType("application/octet-stream");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      res.setContentLength((int)f.length());<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      return new FileInputStream(f);<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>    * [DELETE /*] - Delete a file.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    *<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    * @param path The log file path.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @return A redirect object to the root.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    * @throws Exception<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   @RestMethod(<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      name="DELETE",<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      path="/*",<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      swagger=@MethodSwagger(<a name="line.270"></a>
+<span class="sourceLineNo">271</span>         responses={@Response(200),@Response(404)}<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>   public Object deleteFile(@PathRemainder String path) throws Exception {<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>      File f = getFile(path);<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>      if (f.isDirectory())<a name="line.278"></a>
+<span class="sourceLineNo">279</span>         throw new RestException(SC_BAD_REQUEST, "Delete not available on directories.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>      if (f.canWrite())<a name="line.281"></a>
+<span class="sourceLineNo">282</span>         if (! f.delete())<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            throw new RestException(SC_FORBIDDEN, "Could not delete file.");<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>      return new Redirect(path + "/..");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>   private static BufferedReader getReader(File f) throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.defaultCharset()));<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>   private File getFile(String path) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (path != null &amp;&amp; path.indexOf("..") != -1)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>         throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      File f = (path == null ? logDir : new File(logDir.getAbsolutePath() + '/' + path));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (filter.accept(f))<a name="line.296"></a>
+<span class="sourceLineNo">297</span>         return f;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      throw new RestException(SC_NOT_FOUND, "File not found.");<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>   /**<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * File bean.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    */<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   @SuppressWarnings("javadoc")<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   public static class FileResource {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      private File f;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      public String type;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      public Object name;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      public Long size;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      @Swap(DateSwap.DateTimeMedium.class) public Date lastModified;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      public URI view, highlighted, parsed, download, delete;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>      public FileResource(File f, URI uri) throws Exception {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>         this.f = f;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>         this.type = (f.isDirectory() ? "dir" : "file");<a name="line.315"></a>
+<span class="sourceLineNo">316</span>         this.name = f.isDirectory() ? new Link(f.getName(), uri.toString()) : f.getName();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>         this.size = f.isDirectory() ? null : f.length();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>         this.lastModified = new Date(f.lastModified());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>         if (f.canRead() &amp;&amp; ! f.isDirectory()) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            this.view = new URI(uri + "?method=VIEW");<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            this.highlighted = new URI(uri + "?method=VIEW&amp;highlight=true");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            this.parsed = new URI(uri + "?method=PARSE");<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            this.download = new URI(uri + "?method=DOWNLOAD");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>            this.delete = new URI(uri + "?method=DELETE");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>         }<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>   private static class FileResourceComparator implements Comparator&lt;FileResource&gt;, Serializable {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      private static final long serialVersionUID = 1L;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      @Override /* Comparator */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      public int compare(FileResource o1, FileResource o2) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         int c = o1.type.compareTo(o2.type);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>         return c != 0 ? c : o1.f.getName().compareTo(o2.f.getName());<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>   private Object getReader(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (start == null &amp;&amp; end == null &amp;&amp; thread == null &amp;&amp; loggers == null)<a name="line.339"></a>
+<span class="sourceLineNo">340</span>         return getReader(f);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      return getLogParser(f, start, end, thread, loggers, severity);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>   private LogParser getLogParser(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      return new LogParser(leFormatter, f, start, end, thread, loggers, severity);<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>
 
 
 


[20/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/JettyLogger.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/JettyLogger.html b/content/site/apidocs/org/apache/juneau/microservice/JettyLogger.html
new file mode 100644
index 0000000..4f43287
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/microservice/JettyLogger.html
@@ -0,0 +1,547 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JettyLogger (Apache Juneau (incubating) 6.4.1-incubating-SNAPSHOT)</title>
+<link rel="stylesheet" type="text/css" href="../../../../javadoc.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JettyLogger (Apache Juneau (incubating) 6.4.1-incubating-SNAPSHOT)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/Microservice.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/JettyLogger.html" target="_top">Frames</a></li>
+<li><a href="JettyLogger.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.eclipse.jetty.util.log.AbstractLogger">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.juneau.microservice</div>
+<h2 title="Class JettyLogger" class="title">Class JettyLogger</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.eclipse.jetty.util.log.AbstractLogger</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.juneau.microservice.JettyLogger</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.eclipse.jetty.util.log.Logger</dd>
+</dl>
+<hr>
+<br>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.39">JettyLogger</a>
+extends org.eclipse.jetty.util.log.AbstractLogger</pre>
+<div class="block">Implementation of Jetty <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"><code>Logger</code></a> based on <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"><code>Logger</code></a>.
+ 
+ <p>
+ Allows Jetty to log to the Java Util logging framework (and thus to the main log file defined in the 
+ <cc>[Logging]</cc> section).
+ 
+ <p>
+ Can be used by setting the following system property in the microservice config file.
+ 
+ <p class='bcode'>
+   <cs>[SystemProperties]</cs>
+   
+   <cc># Configure Jetty to log using java-util logging</cc>
+   <ck>org.eclipse.jetty.util.log.class</ck> = org.apache.juneau.microservice.JettyLogger
+ </p></div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.eclipse.jetty.util.log.AbstractLogger">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.eclipse.jetty.util.log.AbstractLogger</h3>
+<code>LEVEL_ALL, LEVEL_DEBUG, LEVEL_DEFAULT, LEVEL_INFO, LEVEL_OFF, LEVEL_WARN</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#JettyLogger--">JettyLogger</a></span>()</code>
+<div class="block">Default constructor.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#JettyLogger-java.lang.String-">JettyLogger</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;name)</code>
+<div class="block">Normal constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.String-long-">debug</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;msg,
+     long&nbsp;arg)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.String-java.lang.Object...-">debug</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;msg,
+     <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)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.String-java.lang.Throwable-">debug</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;msg,
+     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#debug-java.lang.Throwable-">debug</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#getName--">getName</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#ignore-java.lang.Throwable-">ignore</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ignored)</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#info-java.lang.String-java.lang.Object...-">info</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;msg,
+    <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)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#info-java.lang.String-java.lang.Throwable-">info</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;msg,
+    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#info-java.lang.Throwable-">info</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#isDebugEnabled--">isDebugEnabled</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>protected org.eclipse.jetty.util.log.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#newLogger-java.lang.String-">newLogger</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;fullname)</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#setDebugEnabled-boolean-">setDebugEnabled</a></span>(boolean&nbsp;enabled)</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#warn-java.lang.String-java.lang.Object...-">warn</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;msg,
+    <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)</code>&nbsp;</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#warn-java.lang.String-java.lang.Throwable-">warn</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;msg,
+    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html#warn-java.lang.Throwable-">warn</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.eclipse.jetty.util.log.AbstractLogger">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.eclipse.jetty.util.log.AbstractLogger</h3>
+<code>condensePackageString, getLevelId, getLogger, getLoggingProperty, lookupLoggingLevel</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JettyLogger--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>JettyLogger</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.51">JettyLogger</a>()</pre>
+<div class="block">Default constructor.
+ 
+ <p>
+ Returns the logger with name <js>"org.eclipse.jetty.util.log.javautil"</js>.</div>
+</li>
+</ul>
+<a name="JettyLogger-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JettyLogger</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.60">JettyLogger</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>
+<div class="block">Normal constructor.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The logger name.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getName--">
+<!--   -->
+</a>
+<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/JettyLogger.html#line.66">getName</a>()</pre>
+</li>
+</ul>
+<a name="warn-java.lang.String-java.lang.Object...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>warn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.71">warn</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;msg,
+                 <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>
+</li>
+</ul>
+<a name="warn-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>warn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.77">warn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</pre>
+</li>
+</ul>
+<a name="warn-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>warn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.83">warn</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;msg,
+                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</pre>
+</li>
+</ul>
+<a name="info-java.lang.String-java.lang.Object...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>info</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.89">info</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;msg,
+                 <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>
+</li>
+</ul>
+<a name="info-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>info</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.95">info</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</pre>
+</li>
+</ul>
+<a name="info-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>info</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.101">info</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;msg,
+                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</pre>
+</li>
+</ul>
+<a name="isDebugEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isDebugEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.107">isDebugEnabled</a>()</pre>
+</li>
+</ul>
+<a name="setDebugEnabled-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDebugEnabled</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.112">setDebugEnabled</a>(boolean&nbsp;enabled)</pre>
+</li>
+</ul>
+<a name="debug-java.lang.String-java.lang.Object...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>debug</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.122">debug</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;msg,
+                  <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>
+</li>
+</ul>
+<a name="debug-java.lang.String-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>debug</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.128">debug</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;msg,
+                  long&nbsp;arg)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>debug</code>&nbsp;in interface&nbsp;<code>org.eclipse.jetty.util.log.Logger</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>debug</code>&nbsp;in class&nbsp;<code>org.eclipse.jetty.util.log.AbstractLogger</code></dd>
+</dl>
+</li>
+</ul>
+<a name="debug-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>debug</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.134">debug</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</pre>
+</li>
+</ul>
+<a name="debug-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>debug</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.140">debug</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;msg,
+                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;thrown)</pre>
+</li>
+</ul>
+<a name="newLogger-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newLogger</h4>
+<pre>protected&nbsp;org.eclipse.jetty.util.log.Logger&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.146">newLogger</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;fullname)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>newLogger</code>&nbsp;in class&nbsp;<code>org.eclipse.jetty.util.log.AbstractLogger</code></dd>
+</dl>
+</li>
+</ul>
+<a name="ignore-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ignore</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.151">ignore</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ignored)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/Microservice.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/JettyLogger.html" target="_top">Frames</a></li>
+<li><a href="JettyLogger.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.eclipse.jetty.util.log.AbstractLogger">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2017 <a href="http://www.apache.org/">Apache</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/Microservice.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/Microservice.html b/content/site/apidocs/org/apache/juneau/microservice/Microservice.html
index cc620f9..148f38d 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":9,"i2":9,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":9,"i11":10,"i12":9,"i13":9,"i14":9,"i15":10,"i16":10,"i17":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"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};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -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/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>
 </ul>
 <ul class="navList">
@@ -112,7 +112,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.102">Microservice</a>
+<pre>public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.106">Microservice</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">Parent class for all microservices.
  
@@ -231,105 +231,129 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code>protected static <a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a></code></td>
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#getArgs--">getArgs</a></span>()</code>
 <div class="block">Returns the command-line arguments passed into the application.</div>
 </td>
 </tr>
 <tr id="i2" class="altColor">
-<td class="colFirst"><code>protected static <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a></code></td>
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#getConfig--">getConfig</a></span>()</code>
 <div class="block">Returns the external INI-style configuration file that can be used to configure your microservice.</div>
 </td>
 </tr>
 <tr id="i3" class="rowColor">
-<td class="colFirst"><code>protected static <a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a></code></td>
+<td class="colFirst"><code>static <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#getInstance--">getInstance</a></span>()</code>
+<div class="block">Returns the Microservice instance.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#getLogger--">getLogger</a></span>()</code>
+<div class="block">Returns the logger for this microservice.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#getManifest--">getManifest</a></span>()</code>
 <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>.</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i6" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#getVarResolver--">getVarResolver</a></span>()</code>
+<div class="block">Returns the variable resolver for resolving variables in strings and files.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#initLogging--">initLogging</a></span>()</code>
+<div class="block">Initialize the logging for this microservice.</div>
+</td>
+</tr>
+<tr id="i8" 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#join--">join</a></span>()</code>
 <div class="block">Joins the application with the current thread.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#kill--">kill</a></span>()</code>
 <div class="block">Kill the JVM by calling <code>System.exit(2);</code>.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#onConfigChange-org.apache.juneau.ini.ConfigFile-java.util.Set-">onConfigChange</a></span>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf,
               <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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;changes)</code>
 <div class="block">Called if one or more changes occur in the config file.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#onConfigSave-org.apache.juneau.ini.ConfigFile-">onConfigSave</a></span>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</code>
 <div class="block">Called if the <a href="../../../../org/apache/juneau/ini/ConfigFile.html#save--"><code>ConfigFile.save()</code></a> is called on the config file.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#onStart--">onStart</a></span>()</code>
 <div class="block">Called at the beginning of the <a href="../../../../org/apache/juneau/microservice/Microservice.html#start--"><code>start()</code></a> call.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Microservice.html#onStop--">onStop</a></span>()</code>
 <div class="block">Called at the end of the <a href="../../../../org/apache/juneau/microservice/Microservice.html#stop--"><code>stop()</code></a> call.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>static void</code></td>
+<tr id="i14" 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.ini.ConfigFile-">setConfig</a></span>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</code>
 <div class="block">Specifies the config file for this microservice.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i15" 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="i12" class="altColor">
-<td class="colFirst"><code>static void</code></td>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>void</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="i13" class="rowColor">
-<td class="colFirst"><code>static void</code></td>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>void</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="i14" class="altColor">
-<td class="colFirst"><code>static void</code></td>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>void</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">Specifies the manifest file of the jar file this microservice is contained within.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<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#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="i16" class="altColor">
+<tr id="i20" 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#start--">start</a></span>()</code>
 <div class="block">Start this application.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<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#stop--">stop</a></span>()</code>
 <div class="block">Stop this application.</div>
@@ -363,7 +387,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Microservice</h4>
-<pre>protected&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.116">Microservice</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;args)
+<pre>protected&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.138">Microservice</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;args)
                 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">Constructor.</div>
 <dl>
@@ -382,13 +406,30 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="getInstance--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInstance</h4>
+<pre>public static&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.126">getInstance</a>()</pre>
+<div class="block">Returns the Microservice instance.  
+ <p>
+ This method only works if there's only one Microservice instance in a JVM.  
+ Otherwise, it's just overwritten by the last call to <a href="../../../../org/apache/juneau/microservice/Microservice.html#Microservice-java.lang.String...-"><code>Microservice(String...)</code></a>.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The Microservice instance, or <jk>null</jk> if there isn't one.</dd>
+</dl>
+</li>
+</ul>
 <a name="setConfig-java.lang.String-boolean-">
 <!--   -->
 </a>
 <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.140">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.170">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.
@@ -421,7 +462,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setConfig</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.161">setConfig</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.191">setConfig</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
 <div class="block">Specifies the config file for this microservice.
  
  <p>
@@ -439,7 +480,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifest</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.179">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;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.209">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">Specifies the manifest file of the jar file this microservice is contained within.
  
  <p>
@@ -462,7 +503,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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.190">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.220">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>
@@ -481,8 +522,8 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifest</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.202">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;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.232">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>
@@ -498,8 +539,8 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setManifest</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.213">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;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.243">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>
@@ -516,7 +557,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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.266">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.296">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>
@@ -574,7 +615,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getArgs</h4>
-<pre>protected static&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.288">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.318">getArgs</a>()</pre>
 <div class="block">Returns the command-line arguments passed into the application.
  
  <p>
@@ -594,7 +635,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfig</h4>
-<pre>protected static&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.385">getConfig</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.415">getConfig</a>()</pre>
 <div class="block">Returns the external INI-style configuration file that can be used to configure your microservice.
  
  <p>
@@ -696,7 +737,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getManifest</h4>
-<pre>protected static&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.409">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.439">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>
@@ -719,13 +760,43 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="getVarResolver--">
+<!--   -->
+</a>
+<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.450">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>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The VarResolver used by this Microservice, or <jk>null</jk> if it was never created.</dd>
+</dl>
+</li>
+</ul>
+<a name="getLogger--">
+<!--   -->
+</a>
+<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.459">getLogger</a>()</pre>
+<div class="block">Returns the logger for this microservice.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The logger for this microservice.</dd>
+</dl>
+</li>
+</ul>
 <a name="start--">
 <!--   -->
 </a>
 <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.430">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.479">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.
  
@@ -742,13 +813,96 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="initLogging--">
+<!--   -->
+</a>
+<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.686">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.
+ 
+ <p>
+ Subclasses can override this method to provide customized logging.
+ 
+ <p>
+ The default implementation uses the <cs>Logging</cs> section in the config file to set up logging:
+ <p class='bcode'>
+   <cc>#================================================================================
+   # Logger settings
+   # See FileHandler Java class for details.
+   #================================================================================</cc>
+   <cs>[Logging]</cs>
+
+   <cc># The directory where to create the log file.
+   # Default is ".".</cc>
+   <ck>logDir</ck> = logs
+
+   <cc># The name of the log file to create for the main logger.
+   # The logDir and logFile make up the pattern that's passed to the FileHandler
+   # constructor.
+   # If value is not specified, then logging to a file will not be set up.</cc>
+   <ck>logFile</ck> = microservice.%g.log
+
+   <cc># Whether to append to the existing log file or create a new one.
+   # Default is false.</cc>
+   <ck>append</ck> =
+
+   <cc># The SimpleDateFormat format to use for dates.
+   # Default is "yyyy.MM.dd hh:mm:ss".</cc>
+   <ck>dateFormat</ck> =
+
+   <cc># The log message format.
+   # The value can contain any of the following variables:
+   #  {date} - The date, formatted per dateFormat.
+   #  {class} - The class name.
+   #  {method} - The method name.
+   #  {logger} - The logger name.
+   #  {level} - The log level name.
+   #  {msg} - The log message.
+   #  {threadid} - The thread ID.
+   #  {exception} - The localized exception message.
+   # Default is "[{date} {level}] {msg}%n".</cc>
+   <ck>format</ck> =
+
+   <cc># The maximum log file size.
+   # Suffixes available for numbers.
+   # See ConfigFile.getInt(String,int) for details.
+   # Default is 1M.</cc>
+   <ck>limit</ck> = 10M
+
+   <cc># Max number of log files.
+   # Default is 1.</cc>
+   <ck>count</ck> = 5
+
+   <cc># Default log levels.
+   # Keys are logger names.
+   # Values are serialized Level POJOs.</cc>
+   <ck>levels</ck> = { org.apache.juneau:'INFO' }
+
+   <cc># Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.
+   # Useful for preventing log files from filling up with duplicate stack traces.
+   # Default is false.</cc>
+   <ck>useStackTraceHashes</ck> = true
+
+   <cc># The default level for the console logger.
+   # Default is WARNING.</cc>
+   <ck>consoleLevel</ck> = WARNING
+ </p></div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
 <a name="join--">
 <!--   -->
 </a>
 <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.561">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.726">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.
  
@@ -768,7 +922,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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.576">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.741">stop</a>()</pre>
 <div class="block">Stop this application.
  
  <p>
@@ -788,7 +942,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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.584">kill</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.749">kill</a>()</pre>
 <div class="block">Kill the JVM by calling <code>System.exit(2);</code>.</div>
 </li>
 </ul>
@@ -798,7 +952,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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.601">onStart</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.766">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>
@@ -811,7 +965,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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.609">onStop</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.774">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>
@@ -824,7 +978,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>onConfigSave</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.619">onConfigSave</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.784">onConfigSave</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
 <div class="block">Called if the <a href="../../../../org/apache/juneau/ini/ConfigFile.html#save--"><code>ConfigFile.save()</code></a> is called on the config file.
  
  <p>
@@ -841,7 +995,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onConfigChange</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.630">onConfigChange</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.795">onConfigChange</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf,
                               <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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;changes)</pre>
 <div class="block">Called if one or more changes occur in the config file.
  
@@ -881,7 +1035,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li>Prev&nbsp;Class</li>
+<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>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/Resource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/Resource.html b/content/site/apidocs/org/apache/juneau/microservice/Resource.html
index 726c12b..6bebccd 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/Resource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/Resource.html
@@ -132,13 +132,13 @@ var activeTableTab = "activeTableTab";
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<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/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources">DirectoryResource</a>, <a href="../../../../org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample">HelloWorldResource</a>, <a href="../../../../org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource</a>, <a href="../../../../org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources">ShutdownResource</a></dd>
+<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>, <a href="../../../../org/apache/juneau/microservice/sample/HelloWorldResource.html" title="class in org.apache.juneau.microservice.sample">HelloWorldResource</a>, <a href="../../../../org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource</a>, <a href="../../../../org/apache/juneau/microservice/resources/ShutdownResource.html" title="class in org.apache.juneau.microservice.resources">ShutdownResource</a></dd>
 </dl>
 <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#htmldoc--">htmldoc</a>=,
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#config--">config</a>="$S{juneau.configFile}")
-public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.57">Resource</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.56">Resource</a>
 extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></pre>
 <div class="block">Superclass for all REST resources.
  
@@ -263,7 +263,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Resource</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.57">Resource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.56">Resource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" tit
 <li class="blockList">
 <h4>addConfigVars</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/Resource.html#line.66">addConfigVars</a>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
+public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.65">addConfigVars</a>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
                                          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">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/ResourceGroup.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/ResourceGroup.html b/content/site/apidocs/org/apache/juneau/microservice/ResourceGroup.html
index f486790..643b741 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/ResourceGroup.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/ResourceGroup.html
@@ -143,7 +143,7 @@ var activeTableTab = "activeTableTab";
 <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#htmldoc--">htmldoc</a>=,
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#config--">config</a>="$S{juneau.configFile}")
-public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.58">ResourceGroup</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.57">ResourceGroup</a>
 extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></pre>
 <div class="block">Superclass for all REST resource groups.
  
@@ -276,7 +276,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ResourceGroup</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.58">ResourceGroup</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.57">ResourceGroup</a>()</pre>
 </li>
 </ul>
 </li>
@@ -294,7 +294,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
 <li class="blockList">
 <h4>addConfigVars</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/ResourceGroup.html#line.67">addConfigVars</a>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
+public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.66">addConfigVars</a>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
                                          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 registry URL and rest clent.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html b/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html
index 2dc7c3d..cdc1a7b 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html
@@ -141,7 +141,7 @@ var activeTableTab = "activeTableTab";
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#config--">config</a>="$S{juneau.configFile}",
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#serializers--">serializers</a>={<a href="../../../../org/apache/juneau/jena/RdfSerializer.Xml.html" title="class in org.apache.juneau.jena">RdfSerializer.Xml.class</a>,<a href="../../../../org/apache/juneau/jena/RdfSerializer.XmlAbbrev.html" title="class in org.apache.juneau.jena">RdfSerializer.XmlAbbrev.class</a>,<a href="../../../../org/apache/juneau/jena/RdfSerializer.Turtle.html" title="class in org.apache.juneau.jena">RdfSerializer.Turtle.class</a>,<a href="../../../../org/apache/juneau/jena/RdfSerializer.NTriple.html" title="class in org.apache.juneau.jena">RdfSerializer.NTriple.class</a>,<a href="../../../../org/apache/juneau/jena/RdfSerializer.N3.html" title="class in org.apache.juneau.jena">RdfSerializer.N3.class</a>},
               <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#parsers--">parsers</a>={<a href="../../../../org/apache/juneau/jena/RdfParser.Xml.html" title="class in org.apache.juneau.jena">RdfParser.Xml.class</a>,<a href="../../../../org/apache/juneau/jena/RdfParser.Turtle.html" title="class in org.apache.juneau.jena">RdfParser.Turtle.class</a>,<a href="../../../../org/apache/juneau/jena/RdfParser.NTriple.html" title="class in org.apache.juneau.jena">RdfParser.NTriple.class</a>,<a href="../../../../org/apache/juneau/jena/RdfParser.N3.html" title="class in org.apache.juneau.jena">RdfParser.N3.class</a>})
-public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.72">ResourceJenaGroup</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.71">ResourceJenaGroup</a>
 extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html" title="class in org.apache.juneau.rest">RestServletGroupDefault</a></pre>
 <div class="block">Superclass for all REST resource groups.
  
@@ -274,7 +274,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ResourceJenaGroup</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.72">ResourceJenaGroup</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.71">ResourceJenaGroup</a>()</pre>
 </li>
 </ul>
 </li>
@@ -292,7 +292,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
 <li class="blockList">
 <h4>addConfigVars</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/ResourceJenaGroup.html#line.81">addConfigVars</a>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
+public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.80">addConfigVars</a>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;config)
                                          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">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
 <dl>


[17/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/rest/RestConfig.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestConfig.html b/content/site/apidocs/org/apache/juneau/rest/RestConfig.html
index dbdb667..9e73ad7 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestConfig.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestConfig.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":10,"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,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"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,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -417,192 +417,234 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 </tr>
 <tr id="i38" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setAllowBodyParam-boolean-">setAllowBodyParam</a></span>(boolean&nbsp;value)</code>
+<div class="block">Sets the <code>allowBodyParam</code> setting on this resource.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setAllowHeaderParams-boolean-">setAllowHeaderParams</a></span>(boolean&nbsp;value)</code>
+<div class="block">Sets the <code>allowHeaderParams</code> setting on this resource.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setAllowMethodParam-java.lang.String...-">setAllowMethodParam</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;value)</code>
+<div class="block">Sets the <code>allowMethodParam</code> setting on this resource.</div>
+</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setCallHandler-java.lang.Class-">setCallHandler</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;? extends <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>&gt;&nbsp;restHandler)</code>
 <div class="block">Overrides the call handler for the resource.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setCallHandler-org.apache.juneau.rest.RestCallHandler-">setCallHandler</a></span>(<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>&nbsp;restHandler)</code>
 <div class="block">Overrides the call handler for the resource.</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setClientVersionHeader-java.lang.String-">setClientVersionHeader</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;clientVersionHeader)</code>
 <div class="block">Sets name of the header used to denote the client version on HTTP requests.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setConfigFile-org.apache.juneau.ini.ConfigFile-">setConfigFile</a></span>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;configFile)</code>
 <div class="block">Overwrites the default config file with a custom config file.</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i45" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setDefaultCharset-java.lang.String-">setDefaultCharset</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;value)</code>
+<div class="block">Sets the <code>defaultCharset</code> setting on this resource.</div>
+</td>
+</tr>
+<tr id="i46" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setFavIcon-java.lang.Class-java.lang.String-">setFavIcon</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;resourceClass,
           <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;resourcePath)</code>
 <div class="block">Specifies the icon contents that make up the contents of the page <js>"/resource-path/favicon.ico"</js>.</div>
 </td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setFavIcon-java.lang.Object-">setFavIcon</a></span>(<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;favIcon)</code>
 <div class="block">Specifies the icon contents that make up the contents of the page <js>"/resource-path/favicon.ico"</js>.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlAside-java.lang.String-">setHtmlAside</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;value)</code>
 <div class="block">Sets the HTML aside section contents.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlFooter-java.lang.String-">setHtmlFooter</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;value)</code>
 <div class="block">Sets the HTML footer section contents.</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlHeader-java.lang.String-">setHtmlHeader</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;value)</code>
 <div class="block">Sets the HTML header section contents.</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlLinks-java.lang.String:A-">setHtmlLinks</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;value)</code>
 <div class="block">Sets the links in the HTML nav section.</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlNav-java.lang.String-">setHtmlNav</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;value)</code>
 <div class="block">Sets the HTML nav section contents.</div>
 </td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlNoResultsMessage-java.lang.String-">setHtmlNoResultsMessage</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;value)</code>
 <div class="block">Specifies the text to display when serializing an empty array or collection.</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlNoWrap-boolean-">setHtmlNoWrap</a></span>(boolean&nbsp;value)</code>
 <div class="block">Shorthand method for forcing the rendered HTML content to be no-wrap.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlScript-java.lang.String-">setHtmlScript</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;value)</code>
 <div class="block">Sets the HTML script section contents.</div>
 </td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlStyle-java.lang.String-">setHtmlStyle</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;value)</code>
 <div class="block">Sets the HTML CSS style section contents.</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlStylesheet-java.lang.String-">setHtmlStylesheet</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;value)</code>
 <div class="block">Sets the CSS URL in the HTML CSS style section.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlTemplate-java.lang.Class-">setHtmlTemplate</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;? extends <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>&gt;&nbsp;value)</code>
 <div class="block">Specifies the template class to use for rendering the HTML page.</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setHtmlTemplate-org.apache.juneau.html.HtmlDocTemplate-">setHtmlTemplate</a></span>(<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>&nbsp;value)</code>
 <div class="block">Specifies the template class to use for rendering the HTML page.</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setInfoProvider-java.lang.Class-">setInfoProvider</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;? extends <a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>&gt;&nbsp;infoProvider)</code>
 <div class="block">Overrides the info provider for the resource.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setInfoProvider-org.apache.juneau.rest.RestInfoProvider-">setInfoProvider</a></span>(<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>&nbsp;infoProvider)</code>
 <div class="block">Overrides the info provider for the resource.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setLogger-java.lang.Class-">setLogger</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;? extends <a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>&gt;&nbsp;logger)</code>
 <div class="block">Overrides the logger for the resource.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setLogger-org.apache.juneau.rest.RestLogger-">setLogger</a></span>(<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>&nbsp;logger)</code>
 <div class="block">Overrides the logger for the resource.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i64" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setParamFormat-java.lang.String-">setParamFormat</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;value)</code>
+<div class="block">Sets the <code>paramFormat</code> setting on this resource.</div>
+</td>
+</tr>
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setPath-java.lang.String-">setPath</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;path)</code>
 <div class="block">Sets the URL path of the resource <js>"/foobar"</js>.</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setProperties-java.util.Map-">setProperties</a></span>(<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/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</code>
 <div class="block">Sets multiple properties on this resource.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setProperty-java.lang.String-java.lang.Object-">setProperty</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;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)</code>
 <div class="block">Sets a property on this resource.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i68" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setRenderResponseStackTraces-boolean-">setRenderResponseStackTraces</a></span>(boolean&nbsp;value)</code>
+<div class="block">Sets the <code>renderResponseStackTraces</code> setting on this resource.</div>
+</td>
+</tr>
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setResourceResolver-java.lang.Class-">setResourceResolver</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;? extends <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&gt;&nbsp;resourceResolver)</code>
 <div class="block">Overrides the default REST resource resolver.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setResourceResolver-org.apache.juneau.rest.RestResourceResolver-">setResourceResolver</a></span>(<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;resourceResolver)</code>
 <div class="block">Overrides the default REST resource resolver.</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setSupportedAcceptTypes-org.apache.juneau.http.MediaType...-">setSupportedAcceptTypes</a></span>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;mediaTypes)</code>
 <div class="block">Specifies the list of supported <code>Accept</code> media types for this resource.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setSupportedAcceptTypes-java.lang.String...-">setSupportedAcceptTypes</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;mediaTypes)</code>
 <div class="block">Specifies the list of supported <code>Accept</code> media types for this resource.</div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setSupportedContentTypes-org.apache.juneau.http.MediaType...-">setSupportedContentTypes</a></span>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;mediaTypes)</code>
 <div class="block">Specifies the list of supported <code>Content-Type</code> media types for this resource.</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setSupportedContentTypes-java.lang.String...-">setSupportedContentTypes</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;mediaTypes)</code>
 <div class="block">Specifies the list of supported <code>Content-Type</code> media types for this resource.</div>
 </td>
 </tr>
+<tr id="i75" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestConfig.html#setUseStackTraceHashes-boolean-">setUseStackTraceHashes</a></span>(boolean&nbsp;value)</code>
+<div class="block">Sets the <code>useStackTraceHashes</code> setting on this resource.</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -631,7 +673,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RestConfig</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.146">RestConfig</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true" title="class or interface in javax.servlet">ServletConfig</a>&nbsp;config,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.147">RestConfig</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true" title="class or interface in javax.servlet">ServletConfig</a>&nbsp;config,
                   <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;resourceClass)
            throws <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletException.html?is-external=true" title="class or interface in javax.servlet">ServletException</a></pre>
 <div class="block">Constructor for top-level servlets when using dependency injection.
@@ -661,7 +703,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addVars</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.342">addVars</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.357">addVars</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>
@@ -703,7 +745,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addVarContextObject</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.367">addVarContextObject</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.382">addVarContextObject</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.
 
@@ -734,7 +776,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setConfigFile</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.383">setConfigFile</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;configFile)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.398">setConfigFile</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;configFile)</pre>
 <div class="block">Overwrites the default config file with a custom config file.
 
  <p>
@@ -755,7 +797,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setProperty</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.398">setProperty</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;key,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.413">setProperty</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;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">Sets a property on this resource.
 
@@ -776,7 +818,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setProperties</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.415">setProperties</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/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.430">setProperties</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/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</pre>
 <div class="block">Sets multiple properties on this resource.
 
  <p>
@@ -798,7 +840,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addBeanFilters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.434">addBeanFilters</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;beanFilters)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.449">addBeanFilters</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;beanFilters)</pre>
 <div class="block">Adds class-level bean filters to this resource.
 
  <p>
@@ -822,7 +864,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addPojoSwaps</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.452">addPojoSwaps</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;pojoSwaps)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.467">addPojoSwaps</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;pojoSwaps)</pre>
 <div class="block">Adds class-level pojo swaps to this resource.
 
  <p>
@@ -845,7 +887,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>serializerListener</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.467">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" title="class in org.apache.juneau.serializer">SerializerListener</a>&gt;&nbsp;listener)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.482">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" title="class in org.apache.juneau.serializer">SerializerListener</a>&gt;&nbsp;listener)</pre>
 <div class="block">Specifies the serializer listener class to use for listening to non-fatal serialization errors.
 
  <p>
@@ -865,7 +907,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>parserListener</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.483">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 in org.apache.juneau.parser">ParserListener</a>&gt;&nbsp;listener)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.498">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 in org.apache.juneau.parser">ParserListener</a>&gt;&nbsp;listener)</pre>
 <div class="block">Specifies the parser listener class to use for listening to non-fatal parse errors.
 
  <p>
@@ -885,7 +927,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>contextPath</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.499">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;contextPath)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.514">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;contextPath)</pre>
 <div class="block">Specifies the override context path for this resource.
 
  <p>
@@ -905,7 +947,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addParamResolvers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.515">addParamResolvers</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.apache.juneau.rest">RestParam</a>&gt;...&nbsp;paramResolvers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.530">addParamResolvers</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.apache.juneau.rest">RestParam</a>&gt;...&nbsp;paramResolvers)</pre>
 <div class="block">Adds class-level parameter resolvers to this resource.
 
  <p>
@@ -925,7 +967,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addSerializers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.534">addSerializers</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;serializers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.549">addSerializers</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;serializers)</pre>
 <div class="block">Adds class-level serializers to this resource.
 
  <p>
@@ -949,7 +991,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addSerializers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.557">addSerializers</a>(<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>...&nbsp;serializers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.572">addSerializers</a>(<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>...&nbsp;serializers)</pre>
 <div class="block">Adds class-level serializers to this resource.
 
  <p>
@@ -977,7 +1019,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addParsers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.575">addParsers</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;parsers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.590">addParsers</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;parsers)</pre>
 <div class="block">Adds class-level parsers to this resource.
 
  <p>
@@ -1000,7 +1042,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addParsers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.598">addParsers</a>(<a href="../../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser">Parser</a>...&nbsp;parsers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.613">addParsers</a>(<a href="../../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser">Parser</a>...&nbsp;parsers)</pre>
 <div class="block">Adds class-level parsers to this resource.
 
  <p>
@@ -1028,7 +1070,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addEncoders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.619">addEncoders</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;encoders)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.634">addEncoders</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;encoders)</pre>
 <div class="block">Adds class-level encoders to this resource.
 
  <p>
@@ -1054,7 +1096,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addEncoders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.633">addEncoders</a>(<a href="../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders">Encoder</a>...&nbsp;encoders)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.648">addEncoders</a>(<a href="../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders">Encoder</a>...&nbsp;encoders)</pre>
 <div class="block">Adds class-level encoders to this resource.
 
  <p>
@@ -1073,7 +1115,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addConverters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.663">addConverters</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;converters)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.678">addConverters</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;converters)</pre>
 <div class="block">Adds class-level converters to this resource.
 
  <p>
@@ -1108,7 +1150,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addConverters</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.677">addConverters</a>(<a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>...&nbsp;converters)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.692">addConverters</a>(<a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>...&nbsp;converters)</pre>
 <div class="block">Adds class-level encoders to this resource.
 
  <p>
@@ -1127,7 +1169,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addGuards</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.695">addGuards</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;guards)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.710">addGuards</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;guards)</pre>
 <div class="block">Adds class-level guards to this resource.
 
  <p>
@@ -1150,7 +1192,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addGuards</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.709">addGuards</a>(<a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>...&nbsp;guards)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.724">addGuards</a>(<a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>...&nbsp;guards)</pre>
 <div class="block">Adds class-level guards to this resource.
 
  <p>
@@ -1169,7 +1211,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addMimeTypes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.730">addMimeTypes</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;mimeTypes)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.745">addMimeTypes</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;mimeTypes)</pre>
 <div class="block">Adds MIME-type definitions.
 
  <p>
@@ -1195,7 +1237,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addDefaultRequestHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.754">addDefaultRequestHeader</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.769">addDefaultRequestHeader</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">Adds class-level default HTTP request headers to this resource.
 
@@ -1222,7 +1264,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addDefaultRequestHeaders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.775">addDefaultRequestHeaders</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.790">addDefaultRequestHeaders</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">Adds class-level default HTTP request headers to this resource.
 
@@ -1250,7 +1292,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addDefaultResponseHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.804">addDefaultResponseHeader</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.819">addDefaultResponseHeader</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">Adds class-level default HTTP response headers to this resource.
 
@@ -1280,7 +1322,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addDefaultResponseHeaders</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.824">addDefaultResponseHeaders</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.839">addDefaultResponseHeaders</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">Adds class-level default HTTP response headers to this resource.
 
@@ -1307,7 +1349,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addResponseHandlers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.858">addResponseHandlers</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;responseHandlers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.873">addResponseHandlers</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;responseHandlers)</pre>
 <div class="block">Adds class-level response handler classes to this resource.
 
  <p>
@@ -1341,7 +1383,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addResponseHandlers</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.872">addResponseHandlers</a>(<a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>...&nbsp;responseHandlers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.887">addResponseHandlers</a>(<a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>...&nbsp;responseHandlers)</pre>
 <div class="block">Adds class-level response handlers to this resource.
 
  <p>
@@ -1360,7 +1402,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addChildResource</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.890">addChildResource</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.905">addChildResource</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">Adds a child resource to this resource.
 
@@ -1384,7 +1426,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addChildResources</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.908">addChildResources</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;children)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.923">addChildResources</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;children)</pre>
 <div class="block">Add child resources to this resource.
 
  <p>
@@ -1407,7 +1449,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addChildResources</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.926">addChildResources</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;children)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.941">addChildResources</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;children)</pre>
 <div class="block">Add child resources to this resource.
 
  <p>
@@ -1430,7 +1472,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setSupportedAcceptTypes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.943">setSupportedAcceptTypes</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;mediaTypes)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.958">setSupportedAcceptTypes</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;mediaTypes)</pre>
 <div class="block">Specifies the list of supported <code>Accept</code> media types for this resource.
 
  <p>
@@ -1452,7 +1494,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setSupportedAcceptTypes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.962">setSupportedAcceptTypes</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;mediaTypes)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.977">setSupportedAcceptTypes</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;mediaTypes)</pre>
 <div class="block">Specifies the list of supported <code>Accept</code> media types for this resource.
 
  <p>
@@ -1474,7 +1516,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setSupportedContentTypes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.979">setSupportedContentTypes</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;mediaTypes)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.994">setSupportedContentTypes</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;mediaTypes)</pre>
 <div class="block">Specifies the list of supported <code>Content-Type</code> media types for this resource.
 
  <p>
@@ -1496,7 +1538,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setSupportedContentTypes</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.998">setSupportedContentTypes</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;mediaTypes)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1013">setSupportedContentTypes</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>...&nbsp;mediaTypes)</pre>
 <div class="block">Specifies the list of supported <code>Content-Type</code> media types for this resource.
 
  <p>
@@ -1518,7 +1560,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setFavIcon</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1020">setFavIcon</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;favIcon)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1035">setFavIcon</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;favIcon)</pre>
 <div class="block">Specifies the icon contents that make up the contents of the page <js>"/resource-path/favicon.ico"</js>.
 
  <p>
@@ -1545,7 +1587,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setFavIcon</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1041">setFavIcon</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;resourceClass,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1056">setFavIcon</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;resourceClass,
                              <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;resourcePath)</pre>
 <div class="block">Specifies the icon contents that make up the contents of the page <js>"/resource-path/favicon.ico"</js>.
 
@@ -1571,7 +1613,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>addStaticFiles</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1064">addStaticFiles</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;resourceClass,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1079">addStaticFiles</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;resourceClass,
                                  <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;staticFilesString)</pre>
 <div class="block">Appends to the static files resource map.
 
@@ -1599,7 +1641,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setResourceResolver</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1086">setResourceResolver</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="interface in org.apache.juneau.rest">RestResourceResolver</a>&gt;&nbsp;resourceResolver)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1101">setResourceResolver</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="interface in org.apache.juneau.rest">RestResourceResolver</a>&gt;&nbsp;resourceResolver)</pre>
 <div class="block">Overrides the default REST resource resolver.
 
  <p>
@@ -1624,7 +1666,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setResourceResolver</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1100">setResourceResolver</a>(<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;resourceResolver)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1115">setResourceResolver</a>(<a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>&nbsp;resourceResolver)</pre>
 <div class="block">Overrides the default REST resource resolver.
 
  <p>
@@ -1637,13 +1679,146 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 </dl>
 </li>
 </ul>
+<a name="setAllowHeaderParams-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAllowHeaderParams</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1129">setAllowHeaderParams</a>(boolean&nbsp;value)</pre>
+<div class="block">Sets the <code>allowHeaderParams</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowHeaderParams--"><code>RestResource.allowHeaderParams()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setAllowMethodParam-java.lang.String...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAllowMethodParam</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1143">setAllowMethodParam</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">Sets the <code>allowMethodParam</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--"><code>RestResource.allowMethodParam()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setAllowBodyParam-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAllowBodyParam</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1157">setAllowBodyParam</a>(boolean&nbsp;value)</pre>
+<div class="block">Sets the <code>allowBodyParam</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#allowBodyParam--"><code>RestResource.allowBodyParam()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setRenderResponseStackTraces-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setRenderResponseStackTraces</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1171">setRenderResponseStackTraces</a>(boolean&nbsp;value)</pre>
+<div class="block">Sets the <code>renderResponseStackTraces</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#renderResponseStackTraces--"><code>RestResource.renderResponseStackTraces()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setUseStackTraceHashes-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUseStackTraceHashes</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1185">setUseStackTraceHashes</a>(boolean&nbsp;value)</pre>
+<div class="block">Sets the <code>useStackTraceHashes</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#useStackTraceHashes--"><code>RestResource.useStackTraceHashes()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultCharset-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultCharset</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1199">setDefaultCharset</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">Sets the <code>defaultCharset</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#defaultCharset--"><code>RestResource.defaultCharset()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="setParamFormat-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setParamFormat</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1213">setParamFormat</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">Sets the <code>paramFormat</code> setting on this resource.
+
+ <p>
+ This is the programmatic equivalent to the <a href="../../../../org/apache/juneau/rest/annotation/RestResource.html#paramFormat--"><code>RestResource.paramFormat()</code></a> annotation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The new value for this setting.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
 <a name="setPath-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>setPath</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1114">setPath</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>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1227">setPath</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>
 <div class="block">Sets the URL path of the resource <js>"/foobar"</js>.
 
  <p>
@@ -1662,7 +1837,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setClientVersionHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1131">setClientVersionHeader</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;clientVersionHeader)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1244">setClientVersionHeader</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;clientVersionHeader)</pre>
 <div class="block">Sets name of the header used to denote the client version on HTTP requests.
 
  <p>
@@ -1682,7 +1857,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setHtmlHeader</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1159">setHtmlHeader</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1272">setHtmlHeader</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">Sets the HTML header section contents.
 
  <p>
@@ -1715,7 +1890,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setHtmlLinks</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1190">setHtmlLinks</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1303">setHtmlLinks</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">Sets the links in the HTML nav section.
 
  <p>
@@ -1751,7 +1926,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setHtmlNav</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1223">setHtmlNav</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1336">setHtmlNav</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">Sets the HTML nav section contents.
 
  <p>
@@ -1789,7 +1964,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setHtmlAside</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1250">setHtmlAside</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1363">setHtmlAside</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">Sets the HTML aside section contents.
 
  <p>
@@ -1821,7 +1996,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
 <ul class="blockList">
 <li class="blockList">
 <h4>setHtmlFooter</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1277">setHtmlFooter</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/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1390">setHtmlFooter</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">Sets the HTML footer section contents.
 
  <p>
@@ -1853,7 +2028,7 @@ implements 

<TRUNCATED>


[19/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html b/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html
index 4962cb2..27c4420 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/RestMicroservice.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":10,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":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";
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.73">RestMicroservice</a>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.68">RestMicroservice</a>
 extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></pre>
 <div class="block">Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.
 
@@ -124,12 +124,11 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 
  <h6 class='topic'>Defining REST Resources</h6>
  
- Top-level REST resources are defined by the <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getResourceMap--"><code>getResourceMap()</code></a> method.
- This method can be overridden to provide a customized list of REST resources.
+ Top-level REST resources are defined in the <code>jetty.xml</code> file as normal servlets.
 
  <h6 class='topic'>Logging</h6>
  
- Logging is initialized by the <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#initLogging--"><code>initLogging()</code></a> method.
+ Logging is initialized by the <a href="../../../../org/apache/juneau/microservice/Microservice.html#initLogging--"><code>Microservice.initLogging()</code></a> method.
  This method can be overridden to provide customized logging behavior.
 
  <h6 class='topic'>Lifecycle Listener Methods</h6>
@@ -208,115 +207,127 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 </td>
 </tr>
 <tr id="i3" class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getContextPath--">getContextPath</a></span>()</code>
+<div class="block">Returns the context path that this microservice is using.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getHostName--">getHostName</a></span>()</code>
+<div class="block">Returns the hostname of this microservice.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getInstance--">getInstance</a></span>()</code>
+<div class="block">Returns the Microservice instance.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getPort--">getPort</a></span>()</code>
 <div class="block">Returns the port that this microservice started up on.</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>protected <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/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true" title="class or interface in javax.servlet">Servlet</a>&gt;&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getResourceMap--">getResourceMap</a></span>()</code>
-<div class="block">Returns the resource map to use for this microservice.</div>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getProtocol--">getProtocol</a></span>()</code>
+<div class="block">Returns whether this microservice is using <js>"http"</js> or <js>"https"</js>.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>org.eclipse.jetty.server.Server</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getServer--">getServer</a></span>()</code>
 <div class="block">Returns the underlying Jetty server.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getURI--">getURI</a></span>()</code>
 <div class="block">Returns the URI where this microservice is listening on.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#initLogging--">initLogging</a></span>()</code>
-<div class="block">Initialize the logging for this microservice.</div>
-</td>
-</tr>
-<tr id="i8" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#join--">join</a></span>()</code>
 <div class="block">Joins the application with the current thread.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#main-java.lang.String:A-">main</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;args)</code>
 <div class="block">Main method.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#onConfigSave-org.apache.juneau.ini.ConfigFile-">onConfigSave</a></span>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</code>
 <div class="block">Called when <a href="../../../../org/apache/juneau/ini/ConfigFile.html#save--"><code>ConfigFile.save()</code></a> is called on the config file.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#onCreateServer--">onCreateServer</a></span>()</code>
 <div class="block">Called before <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#createServer--"><code>createServer()</code></a> is called.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#onPostStartServer--">onPostStartServer</a></span>()</code>
 <div class="block">Called after the Jetty server is started.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#onPostStopServer--">onPostStopServer</a></span>()</code>
 <div class="block">Called after the Jetty server is stopped.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#onStartServer--">onStartServer</a></span>()</code>
 <div class="block">Called before <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#startServer--"><code>startServer()</code></a> is called.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#onStopServer--">onStopServer</a></span>()</code>
 <div class="block">Called before the Jetty server is stopped.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.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="i17" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#setJettyXml-java.lang.Object-">setJettyXml</a></span>(<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;jettyXml)</code>
 <div class="block">Sets the <code>jetty.xml</code> used to configure the Jetty server.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.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="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#start--">start</a></span>()</code>
 <div class="block">Start this application.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#startServer--">startServer</a></span>()</code>
 <div class="block">Method used to start the Jetty server created by <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#createServer--"><code>createServer()</code></a>.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#stop--">stop</a></span>()</code>
 <div class="block">Stop this application.</div>
@@ -328,7 +339,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#createVarResolver--">createVarResolver</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getArgs--">getArgs</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getConfig--">getConfig</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getManifest--">getManifest</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#kill--">kill</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#onConfigChange-org.apache.juneau.ini.ConfigFile-java.util.Set-">onConfigChange</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#onStart--">onStart</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#onStop--">onStop</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setConfig-org.apache.juneau.ini.ConfigFile-">setConfig</a>, <a href="../../../../org/
 apache/juneau/microservice/Microservice.html#setManifest-java.lang.Class-">setManifest</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.io.File-">setManifest</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">setManifest</a></code></li>
+<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#createVarResolver--">createVarResolver</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getArgs--">getArgs</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getConfig--">getConfig</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getLogger--">getLogger</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getManifest--">getManifest</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#getVarResolver--">getVarResolver</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#initLogging--">initLogging</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#kill--">kill</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#onConfigChange-org.apache.juneau.ini.ConfigFile-java.util.Set-">onConfigChange</a>, <a href="../../../../org/apache/j
 uneau/microservice/Microservice.html#onStart--">onStart</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#onStop--">onStop</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setConfig-org.apache.juneau.ini.ConfigFile-">setConfig</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.lang.Class-">setManifest</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.io.File-">setManifest</a>, <a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">setManifest</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -357,7 +368,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RestMicroservice</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.101">RestMicroservice</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;args)
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.108">RestMicroservice</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;args)
                  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">Constructor.</div>
 <dl>
@@ -376,13 +387,30 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="getInstance--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInstance</h4>
+<pre>public static&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.83">getInstance</a>()</pre>
+<div class="block">Returns the Microservice instance.  
+ <p>
+ This method only works if there's only one Microservice instance in a JVM.  
+ Otherwise, it's just overwritten by the last call to <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#RestMicroservice-java.lang.String...-"><code>RestMicroservice(String...)</code></a>.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The Microservice instance, or <jk>null</jk> if there isn't one.</dd>
+</dl>
+</li>
+</ul>
 <a name="main-java.lang.String:A-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.91">main</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;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.98">main</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;args)
                  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">Main method.
  
@@ -402,7 +430,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.111">start</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.124">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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#start--">Microservice</a></code></span></div>
 <div class="block">Start this application.
@@ -428,7 +456,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>join</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.125">join</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.132">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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#join--">Microservice</a></code></span></div>
 <div class="block">Joins the application with the current thread.
@@ -451,7 +479,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.131">stop</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.138">stop</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#stop--">Microservice</a></code></span></div>
 <div class="block">Stop this application.
  
@@ -474,108 +502,79 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.167">getPort</a>()</pre>
-<div class="block">Returns the port that this microservice started up on.</div>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.179">getPort</a>()</pre>
+<div class="block">Returns the port that this microservice started up on.
+ <p>
+ The value is determined by looking at the <code>Server/Connectors[ServerConnector]/port</code> value in the 
+ Jetty configuration.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The port that this microservice started up on.</dd>
 </dl>
 </li>
 </ul>
-<a name="getURI--">
+<a name="getContextPath--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getURI</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>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.175">getURI</a>()</pre>
-<div class="block">Returns the URI where this microservice is listening on.</div>
+<h4>getContextPath</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/RestMicroservice.html#line.194">getContextPath</a>()</pre>
+<div class="block">Returns the context path that this microservice is using.
+ <p>
+ The value is determined by looking at the <code>Server/Handlers[ServletContextHandler]/contextPath</code> value 
+ in the Jetty configuration.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The URI where this microservice is listening on.</dd>
+<dd>The context path that this microservice is using.</dd>
 </dl>
 </li>
 </ul>
-<a name="initLogging--">
+<a name="getProtocol--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>initLogging</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.262">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.
- 
+<h4>getProtocol</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/RestMicroservice.html#line.216">getProtocol</a>()</pre>
+<div class="block">Returns whether this microservice is using <js>"http"</js> or <js>"https"</js>.
  <p>
- Subclasses can override this method to provide customized logging.
- 
+ The value is determined by looking for the existence of an SSL Connection Factorie by looking for the
+ <code>Server/Connectors[ServerConnector]/ConnectionFactories[SslConnectionFactory]</code> value in the Jetty
+ configuration.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Whether this microservice is using <js>"http"</js> or <js>"https"</js>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getHostName--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getHostName</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/RestMicroservice.html#line.232">getHostName</a>()</pre>
+<div class="block">Returns the hostname of this microservice.
  <p>
- The default implementation uses the <cs>Logging</cs> section in the config file to set up logging:
- <p class='bcode'>
-   <cc>#================================================================================
-   # Logger settings
-   # See FileHandler Java class for details.
-   #================================================================================</cc>
-   <cs>[Logging]</cs>
-
-   <cc># The directory where to create the log file.
-   # Default is ".".</cc>
-   <ck>logDir</ck> = logs
-
-   <cc># The name of the log file to create for the main logger.
-   # The logDir and logFile make up the pattern that's passed to the FileHandler
-   # constructor.
-   # If value is not specified, then logging to a file will not be set up.</cc>
-   <ck>logFile</ck> = microservice.%g.log
-
-   <cc># Whether to append to the existing log file or create a new one.
-   # Default is false.</cc>
-   <ck>append</ck> =
-
-   <cc># The SimpleDateFormat format to use for dates.
-   # Default is "yyyy.MM.dd hh:mm:ss".</cc>
-   <ck>dateFormat</ck> =
-
-   <cc># The log message format.
-   # The value can contain any of the following variables:
-   #  {date} - The date, formatted per dateFormat.
-   #  {class} - The class name.
-   #  {method} - The method name.
-   #  {logger} - The logger name.
-   #  {level} - The log level name.
-   #  {msg} - The log message.
-   #  {threadid} - The thread ID.
-   #  {exception} - The localized exception message.
-   # Default is "[{date} {level}] {msg}%n".</cc>
-   <ck>format</ck> =
-
-   <cc># The maximum log file size.
-   # Suffixes available for numbers.
-   # See ConfigFile.getInt(String,int) for details.
-   # Default is 1M.</cc>
-   <ck>limit</ck> = 10M
-
-   <cc># Max number of log files.
-   # Default is 1.</cc>
-   <ck>count</ck> = 5
-
-   <cc># Default log levels.
-   # Keys are logger names.
-   # Values are serialized Level POJOs.</cc>
-   <ck>levels</ck> = { org.apache.juneau:'INFO' }
-
-   <cc># Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.
-   # Useful for preventing log files from filling up with duplicate stack traces.
-   # Default is false.</cc>
-   <ck>useStackTraceHashes</ck> = true
-
-   <cc># The default level for the console logger.
-   # Default is WARNING.</cc>
-   <ck>consoleLevel</ck> = WARNING
- </p></div>
+ Simply uses <code>InetAddress.getLocalHost().getHostName()</code>.</div>
 <dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The hostname of this microservice.</dd>
+</dl>
+</li>
+</ul>
+<a name="getURI--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getURI</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>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.245">getURI</a>()</pre>
+<div class="block">Returns the URI where this microservice is listening on.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The URI where this microservice is listening on.</dd>
 </dl>
 </li>
 </ul>
@@ -585,7 +584,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>createServer</h4>
-<pre>protected&nbsp;org.eclipse.jetty.server.Server&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.323">createServer</a>()
+<pre>protected&nbsp;org.eclipse.jetty.server.Server&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.285">createServer</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">Method used to create (but not start) an instance of a Jetty server.
  
@@ -597,22 +596,22 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
  if a jetty.xml is not specified via a <code>REST/jettyXml</code> setting:
  <p class='bcode'>
    <cc>#================================================================================
-   # REST settings
+   # Jetty settings
    #================================================================================</cc>
-   <cs>[REST]</cs>
-
-   <cc># The HTTP port number to use.
-   # Default is Rest-Port setting in manifest file, or 8000.
-   # Can also specify a comma-delimited lists of ports to try, including 0 meaning
-   # try a random port.</cc>
-   <ck>port</ck> = 10000
-
-   <cc># The context root of the Jetty server.
-   # Default is Rest-ContextPath in manifest file, or "/".</cc>
-   <ck>contextPath</ck> =
-
-   <cc># Enable SSL support.</cc>
-   <ck>useSsl</ck> = false</div>
+   <cs>[Jetty]</cs>
+   
+   <cc># Path of the jetty.xml file used to configure the Jetty server.</cc>
+   <ck>config</ck> = jetty.xml
+   
+   <cc># Resolve Juneau variables in the jetty.xml file.</cc>
+   <ck>resolveVars</ck> = true
+   
+   <cc># Port to use for the jetty server.
+   # You can specify multiple ports.  The first available will be used.  '0' indicates to try a random port.
+   # The resulting available port gets set as the system property "availablePort" which can be referenced in the 
+   # jetty.xml file as "$S{availablePort}" (assuming resolveVars is enabled).</cc>
+   <ck>port</ck> = 10000,0,0,0
+ </p></div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The newly-created server.</dd>
@@ -627,7 +626,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>addServlet</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.380">addServlet</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true" title="class or interface in javax.servlet">Servlet</a>&nbsp;servlet,
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.336">addServlet</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true" title="class or interface in javax.servlet">Servlet</a>&nbsp;servlet,
                                    <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;pathSpec)</pre>
 <div class="block">Adds an arbitrary servlet to this microservice.</div>
 <dl>
@@ -647,7 +646,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>addServletAttribute</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.396">addServletAttribute</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/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.355">addServletAttribute</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">Adds a servlet attribute to the Jetty server.</div>
 <dl>
@@ -667,7 +666,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getServer</h4>
-<pre>public&nbsp;org.eclipse.jetty.server.Server&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.408">getServer</a>()</pre>
+<pre>public&nbsp;org.eclipse.jetty.server.Server&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.365">getServer</a>()</pre>
 <div class="block">Returns the underlying Jetty server.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -681,7 +680,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>startServer</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.435">startServer</a>()
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.394">startServer</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">Method used to start the Jetty server created by <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#createServer--"><code>createServer()</code></a>.
  
@@ -695,76 +694,18 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 </dl>
 </li>
 </ul>
-<a name="getResourceMap--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getResourceMap</h4>
-<pre>protected&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="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="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true" title="class or interface in javax.servlet">Servlet</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.489">getResourceMap</a>()
-                                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a>,
-                                                              <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
-<div class="block">Returns the resource map to use for this microservice.
- 
- <p>
- Subclasses can override this method to programmatically specify their resources.
- 
- <p>
- The default implementation is configured by the following values in the config file:
- <p class='bcode'>
-
-   <cc>#================================================================================
-   # REST settings
-   #================================================================================</cc>
-   <cs>[REST]</cs>
-
-   <cc># A JSON map of servlet paths to servlet classes.
-   # Example:
-   #  resourceMap = {'/*':'com.foo.MyServlet'}
-   # Either resourceMap or resources must be specified if it's not defined in
-   # the manifest file.</cc>
-   <ck>resourceMap</ck> =
-
-   <cc># A comma-delimited list of names of classes that extend from Servlet.
-   # Resource paths are pulled from @RestResource.path() annotation, or
-   #  "/*" if annotation not specified.
-   # Example:
-   #  resources = com.foo.MyServlet
-    *    # Default is Rest-Resources in manifest file.
-   # Either resourceMap or resources must be specified if it's not defined in
-   # the manifest file.</cc>
-   <ck>resources</ck> =
- </p>
- 
- <p>
- In most cases, the rest resources will be specified in the manifest file since it's not likely to be a 
- configurable property:
- <p class='bcode'>
-   <mk>Rest-Resources:</mk> org.apache.juneau.microservice.sample.RootResources
- </p></div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>The map of REST resources.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
-<dd><code><a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></code></dd>
-</dl>
-</li>
-</ul>
 <a name="onConfigSave-org.apache.juneau.ini.ConfigFile-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>onConfigSave</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.536">onConfigSave</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.417">onConfigSave</a>(<a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a>&nbsp;cf)</pre>
 <div class="block">Called when <a href="../../../../org/apache/juneau/ini/ConfigFile.html#save--"><code>ConfigFile.save()</code></a> is called on the config file.
  
  <p>
  The default behavior is configured by the following value in the config file:
  <p class='bcode'>
-   <cs>[REST]</cs>
-
    <cc># What to do when the config file is saved.
    # Possible values:
    #  NOTHING - Don't do anything. (default)
@@ -786,7 +727,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>setJettyXml</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.575">setJettyXml</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;jettyXml)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.456">setJettyXml</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;jettyXml)</pre>
 <div class="block">Sets the <code>jetty.xml</code> used to configure the Jetty server.
  
  <p></div>
@@ -810,7 +751,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>onCreateServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.594">onCreateServer</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.475">onCreateServer</a>()</pre>
 <div class="block">Called before <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#createServer--"><code>createServer()</code></a> is called.
  
  <p>
@@ -823,7 +764,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>onStartServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.602">onStartServer</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.483">onStartServer</a>()</pre>
 <div class="block">Called before <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#startServer--"><code>startServer()</code></a> is called.
  
  <p>
@@ -836,7 +777,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>onPostStartServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.610">onPostStartServer</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.491">onPostStartServer</a>()</pre>
 <div class="block">Called after the Jetty server is started.
  
  <p>
@@ -849,7 +790,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>onStopServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.618">onStopServer</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.499">onStopServer</a>()</pre>
 <div class="block">Called before the Jetty server is stopped.
  
  <p>
@@ -862,7 +803,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>onPostStopServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.626">onPostStopServer</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.507">onPostStopServer</a>()</pre>
 <div class="block">Called after the Jetty server is stopped.
  
  <p>
@@ -875,7 +816,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>setConfig</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.634">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/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.515">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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#setConfig-java.lang.String-boolean-">Microservice</a></code></span></div>
@@ -911,7 +852,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setManifestContents</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.640">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/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.521">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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifestContents-java.lang.String...-">Microservice</a></code></span></div>
 <div class="block">Convenience method for specifying the manifest contents directly.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/package-frame.html
----------------------------------------------------------------------
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 a57ed37..78710b1 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-frame.html
@@ -13,6 +13,7 @@
 <div class="indexContainer">
 <h2 title="Classes">Classes</h2>
 <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>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
----------------------------------------------------------------------
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 be0ff28..b0d2387 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
@@ -86,36 +86,42 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice">JettyLogger</a></td>
+<td class="colLast">
+<div class="block">Implementation of Jetty <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"><code>Logger</code></a> based on <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"><code>Logger</code></a>.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a></td>
 <td class="colLast">
 <div class="block">Parent class for all microservices.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<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="altColor">
+<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="rowColor">
+<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="colLast">
 <div class="block">Superclass for all REST resources with RDF support.</div>
 </td>
 </tr>
-<tr class="altColor">
+<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="colLast">
 <div class="block">Superclass for all REST resource groups.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<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="colLast">
 <div class="block">Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
----------------------------------------------------------------------
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 1a21584..c8bca66 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
@@ -80,6 +80,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
 <ul>
+<li type="circle">org.eclipse.jetty.util.log.AbstractLogger (implements org.eclipse.jetty.util.log.Logger)
+<ul>
+<li type="circle">org.apache.juneau.microservice.<a href="../../../../org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">JettyLogger</span></a></li>
+</ul>
+</li>
 <li type="circle">javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true" title="class or interface in javax.servlet"><span class="typeNameLink">GenericServlet</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true" title="class or interface in javax.servlet">Servlet</a>, javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true" title="class or interface in javax.servlet">ServletConfig</a>)
 <ul>
 <li type="circle">javax.servlet.http.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true" title="class or interface in javax.servlet.http"><span class="typeNameLink">HttpServlet</span></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
----------------------------------------------------------------------
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 98c543d..666a013 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li>Prev&nbsp;Class</li>
-<li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/microservice/resources/ConfigResource.html" target="_top">Frames</a></li>
@@ -535,7 +535,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <div class="subNav">
 <ul class="navList">
 <li>Prev&nbsp;Class</li>
-<li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/microservice/resources/ConfigResource.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html
new file mode 100644
index 0000000..1e2dd38
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/DebugResource.html
@@ -0,0 +1,404 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DebugResource (Apache Juneau (incubating) 6.4.1-incubating-SNAPSHOT)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="DebugResource (Apache Juneau (incubating) 6.4.1-incubating-SNAPSHOT)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/microservice/resources/DebugResource.html" target="_top">Frames</a></li>
+<li><a href="DebugResource.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.juneau.microservice.resources</div>
+<h2 title="Class DebugResource" class="title">Class DebugResource</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true" title="class or interface in javax.servlet">javax.servlet.GenericServlet</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true" title="class or interface in javax.servlet.http">javax.servlet.http.HttpServlet</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">org.apache.juneau.rest.RestServlet</a></li>
+<li>
+<ul class="inheritance">
+<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>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true" title="class or interface in javax.servlet">Servlet</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true" title="class or interface in javax.servlet">ServletConfig</a></dd>
+</dl>
+<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#path--">path</a>="/debug",
+              <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#title--">title</a>="Debug",
+              <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#description--">description</a>="Debug Utilities.",
+              <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#htmldoc--">htmldoc</a>=,
+              <a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#allowMethodParam--">allowMethodParam</a>="OPTIONS,POST")
+public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DebugResource.html#line.40">DebugResource</a>
+extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></pre>
+<div class="block">Microservice debug utilities.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../serialized-form.html#org.apache.juneau.microservice.resources.DebugResource">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html#DebugResource--">DebugResource</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html#createJettyDump-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">createJettyDump</a></span>(<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)</code>
+<div class="block">[POST /jetty/dump] - Generates and saves the jetty thread dump file to jetty-thread-dump.log.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/juneau/rest/labels/ResourceDescription.html" title="class in org.apache.juneau.rest.labels">ResourceDescription</a>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html#getChildren--">getChildren</a></span>()</code>
+<div class="block">[GET /] - Shows child utilities.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/microservice/resources/DebugResource.html#getJettyDump-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">getJettyDump</a></span>(<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)</code>
+<div class="block">[GET /jetty/dump] - Generates and retrieves the jetty thread dump.</div>
+</td>
+</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.RestConfig-">addConfigVars</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServletDefault">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest">RestServletDefault</a></h3>
+<code><a href="../../../../../org/apache/juneau/rest/RestServletDefault.html#getOptions-org.apache.juneau.rest.RestRequest-">getOptions</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.rest.RestServlet">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></h3>
+<code><a href="../../../../../org/apache/juneau/rest/RestServlet.html#destroy--">destroy</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#getBeanContext--">getBeanContext</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#getContext--">getContext</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#getMessages--">getMessages</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#getProperties--">getProperties</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#getServletConfig--">getServletConfig</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestContext-">init</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-">init</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#log-java.util.logging.Level-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../../org/apache/junea
 u/rest/RestServlet.html#log-java.util.logging.Level-java.lang.Throwable-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.servlet.http.HttpServlet">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;javax.servlet.http.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true" title="class or interface in javax.servlet.http">HttpServlet</a></h3>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doDelete-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doDelete</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doGet-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doGet</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doHead-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doHead</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doOptions-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doOptions</a>, <a 
 href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doPost-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doPost</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doPut-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doPut</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#doTrace-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">doTrace</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html?is-external=true#getLastModified-javax.servlet.http.HttpServletRequest-" title="class or interface in javax.servlet.http">getLastModified</a>, <a href="http://docs.oracle.com/javaee/5/
 api/javax/servlet/http/HttpServlet.html?is-external=true#service-javax.servlet.ServletRequest-javax.servlet.ServletResponse-" title="class or interface in javax.servlet.http">service</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.servlet.GenericServlet">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true" title="class or interface in javax.servlet">GenericServlet</a></h3>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#getInitParameter-java.lang.String-" title="class or interface in javax.servlet">getInitParameter</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#getInitParameterNames--" title="class or interface in javax.servlet">getInitParameterNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#getServletContext--" title="class or interface in javax.servlet">getServletContext</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#getServletInfo--" title="class or interface in javax.servlet">getServletInfo</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#getServletName--" title="class or interface in javax.servlet">getServletName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Ge
 nericServlet.html?is-external=true#init--" title="class or interface in javax.servlet">init</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#log-java.lang.String-" title="class or interface in javax.servlet">log</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#log-java.lang.String-java.lang.Throwable-" title="class or interface in javax.servlet">log</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="DebugResource--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DebugResource</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DebugResource.html#line.40">DebugResource</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getChildren--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getChildren</h4>
+<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/rest/labels/ResourceDescription.html" title="class in org.apache.juneau.rest.labels">ResourceDescription</a>[]&nbsp;<a href="../../../../../src-html/org/apache/juneau/microservice/resources/DebugResource.html#line.50">getChildren</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 /] - Shows child utilities.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Child utility links.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getJettyDump-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getJettyDump</h4>
+<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>="/jetty/dump",
+            <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Generates and retrieves the jetty thread dump.")
+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/DebugResource.html#line.60">getJettyDump</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)</pre>
+<div class="block">[GET /jetty/dump] - Generates and retrieves the jetty thread dump.</div>
+</li>
+</ul>
+<a name="createJettyDump-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>createJettyDump</h4>
+<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>="POST",
+            <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/jetty/dump",
+            <a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#description--">description</a>="Generates and saves the jetty thread dump file to jetty-thread-dump.log.")
+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/DebugResource.html#line.69">createJettyDump</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">[POST /jetty/dump] - Generates and saves the jetty thread dump file to jetty-thread-dump.log.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/juneau/microservice/resources/ConfigResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/microservice/resources/DebugResource.html" target="_top">Frames</a></li>
+<li><a href="DebugResource.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2017 <a href="http://www.apache.org/">Apache</a>. All rights reserved.</small></p>
+</body>
+</html>


[05/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.html
index d0471f6..7af886a 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/resources/LogsResource.html
@@ -22,338 +22,337 @@
 <span class="sourceLineNo">014</span><a name="line.14"></a>
 <span class="sourceLineNo">015</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>import static org.apache.juneau.html.HtmlDocSerializerContext.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import static org.apache.juneau.rest.RestContext.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.net.URI;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.nio.charset.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.juneau.*;<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.dto.*;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.ini.*;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.microservice.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.rest.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.rest.annotation.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.rest.annotation.Properties;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.juneau.rest.converters.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.juneau.transforms.*;<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>/**<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * REST resource for viewing and accessing log files.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> */<a name="line.39"></a>
-<span class="sourceLineNo">040</span>@RestResource(<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   path="/logs",<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   title="Log files",<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   description="Log files from this service",<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   properties={<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   },<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   flags={REST_allowMethodParam},<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   pojoSwaps={<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      IteratorSwap.class,       // Allows Iterators and Iterables to be serialized.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      DateSwap.ISO8601DT.class  // Serialize Date objects as ISO8601 strings.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   }<a name="line.51"></a>
-<span class="sourceLineNo">052</span>)<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@SuppressWarnings("nls")<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public class LogsResource extends Resource {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   private static final long serialVersionUID = 1L;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>   private File logDir;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   private LogEntryFormatter leFormatter;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>   private final FileFilter filter = new FileFilter() {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      @Override /* FileFilter */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      public boolean accept(File f) {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>         return f.isDirectory() || f.getName().endsWith(".log");<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      }<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   };<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>   /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    * Initializes the log directory and formatter.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    * <a name="line.69"></a>
-<span class="sourceLineNo">070</span>    * @param config The resource config.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    * @throws Exception<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   @RestHook(INIT) <a name="line.73"></a>
-<span class="sourceLineNo">074</span>   public void init(RestConfig config) throws Exception {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      ConfigFile cf = config.getConfigFile();<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>      logDir = new File(cf.getString("Logging/logDir", "."));<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      leFormatter = new LogEntryFormatter(<a name="line.78"></a>
-<span class="sourceLineNo">079</span>         cf.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.79"></a>
-<span class="sourceLineNo">080</span>         cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.80"></a>
-<span class="sourceLineNo">081</span>         cf.getBoolean("Logging/useStackTraceHashes")<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      );<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>   /**<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * [GET /*] - Get file details or directory listing.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    *<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    * @param req The HTTP request<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    * @param res The HTTP response<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    * @param properties The writable properties for setting the descriptions.<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    * @param path The log file path.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    * @return The log file.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    * @throws Exception<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   @RestMethod(<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      name="GET",<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      path="/*",<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      swagger=@MethodSwagger(<a name="line.98"></a>
-<span class="sourceLineNo">099</span>         responses={@Response(200),@Response(404)}<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      )<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   )<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   public Object getFileOrDirectory(RestRequest req, RestResponse res, @Properties ObjectMap properties, @PathRemainder String path) throws Exception {<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>      File f = getFile(path);<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>      if (f.isDirectory()) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         Set&lt;FileResource&gt; l = new TreeSet&lt;FileResource&gt;(new FileResourceComparator());<a name="line.107"></a>
-<span class="sourceLineNo">108</span>         File[] files = f.listFiles(filter);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>         if (files != null) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            for (File fc : files) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>               URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.111"></a>
-<span class="sourceLineNo">112</span>               l.add(new FileResource(fc, fUrl));<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 l;<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>      return new FileResource(f, new URI("servlet:/"));<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>    * [VIEW /*] - Retrieve the contents of a log file.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    *<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * @param req The HTTP request.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * @param res The HTTP response.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    * @param path The log file path.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    * @param properties The writable properties for setting the descriptions.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    * @param highlight If &lt;code&gt;true&lt;/code&gt;, add color highlighting based on severity.<a name="line.128"></a>
-<span class="sourceLineNo">129</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.129"></a>
-<span class="sourceLineNo">130</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.130"></a>
-<span class="sourceLineNo">131</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.131"></a>
-<span class="sourceLineNo">132</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.132"></a>
-<span class="sourceLineNo">133</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    * @throws Exception<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   @RestMethod(<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      name="VIEW",<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      path="/*",<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      swagger=@MethodSwagger(<a name="line.139"></a>
-<span class="sourceLineNo">140</span>         responses={@Response(200),@Response(404)}<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      )<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   )<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   @SuppressWarnings("nls")<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   public void viewFile(RestRequest req, RestResponse res, @PathRemainder String path, @Properties ObjectMap 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.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>      File f = getFile(path);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      if (f.isDirectory())<a name="line.147"></a>
-<span class="sourceLineNo">148</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>      if (! highlight) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>         Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>         res.setContentType("text/plain");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>         if (o instanceof Reader)<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            res.setOutput(o);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>         else {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>            LogParser p = (LogParser)o;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            Writer w = res.getNegotiatedWriter();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>            try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>               p.writeTo(w);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>            } finally {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>               w.flush();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>               w.close();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>            }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>         }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>         return;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>      res.setContentType("text/html");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      PrintWriter w = res.getNegotiatedWriter();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      try {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>         w.println("&lt;html&gt;&lt;body style='font-family:monospace;font-size:8pt;white-space:pre;'&gt;");<a name="line.173"></a>
-<span class="sourceLineNo">174</span>         LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>         try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>            if (! lp.hasNext())<a name="line.176"></a>
-<span class="sourceLineNo">177</span>               w.append("&lt;span style='color:gray'&gt;[EMPTY]&lt;/span&gt;");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            else for (LogParser.Entry le : lp) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>               char s = le.severity.charAt(0);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>               String color = "black";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>               //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.181"></a>
-<span class="sourceLineNo">182</span>               if (s == 'I')<a name="line.182"></a>
-<span class="sourceLineNo">183</span>                  color = "#006400";<a name="line.183"></a>
-<span class="sourceLineNo">184</span>               else if (s == 'W')<a name="line.184"></a>
-<span class="sourceLineNo">185</span>                  color = "#CC8400";<a name="line.185"></a>
-<span class="sourceLineNo">186</span>               else if (s == 'E' || s == 'S')<a name="line.186"></a>
-<span class="sourceLineNo">187</span>                  color = "#DD0000";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>               else if (s == 'D' || s == 'F' || s == 'T')<a name="line.188"></a>
-<span class="sourceLineNo">189</span>                  color = "#000064";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>               w.append("&lt;span style='color:").append(color).append("'&gt;");<a name="line.190"></a>
-<span class="sourceLineNo">191</span>               le.appendHtml(w).append("&lt;/span&gt;");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>            }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            w.append("&lt;/body&gt;&lt;/html&gt;");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>         } finally {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>            lp.close();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>         }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      } finally {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>         w.close();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>   /**<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    *<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    * @param req The HTTP request.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * @param path The log file path.<a name="line.206"></a>
-<span class="sourceLineNo">207</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.207"></a>
-<span class="sourceLineNo">208</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.208"></a>
-<span class="sourceLineNo">209</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.209"></a>
-<span class="sourceLineNo">210</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.210"></a>
-<span class="sourceLineNo">211</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    * @return The parsed contents of the log file.<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    * @throws Exception<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   @RestMethod(<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      name="PARSE",<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      path="/*",<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      converters=Queryable.class,<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      swagger=@MethodSwagger(<a name="line.219"></a>
-<span class="sourceLineNo">220</span>         responses={@Response(200),@Response(404)}<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      )<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   )<a name="line.222"></a>
-<span class="sourceLineNo">223</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.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>      File f = getFile(path);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>      if (f.isDirectory())<a name="line.228"></a>
-<span class="sourceLineNo">229</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return getLogParser(f, startDate, endDate, thread, loggers, severity);<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>   /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    * [DOWNLOAD /*] - Download file.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    *<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    * @param res The HTTP response.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    * @param path The log file path.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    * @return The contents of the log file.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * @throws Exception<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   @RestMethod(<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      name="DOWNLOAD",<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      path="/*",<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      swagger=@MethodSwagger(<a name="line.245"></a>
-<span class="sourceLineNo">246</span>         responses={@Response(200),@Response(404)}<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>   public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>      File f = getFile(path);<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (f.isDirectory())<a name="line.253"></a>
-<span class="sourceLineNo">254</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "Download not available on directories");<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>      res.setContentType("application/octet-stream");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      res.setContentLength((int)f.length());<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      return new FileInputStream(f);<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>   /**<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    * [DELETE /*] - Delete a file.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * @param path The log file path.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    * @return A redirect object to the root.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    * @throws Exception<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   @RestMethod(<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      name="DELETE",<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      path="/*",<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      swagger=@MethodSwagger(<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         responses={@Response(200),@Response(404)}<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>   public Object deleteFile(@PathRemainder String path) throws Exception {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      File f = getFile(path);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (f.isDirectory())<a name="line.279"></a>
-<span class="sourceLineNo">280</span>         throw new RestException(SC_BAD_REQUEST, "Delete not available on directories.");<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>      if (f.canWrite())<a name="line.282"></a>
-<span class="sourceLineNo">283</span>         if (! f.delete())<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            throw new RestException(SC_FORBIDDEN, "Could not delete file.");<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>      return new Redirect(path + "/..");<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>   private static BufferedReader getReader(File f) throws IOException {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      return new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.defaultCharset()));<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>   private File getFile(String path) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (path != null &amp;&amp; path.indexOf("..") != -1)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>         throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      File f = (path == null ? logDir : new File(logDir.getAbsolutePath() + '/' + path));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      if (filter.accept(f))<a name="line.297"></a>
-<span class="sourceLineNo">298</span>         return f;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>   /**<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    * File bean.<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   @SuppressWarnings("javadoc")<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   public static class FileResource {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      private File f;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      public String type;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      public Object name;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      public Long size;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      @Swap(DateSwap.DateTimeMedium.class) public Date lastModified;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      public URI view, highlighted, parsed, download, delete;<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      public FileResource(File f, URI uri) throws Exception {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>         this.f = f;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>         this.type = (f.isDirectory() ? "dir" : "file");<a name="line.316"></a>
-<span class="sourceLineNo">317</span>         this.name = f.isDirectory() ? new Link(f.getName(), uri.toString()) : f.getName();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>         this.size = f.isDirectory() ? null : f.length();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>         this.lastModified = new Date(f.lastModified());<a name="line.319"></a>
-<span class="sourceLineNo">320</span>         if (f.canRead() &amp;&amp; ! f.isDirectory()) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>            this.view = new URI(uri + "?method=VIEW");<a name="line.321"></a>
-<span class="sourceLineNo">322</span>            this.highlighted = new URI(uri + "?method=VIEW&amp;highlight=true");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            this.parsed = new URI(uri + "?method=PARSE");<a name="line.323"></a>
-<span class="sourceLineNo">324</span>            this.download = new URI(uri + "?method=DOWNLOAD");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>            this.delete = new URI(uri + "?method=DELETE");<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><a name="line.329"></a>
-<span class="sourceLineNo">330</span>   private static class FileResourceComparator implements Comparator&lt;FileResource&gt;, Serializable {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      private static final long serialVersionUID = 1L;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      @Override /* Comparator */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      public int compare(FileResource o1, FileResource o2) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>         int c = o1.type.compareTo(o2.type);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>         return c != 0 ? c : o1.f.getName().compareTo(o2.f.getName());<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>   private Object getReader(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      if (start == null &amp;&amp; end == null &amp;&amp; thread == null &amp;&amp; loggers == null)<a name="line.340"></a>
-<span class="sourceLineNo">341</span>         return getReader(f);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return getLogParser(f, start, end, thread, loggers, severity);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>   private LogParser getLogParser(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return new LogParser(leFormatter, f, start, end, thread, loggers, severity);<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">017</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.net.URI;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.nio.charset.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.*;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.annotation.*;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.juneau.dto.*;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.ini.*;<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.annotation.Properties;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.juneau.rest.converters.*;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.juneau.transforms.*;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * REST resource for viewing and accessing log files.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@RestResource(<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   path="/logs",<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   title="Log files",<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   description="Log files from this service",<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   properties={<a name="line.43"></a>
+<span class="sourceLineNo">044</span>      @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   },<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   allowMethodParam="*",<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   pojoSwaps={<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      IteratorSwap.class,       // Allows Iterators and Iterables to be serialized.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      DateSwap.ISO8601DT.class  // Serialize Date objects as ISO8601 strings.<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   }<a name="line.50"></a>
+<span class="sourceLineNo">051</span>)<a name="line.51"></a>
+<span class="sourceLineNo">052</span>@SuppressWarnings("nls")<a name="line.52"></a>
+<span class="sourceLineNo">053</span>public class LogsResource extends Resource {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   private static final long serialVersionUID = 1L;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>   private File logDir;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   private LogEntryFormatter leFormatter;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>   private final FileFilter filter = new FileFilter() {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      @Override /* FileFilter */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      public boolean accept(File f) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>         return f.isDirectory() || f.getName().endsWith(".log");<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><a name="line.65"></a>
+<span class="sourceLineNo">066</span>   /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    * Initializes the log directory and formatter.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    * <a name="line.68"></a>
+<span class="sourceLineNo">069</span>    * @param config The resource config.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    * @throws Exception<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    */<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   @RestHook(INIT) <a name="line.72"></a>
+<span class="sourceLineNo">073</span>   public void init(RestConfig config) throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ConfigFile cf = config.getConfigFile();<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>      logDir = new File(cf.getString("Logging/logDir", "."));<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      leFormatter = new LogEntryFormatter(<a name="line.77"></a>
+<span class="sourceLineNo">078</span>         cf.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.78"></a>
+<span class="sourceLineNo">079</span>         cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.79"></a>
+<span class="sourceLineNo">080</span>         cf.getBoolean("Logging/useStackTraceHashes")<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><a name="line.83"></a>
+<span class="sourceLineNo">084</span>   /**<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    * [GET /*] - Get file details or directory listing.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    *<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    * @param req The HTTP request<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    * @param res The HTTP response<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    * @param properties The writable properties for setting the descriptions.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    * @param path The log file path.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    * @return The log file.<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    * @throws Exception<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   @RestMethod(<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      name="GET",<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      path="/*",<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      swagger=@MethodSwagger(<a name="line.97"></a>
+<span class="sourceLineNo">098</span>         responses={@Response(200),@Response(404)}<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>   public Object getFileOrDirectory(RestRequest req, RestResponse res, @Properties ObjectMap properties, @PathRemainder String path) throws Exception {<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>      File f = getFile(path);<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>      if (f.isDirectory()) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>         Set&lt;FileResource&gt; l = new TreeSet&lt;FileResource&gt;(new FileResourceComparator());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>         File[] files = f.listFiles(filter);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>         if (files != null) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            for (File fc : files) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>               URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.110"></a>
+<span class="sourceLineNo">111</span>               l.add(new FileResource(fc, fUrl));<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>         return l;<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>      return new FileResource(f, new URI("servlet:/"));<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>    * [VIEW /*] - Retrieve the contents of a log file.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    *<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    * @param req The HTTP request.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    * @param res The HTTP response.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    * @param path The log file path.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    * @param properties The writable properties for setting the descriptions.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    * @param highlight If &lt;code&gt;true&lt;/code&gt;, add color highlighting based on severity.<a name="line.127"></a>
+<span class="sourceLineNo">128</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.128"></a>
+<span class="sourceLineNo">129</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.129"></a>
+<span class="sourceLineNo">130</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.130"></a>
+<span class="sourceLineNo">131</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.131"></a>
+<span class="sourceLineNo">132</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    * @throws Exception<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   @RestMethod(<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      name="VIEW",<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      path="/*",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      swagger=@MethodSwagger(<a name="line.138"></a>
+<span class="sourceLineNo">139</span>         responses={@Response(200),@Response(404)}<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      )<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   )<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   @SuppressWarnings("nls")<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   public void viewFile(RestRequest req, RestResponse res, @PathRemainder String path, @Properties ObjectMap 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.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>      File f = getFile(path);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      if (f.isDirectory())<a name="line.146"></a>
+<span class="sourceLineNo">147</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      if (! highlight) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>         Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>         res.setContentType("text/plain");<a name="line.153"></a>
+<span class="sourceLineNo">154</span>         if (o instanceof Reader)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            res.setOutput(o);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>         else {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            LogParser p = (LogParser)o;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>            Writer w = res.getNegotiatedWriter();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>            try {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>               p.writeTo(w);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            } finally {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>               w.flush();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>               w.close();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>            }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>         }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>         return;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      res.setContentType("text/html");<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      PrintWriter w = res.getNegotiatedWriter();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      try {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>         w.println("&lt;html&gt;&lt;body style='font-family:monospace;font-size:8pt;white-space:pre;'&gt;");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>         LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>         try {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            if (! lp.hasNext())<a name="line.175"></a>
+<span class="sourceLineNo">176</span>               w.append("&lt;span style='color:gray'&gt;[EMPTY]&lt;/span&gt;");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            else for (LogParser.Entry le : lp) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>               char s = le.severity.charAt(0);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>               String color = "black";<a name="line.179"></a>
+<span class="sourceLineNo">180</span>               //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.180"></a>
+<span class="sourceLineNo">181</span>               if (s == 'I')<a name="line.181"></a>
+<span class="sourceLineNo">182</span>                  color = "#006400";<a name="line.182"></a>
+<span class="sourceLineNo">183</span>               else if (s == 'W')<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                  color = "#CC8400";<a name="line.184"></a>
+<span class="sourceLineNo">185</span>               else if (s == 'E' || s == 'S')<a name="line.185"></a>
+<span class="sourceLineNo">186</span>                  color = "#DD0000";<a name="line.186"></a>
+<span class="sourceLineNo">187</span>               else if (s == 'D' || s == 'F' || s == 'T')<a name="line.187"></a>
+<span class="sourceLineNo">188</span>                  color = "#000064";<a name="line.188"></a>
+<span class="sourceLineNo">189</span>               w.append("&lt;span style='color:").append(color).append("'&gt;");<a name="line.189"></a>
+<span class="sourceLineNo">190</span>               le.appendHtml(w).append("&lt;/span&gt;");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>            w.append("&lt;/body&gt;&lt;/html&gt;");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>         } finally {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            lp.close();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>         }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      } finally {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>         w.close();<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><a name="line.200"></a>
+<span class="sourceLineNo">201</span>   /**<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    *<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @param req The HTTP request.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    * @param path The log file path.<a name="line.205"></a>
+<span class="sourceLineNo">206</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.206"></a>
+<span class="sourceLineNo">207</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.207"></a>
+<span class="sourceLineNo">208</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.208"></a>
+<span class="sourceLineNo">209</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.209"></a>
+<span class="sourceLineNo">210</span>    * @param severity Optional severity filter.  Only show log entries with the specified severity.  Example: "&amp;amp;severity=(ERROR,WARN)".<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * @return The parsed contents of the log file.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * @throws Exception<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   @RestMethod(<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      name="PARSE",<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      path="/*",<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      converters=Queryable.class,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      swagger=@MethodSwagger(<a name="line.218"></a>
+<span class="sourceLineNo">219</span>         responses={@Response(200),@Response(404)}<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      )<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   )<a name="line.221"></a>
+<span class="sourceLineNo">222</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.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>      File f = getFile(path);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (f.isDirectory())<a name="line.227"></a>
+<span class="sourceLineNo">228</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   }<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>    * [DOWNLOAD /*] - Download file.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    *<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    * @param res The HTTP response.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * @param path The log file path.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * @return The contents of the log file.<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    * @throws Exception<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   @RestMethod(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      name="DOWNLOAD",<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      path="/*",<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      swagger=@MethodSwagger(<a name="line.244"></a>
+<span class="sourceLineNo">245</span>         responses={@Response(200),@Response(404)}<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      )<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   )<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>      File f = getFile(path);<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>      if (f.isDirectory())<a name="line.252"></a>
+<span class="sourceLineNo">253</span>         throw new RestException(SC_METHOD_NOT_ALLOWED, "Download not available on directories");<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>      res.setContentType("application/octet-stream");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      res.setContentLength((int)f.length());<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      return new FileInputStream(f);<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>    * [DELETE /*] - Delete a file.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    *<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    * @param path The log file path.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @return A redirect object to the root.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    * @throws Exception<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   @RestMethod(<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      name="DELETE",<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      path="/*",<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      swagger=@MethodSwagger(<a name="line.270"></a>
+<span class="sourceLineNo">271</span>         responses={@Response(200),@Response(404)}<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>   public Object deleteFile(@PathRemainder String path) throws Exception {<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>      File f = getFile(path);<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>      if (f.isDirectory())<a name="line.278"></a>
+<span class="sourceLineNo">279</span>         throw new RestException(SC_BAD_REQUEST, "Delete not available on directories.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>      if (f.canWrite())<a name="line.281"></a>
+<span class="sourceLineNo">282</span>         if (! f.delete())<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            throw new RestException(SC_FORBIDDEN, "Could not delete file.");<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>      return new Redirect(path + "/..");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>   private static BufferedReader getReader(File f) throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.defaultCharset()));<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>   private File getFile(String path) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (path != null &amp;&amp; path.indexOf("..") != -1)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>         throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      File f = (path == null ? logDir : new File(logDir.getAbsolutePath() + '/' + path));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (filter.accept(f))<a name="line.296"></a>
+<span class="sourceLineNo">297</span>         return f;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      throw new RestException(SC_NOT_FOUND, "File not found.");<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>   /**<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * File bean.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    */<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   @SuppressWarnings("javadoc")<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   public static class FileResource {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      private File f;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      public String type;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      public Object name;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      public Long size;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      @Swap(DateSwap.DateTimeMedium.class) public Date lastModified;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      public URI view, highlighted, parsed, download, delete;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>      public FileResource(File f, URI uri) throws Exception {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>         this.f = f;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>         this.type = (f.isDirectory() ? "dir" : "file");<a name="line.315"></a>
+<span class="sourceLineNo">316</span>         this.name = f.isDirectory() ? new Link(f.getName(), uri.toString()) : f.getName();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>         this.size = f.isDirectory() ? null : f.length();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>         this.lastModified = new Date(f.lastModified());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>         if (f.canRead() &amp;&amp; ! f.isDirectory()) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            this.view = new URI(uri + "?method=VIEW");<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            this.highlighted = new URI(uri + "?method=VIEW&amp;highlight=true");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            this.parsed = new URI(uri + "?method=PARSE");<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            this.download = new URI(uri + "?method=DOWNLOAD");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>            this.delete = new URI(uri + "?method=DELETE");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>         }<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>   private static class FileResourceComparator implements Comparator&lt;FileResource&gt;, Serializable {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      private static final long serialVersionUID = 1L;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      @Override /* Comparator */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      public int compare(FileResource o1, FileResource o2) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         int c = o1.type.compareTo(o2.type);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>         return c != 0 ? c : o1.f.getName().compareTo(o2.f.getName());<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>   private Object getReader(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (start == null &amp;&amp; end == null &amp;&amp; thread == null &amp;&amp; loggers == null)<a name="line.339"></a>
+<span class="sourceLineNo">340</span>         return getReader(f);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      return getLogParser(f, start, end, thread, loggers, severity);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>   private LogParser getLogParser(File f, final Date start, final Date end, final String thread, final String[] loggers, final String[] severity) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      return new LogParser(leFormatter, f, start, end, thread, loggers, severity);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/rest/RestCallHandler.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestCallHandler.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestCallHandler.html
index 9ef1f2b..0a15df6 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestCallHandler.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestCallHandler.html
@@ -286,7 +286,7 @@
 <span class="sourceLineNo">278</span>    *<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    * &lt;p&gt;<a name="line.279"></a>
 <span class="sourceLineNo">280</span>    * The default implementation renders a plain text English message, optionally with a stack trace if<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    * {@link RestContext#REST_renderResponseStackTraces} is enabled.<a name="line.281"></a>
+<span class="sourceLineNo">281</span>    * {@link RestResource#renderResponseStackTraces()} is enabled.<a name="line.281"></a>
 <span class="sourceLineNo">282</span>    *<a name="line.282"></a>
 <span class="sourceLineNo">283</span>    * &lt;p&gt;<a name="line.283"></a>
 <span class="sourceLineNo">284</span>    * Subclasses can override this method to provide their own custom error response handling.<a name="line.284"></a>


[14/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-tree.html b/content/site/apidocs/overview-tree.html
index c5ff90a..b131b23 100644
--- a/content/site/apidocs/overview-tree.html
+++ b/content/site/apidocs/overview-tree.html
@@ -190,6 +190,11 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.eclipse.jetty.util.log.AbstractLogger (implements org.eclipse.jetty.util.log.Logger)
+<ul>
+<li type="circle">org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">JettyLogger</span></a></li>
+</ul>
+</li>
 <li type="circle">java.util.<a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true" title="class or interface in java.util"><span class="typeNameLink">AbstractMap</span></a>&lt;K,V&gt; (implements java.util.<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;K,V&gt;)
 <ul>
 <li type="circle">org.apache.juneau.<a href="org/apache/juneau/BeanMap.html" title="class in org.apache.juneau"><span class="typeNameLink">BeanMap</span></a>&lt;T&gt; (implements org.apache.juneau.<a href="org/apache/juneau/Delegate.html" title="interface in org.apache.juneau">Delegate</a>&lt;T&gt;)
@@ -612,6 +617,7 @@
 <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>
@@ -1248,6 +1254,7 @@
 <li type="circle">org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/Xml.html" title="class in org.apache.juneau.dto.swagger"><span class="typeNameLink">Xml</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.juneau.internal.<a href="org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">SystemUtils</span></a></li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Throwable</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Exception</span></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/serialized-form.html b/content/site/apidocs/serialized-form.html
index e2a7dcb..125d587 100644
--- a/content/site/apidocs/serialized-form.html
+++ b/content/site/apidocs/serialized-form.html
@@ -328,6 +328,15 @@
 <dd>1L</dd>
 </dl>
 </li>
+<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>
+<dl class="nameValue">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+</li>
 <li class="blockList"><a name="org.apache.juneau.microservice.resources.DirectoryResource">
 <!--   -->
 </a>


[10/22] incubator-juneau-website git commit: Update javadocs.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/Resource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/Resource.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/Resource.html
index 57e0034..10cfd47 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/Resource.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/Resource.html
@@ -21,63 +21,63 @@
 <span class="sourceLineNo">013</span>package org.apache.juneau.microservice;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
 <span class="sourceLineNo">015</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span><a name="line.17"></a>
-<span class="sourceLineNo">018</span>import org.apache.juneau.rest.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.juneau.rest.annotation.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.juneau.svl.vars.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * Superclass for all REST resources.<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * <a name="line.24"></a>
-<span class="sourceLineNo">025</span> * &lt;p&gt;<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * In additional to the functionality of the {@link RestServletDefault} group,<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * &lt;ul class='spaced-list'&gt;<a name="line.28"></a>
-<span class="sourceLineNo">029</span> *    &lt;li&gt;<a name="line.29"></a>
-<span class="sourceLineNo">030</span> *       &lt;code class='snippet'&gt;$ARG{...}&lt;/code&gt; - Command line arguments pulled from {@link Microservice#getArgs()}.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *       <a name="line.31"></a>
-<span class="sourceLineNo">032</span> *       &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.32"></a>
-<span class="sourceLineNo">033</span> *       &lt;p class='bcode'&gt;<a name="line.33"></a>
-<span class="sourceLineNo">034</span> *    String firstArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{0}"&lt;/js&gt;);  &lt;jc&gt;// First argument.&lt;/jc&gt;<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *    String namedArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{myarg}"&lt;/js&gt;);  &lt;jc&gt;// Named argument (e.g. "myarg=foo"). &lt;/jc&gt;<a name="line.35"></a>
-<span class="sourceLineNo">036</span> *       &lt;/p&gt;<a name="line.36"></a>
-<span class="sourceLineNo">037</span> *    &lt;li&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *       &lt;code class='snippet'&gt;$MF{...}&lt;/code&gt; - Manifest file entries pulled from {@link Microservice#getManifest()}.<a name="line.38"></a>
-<span class="sourceLineNo">039</span> *       <a name="line.39"></a>
-<span class="sourceLineNo">040</span> *       &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *       &lt;p class='bcode'&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *    String mainClass = request.getVarResolver().resolve(&lt;js&gt;"$MF{Main-Class}"&lt;/js&gt;);  &lt;jc&gt;// Main class. &lt;/jc&gt;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *       &lt;/p&gt;<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>@SuppressWarnings("serial")<a name="line.46"></a>
-<span class="sourceLineNo">047</span>@RestResource(<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   htmldoc=@HtmlDoc(<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      links={<a name="line.49"></a>
-<span class="sourceLineNo">050</span>         "up: request:/..",<a name="line.50"></a>
-<span class="sourceLineNo">051</span>         "options: servlet:/?method=OPTIONS"<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      },<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   ),<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   config="$S{juneau.configFile}"<a name="line.55"></a>
-<span class="sourceLineNo">056</span>)<a name="line.56"></a>
-<span class="sourceLineNo">057</span>public abstract class Resource extends RestServletDefault {<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>   /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    * Add &lt;code&gt;$ARGS&lt;/code&gt; and &lt;code&gt;$MF&lt;/code&gt; variable resolvers.<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    * <a name="line.61"></a>
-<span class="sourceLineNo">062</span>    * @param config The resource config.<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>   @RestHook(INIT) <a name="line.65"></a>
-<span class="sourceLineNo">066</span>   public void addConfigVars(RestConfig config) throws Exception {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      if (Microservice.getArgs() == null || Microservice.getConfig() == null)<a name="line.67"></a>
-<span class="sourceLineNo">068</span>         throw new RestException(SC_INTERNAL_SERVER_ERROR, "Attempting to use Resource class outside of RestMicroservice.");<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      config<a name="line.69"></a>
-<span class="sourceLineNo">070</span>         .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.70"></a>
-<span class="sourceLineNo">071</span>         .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.71"></a>
-<span class="sourceLineNo">072</span>         .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<a name="line.72"></a>
+<span class="sourceLineNo">016</span><a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.rest.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import org.apache.juneau.rest.annotation.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.juneau.svl.vars.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Superclass for all REST resources.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * <a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;p&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * In additional to the functionality of the {@link RestServletDefault} group,<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * &lt;ul class='spaced-list'&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *    &lt;li&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *       &lt;code class='snippet'&gt;$ARG{...}&lt;/code&gt; - Command line arguments pulled from {@link Microservice#getArgs()}.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *       <a name="line.30"></a>
+<span class="sourceLineNo">031</span> *       &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *       &lt;p class='bcode'&gt;<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *    String firstArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{0}"&lt;/js&gt;);  &lt;jc&gt;// First argument.&lt;/jc&gt;<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *    String namedArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{myarg}"&lt;/js&gt;);  &lt;jc&gt;// Named argument (e.g. "myarg=foo"). &lt;/jc&gt;<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *       &lt;/p&gt;<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *    &lt;li&gt;<a name="line.36"></a>
+<span class="sourceLineNo">037</span> *       &lt;code class='snippet'&gt;$MF{...}&lt;/code&gt; - Manifest file entries pulled from {@link Microservice#getManifest()}.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> *       <a name="line.38"></a>
+<span class="sourceLineNo">039</span> *       &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *       &lt;p class='bcode'&gt;<a name="line.40"></a>
+<span class="sourceLineNo">041</span> *    String mainClass = request.getVarResolver().resolve(&lt;js&gt;"$MF{Main-Class}"&lt;/js&gt;);  &lt;jc&gt;// Main class. &lt;/jc&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *       &lt;/p&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;/ul&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@SuppressWarnings("serial")<a name="line.45"></a>
+<span class="sourceLineNo">046</span>@RestResource(<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   htmldoc=@HtmlDoc(<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      links={<a name="line.48"></a>
+<span class="sourceLineNo">049</span>         "up: request:/..",<a name="line.49"></a>
+<span class="sourceLineNo">050</span>         "options: servlet:/?method=OPTIONS"<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      },<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   ),<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   config="$S{juneau.configFile}"<a name="line.54"></a>
+<span class="sourceLineNo">055</span>)<a name="line.55"></a>
+<span class="sourceLineNo">056</span>public abstract class Resource extends RestServletDefault {<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>    * Add &lt;code&gt;$ARGS&lt;/code&gt; and &lt;code&gt;$MF&lt;/code&gt; variable resolvers.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    * <a name="line.60"></a>
+<span class="sourceLineNo">061</span>    * @param config The resource config.<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>   @RestHook(INIT) <a name="line.64"></a>
+<span class="sourceLineNo">065</span>   public void addConfigVars(RestConfig config) throws Exception {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      Microservice m = Microservice.getInstance();<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      if (m != null) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>         config<a name="line.68"></a>
+<span class="sourceLineNo">069</span>         .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.69"></a>
+<span class="sourceLineNo">070</span>         .addVarContextObject(ArgsVar.SESSION_args, m.getArgs())<a name="line.70"></a>
+<span class="sourceLineNo">071</span>         .addVarContextObject(ManifestFileVar.SESSION_manifest, m.getManifest());<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      }<a name="line.72"></a>
 <span class="sourceLineNo">073</span>   }<a name="line.73"></a>
 <span class="sourceLineNo">074</span>}<a name="line.74"></a>
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceGroup.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceGroup.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceGroup.html
index ee29a69..52bc28d 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceGroup.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceGroup.html
@@ -20,65 +20,65 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.microservice;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span><a name="line.17"></a>
-<span class="sourceLineNo">018</span>import org.apache.juneau.rest.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.juneau.rest.annotation.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.juneau.svl.vars.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * Superclass for all REST resource groups.<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * <a name="line.24"></a>
-<span class="sourceLineNo">025</span> * &lt;p&gt;<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * In additional to the functionality of the {@link RestServletGroupDefault} group,<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * &lt;ul class='spaced-list'&gt;<a name="line.28"></a>
-<span class="sourceLineNo">029</span> *    &lt;li&gt;<a name="line.29"></a>
-<span class="sourceLineNo">030</span> *       &lt;jk&gt;$ARG{...}&lt;/jk&gt; - Command line arguments.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *       &lt;br&gt;Resolves values from {@link Microservice#getArgs()}.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> *       <a name="line.32"></a>
-<span class="sourceLineNo">033</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.33"></a>
-<span class="sourceLineNo">034</span> *       &lt;p class='bcode'&gt;<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *    String firstArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{0}"&lt;/js&gt;);  &lt;jc&gt;// First argument.&lt;/jc&gt;<a name="line.35"></a>
-<span class="sourceLineNo">036</span> *    String namedArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{myarg}"&lt;/js&gt;);  &lt;jc&gt;// Named argument (e.g. "myarg=foo"). &lt;/jc&gt;<a name="line.36"></a>
-<span class="sourceLineNo">037</span> *       &lt;/p&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *    &lt;li&gt;<a name="line.38"></a>
-<span class="sourceLineNo">039</span> *       &lt;jk&gt;$MF{...}&lt;/jk&gt; - Manifest file entries.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> *       <a name="line.40"></a>
-<span class="sourceLineNo">041</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *       &lt;p class='bcode'&gt;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *    String mainClass = request.getVarResolver().resolve(&lt;js&gt;"$MF{Main-Class}"&lt;/js&gt;);  &lt;jc&gt;// Main class. &lt;/jc&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *       &lt;/p&gt;<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>@SuppressWarnings("serial")<a name="line.47"></a>
-<span class="sourceLineNo">048</span>@RestResource(<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   htmldoc=@HtmlDoc(<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      links={<a name="line.50"></a>
-<span class="sourceLineNo">051</span>         "up: request:/..",<a name="line.51"></a>
-<span class="sourceLineNo">052</span>         "options: servlet:/?method=OPTIONS"<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      },<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   ),<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   config="$S{juneau.configFile}"<a name="line.56"></a>
-<span class="sourceLineNo">057</span>)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public abstract class ResourceGroup extends RestServletGroupDefault {<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>   /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    * Initializes the registry URL and rest clent.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    * <a name="line.62"></a>
-<span class="sourceLineNo">063</span>    * @param config The resource config.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    * @throws Exception<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   @RestHook(INIT) <a name="line.66"></a>
-<span class="sourceLineNo">067</span>   public void addConfigVars(RestConfig config) throws Exception {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      if (Microservice.getArgs() == null || Microservice.getConfig() == null)<a name="line.68"></a>
-<span class="sourceLineNo">069</span>         throw new RestException(SC_INTERNAL_SERVER_ERROR, "Attempting to use ResourceGroup class outside of RestMicroservice.");<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      config<a name="line.70"></a>
-<span class="sourceLineNo">071</span>         .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.71"></a>
-<span class="sourceLineNo">072</span>         .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.72"></a>
-<span class="sourceLineNo">073</span>         .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<a name="line.73"></a>
+<span class="sourceLineNo">015</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span><a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.rest.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import org.apache.juneau.rest.annotation.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.juneau.svl.vars.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Superclass for all REST resource groups.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * <a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;p&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * In additional to the functionality of the {@link RestServletGroupDefault} group,<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * &lt;ul class='spaced-list'&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *    &lt;li&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *       &lt;jk&gt;$ARG{...}&lt;/jk&gt; - Command line arguments.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *       &lt;br&gt;Resolves values from {@link Microservice#getArgs()}.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *       <a name="line.31"></a>
+<span class="sourceLineNo">032</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *       &lt;p class='bcode'&gt;<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *    String firstArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{0}"&lt;/js&gt;);  &lt;jc&gt;// First argument.&lt;/jc&gt;<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *    String namedArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{myarg}"&lt;/js&gt;);  &lt;jc&gt;// Named argument (e.g. "myarg=foo"). &lt;/jc&gt;<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *       &lt;/p&gt;<a name="line.36"></a>
+<span class="sourceLineNo">037</span> *    &lt;li&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> *       &lt;jk&gt;$MF{...}&lt;/jk&gt; - Manifest file entries.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *       <a name="line.39"></a>
+<span class="sourceLineNo">040</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.40"></a>
+<span class="sourceLineNo">041</span> *       &lt;p class='bcode'&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *    String mainClass = request.getVarResolver().resolve(&lt;js&gt;"$MF{Main-Class}"&lt;/js&gt;);  &lt;jc&gt;// Main class. &lt;/jc&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *       &lt;/p&gt;<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>@SuppressWarnings("serial")<a name="line.46"></a>
+<span class="sourceLineNo">047</span>@RestResource(<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   htmldoc=@HtmlDoc(<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      links={<a name="line.49"></a>
+<span class="sourceLineNo">050</span>         "up: request:/..",<a name="line.50"></a>
+<span class="sourceLineNo">051</span>         "options: servlet:/?method=OPTIONS"<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      },<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   ),<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   config="$S{juneau.configFile}"<a name="line.55"></a>
+<span class="sourceLineNo">056</span>)<a name="line.56"></a>
+<span class="sourceLineNo">057</span>public abstract class ResourceGroup extends RestServletGroupDefault {<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>   /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    * Initializes the registry URL and rest clent.<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    * <a name="line.61"></a>
+<span class="sourceLineNo">062</span>    * @param config The resource config.<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>   @RestHook(INIT) <a name="line.65"></a>
+<span class="sourceLineNo">066</span>   public void addConfigVars(RestConfig config) throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      Microservice m = Microservice.getInstance();<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      if (m != null) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>         config<a name="line.69"></a>
+<span class="sourceLineNo">070</span>         .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.70"></a>
+<span class="sourceLineNo">071</span>         .addVarContextObject(ArgsVar.SESSION_args, m.getArgs())<a name="line.71"></a>
+<span class="sourceLineNo">072</span>         .addVarContextObject(ManifestFileVar.SESSION_manifest, m.getManifest());<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      }<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>
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/eb2492a5/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceJenaGroup.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceJenaGroup.html b/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceJenaGroup.html
index 9ffa9db..c3ae70e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceJenaGroup.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/microservice/ResourceJenaGroup.html
@@ -20,79 +20,79 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.microservice;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span><a name="line.17"></a>
-<span class="sourceLineNo">018</span>import org.apache.juneau.jena.*;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.juneau.rest.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.juneau.rest.annotation.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.juneau.svl.vars.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>/**<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * Superclass for all REST resource groups.<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * <a name="line.25"></a>
-<span class="sourceLineNo">026</span> * &lt;p&gt;<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * In additional to the functionality of the {@link RestServletGroupDefault} group,<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * &lt;ul class='spaced-list'&gt;<a name="line.29"></a>
-<span class="sourceLineNo">030</span> *    &lt;li&gt;<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *       &lt;jk&gt;$ARG{...}&lt;/jk&gt; - Command line arguments.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> *       &lt;br&gt;Resolves values from {@link Microservice#getArgs()}.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> *       <a name="line.33"></a>
-<span class="sourceLineNo">034</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *       &lt;p class='bcode'&gt;<a name="line.35"></a>
-<span class="sourceLineNo">036</span> *    String firstArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{0}"&lt;/js&gt;);  &lt;jc&gt;// First argument.&lt;/jc&gt;<a name="line.36"></a>
-<span class="sourceLineNo">037</span> *    String namedArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{myarg}"&lt;/js&gt;);  &lt;jc&gt;// Named argument (e.g. "myarg=foo"). &lt;/jc&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *       &lt;/p&gt;<a name="line.38"></a>
-<span class="sourceLineNo">039</span> *    &lt;li&gt;<a name="line.39"></a>
-<span class="sourceLineNo">040</span> *       &lt;jk&gt;$MF{...}&lt;/jk&gt; - Manifest file entries.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *       <a name="line.41"></a>
-<span class="sourceLineNo">042</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *       &lt;p class='bcode'&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> *    String mainClass = request.getVarResolver().resolve(&lt;js&gt;"$MF{Main-Class}"&lt;/js&gt;);  &lt;jc&gt;// Main class. &lt;/jc&gt;<a name="line.44"></a>
-<span class="sourceLineNo">045</span> *       &lt;/p&gt;<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * &lt;/ul&gt;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> */<a name="line.47"></a>
-<span class="sourceLineNo">048</span>@SuppressWarnings("serial")<a name="line.48"></a>
-<span class="sourceLineNo">049</span>@RestResource(<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   htmldoc=@HtmlDoc(<a name="line.50"></a>
-<span class="sourceLineNo">051</span>      links={<a name="line.51"></a>
-<span class="sourceLineNo">052</span>         "up: request:/..",<a name="line.52"></a>
-<span class="sourceLineNo">053</span>         "options: servlet:/?method=OPTIONS"<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      },<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   ),<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   config="$S{juneau.configFile}",<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   serializers={<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      RdfSerializer.Xml.class,<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      RdfSerializer.XmlAbbrev.class,<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      RdfSerializer.Turtle.class,<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      RdfSerializer.NTriple.class,<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      RdfSerializer.N3.class<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   },<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   parsers={<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      RdfParser.Xml.class,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      RdfParser.Turtle.class,<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      RdfParser.NTriple.class,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      RdfParser.N3.class<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>)<a name="line.71"></a>
-<span class="sourceLineNo">072</span>public abstract class ResourceJenaGroup extends RestServletGroupDefault {<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>   /**<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    * Add &lt;code&gt;$ARGS&lt;/code&gt; and &lt;code&gt;$MF&lt;/code&gt; variable resolvers.<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    * <a name="line.76"></a>
-<span class="sourceLineNo">077</span>    * @param config The resource config.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    * @throws Exception<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    */<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   @RestHook(INIT) <a name="line.80"></a>
-<span class="sourceLineNo">081</span>   public void addConfigVars(RestConfig config) throws Exception {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      if (Microservice.getArgs() == null || Microservice.getConfig() == null)<a name="line.82"></a>
-<span class="sourceLineNo">083</span>         throw new RestException(SC_INTERNAL_SERVER_ERROR, "Attempting to use ResourceJenaGroup class outside of RestMicroservice.");<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      config<a name="line.84"></a>
-<span class="sourceLineNo">085</span>         .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.85"></a>
-<span class="sourceLineNo">086</span>         .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.86"></a>
-<span class="sourceLineNo">087</span>         .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<a name="line.87"></a>
+<span class="sourceLineNo">015</span>import static org.apache.juneau.rest.annotation.HookEvent.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span><a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.jena.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span>import org.apache.juneau.rest.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.juneau.rest.annotation.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.juneau.svl.vars.*;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * Superclass for all REST resource groups.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * <a name="line.24"></a>
+<span class="sourceLineNo">025</span> * &lt;p&gt;<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * In additional to the functionality of the {@link RestServletGroupDefault} group,<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * &lt;ul class='spaced-list'&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *    &lt;li&gt;<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *       &lt;jk&gt;$ARG{...}&lt;/jk&gt; - Command line arguments.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *       &lt;br&gt;Resolves values from {@link Microservice#getArgs()}.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *       <a name="line.32"></a>
+<span class="sourceLineNo">033</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *       &lt;p class='bcode'&gt;<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *    String firstArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{0}"&lt;/js&gt;);  &lt;jc&gt;// First argument.&lt;/jc&gt;<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *    String namedArg = request.getVarResolver().resolve(&lt;js&gt;"$ARG{myarg}"&lt;/js&gt;);  &lt;jc&gt;// Named argument (e.g. "myarg=foo"). &lt;/jc&gt;<a name="line.36"></a>
+<span class="sourceLineNo">037</span> *       &lt;/p&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> *    &lt;li&gt;<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *       &lt;jk&gt;$MF{...}&lt;/jk&gt; - Manifest file entries.<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *       <a name="line.40"></a>
+<span class="sourceLineNo">041</span> *       &lt;h6&gt;Example:&lt;/h6&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *       &lt;p class='bcode'&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *    String mainClass = request.getVarResolver().resolve(&lt;js&gt;"$MF{Main-Class}"&lt;/js&gt;);  &lt;jc&gt;// Main class. &lt;/jc&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> *       &lt;/p&gt;<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>@SuppressWarnings("serial")<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@RestResource(<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   htmldoc=@HtmlDoc(<a name="line.49"></a>
+<span class="sourceLineNo">050</span>      links={<a name="line.50"></a>
+<span class="sourceLineNo">051</span>         "up: request:/..",<a name="line.51"></a>
+<span class="sourceLineNo">052</span>         "options: servlet:/?method=OPTIONS"<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      },<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   ),<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   config="$S{juneau.configFile}",<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   serializers={<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      RdfSerializer.Xml.class,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      RdfSerializer.XmlAbbrev.class,<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      RdfSerializer.Turtle.class,<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      RdfSerializer.NTriple.class,<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      RdfSerializer.N3.class<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   },<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   parsers={<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      RdfParser.Xml.class,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      RdfParser.Turtle.class,<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      RdfParser.NTriple.class,<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      RdfParser.N3.class<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>public abstract class ResourceJenaGroup extends RestServletGroupDefault {<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>   /**<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    * Add &lt;code&gt;$ARGS&lt;/code&gt; and &lt;code&gt;$MF&lt;/code&gt; variable resolvers.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    * <a name="line.75"></a>
+<span class="sourceLineNo">076</span>    * @param config The resource config.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    * @throws Exception<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   @RestHook(INIT) <a name="line.79"></a>
+<span class="sourceLineNo">080</span>   public void addConfigVars(RestConfig config) throws Exception {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      Microservice m = Microservice.getInstance();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      if (m != null) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>         config<a name="line.83"></a>
+<span class="sourceLineNo">084</span>         .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.84"></a>
+<span class="sourceLineNo">085</span>         .addVarContextObject(ArgsVar.SESSION_args, m.getArgs())<a name="line.85"></a>
+<span class="sourceLineNo">086</span>         .addVarContextObject(ManifestFileVar.SESSION_manifest, m.getManifest());<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      }<a name="line.87"></a>
 <span class="sourceLineNo">088</span>   }<a name="line.88"></a>
 <span class="sourceLineNo">089</span>}<a name="line.89"></a>